FPGA基础 -- 通信协议 --- 了解UART以及电脑串口环境准备

本节文章主打用Altera FPGA 的开发工具 Quratus 以及开发板 EP4CE6F17C8完成rs232的串口回环实验(加FIFO)。

系列文章目录



前言

接下来咱们学习基础低速通信协议之一:UART。完成串口回环实验,并且封装uart的自用IP核。内容分三章发布。主打学习协议以及熟悉IP核的封装流程。
串口回环实验:将数据通过上位机(电脑)发送到FPGA芯片上然后由芯片传回上位机的串口助手中。
UART IP核:封装IP核,以后不用再编写冗长的代码,直接调用IP核就能实现串口通信。今后一些工程也会使用到哦,毕竟作者比较懒,懒得动脑子改写了很久的代码( -_-')(除非文章里的一些代码出错,记得出错了抓紧联系我,我会快速改好,不过应该也没啥错误,都是我重复检查好几遍的)。


一、UART协议

1、通信

(1)串行通信和并行通信

在硬件通信中数据的传递有两种方式,串行和并行。

并行通信是指数据的各个位用多条数据线同时进行传输。
优点:传输速度快。
缺点:占用资源多,传输距离短。
并行通信

串行通信是指将数据的各个位拆开,一位一位的在一条数据线上进行传输。
优点:传输距离长,通信线路简单,占用的引脚资源少。
缺点:传输速度慢。
串行通信

(2)同步通信和异步通信

数据传输过程中时钟也会对数据产生一些影响,这就导致出现了两种通信方式:

同步通信:带有时钟同步信号的数据传输。发送方和接收方在同一时钟的控制下,同步传输数据。
同步通信

异步通信:不带时钟同步信号的数据传输。通信双方在各自的时钟控制下进行数据的收发。
异步通信

(3)串行通信的数据传输方向

在通信中有发送方和接收方,数据在通信双方传递中也有方向可言:

单工:数据只能沿一个方向传输。
单工

半双工:数据的传输有两个方向,但是需要分时进行。
半双工

全双工:数据可以同时进行双向传输。
全双工

(4)常见协议通信方式

总结一下常见协议的通信方式,这些挺重要的基础要记住

在这里插入图片描述

2、UART

前边写了这么多主要是让小白了解一下通信的概念,接下来进入正题。

(1)概念

UART(Universal Asynchronous Receiver-Transmitter)是一种采用异步串行通信方式进行数据传输的通用异步收发传输器它在发送数据时将并行数据转换成串行数据来发送(并转串)接收数据时将接收到的串行数据转换为并行数据(串转并)

UART的三种接口标准,本文章使用的是rs232。3线是指还有接地线。
请添加图片描述

(2)特点

由于UART是异步通信接口,接收方发送方都有各自的时钟,在数据传输中不需要时钟,发送方发送数据的时间间隔可以不均匀,接收方是在数据的起始位和停止位的帮助下实现数据同步的。

UART实现通信的条件是需要两根信号线来实现。一根用于发送(TX),另一根用于接收(RX)。
在这里插入图片描述观察上图,对于上位机来说,它的TX端要和FPGA芯片的RX端连接,同样,芯片的TX端要和上位机的RX端连接。如果两个TX或者两个RX相连接,数据就不会正常的发送和接收。UART可以实现全双工。

UART传输速率低(以波特率为传输速率),传输距离短,通过奇偶校验位对数据进行检测,减少数据传输出现错误的概率。

(3)波特率

刚才写了UART的数据传输靠的是波特率。波特率是指单位时间(1S)内传输的码元的个数。单位是波特(Baud)。一般常用的波特率有:9600、19200、38400、115200。双方必须在相同的波特率下传输数据,否则数据就会出错。
波特率需要和比特率进行区别。比特率是指单位时间内传输的bit位数。比特率是从二进制信息的角度来定义的。

(4)协议层

接下来讲一讲UART的数据格式:
一般UART每一帧数据由4个部分组成。

  • 起始位(1bit)
  • 数据位(5/6/7/8bit)
  • 奇偶校验位(1bit)(可有可没有)
  • 停止位(1/1.5/2bit)
    UART数据格式
    • 空闲状态:设备之间不传输数据的时候以持续的高电平来表示空闲。空闲时间间隔的越长,两帧数据的帧间隔就越少。

    • 起始位:UART的接收端会一直检测信号线上的电平变化,开始传输数据时,发送端将信号线从高电平拉到低电平结束空闲状态,并保持低电平一个bit位的时长。接收方检测到电平变化时,开始接收信号。

    • 数据位:数据位包含传输的实际数据,数据首先从最低位开始发送,高位在后(LSB)。

    • 奇偶校验位:可要可不要;奇偶校验是一种通信中检验数据传输正确性的方法。通常采用哪种校验方式是收发双方事先约定好的。发送端发送的数据中包括原始数据和1bit校验位。
      若是奇校验则要保证发送的数据中“1”的 bit数是奇数个。
      若是偶校验,则要保证发送的数据中“1”的bit数是偶数个。
      例如:采用奇校验时,若原始数据中“1”的bit数是奇数个,则校验位此时应该为0,若原始数据中1的 bit数是偶数个,则校验位此时应该为1;反之亦然。

    • 停止位:停止位表示一帧数据的结束,实际信号是一段时间的高电平。停止位的时间长短可以设置成1/1.5/2bit。
      因为UART是一个异步协议,每一帧的开头可以用跳变沿来同步,但是停止位只能通过波特率来计算相对位置,如果在停止位的位置识别到一个低电平,则会产生帧错误。在通讯过程中,为了减少波特率的误差导致的问题,可以设置不同的停止位长度来适配。

二、串口环境准备

1.串口软件下载

我比较喜欢用这个串口软件,操作简单而且安装方便。
在这里插入图片描述

2.串口驱动下载

有些朋友把板子连接电脑后,可能会在串口软件里显示不出串口。
只需要打开电脑的设备管理器,能看到一个黄色小三角的错误警告,那个就是没有安装驱动的串口,咱们只需要安装合适的驱动就能正常使用了。
在这里插入图片描述


总结

咱们已经学习了UART的基本知识,我可能讲的有些简单,但UART本来就是基础协议,挑重点讲就行。
然后串口软件和驱动我都放进了我的百度网盘“资源”中,大家自行下载,有问题发私信或者加qq,网站不经常看,回复慢。
在这里插入图片描述

链接:百度网盘
提取码:yang

下一节文章就是实现串口回环传输数据了,我加油赶进度!!!

  • 21
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值