付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
如何用FPGA实现UART电路设计?1引言UART即通用异步收发器,他广泛使用串行数据传输协议。UART功能包括微处理器接口、用于数据传输的缓冲器(Buffer)、帧产生、奇偶校验、并串转换,用于数据接收的缓冲器、帧产生、奇偶校验、串并转换等。UART的特点是一个字符接一个字符传输,并且传送一个字符总是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求。每一个字符的前面都有一位起始位(低电平,逻辑值0),字符本身由5~8位数据位组成,接着字符后面是一位校验位,最后是停止位(1位,或1位半,或2位),停止位后面是不定长度的空闲位。停止位和空闲位都规定高电平(逻辑值1),这样可以保证起始位开始处有一个下降沿。在一般的使用中往往不需要使用完整的UART功能,比如对于多串口的设备或需要加密通讯的场合使用UART就不是最合适的。如果设计上用到FPGA?CPLD器件,那么就可以将所需要的UART功能集成到FPGA内部,从而使整个设计更加紧凑、稳定、可靠。分析UART的结构,UART主要由数据总线接口、控制逻辑和状态接口、波特率发生器、发送和接收等部分组成。在本设计中,固定数据帧格式为:开始位(1b低电平)、8位数据位、偶校验、停止位(1b高电平),波特率可调。2波特率发生模块设计的UART的接收和发送按照相同的波特率进行,波特率可以通过接口模块的总线接口进行设置。UART收发的每一个数据宽度都是波特率发生器输出的时钟周期的16倍,即假定当前按照9600b?s进行收发,那么波特率发生器的输出时钟频率应该为9600×16Hz.假定提供的外部时钟为116MHz,可以很简单地通过总线写入不同的数值到波特率发生器保持寄存器,然后用计数器的方式生成所需要的各种波特率,即分频器。计算公式为:1600000?(16×所期望的波特率)-1,如果希望输出10000Hz的波特率,可以得出从总线写入的数值为1600000?(16×10000)-1=9(09H)。3发送模块根据UART协议的描述,发送逻辑流程如图1所示。发送数据由接口模块控制,接口模块给出wrn信号,发送器根据此信号将并行数据锁存,并通过发送保持寄存器和发送移位寄存器发送并行数据。由计数器no_bs_sent控制状态的转移,即数据的发送,计数值为1时,数据从发送保持寄存器传送到发送移位寄存器,计数值为2时,发送开始位(1b低电平),计数值为3~10,发送8位数据,计数器为11,发送校验位,计数值为12,发送1位停止位,计数器随后清零。发送时钟是根据数据传输的波特率产生的,16倍于波特率发生器产生的时钟。图1发送逻辑的流程发送模块信号:rst(输入):复位端口,低电平有效;wrn(输入):写控制信号;din[0:7](输入):并行数据输入信号;clk16x(输入):外部时钟信号;tbre(输出):发送保持寄存器空信号,高电平有效;tsre(输出):发送移位寄存器空信号,高电平有效;sdo(输出):串行数据输出信号。用VHDL语言编写代码,使用Xinlinx的ISE511进行逻辑综合,运用Modelsim7.2做时序仿真,其结果如图2所示。图2发送模块时序仿真波形图4接收模块根据UART的协议描述,可以画出如图3所示的接收逻辑流程图。接收逻辑首先通过检测输入数据的下降沿来检查起始位,然后产生接收时钟,利用接收时钟来采样串行输入数据,在缓冲器中作移位操作,同时产生校验位,在第9位处比较校验位是否正确,在第10位处比较停止位是否为高,在校验位错误或停止位错误的情况下产生错误指示信号。接收时钟是根据数据传输的波特率产生的,16倍于波特率发生器产生的时钟。接收模块信号:rst(输入):复位信号;clk16x(输入):输入时钟;rdn(输入):读锁存信号;rxd(输入):串行数据输入信号;dout[0:7](输出):并行数据输出总线;framing_error(输出):帧错误信号;parity_error(输出):校验错误信号;data_ready(输出):数据接收完毕信号。图3接收逻辑的流程运用Modelsim712对接收模块做了时序仿真,其结果如图4所示。接收时钟与发送时钟相同,接收到一帧串行数据,由接收模块转换为并行输出,并且检验校验位和停止位,产生framing_error和parity_error信号输出。图4接收模块时序仿真波形图5接口控制模块接口控制模块连接控制发送、接收、波特率发生模块,并与外部并行总线相连接,从外部(CPU或单片机)接收控制信号(nrst,nwrn,nbdn,nrdn),来控制UART的发送、接收以及内部时钟的生成。在nwrn有效并且内部信号tbre=′0′(发送缓冲寄存器空)时,将数据总线输入的并行数据发送给发送模块数据线din(7:0),执行发送数据功能。在nrdn有效并且内部信号data_ready,parity_error,framing_error有效时,允许从接收模块读入接收到的数据。波特率发生器和发送模块的并行数据输入端口共用一个数据总线。6总体电路综合及仿真UART总体电路如图5所示,分别由上述4个模块组成。其时序仿真如图6所示。图5UART总体电路图图6UART总体时序仿真波形图观察图6,可以看到串行输出端口sdo发送一帧数据为“00101011001”,第一位为起始位,8位数据位,校验位为“0”(偶校验),1位停止位,空闲状态位为高电平。并行输出端口ndout输出为“00101010”,输入数据帧格式正确,校验位正确。7结语用FPGA器件实现了UART异步收发器的核心功能,可以实现对数据的接收和发送,并可以在接收数据时对其校验位、停止位进行判断,在发送数据时可以形成完整的一帧数据格式。其接收和发送数据的时钟有内部波特率
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国高折射玻璃微珠行业发展趋势与投资战略研究研究报告
- 能源业等太阳能发电行业市场现状供需优化分析及投资政策规划研究报告
- 2025-2030中国行李车智能化转型关键技术突破研究
- 能源设备制造技术创新市场供需分析投资评估规划发展研究报告
- 2026年延安吴起县事业单位定向招聘本科及以上自主就业退役士兵招聘(15人)笔试参考题库及答案详解
- 2026交通运输部所属事业单位第八批招聘31人笔试备考试题及答案详解
- 2026年《林肯传》测试题及答案
- 中国自动驾驶芯片产业销售格局与未来经营效益风险研究报告
- 营养元素组合干预对缺铁性贫血患儿智力损伤的修复研究
- 2026年度盘锦市事业单位(国有企业)定向公开招聘驻盘部队未就业随军家属11人考试备考试题及答案详解
- DL-T5190.1-2022电力建设施工技术规范第1部分:土建结构工程
- (正式版)JTT 1499-2024 公路水运工程临时用电技术规程
- 保安服务费合同协议模板
- 小儿川崎病护理查房课件
- 公司入围申请书范文模板
- 2024年海南农垦旅游集团有限公司招聘笔试参考题库含答案解析
- 《新会计法解读》课件
- 悬挑式卸料平台监理实施细则
- 1956-1967国家科学技术发展远景规划纲要
- (JY-0001-2003)教学仪器设备产品一般质量要求
- 危化品仓库安全风险点告知牌
评论
0/150
提交评论