FPGA串口接收单字节程序

本文详细解析了UART串口的工作原理,包括信号配置、数据格式、波特率计算,并结合FPGA设计了一段串口接收程序,介绍了关键步骤如检测下降沿、位计数和数据采样。通过实例展示了如何在FPGA中实现串口数据的实时接收和处理。

对FPGA串口接收程序用自己的理解做一个总结,有问题还请指正。UART即通用异步收发器,俗称串口。总结几个要点。1、信号线个数,从电路层面来看总共有两根线,分别是接收数据线rx和发送数据线tx。2、数据格式,如果不算上奇偶校验位等等,串口数据常用格式为1位起始位(为0)+8位数据位+1位停止位(为1)。rx和tx空闲态为1,当从1拉低到0时就认为数据传输开始了。3、串口波特率,简单来说就是传输一个bit所需要的时间,比如波特率为9600,那么传输一个bit的时间就是1秒钟/9600。4、串口先传输低位,再传输高位。

知道了串口协议的构成,就可以开始写FPGA串口接收程序了。整体思路如下:1、在检测到接收数据线rx产生了一个下降沿,即从空闲态1拉低成了0,就认为有数据传输过来了。2、在检测到下降沿后就开始10个bit的接收,每个bit的时间根据系统时钟频率和串口波特率即可算出一个bit需要多少个系统时钟周斯,定义一个计数器对一个bit的传输时间计时,并选择在最大计数值的中间值进行采样(中间的话数据相对稳定)。3、再定义一个计数器对传输的位数进行计数,每当一个bit时间计数器达到最大计数值就加1,当加到9(0-9共10个bit)说明一个字节接收完毕。在传输位数计数器的值为1-8且bit传输时间计数器为中间值时,把采样值赋给一个8位reg的对应位即可。

以下是自己手敲的程序,写了些注释,程序功能已验证。

module uart_rx
#(
	parameter CLK_FRE = 50_000_000,//系统时钟频率为50M
	parameter BPS = 115200//串口波特率
)
(
	input wire sys_clk,//系统时钟
	input wire sys_rst_n,//系统复位
	input wire rx,//串口接收数据线
	
	
	output 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值