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