收藏 分销(赏)

基于FPGA的UART控制器的多模块设计与实现样本.doc

上传人:精*** 文档编号:4658095 上传时间:2024-10-08 格式:DOC 页数:7 大小:146KB
下载 相关 举报
基于FPGA的UART控制器的多模块设计与实现样本.doc_第1页
第1页 / 共7页
基于FPGA的UART控制器的多模块设计与实现样本.doc_第2页
第2页 / 共7页
点击查看更多>>
资源描述
资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 异步串行通信要求的传输线少, 可靠性高, 传输距离远, 被广泛应用于微机和外设的数据交换。实现串口通信主要需要完成两部分工作: 将串口电平转换为设备电路板的工作电平, 即实现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各个模块的功能如下: ( 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内核会重置信号监测器, 以准备进行下一次数据接收。 基于FPGA的UART控制器的多模块设计与实现 12月2日 14:59  中国科技信息  作 者: 张明 发送过程由加载和发送两个步骤组成, 如图三所示。加载步骤是UART内核按RS-232串行发送的顺序将起始位、 数据位、 奇偶校验位和停止位加载到移位寄存器内, 这个过程工作在系统时钟下, 相对于RS-232的传输速度来说非常快。完成加载步骤后, UART内核会重置波特率发生器, 而且设置移位寄存器工作在波特率模式下, 于是移位寄存器便在波特率时钟的驱动下依次将加载的数据发送到RS-232的发送端TxD, 这样便产生了RS-232的数据发送时序。 3、 UART各个模块的实现 除UART内核模块以外, 其它模块都较为简单, 用于实现某一具体功能。现在重点对UART内核模块的实现做出介绍。 UART内核模块的功能是控制数据接收、 数据加载和数据发送的过程, 这能够用状态机来实现。下面就按接收和发送的过程来介绍UART内核模块状态机的实现。 ( 1) 数据接收过程 数据接收过程的流程图如图二所示, 能够定义3个状态——空闲、 接收和接收完成, 其中状态变换图如图四所示。 ( 2) 数据加载和发送过程 数据加载和发送过程都是为了发送数据而设定的, 因此将它们放在一起进行介绍。能够用4个状态来实现上述的过程, 即空闲、 加载、 发送和发送完成, 其中的空闲状态就是UART内核复位后的空闲状态, 和上面介绍的数据接收过程的空闲状态一致。 数据加载和发送过程的状态转换图如图五所示。 4、 仿真结果 在波特率为9600情况下对UART进行仿真, 结果稳定可靠。该设计具有很好的可读性和灵活性, 具有很好的参考价值。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服