基于FPGA的UART設(shè)計與實現(xiàn)
2 數(shù)據(jù)傳輸測試
隨著邏輯設(shè)計復(fù)雜性的不斷增加,僅依賴于軟件方式的仿真測試來了解系統(tǒng)的硬件功能有很多的局限性,應(yīng)用QuartusⅡ集成開發(fā)環(huán)境中提供的SignalTapⅡ嵌入式邏輯分析儀,可以將測試信息隨設(shè)計文件下載于目標(biāo)芯片中,用以捕獲目標(biāo)芯片內(nèi)部系統(tǒng)信號節(jié)點處的信息或總線上的數(shù)據(jù)流,而又不影響原硬件系統(tǒng)的正常工作。測試信息通過器件的JTAG端口傳出,并送入計算機進行顯示和分析,這是一種高效的硬件測試手段,并很好地結(jié)合了傳統(tǒng)的系統(tǒng)測試方法。
本設(shè)計在Altera Cyclone系列的EPlC6Q240C8芯片上進行了驗證,使用QuarltusⅡ軟件將編譯好的.pof格式文件以AS模式下載到配置芯片EPCS1中。在計算機端運行串口調(diào)試助手軟件,將數(shù)據(jù)從計算機送出,并利用FPGA上的UART模塊進行接收,將發(fā)送數(shù)據(jù)與SignalTapⅡ獲取的波形進行對比,經(jīng)多次測試表明收發(fā)數(shù)據(jù)完全相同。本文引用地址:http://cafeforensic.com/article/191633.htm
以其中一次的測試為例進行說明,從PC上輸入ASCII碼的“6”,設(shè)定波特率發(fā)生器時鐘作為SignalTapⅡ的采樣時鐘,采樣波形如圖4所示,其中“recstart”表示開始接收數(shù)據(jù)幀標(biāo)志;“divl6”表示16倍波特率時鐘;“cnt_rxd”表示數(shù)據(jù)位采樣計數(shù)器,一次完整的采樣計數(shù)從Oh~9h共10次采樣(1個起始位,8個數(shù)據(jù)位,1個停止位);“rxd”表示串口的接收端;“rxd_buf”表示移位寄存器,當(dāng)數(shù)據(jù)停止位確認(rèn)后,移位寄存器輸出收到的數(shù)據(jù)“36h”,表明了該UART工作穩(wěn)定可靠。
應(yīng)特別注意的是當(dāng)利用SignalTapⅡ進行測試工作結(jié)束后,在生成最終產(chǎn)品前,應(yīng)將SignalTapⅡ從芯片中除去,以免占用額外的資源,然后再重新編譯下載。全程編譯后報告消耗邏輯單元142個,只占芯片總資源的2%,沒有占用芯片的存儲單元和PLL單元,對于一個中大規(guī)模的FPGA芯片而言這是非常少的資源消耗。
3 結(jié)語
基于FPGA設(shè)計和實現(xiàn)UART,可以用片上很少的邏輯單元實現(xiàn)UART的基本功能。與傳統(tǒng)設(shè)計相比,能有效減少系統(tǒng)的PCB面積,降低系統(tǒng)的功耗,提高設(shè)計的穩(wěn)定性和可靠性,并可方便地進行系統(tǒng)升級和移植。
本設(shè)計具有較大的靈活性,通過調(diào)整波特率發(fā)生器的分頻參數(shù),就可以使其工作在不同的頻率。采用16倍波特率的采樣時鐘,可以實時有效探測數(shù)據(jù)的起始位,并可對數(shù)據(jù)位進行“對準(zhǔn)”中央采樣,保證了所采樣數(shù)據(jù)的正確性。該模塊可以作為一個完整的IP核移植進各種FPGA中,在實際應(yīng)用時可嵌入到其他系統(tǒng)中,很容易實現(xiàn)和遠(yuǎn)端上位機的異步通信。
評論