基于FPGA的UART控制器的多模块设计与实现

发布者:CyberJolt最新更新时间:2008-01-20 来源: 中国科技信息关键字:FPGA 手机看文章 扫描二维码
随时随地手机看文章
      异步串行通信要求的传输线少,可靠性高,传输距离远,被广泛应用于微机和外设的数据交换。实现串口通信主要需要完成两部分工作:

  将串口电平转换为设备电路板的工作电平,即实现RS-232电平和TTL/CMOS电平的转换;

  接收并且检验串行的数据,将数据变成并行的并提供给处理器处理。

  实现RS-232电平和TTL/CMOS电平转换可以用接口芯片来实现,实现数据的串行到并行转换用的是UART,它们是实现串行通信必不可少的两个部分。虽然目前大部分处理器芯片中都集成了UART,但是一般FPGA芯片却没有这个特点,所以使用FPGA作为处理器可以有两个选择,第一个选择是使用UART芯片进行串并转换,第二个选择是在FPGA内部实现UART功能。但所有的UART芯片都存在引脚较多、体积较大、与其他器件的接口较为复杂等缺点,从而会使设计的成本和难度增加。因此可以将需要的UART功能集成到FPGA内部,而利用VHDL语言将UART的核心功能集成,不仅解决传统芯片的缺点,也使整个设计更加紧凑、稳定且可靠。

  1、UART实现原理

  UART主要有UART内核、信号监测器、移位寄存

器、波特率发生器、计数器、总线选择器和奇偶校验器总共7个模块组成,如图一所示。

UART实现原理图

  UART各个模块的功能如下:

  (1)UART内核模块

  UART内核模块是整个设计的核心。在数据接收时,UART内核模块负责控制波特率发生器和移位寄存器,使得移位寄存器在波特率始终的驱动下同步的接收并且保存RS-232接收端口上的串行数据。在数据发送时,UART内核模块首先根据待发送的数据和奇偶校验位的设置产生完整的发送序列(包括起始位、数据位、奇偶校验位和停止位),之后控制移位寄存器将序列加在到移位寄存器的内部寄存器里,最后再控制波特率发生器驱动移位寄存器将数据串行输出。

  (2)信号监督器模块

  信号检测器用于对RS-232的输入信号进行实时检测,一旦发现新的数据则立即通知UART内核。

  (3)移位寄存器模块

  移位寄存器的作用是存储输入或者输出的数据。当UART接受RS-232输入时,移位寄存器在波特率模式下采集RS-232输入信号,并且保存结果;当UART进行RS-232输出时,UART内核首先将数据加载到移位寄存器内,再使移位寄存器在波特率模式下将数据输出到RS-232输出端口上。

  (4)波特率发生器模块

  由于RS-232传输必定是工作在某种波特率下,比如9600,为了便于和RS-232总线进行同步,需要产生符合RS-232传输波特率的时钟,这就是波特率发生器的功能。

  (5)奇偶检验器模块

  奇偶校验器模块是根据奇偶校验的设置和输入数据计算出相应的奇偶校验位,它是通过纯组合逻辑实现的。

  (6)总线选择模块

  总线选择模块用于选择奇偶校验器的输入是数据发送总线还是数据接收总线。在接收数据时,总线选择模块将数据接收总线连接到奇偶校验器的输入端,来检查已接收数据的奇偶校验位是否正确;而在发送数据时,总线选择模块将数据发送总线连接到奇偶检验器的输入端,UART内核模块就能够获取并且保存待发送序列所需的奇偶校验位了。

  (7)计数器模块

  计数器模块的功能是记录串行数据发送或者接收的数目,在计数到某数值时通知UART内核模块。

  2、UART工作流程

  UART的工作流程可以分为接收过程和发送过程两部分。

  接收过程指的是UART监测到RS-232总线上的数据,顺序读取串行数据并且将其输出给CPU的过程。当信号监测器监测到新的数据(RS-232输入逻辑变为0,即RS-232传输协议的起始位)就会触发接收过程,其流程图如图二所示。首先UART内核会重置波特率发生器和移位寄存器,并且设置移位寄存器的工作模式为波特率模式,以准备接收数据。其次,移位寄存器在波特率始终的驱动下工作,不断读取RS-232串行总线的输入数据,并且将数据保存在内部的寄存器内。接收完成后,UART内核会对已接收的数据进行奇偶检验并且输出校验结果。最后,UART内核会重置信号监测器,以准备进行下一次数据接收。

