基于FPGA的通用異步收發(fā)器設(shè)計
2.3.2 接收模塊功能仿真
接收模塊功能仿真結(jié)果如圖5所示。二進制數(shù)11101010從引腳RXD串行輸入,接收器先要捕捉起始位,在RDN信號為0條件下,啟動接收程序,計數(shù)器開始計數(shù),數(shù)據(jù)從RXD[7..0]串行輸入,由接收移位寄存器RSR[7..0]逐位移位接收,并在接收完成時傳送給接收緩沖寄存器RBR[7..0],最后接收緩沖寄存器RBR[7..0]將接收的數(shù)據(jù)傳送至DOUT[7..0],由它并行輸出,同時輸出一個接收數(shù)據(jù)準備好信號DATA _RE標志數(shù)據(jù)接收完畢。本文引用地址:http://www.ex-cimer.com/article/191039.htm
2.4 波特率發(fā)生器模塊
2.4.1 波特率發(fā)生器模塊及其功能
波特率發(fā)生器模塊主要用于產(chǎn)生接收模塊和發(fā)送模塊的時鐘頻率,其實質(zhì)就是一個分頻器,可以根據(jù)給定的系統(tǒng)時鐘頻率和要求的波特率算出波特率分頻因子,作為分頻器的分頻數(shù)。波特率發(fā)生器產(chǎn)生的時鐘頻率CLK16X不是波特率時鐘頻率CLK,而是波特率時鐘頻率CLK的16倍。波特率發(fā)生器模塊的引腳如圖6所示,其功能如表3所示。
2.4.2 波特率發(fā)生器功能仿真
UART在發(fā)送或接收數(shù)據(jù)時,使用的時鐘信號頻率f是波特率(b=9 600 b/s)的16倍,由外部系統(tǒng)時鐘進行16分頻得到。UART每16個波特時鐘發(fā)送或接收一個二進制位,設(shè)計中采用的晶振頻率c=25 MHz,那么波特率發(fā)生器輸出的時鐘信號周期為:
波特率發(fā)生器的功能仿真如圖7所示。
本設(shè)計用晶振為25 MHz,由公式可得出輸出波形的半個周期應(yīng)為k/2,即81倍的輸入時鐘周期,仿真結(jié)果驗證了波特率發(fā)生器模塊的正確性。
3 結(jié)語
UlART是廣泛使用的串行數(shù)據(jù)通信電路,因其要求的傳輸線少,可靠性高,傳輸距離遠,所以系統(tǒng)間互聯(lián)常采用異步串行通信接口方式。本文用Verilog HDL語言,結(jié)合有限狀態(tài)機的設(shè)計方法實現(xiàn)了UART的功能,將其核心功能集成到FPGA上,使整體設(shè)計緊湊、小巧,實現(xiàn)的UART功能穩(wěn)定、可靠;同時,利用有限狀態(tài)機的方法具有結(jié)構(gòu)模式直觀簡單,設(shè)計流程短,程序?qū)哟畏置鳎拙C合,可靠性高等優(yōu)點,必將在EDA技術(shù)中發(fā)揮重要作用。
評論