中国·芯片交易在线
首页 | 供应信息 | 求购信息 | 库存查询 | 新闻中心 | 展会资讯 | IC厂商 | 技术资料 | 自由区域
   新闻首页 |  行业动态 | 新品发布 | 政策法规 | 科技成果 | 模拟技术 | 嵌入系统 | 传感控制 | 存储设计  
当前位置:IC72首页>> IC新闻中心>> 科技成果 >>电子行业新闻正文

基于FPGA的UARTl6550的设计

时间:2007/7/9 9:13:00  作者:  来源:ic72  浏览人数:1653
 
 

      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个部分组成。

ic72新闻中心

      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所示。

ic72新闻中心

      5 结 语

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

 
【相关文章】
·基于FT245BM的快速USB接口设计
·功能丰富、完善的GSM/GPRS蜂窝电话音频记录/回放方案
·如何成功地完成ASIC原型验证
·智能型光电采样器的设计
·具有硬件互斥的控制电路设计方法
·锁相环在SDH网络中的应用
·达芬奇技术简化数字视频设计
·DSP控制电机中减少电磁干扰的几项技术
·电路设计新方法:不受纳米管扭结影响
·基于MAX5026的单光子探测器直流偏压源设计
·图形点阵式液晶显示模块与51单片机的接口设计
·谈谈有机薄膜晶体管液晶显示技术
·基于FPGA的UARTl6550的设计
·新型以太网控制器ENC28J60及其接口技术
·半导体巨头与飞高性能DDS芯片AD9959及其应用
·基于FPGA的以太网控制器设计
·基于C8051F的模数转换及直流电机驱动系统中的应用
·ZMD31050在数字式气压传感器系统中的应用
·基于MCU的单稳触发器应用电路的设计
·数字电源管理芯片ZL2105的性能及性能测试设计
 
 
IC新闻搜索
 
热点新闻
基于红外超声光电编码器的室内移动小车定位系
基于闪烁存储器的TMS320VC5409DSP并行引导装载方法
非移动市场需求飙升,ARM预计2010年出货量超50亿片
一种快速响应的电容式湿度传感器感湿薄膜设计
利用特殊应用模拟开关改进便携式设计
无线传感器网络跨层通信协议的设计
基于ARM9内核Processor对外部NAND FLASH的控制实现
基于GSM技术的汽车防盗系统的设计
热电阻在烟叶初烤炕房温度控制中的应用
高速数据转换系统对时钟和数据传输的性能要求
友情连接
 关于我们  IC论坛  意见反馈  设置首页  广告服务  用户帮助  联系我们
copyright:(1998-2005) IC72 中国·芯片交易在线
(北京)联系电话:(010)82614113、82614123 传真:(010)82614123 客户服务:service@IC72.com 库存上载:IC72@IC72.com
在线MSN咨询:ic72sale8@hotmail.com 通信地址:北京市西城区西直门内大街2号大厦15层 邮政编码:100013
(深圳)联系方式: 在线MSN咨询:ic72sale6@hotmail.com 在线QQ咨询:191232636 通信地址:深圳市福田区振华路
注 册 号: 1101081318959(1-1)

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9