UART接收数据流程图

  发送过程由加载和发送两个步骤组成,如图三所示。加载步骤是UART内核按RS-232串行发送的顺序将起始位、数据位、奇偶校验位和停止位加载到移位寄存器内,这个过程工作在系统时钟下,相对于RS-232的传输速度来说非常快。完成加载步骤后,UART内核会重置波特率发生器,并且设置移位寄存器工作在波特率模式下,于是移位寄存器便在波特率时钟的驱动下依次将加载的数据发送到RS-232的发送端TxD,这样便产生了RS-232的数据发送时序。

UART发送数据流程图

3、UART各个模块的实现

  除UART内核模块以外,其他模块都较为简单,用于实现某一具体功能。现在重点对UART内核模块的实现做出介绍。

  UART内核模块的功能是控制数据接收、数据加载和数据发送的过程,这可以用状态机来实现。下面就按接收和发送的过程来介绍UART内核模块状态机的实现。

  (1)数据接收过程

  数据接收过程的流程图如图二所示,可以定义3个状态——空闲、接收和接收完成,其中状态变换图如图四所示。

状态变换图

  (2)数据加载和发送过程

  数据加载和发送过程都是为了发送数据而设定的,所以将它们放在一起进行介绍。可以用4个状态来实现上述的过程,即空闲、加载、发送和发送完成,其中的空闲状态就是UART内核复位后的空闲状态,和上面介绍的数据接收过程的空闲状态一致。

  数据加载和发送过程的状态转换图如图五所示。

数据加载和发送过程的状态转换图

  4、仿真结果

  在波特率为9600情况下对UART进行仿真,结果稳定可靠。该设计具有很好的可读性和灵活性,具有很好的参考价值。

关键字:FPGA 引用地址:基于FPGA的UART控制器的多模块设计与实现

上一篇:FPGA器件选型研究
下一篇:TMS320C61416 EMIF总线下双FPGA加载设计

推荐阅读最新更新时间:2024-03-30 21:24

基于FPGA的数字量变换器测试系统设计
  针对数字量变换器性能参数的测试工作,以FPGA为控制核心,开展数字量变换器测试系统的设计和研究,并给出系统各模块的具体设计方法;系统通过USB实现与计算机的通信,能够产生计算机字信号及相应移位脉冲信号、勤务信号和128路指令信号,并能接收经过数字量变换器变化后的计算机数码和指令数码信号;测试系统能够完成对数字量变换器各项性能指标的测试,实验表明,测试系统精度及可靠性高、实时性好,已经成功应用于某遥测系统中。   0 引言   在飞行器发射试验中,常用遥测系统获取其内部各系统的工作状态参数和环境数据,为评定飞行器的性能及故障分析提供依据。数字量变换器作为遥测系统弹上的重要设备,它的主要功能是控制接收弹上的各种飞行参数。变换器性能
[测试测量]
基于<font color='red'>FPGA</font>的数字量变换器测试系统设计
nRF24L01无线模块在单片机与FPGA上的应用
  先简单的介绍下nRF24L01无线模块   (1) 2.4Ghz 全球开放ISM 频段免许可证使用   (2) 最高工作速率2Mbps,高效GFSK调制,抗干扰能力强,特别适合工业控制场合   (3) 126 频道,满足多点通信和跳频通信需要   (4) 内置硬件CRC 检错和点对多点通信地址控制   (5) 低功耗1.9 - 3.6V 工作,待机模式下状态为22uA;掉电模式下为900nA   (6) 内置2.4Ghz 天线,体积小巧15mm X29mm   (7) 模块可软件设地址,只有收到本机地址时才会输出数据(提供中断指示),可直接接各种单片机使用,软件编程非常方便   通过SPI方式完成数据的交换,包括数
