协议 您所在的位置:网站首页 urat接口 协议

协议

2023-04-24 16:08| 来源: 网络整理| 查看: 265

一、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的接口:

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

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

 

二、通信格式

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

1.传输时序

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

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

2.传输速率:波特率

  串口通信的速率用波特率表示,它表示麦苗传输二进制数据的位数,单位是bps(位/秒)。常用的波特率有9600、19200、35400、57600以及115200等。

  FPGA开发串口时,设计波特率的方法:FPGA的时钟频率/波特率。例如我的FPGA开发板时钟频率为50Mhz,即50_000_000hz,我想使用的波特率为9600bps,因此我需要的计数为:50000000/9600≈5208。

 

三、串口回环设计

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

 

1.uart_rx 1 //************************************************************************** 2 // *** 名称 : uart_rx.v 3 // *** 作者 : xianyu_FPGA 4 // *** 博客 : https://www.cnblogs.com/xianyufpga/ 5 // *** 日期 : 2019-01-10 6 // *** 描述 : 串口接收模块,计数9.5下,其中停止位0.5下 7 // 因为串口助手发送本次停止位和下次开始位中间没有留空闲位 8 // 若计满10下,则才结束本次传输下次数据就来了,会来不及接收 9 //************************************************************************** 10 11 module uart_rx 12 //========================< 参数 >========================================== 13 #( 14 parameter CLK = 50_000_000 , //系统时钟,50Mhz 15 parameter BPS = 9600 , //波特率 16 parameter BPS_CNT = CLK/BPS //波特率计数 17 ) 18 //========================< 端口 >========================================== 19 ( 20 input wire clk , //时钟,50Mhz 21 input wire rst_n , //复位,低电平有效 22 input wire din , //输入数据 23 output reg [7:0] dout , //输出数据 24 output reg dout_vld //输出数据的有效指示 25 ); 26 //========================< 信号 >========================================== 27 reg rx0 ; 28 reg rx1 ; 29 reg rx2 ; 30 wire rx_en ; 31 reg flag ; 32 reg [15:0] cnt0 ; 33 wire add_cnt0 ; 34 wire end_cnt0 ; 35 reg [ 3:0] cnt1 ; 36 wire add_cnt1 ; 37 wire end_cnt1 ; 38 reg [ 7:0] data ; 39 40 //========================================================================== 41 //== 消除亚稳态 + 下降沿检测 42 //========================================================================== 43 always @(posedge clk or negedge rst_n) begin 44 if(!rst_n) begin 45 rx0


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有