【摘要】自檢是指通過設備和系統內部的程序對主要部分進行自動測試,并定位故障。自檢功能可以減少故障檢測的時間,提高檢測的效率,是提高系統可靠度的必要手段。本文根據FPGA核心系統的結構特點,設計了FPGA核心系統的自檢方案。
【關鍵詞】FPGA;核心系統;自檢
1.引言
FPGA(Field-Programmable Gate Array),即現場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發展的產物。它是作為專用集成電路(ASIC)領域中的一種半定制電路而出現的,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點。隨著集成電路技術的不斷發展,FPGA已經廣泛運用在航空,醫療,自動化控制等各個領域,FPGA核心系統的可靠穩定是整個系統能夠正常運行的基礎。FPGA核心系統主要由兩部分組成,即FPGA主機電路和外擴存儲電路。FPGA主機電路由FPGA,電源,晶振構成,外擴存儲電路采用同步動態隨機存儲器(Synchronous Dynamic Random Access Memory,SDRAM)。自檢是指通過設備和系統內部的程序對主要部分進行自動測試,并定位故障。自檢功能可以減少故障檢測的時間,提高檢測的效率,是提高系統可靠度的必要手段。FPGA核心系統的自檢不僅可以提高系統的可靠性,還能及時發現故障,便于系統的維護。本文以ALTERA公司的Cyclone III系列的一款FPGA為例,設計了FPGA核心系統的自檢方案。
2.自檢結構
自檢結構一般包括三個功能模塊:自檢控制器模塊、激勵信號模塊和結果分析模塊。如圖1所示,激勵信號模塊在自檢控制器控制下將激勵信號加載到被測單元上,通過結果分析模塊將被測單元的輸出響應與正確響應特征比較,得到該系統單元的測試結果。自檢控制器根據系統的控制信號來控制自檢過程的運行和中斷,激勵信號模塊根據自檢控制器的命令進行原始信號和自檢激勵信號的切換。
圖1 自檢系統結構框圖
3.FPGA主機電路自檢設計
FPGA主機電路自檢的主要任務是檢測時鐘,鎖相環以及FIFO等內核模塊能否正常工作,即檢測控制電路中的時鐘電路和電源電路是否工作正常。FPGA不同于單片機等微處理器需要對其指令系統進行檢測,但由于其可重構的特點,可以在FPGA內部設計檢測電路對常用的內核模塊進行檢測。圖2所示中的模塊通過簡單的LED燈的亮暗來判斷控制電路是否能正常工作,模塊利用鎖相環PLL和FIFO模塊來檢測控制電路能否正常工作。
圖2 控制電路自檢模塊
利用FPGA鎖相環輸出100MHz時鐘對20MHz外部時鐘進行檢測,對20MHz時鐘的周期進行計數,并將計數值寫入FIFO中,同時將計數值從FIFO中讀出在模100M的累加器中,當累加器溢出時,改變LED的狀態。假設FPGA可以正常工作,且LED正常。經過一個20MHz時鐘的周期,累加器中的值增加10,累加器溢出需要0.5s,LED燈1s閃爍一次。仿真時序見圖3所示。
clk_100m:鎖相環輸出100MHz時鐘;clk:外部時鐘電路提供20MHz時鐘;cnt:對20MHz時鐘檢測的計數值;restult:FIFO中讀出的計數值;counter:累加器的累加值。
當模擬鎖相環模塊故障時,鎖相倍頻模塊將輸出不穩定的低頻信號,即clk_100m信號無法正確檢測20MHz信號的周期。當FIFO緩沖模塊故障時,累加器將無法得到正確的累加值。這些主機電路的故障都將導致LED燈的閃爍不正常。
圖4 SDRAM自檢流程
4.數據存儲器自檢設計
FPGA核心系統的外擴存儲電路電路采用2片16位同步動態隨機存儲器(Synchronous Dynamic Random Access Memory,SDRAM)組成4M×32bits的存儲模塊。該存儲模塊具有讀寫速度快,容量大,信號多,控制復雜等特點。數據在SDRAM中采用矩陣的方式存儲,地址譯碼通過行列地址選通,根據地址信號來選取要操作的某幾個(或某行)數據,以便讀寫控制電路對這些相應的單元進行讀寫操作。不同于SRAM這種靜態存儲器,SDRAM不僅提供的同步時鐘信號以進行高速的讀寫,由于其動態存儲方式,還需要不斷的進行自刷新來保證數據不丟失。
FPGA在保存或讀取數據時,需要對連續的內存地址進行操作,采用突發長度為256的讀寫方式,即連續讀/寫256個存儲單元,進行一次行列地址選通。基于這種數據傳輸方式,SDRAM自檢時,在進行地址線掃描檢測的同時,通過改變寫入數據的方式對數據線故障進行檢測,流程圖如圖4所示。
本設計中采用12位寄存器add_flag[11:0]的各個二進制位對應地址線A0~A11,16位寄存器data_flag[15:0]的各個二進制位對應數據線DB0~DB15,在選取測試數據時,同樣按照地址線掃描法的思想對數據線進行掃描,當Ai=0時,突發寫入時依次循環寫入0001H,0002H…8000H,當Ai=1時依次寫入FFFEH,FFFDH~8FFFH。采取這樣的數據的好處是當某個數據線發生短路或斷路時,能明顯的檢測出來。然后讀取所存入的測試數據,判斷數據線是否存在故障。以圖5為例,SDRAM_ADD為當前選通的行地址,SDRAM_DB為輸入的數據,SDRAM_DATA為從SDRAM中讀取的數據,data_flag為數據線故障標志。將SDRAM_DB和SDRAM_DATA進行比較,可見當SDRAM_DB=0008H時,SDRAM_DATA=0000H,可見數據線DB4發生了故障,DB4在data_flag中的對應位置1,即data_flag=0008H。
圖6所示中,address為當前檢測的地址線,add_flag為地址線故障標志,data1為A8=1時讀出的數據,data0為A8=0時讀出的數據,由于讀出的數據data1和data0相同時(均為fffdH),該地址線故障,對應表示為置1,即add_flag=008H。
用寄存器sdram_err來表示數據存儲電路模塊是否存在故障,若存在故障則置1,若能正常使用則為0。采用這種方法的優點是:(1)對地址線進行了逐根掃描,可以覆蓋由地址連線帶來的故障。(2)由于相鄰兩個單元的內容不同,檢測了SDRAM的突發讀/寫的操作方式。(3)覆蓋了數據線之間的故障和數據線的連線故障。
5.結束語
本文設計FPGA核心系統可以實時檢測FPGA主機電路的鎖相環模塊,FIFO緩存模塊,IO接口等基本功能,保證FPGA能夠正常運行,并且可以及時發現故障,方便故障的檢測和維修。外擴存儲器電路的自檢功能可以快速檢測存儲器數據線和地址線的故障。FPGA核心系統的正常運行是整個系統實現功能,可靠運行的基礎,因此FPGA核心系統的自檢具有很重要的實際意義。
作者簡介:盛銳(1982—),男,江蘇常州人,大學本科,現供職于天地(常州)自動化股份有限公司,主要從事工礦安全監控等成套系統的建設工作。