原创 基于FPGA的UART控制器的多模块设计与实现

2009-9-14 10:14 788 5 6 分类: FPGA/CPLD
作者:    时间:2008-01-17    来源: 
 
      

异步串行通信要求的传输线少,可靠性高,传输距离远,被广泛应用于微机和外设的数据交换。实现串口通信主要需要完成两部分工作:


将串口电平转换为设备电路板的工作电平,即实现RS-232电平和TTL/CMOS电平的转换;


接收并且检验串行的数据,将数据变成并行的并提供给处理器处理。


实现RS-232电平和TTL/CMOS电平转换可以用接口芯片来实现,实现数据的串行到并行转换用的是UART,它们是实现串行通信必不可少的两个部分。虽然目前大部分处理器芯片中都集成了UART,但是一般FPGA芯片却没有这个特点,所以使用FPGA作为处理器可以有两个选择,第一个选择是使用UART芯片进行串并转换,第二个选择是在FPGA内部实现UART功能。但所有的UART芯片都存在引脚较多、体积较大、与其他器件的接口较为复杂等缺点,从而会使设计的成本和难度增加。因此可以将需要的UART功能集成到FPGA内部,而利用VHDL语言将UART的核心功能集成,不仅解决传统芯片的缺点,也使整个设计更加紧凑、稳定且可靠。


1、UART实现原理


UART主要有UART内核、信号监测器、移位寄存器、波特率发生器、计数器、总线选择器和奇偶校验器总共7个模块组成,如图一所示。



UART实现原理图


UART各个模块的功能如下:


(1)UART内核模块


UART内核模块是整个设计的核心。在数据接收时,UART内核模块负责控制波特率发生器和移位寄存器,使得移位寄存器在波特率始终的驱动下同步的接收并且保存RS-232接收端口上的串行数据。在数据发送时,UART内核模块首先根据待发送的数据和奇偶校验位的设置产生完整的发送序列(包括起始位、数据位、奇偶校验位和停止位),之后控制移位寄存器将序列加在到移位寄存器的内部寄存器里,最后再控制波特率发生器驱动移位寄存器将数据串行输出。


(2)信号监督器模块


信号检测器用于对RS-232的输入信号进行实时检测,一旦发现新的数据则立即通知UART内核。


(3)移位寄存器模块


移位寄存器的作用是存储输入或者输出的数据。当UART接受RS-232输入时,移位寄存器在波特率模式下采集RS-232输入信号,并且保存结果;当UART进行RS-232输出时,UART内核首先将数据加载到移位寄存器内,再使移位寄存器在波特率模式下将数据输出到RS-232输出端口上。


(4)波特率发生器模块


由于RS-232传输必定是工作在某种波特率下,比如9600,为了便于和RS-232总线进行同步,需要产生符合RS-232传输波特率的时钟,这就是波特率发生器的功能。


(5)奇偶检验器模块


奇偶校验器模块是根据奇偶校验的设置和输入数据计算出相应的奇偶校验位,它是通过纯组合逻辑实现的。


(6)总线选择模块


总线选择模块用于选择奇偶校验器的输入是数据发送总线还是数据接收总线。在接收数据时,总线选择模块将数据接收总线连接到奇偶校验器的输入端,来检查已接收数据的奇偶校验位是否正确;而在发送数据时,总线选择模块将数据发送总线连接到奇偶检验器的输入端,UART内核模块就能够获取并且保存待发送序列所需的奇偶校验位了。


(7)计数器模块


计数器模块的功能是记录串行数据发送或者接收的数目,在计数到某数值时通知UART内核模块。


2、UART工作流程


UART的工作流程可以分为接收过程和发送过程两部分。


接收过程指的是UART监测到RS-232总线上的数据,顺序读取串行数据并且将其输出给CPU的过程。当信号监测器监测到新的数据(RS-232输入逻辑变为0,即RS-232传输协议的起始位)就会触发接收过程,其流程图如图二所示。首先UART内核会重置波特率发生器和移位寄存器,并且设置移位寄存器的工作模式为波特率模式,以准备接收数据。其次,移位寄存器在波特率始终的驱动下工作,不断读取RS-232串行总线的输入数据,并且将数据保存在内部的寄存器内。接收完成后,UART内核会对已接收的数据进行奇偶检验并且输出校验结果。最后,UART内核会重置信号监测器,以准备进行下一次数据接收。



