uart串口通信设计实例

uart串口通信设计实例

ID:10271183

大小:135.50 KB

页数:8页

时间:2018-06-14

uart串口通信设计实例_第1页
uart串口通信设计实例_第2页
uart串口通信设计实例_第3页
uart串口通信设计实例_第4页
uart串口通信设计实例_第5页
资源描述:

《uart串口通信设计实例》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、2.5  UART串口通信设计实例(1)接下来用刚才采用的方法设计一个典型实例。在一般的嵌入式开发和FPGA设计中,串口UART是使用非常频繁的一种调试手段。下面我们将使用VerilogRTL编程设计一个串口收发模块。这个实例虽然简单,但是在后续的调试开发中,串口使用的次数比较多,这里阐明它的设计方案,不仅仅是为了讲解RTL编程,而且为了后续使用兼容ARM9内核实现嵌入式开发。串口在一般的台式机上都会有。随着笔记本电脑的使用,一般会采用USB转串口的方案虚拟一个串口供笔记本使用。图2-7为UART串口的结构图。串口具有9个引脚,但是真正连接入FPGA开发板的一般只有两个引脚

2、。这两个引脚是:发送引脚TxD和接收引脚RxD。由于是串行发送数据,因此如果开发板发送数据的话,则要通过TxD线1bit接着1bit发送。在接收时,同样通过RxD引脚1bit接着1bit接收。再看看串口发送/接收的数据格式(见图2-8)。在TxD或RxD这样的单线上,是从一个周期的低电平开始,以一个周期的高电平结束的。它中间包含8个周期的数据位和一个周期针对8位数据的奇偶校验位。每次传送一字节数据,它包含的8位是由低位开始传送,最后一位传送的是第7位。 (点击查看大图)图2-8  串口发送串行数据的格式示意图上述格式只是发送串口数据最通常的格式。打开Windows自带的串口

3、收发软件:超级终端,可以配置相关的选项。比如,每秒位数,可以设定一个周期的长度:如果我们设定为9600,则上图中1位持续的时间是:1/9600s。数据位也可以从5、6、7、8中选一位。奇偶校验可以从偶校验、奇校验、无、标记、空格中任选一个。停止位可以是:1、1.5、2。在这里,我们选择最通常的配置,如图2-9所示。 这个设计有两个目的:一是从串口中接收数据,发送到输出端口。接收的时候是串行的,也就是一个接一个的;但是发送到输出端口时,我们希望是8位放在一起,成为并行状态(见图2-10)。我们知道,串口中出现信号,是没有先兆的。如果出现了串行数据,则如何通知到输出端口呢?我们

4、引入“接收有效”端口。“接收有效”端口在一般情况下都是低电平,一旦有数据到来时,它就变成高电平。下一个模块在得知“接收有效”信号为高电平时,它就明白:新到了一个字节的数据,放在“接收字节”端口里面。 图2-10  串口接收和发送数据时进行串并转换的示意图二是发送数据到串口。发送数据的时候,我们也希望输入端口能够给出一个简单的形式。我们引入“发送有效”信号,它为高电平,表示我们希望把“发送字节”送入TxD发送出去。但是“发送有效”信号是否生效是有限制的,也就是正在发送的时候,是不能接收新的数据并发送的。所以,我们引入一个“发送状态”信号,它标识当前的“发报机”是否处于忙碌状态

5、。如果“发报机”处于忙碌状态,则它拒绝“发送有效”信号,不予执行。根据上面的分析,可以确定端口信号如下:1.module rxtx ( 2.                clk, 3.                rst, 4.                rx, 5.                tx_vld, 6.                tx_data, 7.                 8.                rx_vld, 9.                rx_data, 10.                tx, 11.   

6、             txrdy 12.                ); 13.input           clk; 14.input           rst; 1.input           rx; 2.input           tx_vld; 3.input  [7:0]    tx_data; 4. 5.output         rx_vld; 6.output [7:0]   rx_data; 7.output         tx; 8.output         txrdy; rx对应RxD,tx对应TxD。rx_vld就是“接收

7、有效”信号,rx_data则是“接收字节”信号。tx_vld是“发送有效”信号,tx_data是“发送字节”信号。txrdy是“发送状态”信号,它是低电平表示正处于发送状态,不接收新的字节而进行发送。我们知道,串行数据的频率是9600Hz,而FPGA开发板的频率却是非常高的。这里,我们假定FPGA的工作频率是25MHz,则串口发送1位信息,则FPGA上的clk需要计数:25000000/9600=2604次。我们知道rx一旦变化,不论是从0到1,还是从1到0,都表示1位信息的传递开始。因此,我们在设计一个最大计数值

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。