FPGA学习笔记
UART串口协议
1. 概念
2. UART关键参数及时序图
UART串口协议详解
1. 概念
- 概念:通用异步收发传输器:Universal Asynchronous Receiver/Transmitter, 数据发送时,将并行数据转换成串行数据,数据接收时,将串行数据转换成并行数据。
- 知识点
-
物理层:(电气层:接口决定)通信接口(RS232, RS485, RS422, TTL)
-
数据格式(数据层:芯片决定)
-
通信协议(协议层:程序决定)
-
2.UART关键参数及时序图
UART通信在使用前需做多项设置:数据位数,波特率,奇偶校验类型,停止位数。
关键参数:
-
1. 空闲状态:UART规定,当总线处于空闲状态时,信号线的状态位高电平,1。
-
2. 起始位:数据开始传送标志位。由于空闲状态信号线一直处于高电平,所以,起始位为低电平,0。
-
3. 数据位data bits:单个UART数据传输在开始和停止期间发送数据位数。可选5,6,7,8(默认)
-
4. 波特率baud:每秒钟可以通信的数据比特个数。典型的波特率:300, 1200, 2400, 9600, 19200, 115200等。收发两端设备都要设置相同的波特率。
-
5. 奇偶校验位parity type:验证数据正确性。
奇校验odd parity:数据中,1个的个数为奇数,校验位为1;1的个数为偶数,校验位为0。
偶校验even parity:数据中,1的个数为偶数,校验位为0;1的个数为奇数,校验位为1。
无奇偶校验non:如果数据长度为8,则无多余比特位用于奇偶校验,称为无奇偶校验non
-
6. 停止位stop bits:标志一次数据传输完成,可帮助接收信号硬件同步。可选择1(默认),1.5, 2位。
RS232标准中:8N1,八个数据位,一个停止位,无奇偶校验位。
时序图
-
完整字节包括10位:一位起始位,8位数据位,一位停止位。需要11个波特脉冲完成。第一个脉冲标记一次传输的开始,第11个脉冲标记一次传输的结束。
-
第1个波特脉冲上升沿:字节发送模块开始发送起始位;
第2~9个波特脉冲上升沿:发送8位数据位;
第10~11个波特脉冲上升沿:发送停止位;
基本结构
⑴. 输出缓冲寄存器,它接收CPU从数据总线上送来的并行数据,并加以保存。
⑵. 输出移位寄存器,它接收从输出缓冲器送来的并行数据,以发送时钟的速率把数据逐位移出,即将并行数据转换为串行数据输出。
⑶. 输入移位寄存器,它以接收时钟的速率把出现在串行数据输入线上的数据逐位移入,当数据装满后,并行送往输入缓冲寄存器,即将串行数据转换成并行数据。
⑷. 输入缓冲寄存器,它从输入移位寄存器中接收并行数据,然后由CPU取走。
⑸. 控制寄存器,它接收CPU送来的控制字,由控制字的内容,决定通信时的传输方式以及数据格式等。例如采用异步方式还是同步方式,数据字符的位数,有无奇偶校验,是奇校验还是偶校验,停止位的位数等参数。
⑹. 状态寄存器。状态寄存器中存放着接口的各种状态信息,例如输出缓冲区是否空,输入字符是否准备好等。在通信过程中,当符合某种状态时,接口中的状态检测逻辑将状态寄存器的相应位置“1”,以便让CPU查询。
接收端原理与实现代码UART串口接收端设计
发送端原理与实现代码UART串口发送端设计_多字节传输
UART串口发送端设计_单一字节传输
[参考资料] FPGA系统设计与验证实战指南
【注】:个人学习笔记,如有错误,望不吝赐教,这厢有礼了~~~