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

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

3天内不再提示

基于FPGA实现通用异步收发器基本功能的应用设计

FPGA设计论坛 来源:未知 2023-05-29 15:05 次阅读

点击上方

蓝字

关注我们



通用异步收发器(Universal Asynchronous Receiver/Transmitter,UART)可以和各种标准串行接口,如RS232RS485等进行全双工异步通信,具有传输距离远、成本低、可靠性高等优点。一般UART由专用芯片来实现,但专用芯片引脚都较多,内含许多辅助功能,在实际使用时往往只需要用到UART的基本功能,使用专用芯片会造成资源浪费和成本提高。当我们不需要用到完整的的UART功能和一些辅助功能时,就可以将需要的UART功能集成用FPGA来实现,然而,FPGA内部并不拥有CPU控制单元,无法处理由UART控制器产生的中断,所以FPGA不能利用现成的UART控制器构成异步串行接口,必须将UART控制器的功能集成到FPGA内部。从而可以大大的减少了体积、简化了电路,也提高了系统的灵活性。

1、 UART的工作原理

UART是一种串行数据总线,用于异步通信,并且双向通信,可实现全双工发送和接收。基本的UART只需要两条信号线(TXD、RXD)和一条地线就可以完成数据的互相通信,接收和发送互不干扰,这样就大大节省了传输费用。由于UART是异步通信,所以需要对数据进行同步。UA RT发送/接收数据的传输格式如图1所示,一个字符单位由开始位、数据位、校验位、停止位组成(其中校验位可供选)。

发送或接收一个完整的字节信息,首先是一个作为起始位的逻辑“0”位,接着是8个数据位。然后是停止位逻辑“1”位,数据线空闲时为高或“1”状态。在字符的8位数据部分,先发送数据的位,发送位。每位持续时间是固定的,由发送器本地时钟控制,每秒发送的数据位个数,即为“波特率”。起始位和停止位起着很重要的作用。显然,它们标志每个字符的开始和结束,但更重要的是他们使接收器能把他的局部时钟与每个新开始接收的字符再同步。异步通信没有可参照的时钟信号,发送器随时都可能发送数据,任何时刻串行数据到来时,接收器必须准确地发现起始位下降沿的出现时间,从而正确地采样紧接着的10或者11位(包括开始位、数据位和停止位),接收器的时钟和发送器的时钟不是同一个,因此,接收器所确定的采样点的间隔和发送器所确定的位间隔时间不同,这点要特别注意。

2、 UART功能设计

异步通信的一帧传输经历以下步骤:1)空闲状态。发送方连续发送信号,处于信息“1”状态。2)开始传输。发送方在任何时刻将传号变成空号,即“1”跳变到“0”,并持续1位时间表明发送方开始传输数据。而同时,接收方收到空号后,开始与发送方同步,并期望收到随后的数据。3)奇偶传输。数据传输之后是可供选择的奇偶位发送或接收。4)停止传输。是发送或接收的停止位,其状态恒为“1”。

设计的基本原则是保留主要的功能,基于FPGA的UART系统由波特率时钟发生器、接收器和发送器3个子模块组成,如图2所示。

2.1 波特率发生器设计

波特率发生器实质是设计一个分频器,用于产生和RS232通信同步的时钟。在系统中用一个计数器来完成这个功能,分频系数N决定了波特率的数值。该计数器一般工作在一个频率较高的系统时钟下,当计数到N/2时将输出置为高电平,再计数到N/2的数值后将输出置为低电平,如此反复即可得到占空比50%的波特率时钟,具体的波特率依赖于所使用的系统时钟频率和Ⅳ的大小。如系统时钟频率是6.4 MHz,要求波特率是9 600,则16倍波特率时钟的周期约等于42个系统时钟周期,则计数器取42/2=21时,当计数溢出时输出电平取反就可以得到16倍约定波特率的时钟。

使用VHDL来描述波特率发生器的完整代码如下:

2.2 发送器设计

UART发送器的设计较容易,只要每隔一个发送周期按照数据帧格式及要求的速率输出数据即可。没有数据要发送时,发送数据寄存器为空,发送器处于空闲状态;当检测到发送数据寄存器满信号后,发送器及发送起始位,同时8个数据位被并行装入发送移位寄存器,停止位紧接着数据位指示一帧数据结束。只有发送数据寄存器为空时,RAM中的待发数据才能被装入。程序中使用计数器要保证各位周期定时正确。

