实例十二 UART的发送与接收模块设计

本文详细介绍了UART的发送与接收模块设计,包括接收原理(16倍波特率采样,确保数据正确性)和发送原理(遵循UART帧格式输出数据)。通过设计流程展示了如何使用Verilog实现UART模块,并提供了UARTTEST和UARTsendtest的测试文件设计,用于验证模块的正确性。
摘要由CSDN通过智能技术生成

6.1 实例十二 UART的发送与接收模块设计

6.1.1. 本章导读

设计目的
(1)学习UART的工作原理,并用verilog设计编写UART的发送/接收模块。
(2)熟练运用Robei软件进行调试模拟仿真。
设计原理
UART的帧格式  
异步串行数据的一般格式是:起始位+数据位+结束位,其中起始位是1位,数据位是8位数据或7位数据加1位奇偶校验位,停止位是2位。如图6-1-1所示:
在这里插入图片描述
(1)接收原理:
由于UART是异步传输,没有传输同步时钟。为了能保证数据传输的正确性,采样模块利用16倍数据波特率的时钟进行采样,假设波特率为115200,则采样时钟为clk16x=115200×16。每个数据占据16个采样时钟周期,1bit起始位+8bit数据位+1bit停止位=10bit,因此一帧共占据16×10=160个采样时钟,考虑到每个数据位可能有1-2个采样时钟周期的偏移,因此将各个数据位的中间时刻作为采样点,以保证采样不会滑码或误码。一般UART一帧的数据位数为8,这样即使每个数据有一个时钟的误差,接收端也能正确地采样到数据。因此,采样时刻为24(跳过起始位的16个时钟)、40、56、72、88、104、120、136、152(停止位),如下图6-1-2所示:
在这里插入图片描述
其中,RX为接收引脚,CNT为对采样时钟进行计数的计数器。
(2)发送原理:
当并行数据准备好后,如果得到发送指令,则将数据按UART协议输出,先输出一个低电平的起始位,然后从低到高输出8个数据位,接着是可选的奇偶校验位,最后是高电平的停止位;
由于发送时钟clk16x为波特率的16倍,因此对clk16x计数到16时,发送D0;计数到32时,发送D1……依此类推,如图6-1-3所示;
在这里插入图片描述

6.1.2. 设计流程

1. 接收模块的设计
(1)新建一个模型,名为UART,类型为module,具备 3 输入 2 输

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值