基于FPGA實現異步串行通信
1.2 FPGA波特率發生器模塊
串口通信,就是RS 232/RS 485通信,要求通信的雙方波特率等通信格式一樣才可以通信成功。在電子通信領域,波特率(Baud Rate)即調制速率,指的是信號被調制以后在單位時間內的變化,即單位時間內載波參數變化的次數。它是對符號傳輸速率的一種度量,1 Baud即指每秒傳輸1個符號。在基于FPGA實現通用異步通信時,波特率發生器是一個必不可少的部分。波特率發生器實際上就是一個分頻器,可以根據給定的系統時鐘頻率和要求的波特率算出波特率分頻因子,算出的波特率分頻因子作為分頻器的分頻數從而產生所需的時鐘頻率。在設定發送和接收使用相同的波特率的情況下,UART只需要一個波特率發生器就可以了。
系統提供的時鐘頻率為10 MHz,數據信號的傳輸速率為115 200 Hz,波特率發生器產生的時鐘對數據信號進行采樣,設定對傳輸的數據信號進行3倍采樣,則波特率發生器產生的頻率為:
3×115 200=345 600 Hz
那么就可以根據給定的系統時鐘和要求的波特率計算出分頻因子:
1×107/345 600=28.94
對時鐘進行28.94分頻是很難實現的,因此取整數30作為分頻因子。盡管這樣會使得分頻得到的時鐘會比所需的345 600 Hz高3.5%,但這樣微小的變化不會影響實際電路的工作。其仿真圖如圖3所示。本文引用地址:http://www.104case.com/article/189494.htm
1.3 FPGA數據發送模塊
發送過程就是把并行總線上的數據發送到串行總線上。數據發送的過程可以分為空閑狀態、加載狀態、發送狀態和發送完成狀態??臻e狀態就是UART內核復位后的空閑狀態,等待加載狀態。UART進入空閑狀態后,當檢測到發送控制信號有效時,就進行加載狀態并開始進行數據的加載。加載狀態就是發送模塊按照串行發送的順序將要發送的這一幀數據加載到移位寄存器內,將移位寄存器和計數器都復位,使移位寄存器和計數器的工作時鐘為系統時鐘。當計數器達到了計數的上限時,它會產生一個指示信號通知UART內核進入發送狀態。UART內核狀態機進入發送狀態的同時要改變相應信號,這時移位寄存器時鐘必須為波特率時鐘,最重要的是將輸出信號送到RS 232的發送端口TXD上。在發送狀態,也需要計數器的控制,當計數器達到了計數的上限時,它會產生一個信號通知UART內核進入發送完成狀態。當UART內核狀態機進入發送狀態后,并產生發送完成中斷信號。這樣就可以把數據從串行端口上發送出去了。發送數據和接收數據的狀態轉換圖如圖4所示。
發送一幀數據的部分程序如下:
發送一幀數據的仿真結果如圖5所示。
fpga相關文章:fpga是什么
通信相關文章:通信原理
數字濾波器相關文章:數字濾波器原理
評論