2.3 接收器设计

接收器的工作过程如下,串行数据帧和接收时钟是异步的,发送来的数据由逻辑1变为逻辑0可以视为一个数据帧的开始。接收器先要捕捉起始位,然而,通信线上的噪音也极有可能使传号“1”跳变到空号“0”。所以接收器以16倍的波特率对这种跳变进行检测,确定rxd输入由1到0,逻辑0要8个bclkr(16倍的波特率时钟)周期,才是正常的起始位,而不是噪音引起的,其中若有采样得到的为高电平则认为起始信号无效,返回初始状态重新等待起始信号的到来。

采到正确的起始位后,就开始接收数据,可靠的接收应该是接收时钟的出现时刻正好对着数据位的中央。由于在起始位检测时,已使时钟对准了位中央,用16倍波特率的时钟作为接收时钟,就是为了确保在位宽的中心时间对接收的位序列进行可靠采样,当采样计数器计数结束后所有数据位都已经输入完成。对停止位的高电平进行检测,若正确检测到高电平,说明本帧的各位正确接收完毕,否则出错。

后将正确的数据转存到数据寄存器中,输出数据。还要输出一个数据接收标志信号标志数据接收完。

利用有限状态机实现,完整代码如下:

3、 仿真

本设计在Altera Cyclone系列的EP1C3T100I7芯片上进行了验证,对发送模块和接收模块的仿真结果分别如图3、图4所示。发送的数据能严格按照串行通信协议进行传输;接收的数据也完全正确。仿真无误后,使用QuarhusⅡ软件将编译好的.pof格式文件载到配置芯片EPCS1中。结果通信数据完全正确,电路工作稳定、可靠。

用FPGA设计UART,可以用片上很少的逻辑单元实现UART的基本功能。与传统设计相比,能有效减少系统的PCB面积,降低系统的功耗,提高设计的稳定性和可靠性,充分利用FPGA的剩余资源。并可方便地进行系统升级和移植。

4 、结论

该设计具有很大的灵活性,通过调整波特率发生器的分频参数,就可以使其工作在不同的频率。采用16倍波特率的采样时钟,可以实时有效监测数据的起始位,并对数据位进行中央采样,从而保证了所采样数据的正确性。该模块可以作为一个完整的IP核,灵活地移植进各种型号FPGA中,在实际应用时也可嵌入到其他系统中,有很好的借鉴和参考价值。



扫描二维码获取

更多精彩

FPGA设计论坛






精彩推荐




至芯科技-FPGA就业培训来袭!你的选择开启你的高薪之路!5月30号西安中心开课、欢迎咨询!
简谈FPGA verilog中的repeat和while用法与例子
简谈CPU、MCU、FPGA、SoC这些芯片异同之处
FPGA复位设计的常见问题






欢迎关注至芯科技

至芯官网:www.zxopen.com

至芯科技技术论坛:www.fpgaw.com

至芯科技淘宝网址:

https://zxopen.taobao.com

至芯科技FPGA初级课程(B站):

https://space.bilibili.com/521850676

至芯科技FPGA在线课程(腾讯课堂):

https://zxopenbj.ke.qq.com/

至芯科技-FPGA 交流群(QQ):282124839



扫码加入FPGA学习交流群




欢迎加入至芯科技FPGA微信学习交流群,这里有一群优秀的FPGA工程师、学生、老师、这里FPGA技术交流学习氛围浓厚、相互分享、相互帮助、叫上小伙伴一起加入吧!


点个

在看

你最好看






原文标题:基于FPGA实现通用异步收发器基本功能的应用设计

文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

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

    关注

    1602

    文章

    21320

    浏览量

    593194

