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
    +关注

    关注

    1664

    文章

    22502

    浏览量

    639113

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    SN74FB1650 18位TTL/BTL通用存储收发器:技术剖析与应用指南

    SN74FB1650 18位TTL/BTL通用存储收发器:技术剖析与应用指南 在电子设计领域,收发器实现不同信号环境间数据传输的关键组件。今天我们就来深入探讨德州仪器(TI)的SN7
    的头像 发表于 04-23 10:15 112次阅读

    SGM7SZ245S:八进制三态输出总线收发器的深度剖析

    总线收发器,解析其特性、功能及应用要点。 文件下载: SGM7SZ245S.pdf 一、产品概述 SGM7SZ245S 是一款具备三态输出的八进制总线收发器,其显著特点是能适应 1.8V 至 5.5V 的宽电源电压范围。该器件主
    的头像 发表于 03-13 17:05 786次阅读

    单片机基本功能

    可以用来实现时钟、计时等相关的功能。 另一类则是Programmable Timer(可编程定时),顾名思义,该类Timer的定时时间是可以由用户的程序来控制的,控制的方式包括:时钟源的选择、分频
    发表于 01-13 07:20

    SN74ABTE16246:11位入射波切换总线收发器的深度解析

    SN74ABTE16246:11位入射波切换总线收发器的深度解析 在电子设计领域,总线收发器实现不同总线间数据通信的关键组件。今天,我们就来深入探讨德州仪器(Texas Instruments
    的头像 发表于 12-31 17:30 2013次阅读

    TUSB1105与TUSB1106:高级通用串行总线收发器深度解析

    TUSB1105与TUSB1106:高级通用串行总线收发器深度解析 在当今的电子设备中,通用串行总线(USB)已经成为了数据传输和设备连接的标准接口。TUSB1105和TUSB1106作为高级
    的头像 发表于 12-27 09:30 799次阅读

    TUSB1106-Q1 USB收发器:特性、功能与应用详解

    TUSB1106-Q1 USB收发器:特性、功能与应用详解 在当今的电子设备中,USB接口的应用无处不在,而USB收发器作为实现USB通信的关键组件,其性能和特性直接影响着设备的通信质
    的头像 发表于 12-24 10:10 395次阅读

    深入解析SN74ABTE16246:11位入射波开关总线收发器

    深入解析SN74ABTE16246:11位入射波开关总线收发器 在电子工程师的日常工作中,总线收发器实现数据通信的关键组件之一。今天,我们就来详细探讨一下德州仪器(Texas
    的头像 发表于 12-23 16:15 592次阅读

    MC74VHC245/MC74VHCT245A 总线收发器技术解析与应用指南

    安森美 (onsemi) MC74VHCT245A 总线收发器设计用于数据总线之间的双向异步通信。这些收发器有8条独立数据线,用于在两条总线之间传输数据。MC74VHCT245A收发器
    的头像 发表于 11-22 14:45 1546次阅读
    MC74VHC245/MC74VHCT245A 总线<b class='flag-5'>收发器</b>技术解析与应用指南

    如何使用 M460 CAN FD 收发器延迟补偿功能

    如何使用 M460 CAN FD 收发器延迟补偿功能
    发表于 08-19 06:19

    高温RS485收发器芯片的基本原理

    高温RS485收发器芯片的核心功能实现基于RS-485标准的串行数据通信。RS-485是一种广泛使用的工业标准,专为长距离、抗噪声、多点通信设计。
    的头像 发表于 07-23 16:07 1296次阅读
    高温RS485<b class='flag-5'>收发器</b>芯片的基本原理

    光模块与光纤收发器可以互连吗?

    光模块与光纤收发器 可以互通 ,二者均属于光电信号转换设备,但需满足特定技术条件才能稳定工作。以下是互通的核心要点及注意事项: 一、互通原理与技术基础 功能互补性 光模块:插在交换机/路由光口
    的头像 发表于 06-20 15:29 2132次阅读
    光模块与光纤<b class='flag-5'>收发器</b>可以互连吗?

    ADM3050E 5.7 kV rms、信号隔离式、基本CAN FD收发器技术手册

    ADM3050E 是一款 5.7 kV rms 隔离式控制区域网络 (CAN) 物理层收发器,具有高性能的基本功能集。ADM3050E 完全符合 CAN 灵活数据速率 (CAN FD) ISO 11898-2:2016 的要求
    的头像 发表于 05-30 11:45 1728次阅读
    ADM3050E 5.7 kV rms、信号隔离式、基本CAN FD<b class='flag-5'>收发器</b>技术手册

    ADM3058E 5.7 kV rms信号隔离型CAN FD收发器技术手册

    ADM3058E 是一款 5.7 kV rms 隔离式控制区域网络 (CAN) 物理层收发器,具有高性能的基本功能集。ADM3058E 完全符合 CAN 灵活数据速率 (CAN FD) ISO 11898-2:2016 的要求
    的头像 发表于 05-29 17:01 1164次阅读
    ADM3058E 5.7 kV rms信号隔离型CAN FD<b class='flag-5'>收发器</b>技术手册

    第二十四章 通用同步异步收发器(USART)

    本文介绍了W55MH32的通用同步异步收发器(USART),其支持全双工异步通信、NRZ格式,具分数波特率发生,可编程数据字长、停止位等。
    的头像 发表于 05-29 15:44 2471次阅读
    第二十四章 <b class='flag-5'>通用</b>同步<b class='flag-5'>异步</b><b class='flag-5'>收发器</b>(USART)