[单片机]
nRF24L01无线模块在单片机与<font color='red'>FPGA</font>上的应用
CDMA 2000系统中前向链路卷积编码器的FPGA实现
在通信系统中,由于数字信号在传输过程中受到各种干扰的影响,使信号码元波形变坏,故传输到接收端后可能发生错误判决,为解决这一问题,通常在设计数字通信系统时,首先应从合理地选择调制制度、解调方法以及发送功率等方面考虑,若采取以上措施仍难满足要求,就要考虑差错控制措施。在CDMA 2000系统的前向链路和反向链路中就采用了卷积编码来实现前向差错控制(FEC)。   FPGA是可编程逻辑器件,它的主要优点在于可以借助EDA工具通过软件编程对器件的硬件结构和工作方式进行重构,这就使得硬件设计具有软件设计的灵活性和便捷性。本设计采用VHDL语言并选用可编程逻辑器件在QuartusⅡ下来实现CDMA 2000系统中的前向链路卷积编码器。  
[嵌入式]
CDMA 2000系统中前向链路卷积编码器的<font color='red'>FPGA</font>实现
AD977A在脑电信号采集系统中的应用
   前言   脑电信号EEG(Electroencephalography)是由脑神经活动产生并存在于中枢神经系统的自发性电位活动,含有丰富的大脑活动信息。它是大脑研究、生理研究和临床脑疾病诊断的重要手段。记录脑电信号,可为临床诊断提供依据。因此,提取脑电信号具有重要的现实意义。由于脑电信号处理一般都是基于数字技术,因此电极采集到的模拟信号经信号调理后,通过A/D转换器转换成数字信号是必不可少的过程。这里提出一种基于FPGA和AD977A的脑电信号数据采集系统,采用FPGA作为信号处理器,并控制模数转换,从而实现高可靠性,高通用性的脑电信号数据采集系统。    2 系统总体设计   通过对人体进行视觉刺激、听觉刺激或神经刺
[模拟电子]
基于MicroBlaze软核的FPGA片上系统设计
摘要: 分析软处理器 MicroBlaze 的体系结构,给出 MicroBlaze 内核在软件无线电系统中的应用,实现 SOPC (可编程系统芯片)。 关键词: FPGA IP Core SOPC MicroBlaze CoreConnect 软处理器 软件无线电 Xilinx 公司的 MicroBlaze 32 位软处理器核是支持 CoreConnect 总线的标准外设集合。 MicroBlaze 处理器运行在 150MHz 时钟下,可提供 125 D-MIPS 的性能,非常适合设计针对网络、电信、数据通信和消费市场的复杂嵌入式系统。
[嵌入式]
基于FPGA的双口RAM与PCI9O52接口设计
  O 引言   IDT70V28L(双口RAM)的存取时间大于20ns,PCI9052工作于25MHz,其存取时间要大于双口RAM的存取时间。PCI9052是发起交易的主动者,相当于一个慢速器件访问快速器件,通过可编程器件,可以把PCI9052读写控制信号直接传递给IDT70V28L,完成时序的匹配。   为将PCI9052的局部逻辑转换为双口RAM的读写控制信号和地址信号,本设计采用了可编程器件来实现它们之间的接口逻辑电路。在可编程器件设计中,状态机的设计方法是应用最广泛的设计方法之一。有限状态机是一种简单、结构清晰、设计灵活的方法,它易于建立、理解和维护,特别应用在具有大量状态转移和复杂时序控制的系统中,更显其优势。
[嵌入式]
基于89C55和FPGA的最小系统频率特性测试仪
  频率特性是一个系统(或元件)对不同频率输入信号的响应特性,是一个网络最重要的特性之一。幅频特性和相频特性综合称为频率特性。测量频率的方法有点频法和扫频法。传统的模拟式扫频仪价格昂贵、体积庞大,不能直接得到相频特性,给使用带来诸多不便。为此,设计了数字扫频式 频率特性测试仪 。   1 方案论证与选择   1.1 方案的选择   1.1.1 信号发生模块   方案1:采用模拟分立元件或单片压控函数发生器。可同时产生正弦波、方波、三角波,但由于元件分散性太大,产生的频率稳定度较差、精度低、波形差,不能实现任意波形输出。   方案2:采用传统的直接频率合成器。这种方法能实现快速频率变换,具有低相位噪声以及所有方法中最高的工作频
[单片机]
基于89C55和<font color='red'>FPGA</font>的最小系统频率特性测试仪
基于FPGA的FIR数字滤波器设计方案(一)
在Matlab/Simulink环境下,采用DSP Builder模块搭建FIR模型,根据FDATool工具对FIR滤波器进行了设计,然后进行系统级仿真和ModelSim功能仿真,其仿真结果表明其数字滤波器的滤波效果良好。通过SignalCompiler把模型转换成VHDL语言加入到FPGA的硬件设计中,从QuartusⅡ软件中的虚拟逻辑分析工具SignalTapⅡ中得到数字滤波器实时的结果波形图,结果符合预期。   0 引言   在信息信号处理过程中,数字滤波器是信号处理中使用最广泛的一种方法。通过滤波运算,将一组输入数据序列转变为另一组输出数据序列,从而实现时域或频域中信号属性的改变。常用的数字滤波器可分为有限脉冲响应(F
[模拟电子]
基于<font color='red'>FPGA</font>的FIR数字滤波器设计方案(一)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新工业控制文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved