协议-UART

一、UART简介

        UART(universal asynchronous receiver-transmitter)是一种采用异步串行通信方式的通用异步收发传输器。一般来说,UART总是和RS232成对出现,那RS232又是什么呢? RS232也就是我们计算机上的串口,它的全称是EIA-RS-232C (简称232,或者是RS232 )。其中EIA(Electronic Industry Association)代表美国电子工业协会,RS是Recommended Standard的缩写,代表推荐标准,232 是标识符,C表示修改次数,它被广泛用于计算机串行接口外设连接。如果你的计算机上还有串口的话,那么你就可以在主机箱后面看到RS232的接口:

UART


        随着时代的发展,这种借口已经很少用了,取而代之的是“USB转串口”,功能和原先一样,但接口更高效了。

        串口的主要功能为:在发送数据时将并行数据转换成串行数据进行传输,在接收数据时将接收到的串行数据转换成并行数据。这应该是大多数人接触电子后学习到的第一个通信协议吧。

二、通信格式

下面说明串口的具体要点:

1、传输时序

        UART串口通信需要两个信号线来实现,一根用于串口发送,另外一根负责串口接收。一开始高电平,然后拉低表示开始位,接着8个数据位,然后校验位,最后拉高表示停止位,并且进入空闲状态,等待下一次的数据传输。

时序图


        很多时候我们的校验位是允许省略的,所以协议就变成了:开始+数据+停止。

省略校验位

2、传输速率:波特率

        串口通信的速率用波特率表示,它表示每秒传输二进制数据的位数,单位bps(位每秒)。常用的波特率有9600、19200、35400、57600以及115200等。
        FPGA开发串口时设计波特率的方法:FPGA的时钟频率/波特率。例如FPGA开发板时钟频率为50Mhz,要使用的波特率为9600bps,因此需要的计数为:50000000/9600=5208;

三、串口回环实验

        现在用FPGA开发板做一个串口回环的实验,要求是PC端通过串口助手发送数据给FPGA,FPGA接收到数据后返回给PC端,并在串口助手处显示数值。即串口助手发什么就能收回什么。实验框图如下:

 1、uart_rx

//**************************************************************************
// *** 名称 : uart_rx.v
// *** 作者 : 木子
// *** 日期 : 2024-05-13
// *** 描述 : 串口接收模块,计数9.5下,其中停止位0.5下
//            因为串口助手发送本次停止位和下次开始位中间没有留空闲位
//            若计满10下,则才结束本次传输下次数据就来了,会来不及接收
//**************************************************************************

module uart_rx
//========================< 参数 >==========================================
#(
parameter  CLK              = 50_000_000        , //系统时钟,50Mhz
parameter  BPS              = 9600              , //波特率
parameter  BPS_CNT          = CLK/BPS             //波特率计数
)
//========================< 端口 >==========================================
(
input   wire                clk                 , //时钟,50Mhz
input   wire                rst_n              
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值