UART简介:https://baike.baidu.com/item/UART/4429746
UART通信协议:
UART使用的是 异步,串行通信。
串行通信是指利用一条传输线将资料一位位地顺序传送。特点是通信线路简单,利用简单的线缆就可实现通信,降低成本,适用于远距离通信,但传输速度慢的应用场合。
异步通信以一个字符为传输单位,通信中两个字符间的时间间隔多少是不固定的,然而在同一个字符中的两个相邻位间的时间间隔是固定的。异步通信是按字符传输的,接收设备在收到起始信号之后只要在一个字符的传输时间内能和发送设备保持同步就能正确接收。下一个字符起始位的到来又使同步重新校准(依靠检测起始位来实现发送与接收方的时钟自同步的)
UART传输速度
UART作为异步串行通信接口,也就是说,它的数据传输不需要时钟,只要两条信号线分别进行数据收发。收发双方只需要约定好数据传输的速度和帧格式,就能保证数据收发的准确性。简单的讲就是约定好一个数据位传输的时间和一个数据的长短。 UART的数据传输速度是用波特率来描述的,即每秒钟传输的数据位,例如1000波特率表示每秒钟传输1000比特的数据,或者说每个数据位持续1毫秒。波特率不是随意的,必须服从一定的标准,如果希望设计123456波特率的RS-232接口,是不行的。常用的串行传输速率值包括以下几种:1200bps,9600bps,38400bps,115200bps等、在115200bps下,每位数据持续(1/114200)=8.68us.如果传输8位数据,共持续8*8.68us=69.44us。但是每个字节的传输又要求额外的“开始位”和“停止位”,所以实际上需要10*8.68us=86.8us的时间。因此最大的有效数据传输率只有达到11.5KBytes每秒。
UART的帧格式
由1个起始位(必须为0),8个数据位(用户数据),1个奇偶校验位(用于简单地纠错保证传输可靠性)和1或2个停止位(必须为1)组成。除了奇偶校验位,其他3个部分都是必须的。通过这个UART帧格式图我们可以知道,UART的通信是十分简单的,它是以低电平作为起始位,高电平作为停止位,中间可传输5~8比特数据和1比特奇偶校验位,奇偶校验位的有无和数据比特的长度由通信双方约定。发送端发送数据时先发一低电平,然后发送8比特数据,之后马上把信号拉高,从而完成一帧数据传送。接收端收到低电平开始计数,然后接受8比特信息位后如果检测到高电平即认为已接受完一帧数据,继续等待下一帧起始信号低电平的到来,若接受完8比特数据后没有检测到高电平则认为这不是一帧有效数据,将其丢弃,继续等待起始信号。收发可同时进行,互不干扰。一帧数据传输完毕后可以继续传输下一帧数据,也可以继续保持为高电平。两帧之间保持高电平,持续时间可以任意长。
UART协议使用 发送0-9这十个数字来控制蜂鸣器的发声。
verilog代码:
串口信号接收模块:
接收状态端口uart_rx_status表明接收状态,在接受过程中,该端口一直为高电平,接收完成后或没有信号输入时为低电平,uart_rx_flag信号为采样信号,该输入端口为1'b1时,模块进行一次采样。采样数据保存至shift_data中,八次采样完成后,将shift_data传给uart_rx_data输出。
module RX_module
(
CLKPORT,