通信协议详解(一):UART串口(协议+数据格式+设计实现)

您所在的位置:网站首页 通信协议包含的内容 通信协议详解(一):UART串口(协议+数据格式+设计实现)

通信协议详解(一):UART串口(协议+数据格式+设计实现)

2023-10-06 12:12| 来源: 网络整理| 查看: 265

uart串口通信协议及verilog实现

文章目录 一、uart串口通信简介二、串口传输1、数据协议2、整体架构 三、串口传输实现1、发送模块2、接收模块 四、串口收发仿真总结

一、uart串口通信简介

通用异步收发器 UART(Universal Asynchronous Receiver/Transmitter),是一种串行、异步、全双工的通信协议,将所需传输的数据一位接一位地传输,在UART通讯协议中信号线上的状态位高电平代表’1’,低电平代表’0’。其特点是通信线路简单,只要一对传输线就可以实现双向通信,大大降低了成本,但传送速度较慢。

二、串口传输 1、数据协议

在这里插入图片描述 在串口通信中,尤其需要关注的是数据流以及波特率。一个数据流由10个数据位组成,包含1位起始位,7位有效数据位,1位奇偶校验位,1位停止位。uart串口信号线上空闲时常驻高电平,当检测到低电平下降沿时认为数据传输开始,到停止位时数据传输结束,一共10位数据位组成一个数据包。 起始位:通信线路上空闲时为“1”,当检测到“0”即下降沿时,认为数据传输开始 有效数据位:传输开始后传递的需要接收和发送的数据值,可以表示指令或数据 奇偶校验位:奇偶校验,通过来校验传输数据中“1”的个数为奇数个(奇校验)或偶数个(偶校验)来指示传输数据是否正确 停止位:数据传输结束,传输线恢复常“1”状态 此外,还需关注数据传输波特率,波特率表示一秒内传输了多少个码元数量,一般波特率为300,1200,2400,9600,19200,38400,115200等。例如9600 Baud表示一秒内传输了9600个码元信息,当一个码元只含1 bit信息时,波特率=比特率

2、整体架构

串口协议用于与其他模块之间的信息交互,包含接收模块和发送模块,信号传输线上根据波特率完成码元的接收与发送,因而接收模块主要完成并串转换,串并转换是接收和发送模块必备的基本功能,发送模块完成并串转换,接收模块完成串并转换。 在这里插入图片描述

波特率与时钟频率关系如下(码元为单bit时):

三、串口传输实现 1、发送模块

代码如下

//=============== //author:LGYSSS //proj:uart_transimitter //=============== module uart_tx( clk , rst_n , data_vld , //有效信号 data_in, //输入信号 data_out, //并行转串行输出信号 rdy //模块有效信号,示意模块准备接收数据 ); parameter WIDTH =8; parameter CLK_CNT= 5208; //波特率baud=9600下单码元传输 码元宽度为104166 50MHz下一个时钟周期为20ns,传输一个数据位104166/20=5208个clk parameter NUM_CNT=10; //数据位个数 input clk; input rst_n; input [WIDTH-1:0]data_in; input data_vld; output data_out; output rdy; reg data_out; reg [WIDTH-1:0]data_in_reg; reg start_tx; wire [WIDTH-1+2:0] data; reg [12:0] cnt0; wire add_cnt0; wire end_cnt0; reg [3:0] cnt1; wire add_cnt1; wire end_cnt1; always@(posedge clk or negedge rst_n)begin if(!rst_n) start_tx


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3