常用串行总线(一):UART及FPGA实现

本文介绍了UART协议,包括RS232标准,波特率概念,以及FPGA实现UART的PC-FPGA数据回环测试。在实验设计中,通过FPGA接收并重新发送8比特数据,确保数据完整性和一致性。代码分模块展示了RX和TX部分,适用于各种串口通信场景。
摘要由CSDN通过智能技术生成

目录

 

一、uart及RS232协议介绍

 二、实验设计

三、代码分模块展示

rx部分

tx部分

四、效果展示


一、uart及RS232协议介绍

通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。通俗的讲就是把多比特的数据转化为单比特的数据,或者把单比特的数据转化为多比特的数据。工作原理是将数据的每个 bit 一位接一位地传输。
uart有多种协议,常见的为rs232、rs422和rs485.其中rs232为较为简单你的一种,只有两根传输线。两外两种较为复杂,需要将信号进行差分处理,因而可以时间更远的传输距离。而rs232传输距离则较短。本文将实现基于rs232协议的uart接口。

rs232 协议接口有两根线,分别是 rx 和 tx,这两根线都是 1 比特位宽的。其中 rx 是接收线, tx 是发送线。

在本文进行的实现中,rx,位宽为 1 比特, pc 机通过串口往 FPGA 发 8 比特数据时, FPGA 通过串口线 rx 一位一位地接收,从最低位到最高位依次接收,最后在 FPGA 里面位拼接成8 比特数据。tx,位宽为 1 比特, FPGA 通过串口往 pc 机发 8 比特数据时, FPGA 把 8 比特数据通过 tx 线一位一位的传给 pc 机,从最低位到最高位依次发送,最后上位机通过串口助手把这一位一位的数据位拼接成 8 比特数据。在不发送或者不接收数据的情况下, rx 和 tx 处于空闲状态,此时 rx 和 tx 线都保持高电平。如果有数据传递,首先会有一个起始位(低电平有效0),然后是 8 比特的数据位,接着有 1 比特的停止位(高电平有效1),如果停止位以后不再发数据,将进入空闲状态,否则又将数据线拉低(进入起始位状态)。示意图如下:(需要注意的是,uart首先发送低位,然后发送高位)

用来衡量uart传输速率的称为波特率, 波特率是指在串口通信时的速率,单位时间内载波变化的次数。常见的波特率有9600Bd 19200Bd 28400Bd 115200Bd等,本文采用的是9600,即发送1bit数据的时间位1/9600秒。

 二、实验设计

PC-FPGA数据回环测试:上位机由串口助手通过 rx 线往 FPGA 发 8 比特数据,当 FPGA接收到 8 比特数据后,再通过 tx 线把接收到的 8 比特数据给上位机发回去,要求上位机接收到的数据和上位机发送的数据一样。

串口发送或者接收一比特数据的时间为一个波特(1/9600),因此如果用 50M的系统时钟来计数,就需要记数 cnt=(1/9600s)/20ns≈5208 个系统时钟,才再次发送

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值