基于FPGA的基帶64×64數(shù)據(jù)分配矩陣設(shè)計(jì)方案
3.2.1 串口收發(fā)模塊設(shè)計(jì)
本文引用地址:http://2s4d.com/article/221565.htm串口收發(fā)模塊就是圖3中的uart_top模塊,主要負(fù)責(zé)串行數(shù)據(jù)的接收與發(fā)送,并將接收到的數(shù)據(jù)送入下一級(jí)。
該模塊的功能已通過(guò)串口調(diào)試工具調(diào)試成功。該模塊由4個(gè)子模塊構(gòu)成,分別為控制接收波特率的speed_rx模塊、控制發(fā)送波特率的speed_tx 模塊、數(shù)據(jù)接收模塊my_uart_rx、數(shù)據(jù)發(fā)送模塊my_uart_tx.
接收、發(fā)送波特率的控制可以引用同一模塊的發(fā)送來(lái)實(shí)現(xiàn)。其模塊化框圖如圖4所示,當(dāng)檢測(cè)到輸入信號(hào) bps_start出現(xiàn)一個(gè)上升沿后,則該模塊通過(guò)計(jì)數(shù)來(lái)實(shí)現(xiàn)分頻,例如時(shí)鐘頻率為25 MHz,波特率為9 600,則計(jì)數(shù)周期的25 000 000/9 600≈2 604,該模塊部分代碼如下:
數(shù)據(jù)接收模塊的模塊化框圖如圖5所示,它是通過(guò)移位運(yùn)算來(lái)接收串行數(shù)據(jù),如檢測(cè)到rs232_rx 由高電平變?yōu)榈碗娖絼t開(kāi)始移位接收數(shù)據(jù),每次接收3 B 的數(shù)據(jù),將第二、第三個(gè)字節(jié)輸入下一級(jí),若檢測(cè)到第一個(gè)字節(jié)為10101010(即16進(jìn)制的AA),標(biāo)志信號(hào)flag就將維持一個(gè)周期的高電平輸出,否則flag一直維持高電平,那么后級(jí)將無(wú)法鎖存第二、第三字節(jié)。部分代碼如下:
數(shù)據(jù)發(fā)送模塊是用來(lái)返回接收數(shù)據(jù)讓上位機(jī)進(jìn)行糾錯(cuò)的,其模塊化框圖如圖6所示。如檢測(cè)到flag變?yōu)楦唠娖綍r(shí),鎖存輸入的兩個(gè)字節(jié)返回給上位機(jī),部分代碼如下:
fpga相關(guān)文章:fpga是什么
晶振相關(guān)文章:晶振原理
評(píng)論