UART原理/Verilog代码

概念UART:通用异步收发传输器,是一种串行异步收发协议。工作原理是将数据的二进制位一位一位的进行传输。UART通讯协议中信号线上的状态位高电平代表’1’,低电平代表’0’。当两设备使用UART串口通讯时,必须先约定好传输速率和一些数据位。硬件连接仅需三根线,注意连接时两个设备UART电平,如电平范围不一致请做电平转换后再连接。TX:发送数据端;RX:接收数据端;GND:保证两设备共地;软件通讯协议空闲位:UART协议规定,当总线处于空闲状态时信号线的状态为’1‘即高电平。起始位:开
摘要由CSDN通过智能技术生成

概念

UART:通用异步收发传输器,是一种串行异步收发协议。
工作原理是将数据的二进制位一位一位的进行传输。UART通讯协议中信号线上的状态位高电平代表’1’,低电平代表’0’。当两设备使用UART串口通讯时,必须先约定好传输速率和一些数据位。

硬件连接

仅需三根线,注意连接时两个设备UART电平,如电平范围不一致请做电平转换后再连接。
TX:发送数据端;
RX:接收数据端;
GND:保证两设备共地;

在这里插入图片描述

软件通讯协议

空闲位:UART协议规定,当总线处于空闲状态时信号线的状态为’1‘即高电平。
起始位:开始进行数据传输时发送方要先发出一个低电平’0‘来表示传输字符的开始。因为空闲位一直是高电平所以开始第一次通讯时先发送一个明显区别于空闲状态的信号即为低电平。
数据位:起始位之后就是要传输的数据,一般是8位,先发送最低位,最后发送最高位。
奇偶校验位:(设计中可有可无,最好有)
无校验
奇校验:数据为中’1‘的个数是偶数,则校验位为’1‘。
偶校验:数据为中’1‘的个数是奇数,则校验位为’1‘。
mark parity:校验位始终为1。
space parity:校验位始终为0。
停止位:数据结束标志。
波特率

Verilog程序

串口接收模块

在这里插入图片描述
串口接收模块主要包括电平检测、波特率定时、接收控制模块。
电平检测:主要检测一帧数据的第0位(起始位),然后高脉冲经H2L_Sig给接收控制模块;
波特率定时:配置波特率的模块。当接收控制模块拉高Count_Sig,波特率模块经BPS_CLK对接收模块产生定时;
接收控制模块:是核心控制模块。针对串口配置主要是一帧11位的数据,重视8位数据位,无视起始位,校验位和结束位。当RX_En_Sig拉高,这个模块开始工作,采集来自RX_Pin_In的数据,当完成一帧数据接收的时候,就会产生一个高脉冲给RX_Done_Sig。
一帧数据采集图:
在这里插入图片描述
点平检测模块

module detect(clk,rst,RX_Pin_In,H2L_Sig);
	input clk;
	input rst;
	input RX_Pin_In;
	output H2L_Sig;

	reg H2L_F1;
	reg H2L_F2;
	
	always@(posedge clk or negedge rst)
		if(!rst)
			begin
				H2L_F1 <= 1'b1;
				H2L_F2 <= 1'b1;
			end
		else
			begin
				H2L_F1 <= RX_Pin_In;
				H2L_F2 <= H2L_F1;
			end
	assign H2L_Sig = H2L_F2 & !H2L_F1;
endmodule

滤波定时模块

module rx_bps_module(clk,rst,Count_Sig,BPS_CLK);
	input clk.rst;
	input Count_Sig;
	output BPS_CLK;
	
	reg [12:0] count1
	
	always@(posedge clk or negedge rst
  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值