首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于FPGA的通用异步收发器设计(2)

基于FPGA的通用异步收发器设计(2)

2.3 接收模块
2.3.1 接收模块及其功能
接收模块的作用是把收到的串行数据转换成并行数据进行输出,并判断收到的数据是否有错。接收模块的引脚如图4所示,各引脚功能见表2。

接收器进入准备接收数据状态,不断监视串行输入线RXD端,如果出现低电平,立刻启动起始位检测电路进行确认,一旦确认为接收到正确的起始位,则以波特率作为采样时钟,对每个数据位的中间位置采样一次,并把采样到的信息以移位方式送人接收移位寄存器RSR。接收到一帧数据位后,把串行数据转化成并行数据,并进行奇偶校验、停止位、中止态的检查。接收完毕后,DAT_READ置1。

2.3.2 接收模块功能仿真
接收模块功能仿真结果如图5所示。二进制数11101010从引脚RXD串行输入,接收器先要捕捉起始位,在RDN信号为0条件下,启动接收程序,计数器开始计数,数据从RXD[7..0]串行输入,由接收移位寄存器RSR[7..0]逐位移位接收,并在接收完成时传送给接收缓冲寄存器RBR[7..0],最后接收缓冲寄存器RBR[7..0]将接收的数据传送至DOUT[7..0],由它并行输出,同时输出一个接收数据准备好信号DATA _RE标志数据接收完毕。
2.4 波特率发生器模块
2.4.1 波特率发生器模块及其功能
波特率发生器模块主要用于产生接收模块和发送模块的时钟频率,其实质就是一个分频器,可以根据给定的系统时钟频率和要求的波特率算出波特率分频因子,作为分频器的分频数。波特率发生器产生的时钟频率CLK16X不是波特率时钟频率CLK,而是波特率时钟频率CLK的16倍。波特率发生器模块的引脚如图6所示,其功能如表3所示。

2.4.2 波特率发生器功能仿真
UART在发送或接收数据时,使用的时钟信号频率f是波特率(b=9 600 b/s)的16倍,由外部系统时钟进行16分频得到。UART每16个波特时钟发送或接收一个二进制位,设计中采用的晶振频率c=25 MHz,那么波特率发生器输出的时钟信号周期为:

   
波特率发生器的功能仿真如图7所示。



本设计用晶振为25 MHz,由公式可得出输出波形的半个周期应为k/2,即81倍的输入时钟周期,仿真结果验证了波特率发生器模块的正确性。

3 结语
UlART是广泛使用的串行数据通信电路,因其要求的传输线少,可靠性高,传输距离远,所以系统间互联常采用异步串行通信接口方式。本文用Verilog HDL语言,结合有限状态机的设计方法实现了UART的功能,将其核心功能集成到FPGA上,使整体设计紧凑、小巧,实现的UART功能稳定、可靠;同时,利用有限状态机的方法具有结构模式直观简单,设计流程短,程序层次分明,易综合,可靠性高等优点,必将在EDA技术中发挥重要作用。
继承事业,薪火相传
返回列表