基于FPGA的UARTl6550的设计

发布者:RadiantGaze最新更新时间:2007-07-06 来源: 现代电子技术关键字:串行  通信  异步  收发 手机看文章 扫描二维码
随时随地手机看文章

l 引 言

UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是用于控制CPU与串行设备通信的芯片,将由CPU传送过来的并行数据转换为输出的串行数据流。将系统外部来的串行数据转换为字节,供系统内部使用并行数据的器件使用。他可以在输出的串行数据流中加人奇偶校验位和启停标记,并对从外部接收的数据流进行奇偶校验以及删除启停标记。常见UART主要有INS8250,PC16450和PCI6550,其中16550发送和接收都带有16 B的FIFO,为协调发送、接收端的速率匹配提供了更大的缓冲余地,同时也可以提高CPU的使用效率,从而提高系统的整体性能。

2 UART16550的基本结构

如图1所示,UART16550的基本结构由CPU接口模块、波特率发生器、FIFO控制器、发送/接收FIFO和发送/接收模块共7个部分组成。

CPU通过UART的CPU接口模块配置整个UART,波特率发生器在CPU写入初始值后产生需要的波特率,控制发送和接收模块在设定的波特率下工作。CPU通过接口模块向发送FIFO内写入需要发送的8位数据,同时发送模块开始读取FIFO中的数据,并加入起始位、奇偶校验位和停止位后以串行发送的方式传输给串行接收设备。接收模块时刻监视串行输入端口,发现有数据发送来的时候马上启动接收模块开始接收数据并有效的判断出奇偶校验位来检测数据的正确性,最后把剩下的8位数据放入接收FIFO,并通知CPU有数据进来进行接收。异步串行通信协议的数据传输格式如图2所示。

UART16550的发送数据位可以选择为5~8位,同时可以选择奇校验、偶校验或者不设置校验位,停止位可以约定为1,1.5或2位。

3 UART16550的设计实现

3.1 CPU接口模块

CPU接口模块完成了CPU指令的解读与寄存器配置以及UART状态读取等功能。通过3位的地址线和8位的数据线,CPU可以对波特率发生器的波特率进行预先的设定,以使串口两端的设备在同一波特率下完成接收和发送的工作。同时CPU接口接收来自CPU的需要发送的5∽8位数据,送人发送模块,或者把接收模块接收到的数据通过接口送给CPU进行数据处理。在此接口模块里,设置了8个控制和状态寄存器,包括RBR(Receiver Buffer Register)接收缓冲寄存器、THR(Transmit Hold Register)发送保持寄存器、IER(Interrupt Enable Register)中断使能寄存器、IIR(Interrupt ID Register)中断寄存器、LCR(Line Control Register)线控制寄存器、LSR(Line Status Register)线状态寄存器、SCR(Scratchpad Register)暂存寄存器和FCR(FIFO Control Register)。在使用UART16550前,CPU必须要对控制寄存器进行配置,包括波特率、数据位数、奇偶校验、停止位位数及FIFO的控制等。这也是16550区别于一般UART的具有可编程的特点。

3.2波特率发生器

波特率是单位时间内传送的二进制数据的位数,以位/秒(b/s)表示,也称为数据位率。

收/发时钟频率与波特率之间关系:

收/发时钟频率=N×波特率

N可以取8,16,32和64等,为了兼顾速度和稳定性一般取为16。N在硬件设计时已经设定好,软件不能改变。波特率发生器由两个8位的数据寄存器组合成16位的分频寄存器,可以实现系统频率的1~2(16)分频,达到预定的波特率设置。

3.3 FIFO控制器和发送/接收FIFO

带有缓存是16550以及更高端UART的突出的特点。16550带有8位宽、16字节深的异步FIFO。FIFO控制器从CPU接口读入信息,配置发送/接收FIFO,并且在需要的时候使能FIFO,并且把FIFO的实时状态通过CPU接口送给CPU以方便CPU读取数据。在发送FIFO空和接收FIFO满的时候,FIFO控制器立即产生中断请求,通知CPU进行下一步的操作。另外,当配置DMA模式时,CPU可以进行大数据量的发送和读取,减轻了CPU的负担,可以提高整个系统的运行效率。

3.4发送模块

发送模块的核心是one hot编码的状态机。他可以读人来自FIFO的数据,并根据配置寄存器里面的信息加入起始位、1,1.5或2位停止位和奇偶校验位,然后把打包的数据通过移位寄存器把数据以标准的串口协议发送给串口接收设备。只要发送FIFO中有数据存在,发送模块就会一直发送,直到FIFO空为止。在不选择FIFO的情况下,发送模块则直接接收来自THR(Transmit Hold Register)发送保持寄存器的数据,不经过缓存直接发送。