原文标题:基于FPGA实现通用异步收发器基本功能的应用设计

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    简述GDB调试器提供的基本功能

    GDB是一个功能强大的源代码级调试工具,它提供了多种基本功能,帮助程序员** **更好地理解程序的运行机制和定位问题** **。
    的头像 发表于 01-28 17:44 748次阅读

    工业级光纤收发器和商业级光纤收发器有什么区别呢?

    工业级光纤收发器和商业级光纤收发器有什么区别呢?在什么情况下该选择工业级光纤收发器呢? 工业级光纤收发器和商业级光纤收发器是两种不同级别的产
    的头像 发表于 12-27 15:02 421次阅读

    钽电容器的基本功能与结构

    钽电容器的基本功能与结构
    的头像 发表于 12-08 17:28 373次阅读
    钽电容器的<b class='flag-5'>基本功能</b>与结构

    JavaScript的语法和基本功能

    的语法和基本功能。JavaScript可以在网页中实现交互和动态效果,为用户提供更好的使用体验。 JavaScript最早由网景公司(Netscape)的布兰登·艾奇(Brendan Eich
    的头像 发表于 12-03 11:15 290次阅读

    光纤收发器怎么分ab端 光纤收发器ab端的区别 光纤收发器ab端放哪里

    。在使用光纤收发器时,需要对其进行接线,将发送端(A端)和接收端(B端)连接在一起。本文将详细介绍光纤收发器A、B端的区别、放置位置和讲究,帮助读者更好地使用和了解光纤收发器。 一、光纤收发器
    的头像 发表于 11-27 17:08 1.2w次阅读

    UART通用异步收发器原理是什么

    UART通用异步收发器(串口通信) 一般来说,开发过程中我们通常使用串口进行DEBUG调试。 原理 通用异步
    的头像 发表于 11-09 17:32 332次阅读
    UART<b class='flag-5'>通用</b><b class='flag-5'>异步</b><b class='flag-5'>收发器</b>原理是什么

    混合器的基本功能和应用领域

    混合器作为一种电子器件,主要具备以下几个基本功能
    的头像 发表于 10-16 14:25 421次阅读

    8位PIC单片机上的通用异步收发器(UART)

    电子发烧友网站提供《8位PIC单片机上的通用异步收发器(UART).pdf》资料免费下载
    发表于 09-26 09:47 0次下载
    8位PIC单片机上的<b class='flag-5'>通用</b><b class='flag-5'>异步</b><b class='flag-5'>收发器</b>(UART)

    多协议通用异步收发器(UART)模块参考手册

    通用异步收发器(Universal Asynchronous Receiver Transmitter,UART)是一种灵活的串行通信外设,用于将PIC®单片机与其他设备(包括计算机和外设)相连接
    发表于 09-22 17:40 0次下载
    多协议<b class='flag-5'>通用</b><b class='flag-5'>异步</b><b class='flag-5'>收发器</b>(UART)模块参考手册

    视频矩阵切换器的基本功能和要求是什么

    视频矩阵切换器是一种用于管理和切换多个视频信号源的设备。它的基本功能是允许用户选择并切换不同的视频源,将其发送到一个或多个显示设备上。以下是视频矩阵切换器的基本功能和要求。
    发表于 09-14 15:37 651次阅读

    #fpga 利用IBERT IP核实现GTX收发器硬件误码率测试实例

    fpga收发器
    明德扬科技
    发布于 :2023年09月05日 11:32:14

    机器视觉的基本功能包括哪些?

    机器视觉的基本功能包括哪些? 机器视觉是一种计算机技术,它主要以数字图像处理技术为基础,利用摄像机等设备获取图像,然后通过图像处理算法对图像进行分析和处理,以实现对图像中信息的检测、识别、分类、跟踪
    的头像 发表于 08-09 16:48 1057次阅读

    微安M760收发器拆卸

    收发器
    YS YYDS
    发布于 :2023年06月28日 16:13:56

    UART通用异步收发传输器简述

    UART——通用异步收发传输器,UART 作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。在应用程序开发过程中使用频率较高的数据总线。
    的头像 发表于 06-25 14:48 612次阅读
    UART<b class='flag-5'>通用</b><b class='flag-5'>异步</b><b class='flag-5'>收发</b>传输器简述

    利用IBERT核对GTX收发器板级测试

    一、概述 IBERT(集成误码率测试仪)是xilinx为7系列FPGA GTX收发器设计的,用于评估和监控GTX收发器。IBERT包括在FPGA逻辑中
    发表于 06-21 11:23