当前位置RFID世界网 > 技术文章 > 其它 > 正文

嵌入式UART接口模块的设计

作者:不详 来源:RFID世界网 2012-06-25 13:55:03

摘要:通用异步收发器(UniversalAsynchrONousReceiv2er/Transmitter,UART)是辅助计算机与串行设备之间的通信,作为RS232通信接口的一个重要的部分,目前大部分的处理器都集成了UART。

关键词::嵌入式[0篇]  UART接口[0篇]  模块[62篇]  移位寄存器[0篇]  

  UART内核的接收完成状态仅保持1个时钟周期,设置这个状态的作用是借用一个时钟周期复位信号检测器,准备接收下次数据传输。

  检测器,准备接收下次数据传输。

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

  UART内核复位后进入空闲状态,当探测到发送控制信号有效时,即send=‘1’,便会进入加载状态开始数据加载。在进入加载状态的同时,UART内核会将移位寄存器、计数器复位,并且通过选择信号使得移位寄存器的输入为发送数据缓冲器模块产生的串行数据序列,使得移位寄存器和计数器的工作时钟为系统时钟。

  进入加载状态后,在UART内核控制下,发送数据缓冲器模块会将完整的待发送序列加载到移位寄存器的数据输入端,发送的序列是和系统时钟同步的,移位寄存器在系统时钟的驱动下不断读入输入端数据并保存在内部寄存器内。在移位寄存器加载数据的同时,计数器也在时钟的驱动下进行计数,由于都是工作在系统时钟下,所以当所有数据被加载时,计数器也达到了计数的上阈(即串行数据的总量),此时overflow=‘1’,通知UART内核进入发送状态。UART内核进入发送状态的同时会改变几个选择信号,比如将移位寄存器的时钟设为波特率时钟,将计数器时钟设为波特率的提示信号,最重要的是将输出信号送到RS232的发送端口TxD上。发送的过程和接收类似,移位寄存器在波特率时钟的驱动下内部寄存器的数据串行的发送出去,同时计数器在波特率发生器的提示信号驱动下进行计数。

  UART内核在计数器到达计数上阈后便进入发送完成模式,并且输出发送完成信号。

  3 UART顶层模块的仿真测试

  将上述各个模块的VHDL代码生成原理图符号,并在原理图编辑工具中将各个模块连接起组成1个完整的UART模块。为了验证UART模块的正确性,对UART的发送过程和接收过程分别进行了波形仿真。

  为便于观察波形,波特率产生器设置为4个系统时钟产生一个完整的波特率时钟。图9是UART模块接收过程的仿真波形图。

图9 UART数据接收过程的仿真波形图

  由仿真波形图可以看出,接收端RxD上的数据序列为0101010101,起始位‘0’后为数据位“10101010”,最后一位为停止位‘1’。在10个波特率时钟之后,UART发出1个接收完成信号recv=‘1’,并在数据输出端“new_data”将接收的数据输出给后续数据处理模块。由于发送数据时首先发送数据的最低位,因此接收的数据应为“01010101”,将光条放置数据输出端“new_data”的数据输出波形上,可以从数据栏看到此时数据输出端new_data=“01010101”,UART数据接收功能完全正确。

  图10为UART发送过程仿真波形。由图可以看出,send=‘1’后待发送数据为“01010101”,将待发送数据加上起始位和停止位,并从最低位开始发送,则发送端txd上的数据序列为“0101010101”,发送停止位后,发送结束信号send_over=‘1’。图10证明UART数据发送功能完全正确。

图10 UART数据发送过程的仿真波形图

 已有0条评论 我要评论 联系编辑 分享到:网易新浪腾讯人人开心网豆瓣MSN


最新评论(加载最新评论):


上一篇:基于无线网络控制系统在沥青站的设计与应用

下一篇:TMP03/04型 数字温度传感器的工作原理


相关文章:


关键字搜索:


新闻中心::嵌入式[0篇]  UART接口[0篇]  模块[124篇]  移位寄存器[0篇]  

成功应用::嵌入式[0篇]  UART接口[0篇]  模块[4篇]  移位寄存器[0篇]  

解决方案::嵌入式[0篇]  UART接口[0篇]  模块[11篇]  移位寄存器[0篇]  


图片文章:

热点专题