0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

UART通信协议介绍和数据传输工作流程

FPGA研究院 来源:FPGA技术实战 2024-10-24 14:20 次阅读

引言:UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可实现全双工传输和接收。UART通常用来实现与PC之间数据通信,命令和控制信息的传输等。本文我们介绍UART通信协议、传输时序及如何利用HDL编程实现FPGA与PC通信。

1.异步串行通信的理解

首先需要介绍几个概念。

通信协议:指双方实体完成通信或服务所必须遵循的规则和约定。交流什么、怎样交流及何时交流,都必须遵循某种互相都能接受的规则。这个规则就是通信协议。

串行通信:是指通信双方按位进行,遵守时序的一种通信方式。串行通信中,将数据按位依次传输,每位数据占据固定的时间长度,即可使用少数几条通信线路就可以完成系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。

异步通信:它是对于同步通信来说的,异步通信在发送字符时,所发送的字符之间的时隙可以是任意的,当然,接收端必须时刻做好接收的准备(如果接收端主机的电源都没有加上,那么发送端发送字符就没有意义,因为接收端根本无法接收)。发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。

2.UART通信协议介绍

UART使用的是异步串行通信机制,其数据传输协议格式如下图所示。

wKgaomcZ50CAYI-NAAE4rJC_jSo997.jpg

图1:UART数据传输协议格式

其中各位的含义如下:

起始位:先发出一个逻辑”0”信号,表示传输字符的开始。

数据位:可以是5~8位逻辑”0”或”1”。如ASCII码(7位),扩展BCD码(8位)。

校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验);数据的奇偶校验位是可以选择的,如果不使用奇偶,那么就没有这个数据位。

停止位:它是一个数据字段的结束标志。可以是1位、1.5位、2位的高电平。

空闲位:处于逻辑“1”状态,表示当前线路上没有数据信息传输。

UART数据传输协议格式,通常需要在收发设备提前定义好,如传输数据的位数、是否需要校验位、停止位。另外还一个重要的参数就是数据传输的波特率。

wKgZomcZ50CAeth4AACEZMcmtg0953.jpg

图2:常见标准波特率

UART数据传输的速度通常用波特率来衡量。在一次串口通信过程中,数据接收与发送双方没有共享时钟,因此,双方必须协商好数据传输波特率。根据双方协议好的传输速率,相邻bit的时间间隔就会固定下来,接收端即可对发送端的数据进行采样。

标准波特率:包括2400bps、4800bps、9600bps、19200bps、38400bps、57600bps、115200bps等。当然更块的速度意味着对采样的要求更高,有可能误码率会逐渐提高。

3.数据传输工作流程

本文设定传输协议为:1位起始位+8位数据位+1位结束位,无奇偶校验位,传输波特率为9600bps。

(1)发送端按照预先设定好的传输协议及波特率,发送端依次发送:

1bit数据起始位+8bit数据位+1bit停止位

其中,起始位为逻辑 0(低电平) ,结束位为逻辑 1(高电平) ,发送端在空闲状态为 1 。

(2)接收端:接收端通过检测电平“1”(空闲状态)到“0”(起始位)的跳变来确定一个数据包的开始。确定开始位接收完成之后,依次接收数据使用更高的采样时钟,完成数据采集。接收完数据位后,继续接收停止位。

4.硬件介绍

硬件上采用USBRS232芯片CP2104实现PC与FPGA之间通信。电路中设计了一片ESD静电防护芯片RCLAMP0522P,与转换芯片CP2104一起,可以防止静电浪涌烧毁FPGA芯片,起到隔离保护作用。

wKgaomcZ50CAJvZ1AAHNxuGyWqM095.jpg

图3:USB转RS232电路图

5.软件设计

软件设计划分为接收模块uart_rx.v和uart_tx.v两个模块,顶层模块uart_driver.v互联两个模块,如下图所示。
wKgZomcZ50CAalj5AABjrHCqzcU919.jpg

图4:软件模块划分

UART数据传输主要包括两个部分:

波特率的产生设计;

数据传输设计,包括接收与发送。

(1)波特率产生设计:

板载 FPGA 输入时钟 100Mhz,为得到常用的波特率,采用计数分频来得到。BAUD_DIV=100000000/ 波特率。其中采样中心点为发送或接收时钟的中心点,即 BAUD_DIV_CAP= 100000000/(2*波特率) 。

(2)数据传输设计

数据接收模块:在设置好传输波特率9600bps下,根据串口传输时序,进行解串(串并转换)。空闲状态时,接收数据为逻辑高电平,等待起始位逻辑低电平的到来。当起始位到达后,由低位到高位,依次采集8位数据,并进行相应的解串,存入临时寄存器。接收有效数据完成后,判断结束位,接收完毕。

数据发送模块:设置发送使能信号和待发送的数据。通过计数器,表示10 个数据发送的周期。这 10 个数据,依次为:1位起始位+8 位数据位 +1 位结束位,实现数据位的逐个发送。本设计中,采用PC机的串口调试助手,发送数据位至FPGA。FPGA 接收到数据位之后,立即回传至 PC 机。

6.软件功能仿真与测试

编写testbench仿真文件,利用Vivado自带仿真器对软件代码进行功能仿真,仿真结果如下图所示。

wKgZomcZ50CAeawmAADvPBkd_Fw217.jpg

