嵌入式UART接口模块的设计.docx

上传人:p** 文档编号:347169 上传时间:2023-08-05 格式:DOCX 页数:7 大小:80.68KB
下载 相关 举报
嵌入式UART接口模块的设计.docx_第1页
第1页 / 共7页
嵌入式UART接口模块的设计.docx_第2页
第2页 / 共7页
嵌入式UART接口模块的设计.docx_第3页
第3页 / 共7页
嵌入式UART接口模块的设计.docx_第4页
第4页 / 共7页
嵌入式UART接口模块的设计.docx_第5页
第5页 / 共7页
嵌入式UART接口模块的设计.docx_第6页
第6页 / 共7页
嵌入式UART接口模块的设计.docx_第7页
第7页 / 共7页
亲,该文档总共7页,全部预览完了,如果喜欢就下载吧!
资源描述

《嵌入式UART接口模块的设计.docx》由会员分享,可在线阅读,更多相关《嵌入式UART接口模块的设计.docx(7页珍藏版)》请在第壹文秘上搜索。

1、引言在计算机的数据通信中,外设一般不能与计算机直接相连,它们之间的信息交换主要存在以下问题:(1)速度不匹配。外设的工作速度和计算机的工作速度不一样,而且外设之间的工作速度差异也比较大。(2)数据格式不匹配。不同的外设在进行信息存储和处理时的数据格式可能不同,例如最基本的数据格式可分为并行数据和串行数据。(3)信息类型不匹配。不同的外设可能采纳不同类型的型号,有些是模拟信号,有些是数字信号,因此采纳的处理方式也不同。为了解决外设和计算机之间的信息交换问题,即需要设计个信息交换的中间环节接口.UART掌握器是最常用的接口。通用异步攵发器(UniversalAsynchrONousReceiv2e

2、rTransmitter,UART)是帮助计算机与串行设施之间的通信,作为RS232通信接口的个重要的部分,目前大部分的处理器都集成了UART.1 UART的数据格式UART的数据传输格式如图1所示。第个字节数据流起始位奇偶检验位空闲位 停止位图1UART的数据传输格式由于数字图像亚像素在计算机中是用8位二进制表示,因此UART传输的有效数据位为8位。传输线在空闲时为高电平,因此有效数据流的开头位设为0。接着传输8位有效数据位,先从最低位开头传送。奇偶检验位可以设置为奇检验、偶校验或者不设置校验位,由于本系统使用的传输速率不高,为了加快开发进程,削减电路面积,因此没有设计奇偶检验模块,数据流中