3.5接收模块

接收模块是发送模块功能的逆序执行。他接收来自外部的串行数据,根据配置去除数据的起始、停止位和奇偶校验位,若出现数据差错则立即产生错误信息。如果没有错误,则将剩余的8位有用数据送入接收FIFO让CPU读取。同样接收模块也可以选择不使用FIFO,这时接收模块就会把8位数据直接送给RBR(Receive Buffer Register)接收缓冲寄存器,再由RBR送给CPU。

4结果的验证仿真

设计采用VHDL语言在FPGA Advantage平台下编写,并通过Modelsim编译仿真,并且通过ISE下载到电路板上验证,硬件验证FPGA芯片采用Xilinx的Spartan3。XC400PQ208。由于验证UART接收/发送时序必须要有处理器,所以采用在FPGA内部嵌入Xilinx的MicroBlaze软核模拟CPU控制时序,通过FPGA外接的串口实现与计算机串口进行通信。用Modelsim进行时序仿真结果如图3所示。

5 结 语

本文介绍了UARTl6550在可编程逻辑器件FPGA上的实现,并通过实际电路验证了设计的功能,使用FP-GA不仅可以方便地用串口协议与PC机进行串行通信,而且扩展了板级系统的接口功能。应用在可编程器件FPGA内部,可以很大程度地减少电路板的使用面积,并提高系统的稳定性和可编程性。

关键字:串行  通信  异步  收发 引用地址:基于FPGA的UARTl6550的设计

上一篇:一种基于CPLD的曼彻斯特编解码器设计
下一篇:基于DSP的SPWM直接面积等效算法的分析与实现

推荐阅读最新更新时间:2024-05-02 20:36

433/868/915MHz收发芯片nRF903
特点 nRF903是NORDIC公司最新推出的单片元线收发一体的芯片,采用了Bluetooth核心技术设计,在一个32脚的芯征中包括了三段高频发射、高频接收、PLL合成、I/Q调制、I/Q解调、多频道切换、异步通信接口等,是目前集成度最高的无线数据传输产品之一。 以往设计无线数据传输产品往往需要相当的无线专业知识和价格高昂的专业设备,传统的电路方案不是电路繁琐就是调试困难,令人望而却步,影响了用户的使用和新产品的开发。线产品设计的困难,它采用抗干扰能力强的GMSK调制方式,工作频率稳定可靠,外围元件少,便于设计生产,功耗极低,适合于便携及手持产品的设计,工作在了际通用ISM频率,特别适合多频段多频点的应用场合。可用于遥控、
[应用]
意法半导体车规电源管理 IC 集成CAN FD 和 LIN收发器 简化车身控制器设计
2023 年 10 月 13 日,中国—— 意法半导体的SPSB081车规电源管理IC 的功能非常丰富,堪称车规电源管理芯片中的瑞士军刀,片上集成一个固定电压的主低压差稳压器 (LDO)、一个可配置的辅助 LDO稳压器、四个高边驱动器、一个 CAN FD 收发器和一个选配LIN 收发器。 该系列电源管理芯片有多个静态电流很小的待机模式和可配置的本地或远程唤醒功能,有助于最大限度地降低系统功耗。 片上集成的电源和收发器有助于简化车身控制器设计,适用于天窗、座椅、尾门、车门和照明模块。这些控制器的适用性非常出色,还适用于网关、HVAC暖通空调控制器、无钥匙进入系统、远程信息处理控制单元和控制面板。 在该系列的现有产品中,
[汽车电子]
意法半导体车规电源管理 IC 集成CAN FD 和 LIN<font color='red'>收发</font>器  简化车身控制器设计
业内通信第一芯片实至名归,麒麟970完胜骁龙835
近日,中国移动终端实验室发布了权威的《中国移动2017年终端质量报告 (第二期)》。其中手机综合评测排行榜显示,3000元以上价位中,华为Mate10 Pro力压三星、苹果诸多旗舰,成为第一。 (图:《中国移动2017终端质量报告》手机综合评测) 就如中国移动终端质量报告的视频所说,“芯”强大,手机才够强大。芯片作为手机的大脑,是其运转的核心驱动力。而华为Mate10 Pro之所以能够力压群雄,自然和它搭载的麒麟970密切相关。 据悉,麒麟970采用了当前业界最为先进的TSMC 10nm工艺,是华为首个人工智能移动计算平台。一方面有创新的HiAI移动计算架构带来强大的智慧算力,另一方面自研双摄ISP以及独创的AI慧
[手机便携]
PIC单片机软件异步串行口的实现
   在用单片机开发各种嵌入式应用系统时,异步串行通信是经常要用到的一种通信模式,很多应用中还要求实现多路异步串行通信。大家平时熟悉的各种厂家的单片机,绝大部分片上只提供一个硬件UART模块,利用它可以方便实现一路串行通讯。PIC系列单片机也不例外,在其丰富的产品家族成员中,除高端系列(PIC17/18)一些型号片上带有两路硬件UART模块外,其它大部分型号片上只有一路UART,一些低端廉价的PIC单片机甚至还不带硬件UART。为了提高系统的性能价格比,就要求设计工程师用软件增加实现一路或多路异步串行通信。很多工程师对用软件实现的UART在可靠性和效率方面持怀疑态度,其实关键问题是看软件采用何种方式来实现可靠的UART功能。
