李富國,寧 凱,徐安俊
(長春大學(xué) 機(jī)械與車輛工程學(xué)院,長春130022)
進(jìn)入21 世紀(jì),集成電路技術(shù)飛速發(fā)展,推動了FPGA 的發(fā)展。FPGA 集成度高,編程靈活,適用于較大規(guī)模的電路設(shè)計中,其設(shè)計開發(fā)周期短,制造成本低,質(zhì)量穩(wěn)定,被廣泛運(yùn)用在產(chǎn)品生產(chǎn)中[1-4]。 隨著以FPGA 為核心的產(chǎn)品不斷上線, 產(chǎn)品的質(zhì)量問題又成為人們關(guān)注的焦點, 而所設(shè)計的基于FPGA 的硬件測試電路正是在這一背景下應(yīng)運(yùn)而生。 該測試電路可用于實現(xiàn)對各類產(chǎn)品設(shè)計過程中可能會出現(xiàn)的問題進(jìn)行及時調(diào)試、檢測,從而大大提高生產(chǎn)效率,同時還能滿足對不同使用環(huán)境的需要,在當(dāng)下具有廣闊的應(yīng)用前景。
整個硬件測試過程在上位機(jī)(PC)控制下完成,并由FPGA 實現(xiàn)邏輯控制測試。 硬件測試電路主要包括觸發(fā)器、數(shù)碼管、計數(shù)器和寄存器等元器件。 其中,觸發(fā)器按照觸發(fā)方式的不同進(jìn)行區(qū)分,分為脈沖觸發(fā)、電平觸發(fā)、以及邊沿觸發(fā),且其可以按照控制方式或者邏輯功能的不同來進(jìn)行分類[5-6];數(shù)碼管廣泛應(yīng)用于日常的生產(chǎn)和生活中,其分類主要依據(jù)其段數(shù);計數(shù)器可以用來分頻、定時、對時鐘脈沖計數(shù)、數(shù)字運(yùn)算等,是一種在時序邏輯電路中應(yīng)用十分廣泛的元器件[7];寄存器是集成電路中非常重要的一種存儲單元,可用來暫存指令、數(shù)據(jù)和地址[8]。
經(jīng)過對比分析過往硬件電路測試平臺的優(yōu)缺,結(jié)合自身設(shè)計要求并依據(jù)設(shè)計目標(biāo),制定了總體設(shè)計方案。 硬件測試電路總體設(shè)計流程如圖1 所示。
圖1 硬件測試電路總體設(shè)計流程Fig.1 Hardware test circuit general design flow chart
硬件測試電路設(shè)計以FPGA 為核心, 其硬件部分主要由4 個模塊組成:鎖相環(huán)模塊、計數(shù)器模塊、防抖電路設(shè)計、譯碼器模塊。
鎖相環(huán)即鎖定相位的環(huán)路,F(xiàn)PGA 中自帶高性能的嵌入式模擬鎖相環(huán),其最突出的優(yōu)點就是能夠輸出多個同步倍頻或分頻的片內(nèi)時鐘[9-10]。該片內(nèi)時鐘可大大降低時鐘延時對輸入輸出信號的影響,避免對其它時鐘信號產(chǎn)生干擾;還可以通過改善時鐘建立時間和保持時間, 以保證系統(tǒng)穩(wěn)定工作。 Cyclone/Ⅱ/Ⅲ系列和Statix/Ⅱ/Ⅲ/Ⅳ系列器件中的鎖相環(huán)能直接輸入所需要輸出的頻率,并提供任意相移和輸出信號占空比。 鎖相環(huán)模塊如圖2 所示。
圖2 鎖相環(huán)模塊Fig.2 Phase-locked loop module
計數(shù)器模塊包括2 個計數(shù)器模塊,其工作原理一致。 在此以CNT16 模塊為例,介紹計數(shù)器模塊的工作原理。 當(dāng)輸入信號CLK 有效時, 計數(shù)器模塊CNT16 進(jìn)行加法計數(shù)。輸入信號CLK 定義為標(biāo)準(zhǔn)邏輯位STD_LOGIC,輸出信號DOUT 的數(shù)據(jù)類型明確定義為32 位標(biāo)準(zhǔn)邏輯位矢量STD_LOGIC_VECTOR(31 DOWNTO 0)。 計數(shù)器內(nèi)部先定義1 個信號SIGNAL Q1。Q1 為內(nèi)部的信號,流動不受方向限制,Q1 不斷累加。 當(dāng)滿足要求時,將Q1 的值向端口DOUT 輸出。 計數(shù)器模塊如圖3 所示。
圖3 計數(shù)器模塊Fig.3 Counter module
防抖電路由4 個D 觸發(fā)器和1 個4 輸入與門構(gòu)成。4 個D 觸發(fā)器的時鐘輸入端都連在一起,工作時與時鐘同步工作,輸入信號以移位串行方式向前傳遞。 按鍵K1 的信號經(jīng)過非門后成為輸入信號,ck是防抖電路自身的工作時鐘。 該電路“濾波”功能的關(guān)鍵在于:當(dāng)信號被串入電路后,能在輸出端輸出脈沖信號的條件是,必須在4 個D 觸發(fā)器的輸出端Q 都同時為1,從而4 輸入與門才能輸出高電平。 正因為干擾抖動信號都是一群寬度狹窄的隨機(jī)信號,在串入時,不可能使與門的輸出都為1,因此只有正常信號才有足夠的寬度通過此電路,從而起到“濾波”的功能。 防抖電路如圖4 所示。
譯碼模塊設(shè)有七段數(shù)碼管,并采用動態(tài)顯示方式。 其中,輸出信號LED7S 的7 位分別接數(shù)碼管的7 個段,高位在左,低位在右。 ,模塊的輸入信號為4位,輸出信號為7 位,最終決定著數(shù)碼管上顯示的結(jié)果。
圖4 防抖電路Fig.4 Stabilization circuit
例如,當(dāng)LED7S 輸出為“1001111”時,數(shù)碼管的7 個段為g,f,e,d,c,b,a 分別接于1,0,0,1,1,1,1;接有高電平的段發(fā)亮,于是數(shù)碼管顯示“3”。 與此同時,從CNT16 輸出的32 位數(shù)據(jù)中任取8 位,這8 位信號作為輸入信號用來測試數(shù)碼管A 和B。 由于數(shù)碼管B 在外部電路已經(jīng)設(shè)置了16 進(jìn)制7 段譯碼器,所以當(dāng)信號輸入時可直接顯示計數(shù)值。 譯碼模塊如圖5 所示。
圖5 譯碼模塊Fig.5 Decoding module
利用ALTERA 綜合布線工具Quartus Ⅱ,對各主要功能模塊以及整體電路進(jìn)行編譯、仿真測試,并使用EP3C5E144C8 芯片對硬件測試電路進(jìn)行調(diào)試。
鎖相環(huán)模塊仿真首先對鎖相環(huán)模塊進(jìn)行仿真。 模塊參數(shù)設(shè)置如下:時序仿真開始時間為0 ps,結(jié)束時間為1.0 ms,輸入激勵inclk0 周期為10.0 ns。單擊“start simulation”按鈕,即可得到輸出波形。 仿真起始延遲時間為559.301 ns, 程序運(yùn)行過程中無錯誤警告,仿真成功。 其仿真結(jié)果如圖6 所示。
圖6 鎖相環(huán)模塊仿真Fig.6 PLL module simulation
計數(shù)器模塊仿真對計數(shù)器模塊進(jìn)行仿真,模塊參數(shù)設(shè)置如下:時序仿真開始時間為0 ps,結(jié)束時間為1.0 μs,輸入激勵CLK 周期為10.0 ns。單擊“start simulation”按鈕,即可得到輸出DOUT 的波形圖(用十六進(jìn)制表示)。 仿真起始延遲時間為13.526 ns,程序運(yùn)行過程中無錯誤警告,仿真成功。 其仿真結(jié)果如圖7 所示。
圖7 計數(shù)器模塊仿真Fig.7 Counter module simulation
譯碼器模塊仿真對譯碼器模塊進(jìn)行仿真,模塊參數(shù)設(shè)置如下:時序仿真開始時間為0 ps,結(jié)束時間為50.0 μs,輸入激勵A(yù) 周期為10.0 ns。單擊“start simulation”按鈕,即可得到輸出LED7S 的波形圖(用十六進(jìn)制表示)。 仿真起始延遲時間為109.363 ns,程序運(yùn)行過程中無錯誤警告,仿真成功。 其仿真結(jié)果如圖8 所示。
圖8 譯碼器模塊仿真Fig.8 Decoding module simulation
整體電路仿真整體電路仿真模塊參數(shù)設(shè)置如下:時序仿真開始時間為0 ps,結(jié)束時間為1.0 ms,輸入激勵CLK 周期為50.0 ns,按鍵K8 隨機(jī)選擇一段時間并置為1。 單擊“start simulation”按鈕,即可得到輸出CKK,L,LA,LED,PP 以及spk 的波形圖。仿真起始延遲時間為10.175 μs,程序運(yùn)行過程中無錯誤警告,仿真成功。 其仿真結(jié)果如圖9 所示。
圖9 整體電路仿真Fig.9 Overall circuit simulation
仿真測試后,還需要進(jìn)行硬件測試以進(jìn)一步驗證系統(tǒng)性能。 引腳鎖定并下載程序后方可進(jìn)行硬件電路測試。 硬件電路測試有2 個輸入信號, 一個是內(nèi)部時鐘信號,另一個是通過外部手動按壓K1 按鍵產(chǎn)生的信號。 其中內(nèi)部時鐘信號頻率為20 MHz,通過鎖相環(huán)來減少時鐘延時、時鐘變形和片外干擾,改善時鐘的建立時間和保持時間。 隨著內(nèi)部時鐘不斷輸入信號,計數(shù)器持續(xù)計數(shù),當(dāng)計數(shù)器滿足要求時,開發(fā)板最上面一排的LED 小燈便會依次亮起。 并且,2 個并排的數(shù)碼管會顯示數(shù)字, 左邊的數(shù)碼管顯示數(shù)據(jù)高4位,右邊的數(shù)碼管顯示數(shù)據(jù)低4 位,同時蜂鳴器也會響起。 接著,從右到左依次按動按鍵讓最下方的數(shù)碼管顯示數(shù)字。 由于非門的作用,當(dāng)不按動按鍵時小數(shù)點是亮著的;反之,小數(shù)點不亮。 PCB 板測試如圖10 所示。
圖10 PCB 板測試Fig.10 Test pattern of PCB board
通過硬件測試電路原理、總體方案設(shè)計、硬件模塊化設(shè)計、仿真測試以及PCB 板實測,完成了基于FPGA 的硬件測試電路的設(shè)計, 實現(xiàn)了設(shè)計的預(yù)期功能,仿真中的實現(xiàn)時間達(dá)到了ns 級別。此外,所設(shè)計操作界面簡單,操作易學(xué)易用,具有良好的抗干擾性能,能夠適應(yīng)不同的生產(chǎn)環(huán)境,為順利完成生產(chǎn)任務(wù)提供及時的檢測、調(diào)試功能,在市場推廣中備受青睞。