FPGA串口接收与发送 详解 (part 1 )

您所在的位置:网站首页 串口发送流程图怎么设置的 FPGA串口接收与发送 详解 (part 1 )

FPGA串口接收与发送 详解 (part 1 )

2024-06-30 14:21| 来源: 网络整理| 查看: 265

关于串口的基本知识我在上一篇文章中有提及,链接如下:串口通讯详解_居安士的博客-CSDN博客

FPGA串口的完整设计包括波特率生成,单个数据的接收与发送,一帧数据的接收与发送,我把内容分散来进行

目录

一、波特率生成程序

1.1发送数据波特率生成

1.2接收数据波特率生成

二、单个数据发送程序

如上图,串口数据传输流程如下:

1、平时数据线处于“空闭”状态(1状态)。

2、当要发送或者接收数据时,UART改变TX、RX数据线的状态(变为0状态)并维持1位的时间,这样,接收方检测到开始位后,就开始一位一位地检测数据线的状态,得到所传输的数据。

3、UART一帧中可以有5、6、7或8位数据,发送方一位一位地改变数据线的状态,将它们发送出去,首先发送最低位。

4、如果使用奇偶校验功能,UART在发送完数据位后,还要发送1个校验位。有两种校验方法,即奇校验和偶校验(数据位连同校验位中“1”的数目分别等于奇数或偶数)。

5、发送停止位,数据线恢复到“空闭”状态(1状态)。停止位的长度有三种:1位、1.5位、2位。

一、波特率生成程序 1.1发送数据波特率生成

传输数据之前,UART之间要约定数据的传输速率(即每位所占时间,其倒数成为波特率)、数据的帧格式(即有多少个数据位、是否使用校验位、是奇校验还是偶校验、有几位停止位)。因此,我们首先需要确定波特率,根据波特率确定位传送时间宽度Td。

Td=波特率的倒数

波特率就是每秒钟传输的数据位数。

串口典型的传输波特率600bps,1200bps,2400bps,4800bps,9600bps,19200bps,38400bps,57600bps,115200bps。

在这里我们用115200bps的传输波特率:

Td=1115200       =8680×10^9  s = 8680ns因此用计数器构造一个8680ns的clk

PLL产生的clk为25MHZ,T=40ns

8680=40×217          217=8’b1101 1001 需要一个8位的计数器

module TX_baud( input clk_25m, input reset, input TX_start,//开始发送数据标志位 output TX_baud_en//发送数据波特率使能 ); reg [7:0] TX_baud_cnt; always@(posedge clk_25m)begin if(reset)begin TX_baud_en


【本文地址】


今日新闻


推荐新闻


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