3、不设奇偶检验位。最终停止位为高电平。2 UART的基本结构设计的UART主要由UART内核、信号检测器、移位寄存器、波特率发生器和计数器组成,如图2所示。接收数据信号检测器控制3人UART内核控制信号接收数据发送数据移位寄存器接收数据波特率时钟波特率发生器诃数器数据发送慑冲器发送数岖后续数据处理模块图2UART基本结构UART各个功能模块的功能如下文所述。2.1信号检测器模块信号检测器用于对RS232的输入信号进行实时览测,一旦发觉新的数据则马上通知UART内核。信号检测器的仿真波形如图3所示。EdeteclJwzck1detec(-wese(.n1fdaec(jwxd1,detectLMfl

4、W_&匕OrurwLumJTrLrLrWmrr图3信号检测器仿真波形图其中,RXD第一次为低时,new_data信号阐述输出,之后RXD又变低,但由于信号检测器处于锁定状态,所以new_data信号并没有输出;最终,resejn信号将信号检测器复位,RXD再次变低时,new_data又有输出。可见信号检测器的实现完全正确,其功能完全符合设计要求。2.2移位寄存器模块移位寄存器模块的作用是存储输入或者输出数据。当UART接收RS232输入时,移位寄存器在波特率模式下采集RS232输入信号,且保存结果;当进行RS232输出时,UART内核首先将数据加载到移位寄存器内,再使移位寄存器在波特率模式下将

5、数据输出到RS232输出端口上。移位寄存器的仿真波形图如图4所示。F帆网则MCkK帧句雨M力跳LnFtfh!H姗烟施刖降E/卅LIMAiWlIT二mwmruwuwmjuwjwLLO-JO_II;I!三网画顾三赚)即用颇IW的脚硼赚那痴腼如厕颜例画何1L11J_I图4移位寄存器仿真波形图如图4所示,移位寄存器在复位后的每个时钟的提升沿工作。由于数据发送时是先发送有效数据的最低位,因此移位寄存器是将接收的数据由高位向低位移动,dout输出移位寄存器的最低位。图中的regs数据用16进制表示。2.3波特率发生器模块波特率发生器的功能是产生和RS232通信所采纳的波特率同步的时钟,这样才能便利地依据R

6、S232串行通信的时序要求进行数据接收或者发送。比如,波特率为9600bs,即每秒传输960Ob数据,则同步的波特率时钟频率为9600Hz,周期为1/9600=0.10417.设计波特率时钟的基本思路就是设计一个计数器,该计数器工作在速度很高的系统时钟下,当计数器计数到某数值时将输出置高,再计数到肯定的数值后再将输出置低,如此反复便能够得到所需的波特率时钟。该系统所用的FPGA系统时钟为50MHz,RS232通信的波特率为9600bs,则波特率时钟的每50Xl个周期相当于96005208个系统时钟周期。假如要得到占空比为50%的波特率时钟,只要使得计数器在计数到1604时将输出置高,之后在计数

7、到5208时将输出置低并且重新计数,就能实现和9600波特率同步的时钟。为了便于仿真,使计数器计到2时将输出置高,之后计到4时将输出置地并且重新计数。波特率发生器的仿真波形图如图5所示。E M附加.feWM.Q制时赛_船帆n1 /baud MewIwVce1P ,bwd*.jV641FjbduddjteWfdcaIor011jWL三jwumruuwUwmnJW一:J_II_II_II_II_II_L口11口厂11图5波特率发生器仿真波形图观看波形可以看到波特率发生器每经过4个时钟周期输出I个完整的波特率时钟周期,占空比为1/2,并且在每次输出波特率时钟周期之后输出1个系统时钟脉宽的提示信号in

8、dicator,UART通过此信号来了解波特率发生器已输出的波特率时钟周期个数。由波形图可见波特率发生器的工作完全满意设计的要求。2.4 计数器模块计数器模块的功能是可控的,在输入时钟的驱动下进行计数,当达到计数上阈时给UART内核一个提示信号。在不同的工作状态下,计数器模块的输入时钟是不同的。UART在数据发送之前需要进行数据加载(即将串行序列保存在移位寄存器内),在此工程中计数器模块的输入时钟为系统时钟,由于此时移位寄存器也工作在系统时钟3除了数据加载,此外2个需要计数器模块的过程是数据接收和数据发送。由于这两个过程中移位寄存器工作在波特率时钟卜.,所以计数器模块的时钟就是与波特率时钟同步

9、的波特率发生器提示信号indicator,这样每输出1个完整的波特率时钟周期计数器就能增加1。计数器的仿真波形图如图6所示。Mck 刚Mn ttWcoii ,IestZovMlbw1 (0110LLLLU-LLLLLn(川I-吼丽MM师硼丽。1肺咖丽Ij图6计数器仿真波形图计数器在复位后并且ce有效时开头计数,并且在第10个时钟周期输出提示信号overflow。2.5 发送数据缓冲器模块发送数据缓冲器模块的功能是将要发送的并行数据转换成串行数据,并且在输出的串行数据流中加人起始位和停止位。缓冲器首先将要发送的8位数据寄存,并在最低位后添加起始位0,在最高位前添加停止位T,组成10位要发送的数据

10、,然后依据UART内核模块的计数值将相应的数据送入移位寄存器输入端。UART内核模块输出的计数值是从0依次计到9,即先将要发送数据的最低位送入移位寄存器。发送数据缓冲器的仿真波形图如图7所示。nd.bw叫瞰m三丽力Mn1a.crtUH12BH516rKB100图7发送数据缓冲器仿真波形图由波形图可知,发送数据缓冲器在复位后,在输入的计数值si.count为。时,send.si输出起始位0。在输入的计数值SLcount为18时,send.si分别输出send_bus上相应的数据位。在输入的计数值SLcount为9时,send_si输出停止位1。2.6 UART内核模块UART内核模块是整个设计的

11、核心。在数据接收时,UART内核模块负责掌握波特率发生器和移位寄存器,使得移位寄存器在波特率时钟的驱动下同步地接收并且保存RS232接收端口上的数据。在数据发送时,UART内核模块首先依据待发送数据产生完整的发送数据序列(包括起始位、数据位和停止位),之后掌握移位寄存器将序列加载到移位寄存器的内部寄存器里,最终再掌握波特率发生器驱动移位寄存器将数据串行输出。UART内核模块的主要功能是掌握数据接收、数据加载和数据发送的过程,这可以用状态机来实现,其状态图如图8所示。图8UART内核状态转移图(1)数据加载过程。数据的接收过程可以定义3个状态:空闲idle状态、接收receive和接收完成、re

12、ceive_over。UART内核模块在复位后进入空闲状态。假如信号检测器检测到数据传输,即new.data=l,UART内核检测到此信号就会进入接收状态。在UART进入由空闲状态转为接收状态过程中,需要进行一系列的接收预备操作,包括将子模块复位、选择移位寄存器串行输入数据以及选择移位寄存器的输入时钟等。进入接收状态后,波特率发生器开头工作,其输出波特率时钟驱动移位寄存器同步的存储RS232接收端口上的数据,并且其提示信号indicator”驱动计数器进行计数。当全部数据接收完成,计数器也达到了其计数的上阈,此时OVerflOW=1,通知UART内核进入接收状态。UART内核进入接收完成状态的

13、同时,会检奇偶校验的结果,同时使得子模块使能信号无效,以停止各个子模块。UART内核的接收完成状态仅保持1个时钟周期,设置这个状态的作用是借用一个时钟周期复位信号检测器,预备接收下次数据传输。检测器,预备接收卜.次数据传输。(2)数据加载和发送过程。数据加载和发送的过程都是为发送数据而设定的,所以将它们放在一起进行介绍,可以用4个状态来实现上述的过程,即空闲、加载、发送和发送完成。其中的空闲状态是UART内核复位后的空闲状态,与上面介绍的数据接收过程的空闲状态全都。数据加载过程在数据发送过程之前进行。UART内核复位后进入空闲状态,当探测到发送掌握信号有效时,即Send=1,便会进入加载状态开

14、头数据加载。在进入加载状态的同时,UART内核会将移位寄存器、计数器复位,并且通过选择信号使得移位寄存器的输入为发送数据缓冲器模块产生的串行数据序列,使得移位寄存器和计数器的工作时钟为系统时钟。进入加载状态后,在UART内核掌握下,发送数据缓冲器模块会将完整的待发送序列加载到移位寄存器的数据输入端,发送的序列是和系统时钟同步的,移位寄存器在系统时钟的驱动下不断读入输入端数据并保存在内部寄存器内。在移位寄存器加载数据的同时,计数器也在时钟的驱动下进行计数,由于都是工作在系统时钟下,所以当全部数据被加载时,计数器也达到了计数的上阈(即串行数据的总量),此时overflow=1,通知UART内核进入

15、发送状态。UART内核进入发送状态的同时会转变几个选择信号,比如将移位寄存器的时钟设为波特率时钟,将计数器时钟设为波特率的提示信号,最重要的是将输出信号送至JRS232的发送端口TXD上。发送的过程和接收类似,移位寄存器在波特率时钟的驱动下内部寄存器的数据串行的发送出去,同时计数器在波特率发生器的提示信号驱动下进行计数。UART内核在计数器到达计数上阈后便进入发送完成模式,并且输动身送完成信号。3UART顶层模块的仿真测试将上述各个模块的VHDL代码生成原理图符号,并在原理图编辑工具中将各个模块连接起组成1个完整的UART模块。为了验证UART模块的正确性,对UART的发送过程和接收过程分别进行了波形仿真

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 嵌入式开发

copyright@ 2008-2023 1wenmi网站版权所有

经营许可证编号:宁ICP备2022001189号-1

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!