图5:UART串行通信仿真

图中①处,仿真UART接收串口信号uart_rx_i输入数据8'b10101001baud_bps在每个bit位宽中间时刻采样,bit_num计数接收到的数据bit个数,数据按照LSB端接收;

图中②处完成8bit数据位接收后,产生接收完毕信号uart_rx_done;

来源: 本文转载自FPGA技术实战公众号

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 通信协议
    +关注

    关注

    28

    文章

    854

    浏览量

    40250
  • uart
    +关注

    关注

    22

    文章

    1227

    浏览量

    101160
  • 串口通信
    +关注

    关注

    34

    文章

    1609

    浏览量

    55408
  • 异步串行通信

    关注

    0

    文章

    16

    浏览量

    8408

原文标题:FPGA入门基础之UART串口通信设计

文章出处:【微信号:FPGA研究院,微信公众号:FPGA研究院】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    UART通信协议

    位、波特率等均可以在COM接口中设置。也可以在代码中对UART寄存器的各位进行设置,UART寄存器的各位所代表的含义如下:下面通过几个小程序,了解UART通信协议进行
    发表于 01-31 10:43

    SPI总线工作原理/数据传输步骤/优缺点

    共享时钟信号的任何通信协议称为同步。SPI是一种同步通信协议,还有一些不使用时钟信号的异步方法。例如,在UART通信中,双方都设置为预先配置的波特率,该波特率决定
    发表于 12-09 14:18

    UART通信协议是什么

      UART作为异步串口通信协议的一种,工作原理是将传输数据的每一个字符一位一位地传输。其中每一
    发表于 02-23 16:54

    STM32简单数据传输方法与通信协议(适合串口和一般总线)精选资料分享

    传感器通过RS485总线或者CAN总线的方式达到数据传输的目的等等,这些数据传输往往需要合适稳定的总线和灵活的通信协议,我发现无论什么数据传输,原理大同小异,这里简单以stm32的几种
    发表于 08-23 07:16

    UART协议数据传输格式是怎样的

    什么是UART协议UART工作原理是什么?UART协议
    发表于 11-02 08:14

    UART的原理与数据传输流程

    目录1Uart原理1.1简介1.2数据传输流程2、S3C2440的UART2.1特性2.2寄存器设置1)UART通道管脚设为
    发表于 12-16 07:03

    嵌入式GPRS数据传输终端设计

    利用嵌入式平台的硬件、软件技术、开发了基于GPRS网络进行数据传输的嵌入式数据传输终端设备。通过设计一种应用层通信协议,很好地解决了在不可靠的无线传输链路上进行
    发表于 09-13 11:02 62次下载
    嵌入式GPRS<b class='flag-5'>数据传输</b>终端设计

    以太网数据传输系统的设计与应用介绍

    工作流程,并最终完成了对系统的功能验证,、经验证,系统稳定实现了与上位机之间的数据传输,现代数据采集领域中,越来越多的现场采集设备需要扩展网络功能以实现远程控制和数据传输。以太网以其成
    发表于 11-16 15:00 15次下载
    以太网<b class='flag-5'>数据传输</b>系统的设计与应用<b class='flag-5'>介绍</b>

    tcp_ip 协议讲座:介绍数据传输

    介绍了tcp协议数据传输的问题(交互式数据传输,批量数据传输,流量控制,拥塞避免)
    的头像 发表于 07-03 11:05 3424次阅读
    tcp_ip <b class='flag-5'>协议</b>讲座:<b class='flag-5'>介绍</b><b class='flag-5'>数据传输</b>

    【世说知识】一文搞懂UART通信协议

    双向通信中,我们使用两根导线来进行连续的串行数据传输。根据应用和系统要求,串行通信需要的电路和导线较少,可降低实现成本。本文将UART用作硬件通信协
    的头像 发表于 02-02 10:46 2137次阅读
    【世说知识】一文搞懂<b class='flag-5'>UART</b><b class='flag-5'>通信协议</b>

    物联网应用场景中常见的通信协议

    物联网协议是指在物联网环境中用于设备间通信和数据传输协议。根据不同的作用,物联网协议可分为传输
    的头像 发表于 09-11 17:18 1294次阅读
    物联网应用场景中常见的<b class='flag-5'>通信协议</b>

    DTU的多种协议,解锁数据传输的无限可能

    。本文将详细介绍DTU的多种协议,看看它们如何帮助我们更好地完成数据传输工作。1.Modbus协议:这是一种常用于工业领域的
    的头像 发表于 03-01 11:00 734次阅读
    DTU的多种<b class='flag-5'>协议</b>,解锁<b class='flag-5'>数据传输</b>的无限可能

    UART串口通信协议是什么?

    ,广泛应用于嵌入式领域。 在UART串口通信协议中,数据以字节的形式进行传输。发送和接收端的通信流程
    的头像 发表于 03-19 17:26 1241次阅读

    简单认识UART通信协议

    模块等多种设备之间的数据传输。以下是对UART通讯协议的详细简述,内容将涵盖其基本原理、工作方式、配置参数、常见应用以及与其他通信协议的比较
    的头像 发表于 07-25 18:07 1329次阅读

    UART协议工作原理和应用场景

    UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)协议是一种广泛使用的串行通信协议,它允许计算机与外部设备之间通过串
    的头像 发表于 08-25 17:15 2350次阅读