基于FPGA的基带64×64数据分配矩阵设计方案
3.2.1 串口收发模块设计
串口收发模块就是图3中的uart_top模块,主要负责串行数据的接收与发送,并将接收到的数据送入下一级。
该模块的功能已通过串口调试工具调试成功。该模块由4个子模块构成,分别为控制接收波特率的speed_rx模块、控制发送波特率的speed_tx 模块、数据接收模块my_uart_rx、数据发送模块my_uart_tx.
接收、发送波特率的控制可以引用同一模块的发送来实现。其模块化框图如图4所示,当检测到输入信号 bps_start出现一个上升沿后,则该模块通过计数来实现分频,例如时钟频率为25 MHz,波特率为9 600,则计数周期的25 000 000/9 600≈2 604,该模块部分代码如下:
![波特率产生模块](http://editerupload.eepw.com.cn/201402/f04322a0e08ac6f1d3459dcf64eb4f74.jpg)
数据接收模块的模块化框图如图5所示,它是通过移位运算来接收串行数据,如检测到rs232_rx 由高电平变为低电平则开始移位接收数据,每次接收3 B 的数据,将第二、第三个字节输入下一级,若检测到第一个字节为10101010(即16进制的AA),标志信号flag就将维持一个周期的高电平输出,否则flag一直维持高电平,那么后级将无法锁存第二、第三字节。部分代码如下:
![数据接收模块](http://editerupload.eepw.com.cn/201402/f893b3c0afcfd29a2303b36002fce6c5.jpg)
数据发送模块是用来返回接收数据让上位机进行纠错的,其模块化框图如图6所示。如检测到flag变为高电平时,锁存输入的两个字节返回给上位机,部分代码如下:
![数据发送模块](http://editerupload.eepw.com.cn/201402/8cc1d662fb2d02ed3e31d52b2ef6b25d.jpg)
![](https://webstorage.eepw.com.cn/images/2014/m/wx.png)
加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码