[单片机]
PIC单片机软件<font color='red'>异步</font><font color='red'>串行</font>口的实现
微型激光芯片为量子通信增加新维度
由于只有两级叠加,当今量子通信技术中使用的量子比特存储空间有限,对干扰的容忍度低。新超维微型激光器(上图)生成量子电码,即具有四个同步信息级别的光子。维度的增加使得强大的量子通信技术更适合现实世界的应用。图片来源:物理学家组织网 据最新一期《自然》杂志报道,美国宾夕法尼亚大学工程学院领导的研究小组发明了一种芯片,其安全性和稳健性超过了现有的量子通信硬件。他们的技术通过“量子电码”进行通信,使任何一种以前的芯片上激光器的量子信息空间翻了一番。 非量子芯片使用比特存储、传输和计算数据,而最先进的量子设备使用量子比特。比特可以是1或0,而量子比特是能够同时为1和0的数字信息单位。在量子力学中,这种同时状态被称为“叠加”。叠加
[网络通信]
微型激光芯片为量子<font color='red'>通信</font>增加新维度
RS485通信可靠性设计需注意的几个问题
  RS-485接口芯片能担当起一种电平转化的角色,把TTL信号、COMS信号等转化为能在485总线上传输的差分信号,把接收到的485差分信号转化为MCU能够识别的TTL或COMS电平,在工业控制、仪器、仪表、多媒体网络、机电一体化产品等诸多领域得到了广泛应用。但在RS485通信中,常常会存在通信距离不远、通信质量差等问题。为提高RS485的通信质量,除了采用终端匹配的总线型结构外,在系统设计中通常要考虑以下几个问题。   1.故障保护   根据RS-485的标准规定,接收器的接收灵敏度为±200mV,这意味着当接收端的差分电压大于等于+200mV时,接收器输出为高电平,小于等于-200mV时输出为低电平,介于±200mV
[嵌入式]
Andigilog任命新的业务及行销副总裁和首席财务官,进一步强化其管理团队
提供智能型热量管理解决方案的Andigilog芯片设计公司为了进入新市场及加速营运成长,宣布新的人事布局,任命Daniel Olson为业务及行销副总裁,并任命Gregory Teesdale为首席财务官。在这项人事案宣布的同时,该公司也已顺利完成第二阶段(Series B)1千8百万美元美元的资金融资,这将有助于Andigilog加速进入消费电子及工业市场,并进一步强化该公司在PC与服务器热量管理市场的领导地位。 加入Andigilog之前,Olson在Summit微电子公司担任国际业务副总裁一职,并在此职位中带领该公司进入亚洲市场,成为Samsung、LG、Sharp和Hitachi等大厂的供应商。他同时领导公司定义新
[焦点新闻]
STM32串口收发数据使用DMA的原因
STM32串口收发数据使用DMA的原因主要有以下几点: 1.提高数据传输效率 :DMA(Direct Memory Access)是一种能够直接从内存中读取或写入数据的硬件设备。在嵌入式系统设计中,DMA技术被广泛应用于数据传输速度较高或需要高效数据传输的场合。而STM32的串口通信是一种高速数据传输方式,因此,使用DMA进行数据收发能够提高数据传输的效率和可靠性。 2.减轻CPU负担 :使用DMA进行串口数据收发可以减轻CPU的负担。在传统的数据收发方式中,CPU需要不断轮询串口状态,读取或写入数据。这种方式不仅会占用大量的CPU资源,而且会降低系统的响应速度。而使用DMA后,数据传输可以在后台进行,无需CPU干预,从而释放CP
[单片机]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved