新聞中心

EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA的UART模塊的設計

基于FPGA的UART模塊的設計

作者: 時間:2009-04-23 來源:網絡 收藏

信號檢測器用于對RS 232的輸入信號進行實時監(jiān)測,一旦發(fā)現(xiàn)新的數據則立即通知內核。信號檢測器的仿真波形如圖3所示。
其中,RxD第一次為低時,new_data信號闡述輸出,之后RxD又變低,但由于信號檢測器處于鎖定狀態(tài),所以 new_data信號并沒有輸出;最后,reset_n信號將信號檢測器復位,RxD再次變低時,new_data又有輸出??梢娦盘枡z測器的實現(xiàn)完全正確,其功能完全符合設計要求。
2.2 移位寄存器
移位寄存器的作用是存儲輸入或者輸出數據。當接收RS 232輸入時,移位寄存器在波特率模式下采集RS 232輸入信號,且保存結果;當進行RS 232輸出時,內核首先將數據加載到移位寄存器內,再使移位寄存器在波特率模式下將數據輸出到RS 232輸出端口上。移位寄存器的仿真波形圖如圖4所示。

本文引用地址:http://2s4d.com/article/192086.htm

如圖4所示,移位寄存器在復位后的每個時鐘的上升沿工作。由于數據發(fā)送時是先發(fā)送有效數據的最低位,因此移位寄存器是將接收的數據由高位向低位移動,dout輸出移位寄存器的最低位。圖中的regs數據用16進制表示。
2.3 波特率發(fā)生器
波特率發(fā)生器的功能是產生和RS 232通信所采用的波特率同步的時鐘,這樣才能方便地按照RS 232串行通信的時序要求進行數據接收或者發(fā)送。比如,波特率為9 600 b/s,即每秒傳輸9 600 b數據,則同步的波特率時鐘頻率為9 600 Hz,周期為1/9 600=O.104 17。設計波特率時鐘的基本思路就是設計一個計數器,該計數器工作在速度很高的系統(tǒng)時鐘下,當計數器計數到某數值時將輸出置高,再計數到一定的數值后再將輸出置低,如此反復便能夠得到所需的波特率時鐘。該系統(tǒng)所用的系統(tǒng)時鐘為50 MHz,RS 232通信的波特率為9 600 b/s,則波特率時鐘的每個周期相當于5 208個系統(tǒng)時鐘周期。假如要得到占空比為50%的波特率時鐘,只要使得計數器在計數到1 604時將輸出置高,之后在計數到5 208時將輸出置低并且重新計數,就能實現(xiàn)和9 600波特率同步的時鐘。
為了便于仿真,使計數器計到2時將輸出置高,之后計到4時將輸出置地并且重新計數。波特率發(fā)生器的仿真波形圖如圖5所示。

觀察波形可以看到波特率發(fā)生器每經過4個時鐘周期輸出1個完整的波特率時鐘周期,占空比為1/2,并且在每次輸出波特率時鐘周期之后輸出1 個系統(tǒng)時鐘脈寬的提示信號indicator,UART通過此信號來了解波特率發(fā)生器已輸出的波特率時鐘周期個數。由波形圖可見波特率發(fā)生器的工作完全滿足設計的要求。
2.4 計數器模塊
計數器模塊的功能是可控的,在輸入時鐘的驅動下進行計數,當達到計數上閾時給UART內核一個提示信號。在不同的工作狀態(tài)下,計數器模塊的輸入時鐘是不同的。UART在數據發(fā)送之前需要進行數據加載(即將串行序列保存在移位寄存器內),在此工程中計數器模塊的輸入時鐘為系統(tǒng)時鐘,因為此時移位寄存器也工作在系統(tǒng)時鐘下。除了數據加載,另外2個需要計數器模塊的過程是數據接收和數據發(fā)送。
由于這兩個過程中移位寄存器工作在波特率時鐘下,所以計數器模塊的時鐘就是與波特率時鐘同步的波特率發(fā)生器提示信號iladicator,這樣每輸出1個完整的波特率時鐘周期計數器就能增加1。
計數器的仿真波形圖如圖6所示。

計數器在復位后并且ce有效時開始計數,并且在第10個時鐘周期輸出提示信號overflow。
2.5 發(fā)送數據緩沖器模塊



關鍵詞: FPGA UART 模塊

評論


相關推薦

技術專區(qū)

關閉