黃龍
摘要:簡述采用HDL語言在FPGA內實現UART核心功能的一種算法,分析ARM與FPGA之間進行異步串行通信實驗時FPGA接收的數據的錯誤和實現UART核心功能的算法,得出波特率和FPGA系統時鐘存在誤差導致該算法存在時序缺陷,找到了存在時序缺陷存在的原因并提出了解決的方法,通過實驗驗證了方法的正確性。
關鍵詞:算法;波特率;時序缺陷
中圖分類號:TN79 文獻標識碼:A 文章編號:1007-9599 (2013) 01-0179-02
1 FPGA內實現UART核心功能的算法
FPGA內實現UART核心功能主要包括三個部分:采樣時鐘發生器、接收器和發送器。實現這三個部分的算法如下:
1.1 采樣時鐘發生器:采樣時鐘發生器實際上是根據設置的波特率時鐘頻率Baud,對FPGA的系統時鐘進行分頻以得到16倍于Baud的采樣時鐘 ,為了能夠適用于多種波特率下的UART通信,采樣時鐘發生器內通過一個可靈活設置的分頻系數clk_prescaler,來調整 。本實驗中FPGA開發板的系統時鐘為50MHz,波特率為115200時,clk_prescaler=50000000/(115200×16)/2= 13.56,取整數值clk_prescaler=13;當波特率為9600時,clk_prescaler=162,如此可根據Baud,靈活設置 。
1.2 接收器:接收器由狀態機控制,輸入RXD信號在空閑狀態下為邏輯1,當輸入RXD信號有邏輯1到邏輯0的跳變時,觸發FPGA對RXD采樣。在理想狀態下,RXD上的數據時鐘寬度
計算機光盤軟件與應用2013年1期