IC基础(四):UART异步串口通信

本文介绍了UART异步串口通信的基本概念,包括UART的异步特点、串行通信方式、传输协议、波特率以及Verilog程序设计。讨论了波特率的常见选择和硬件限制,并展示了发送和接收的仿真波形。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是UART异步串口通信?
首先来解释一下,什么是UART。UART是Universal Asynchronous Receiver/Transmitter的简称,翻译过来开就是通“用异步收发器”。

从关键字可以看出来,这是一个异步的通信协议,因为接收和发送使用的不是同一个时钟。另外一个关键字就是串口,串口说白了就是串行。串行通信只是用一根信号线传输数据,每次传输一位,串行传输的特点是线路简单成本低。而并行通信是使用多根信号先进行信号传输,相当而言并行传输更开快。

二、UART串行通信的传输方式
弹工:只能单向传输
半双工:每一个时刻只能是发送或者接收,也就是说发送和接收使用同一个信号线。
全双工:发送和接收分别使用两根不同的信号线,收和发可以同时进行。

三、传输协议
UART的传输协议如下:
在这里插入图片描述
图片来源于网络,侵删

发送数据过程:空闲状态,线路处于高电位;当收到发送数据指令后,拉低线路一个数据位的时间T,接着数据按低位到高位依次发送,数据发送完毕后,接着发送奇偶校验位和停止位(停止位为高电位),一帧数据发送结束。

接收数据过程:空闲状态,线路处于高电位;当检测到线路的下降沿(线路电位由高电位变为低电位)时说明线路有数据传输,按照约定的波特率从低位到高位接收数据,数据接收完毕后,接着接收并比较奇偶校验位是否正确,如果正确则通知后续设备准备接收数据或存入缓存。

四、波特率
UART通信的波特率指的是每秒钟传输的二进制位数。比如9600bps,意思就是每秒钟可以传输9600个bit。举个例子,每秒钟可以传输1200个字符,每个字符包含1个起始位、8个数据位、1个停止位,则其波特率就是1200*(1+8+1)=12000bps。常见的波特率有9600、115200、128000、256000等。256000bps对应的速度大概是31.25KB/s.

在做这个UART的时候突然想到,为什么波特率都是使用这些常见的波特率呢?有没有非常规划的波特率呢?而且根据波特率的定义,那我们波特率提高到256000000bps,换算下来大概就是30.5MB/s。理论上是可以的,但是如果硬件不支持还是不行。

五、verilog程序设计

本次设计借助了状态机器的思想。发送和接收的状态转换如下。

接收状态转换:

在这里插入图片描述
初始状态是Idle,在这个给状态下会不听的检测输入的信号,当检测到低电平时就进入Rx_Start_bit状态。如果检测到的是高电平,则会一直检测输入。RX_Start_bit是接收起始位并对起始位进行判断,如果在这个状态下检测的是高电平,说明刚才检测到的低电平是一个脉冲信号,所以将返回到Idle状态,否则就进入到接收数据位的状态下,也就是进入Rx_Data_bits。在Rx_Data_bits下接收采样的8位数据。接收完之后就进入Rx_Stop_bit接收停止位,然后进入Cleanup。接着在进入Idle态等待接收数据。

发送状态转换图:</

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值