UART接收数据流程图


发送过程由加载和发送两个步骤组成,如图三所示。加载步骤是UART内核按RS-232串行发送的顺序将起始位、数据位、奇偶校验位和停止位加载到移位寄存器内,这个过程工作在系统时钟下,相对于RS-232的传输速度来说非常快。完成加载步骤后,UART内核会重置波特率发生器,并且设置移位寄存器工作在波特率模式下,于是移位寄存器便在波特率时钟的驱动下依次将加载的数据发送到RS-232的发送端TxD,这样便产生了RS-232的数据发送时序。



UART发送数据流程图


3、UART各个模块的实现


除UART内核模块以外,其他模块都较为简单,用于实现某一具体功能。现在重点对UART内核模块的实现做出介绍。


UART内核模块的功能是控制数据接收、数据加载和数据发送的过程,这可以用状态机来实现。下面就按接收和发送的过程来介绍UART内核模块状态机的实现。


(1)数据接收过程


数据接收过程的流程图如图二所示,可以定义3个状态——空闲、接收和接收完成,其中状态变换图如图四所示。



状态变换图


(2)数据加载和发送过程


数据加载和发送过程都是为了发送数据而设定的,所以将它们放在一起进行介绍。可以用4个状态来实现上述的过程,即空闲、加载、发送和发送完成,其中的空闲状态就是UART内核复位后的空闲状态,和上面介绍的数据接收过程的空闲状态一致。


数据加载和发送过程的状态转换图如图五所示。



数据加载和发送过程的状态转换图


4、仿真结果


在波特率为9600情况下对UART进行仿真,结果稳定可靠。该设计具有很好的可读性和灵活性,具有很好的参考价值。


show_label.gif标签:  UART  寄存器  计数器
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户188034 2009-9-14 19:21

大材小用
相关推荐阅读
用户1414655 2012-11-28 16:09
给你们介绍一些毛骨悚然的骗人技术
星期六下午 2 点多, 我一个人乘70 路至四川路,当中我在和我老公通电话的时候发觉有人拍了下我的肩膀,刚开始我以为是遇到认识的人和我打招呼的,后来一看旁边是40 多岁的...
用户1414655 2009-11-24 23:01
通信电源蓄电池温度监测系统设计
0 引 言    在通信系统的设计和建设中,通信电源被称为通信系统的心脏,电源系统将直接影响通信系统的可靠性和稳定性。美国APC公司的一项调查结果表明,大约有75%以上的通信系统故障都是由于电源设备故...
用户1414655 2009-09-23 08:53
各种白光LED驱动电路特性评比
作者:    时间:2008-12-02    来源:52RD硬件研发         1996年日亚化学的中村氏发表蓝光LED之后,白光LED就被视为次世代照明光源最具发展潜力的元件,因此有关白光L...
用户1414655 2009-09-23 08:52
论机器视觉与图像分析技术
作者:    时间:2008-12-02    来源:52RD硬件研发         也许你仍然希望能得到咨询专家的帮助,不过紧缩包裹型(Shrink-Wrapped)开发工具包现在已经使得缺乏专业...
用户1414655 2009-09-23 08:52
LCD TV视频解码器技术概述
作者:    时间:2008-12-03    来源:52RD硬件研发          CD TV属于高整合性电子产品,它涵盖了演算法、软体、韧体、硬体、晶片、无线射频等领域,且许多专利仍是属于国外...
用户1414655 2009-09-23 08:52
液晶显示器的自动调光技术
作者:    时间:2008-12-03    来源:52RD硬件研发          最近几年大型液晶显示器的应用,从笔记型电脑、PDA、桌上型电脑用监视器,持续扩展至家用液晶电视等领域,液晶电视...
EE直播间
更多
我要评论
1
5
关闭 站长推荐上一条 /3 下一条