功率电感生产厂家
联系我们
热门搜索
点击排行
推荐阅读
猜猜你喜欢的
研发资讯 您所在的位置: 首页 > 研发资讯

基于FPGA的UARTl6550的设计

来源:    作者:    发布时间:2016-10-04 09:24:19    浏览量:

  1 引 言

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

  2 UART16550的基本结构

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

UART16550的基本结构

  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编码电感生产厂家的状态机。他可以读一体电感器工厂人来自FI电感器的功能FO的数据,并根据配置寄存器里面的信息加入起始位、1,1.5或2位停止位和奇偶校验位,然后把打包的数据通过移位寄存器把数据以标准的串口协议发送给串口接收设备。只要发送FIFO中有数据存在,发送模块就会一直发送,直到FIFO空为止。在不选择FIFO的情况下,发送模块则直接接收来自THR(Transmit Hold Register)发送保持寄存器的数据,不经过缓存直接发送。

  • 基于PDIUSBD12芯片的USB应用开发一 PDIUSBD12芯片介绍 进行USB开发之前要根据成本与性能选择合适的USB接口芯片。目前USB控制器芯片通常可分成3种: 第一种是专为USB设计的芯片,这类芯片的主要来源是CYPRESS的

  • 驱动集成电路功率级中瞬态问题的处理 1.驱动IC产品范围 IR公司为用户提供多种从单相到三相桥的驱动集成电路。所有类型都使用了高集成的电平转换技术,简化了逻辑电路对功率MOS管的控制。最新产品已扩展到具有驱动1200V功率器件

  • 微控制器/模拟应用中电源、接地和噪声的管理微控制器/模拟应用中电源、接地和噪声的管理 除了微控制器,微控制器应用经常包括低电平传感器信号和适当的电源驱动电路,需要小心设计电源和接地。本文将讨论噪声源和噪声的传播路径。我们将涉及良好布局习惯背后

  •