通用异步收发器TL16C554

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

通用异步收发器TL16C554

通用异步收发器在实际的数字信号处理器系统中用来连接DSP芯片和PC 机. 采用通用异步收发器能完成串口通信, 编程简单, 尤其是TL16C554系列芯片, 含有4路异步通信单元, 有很强的灵活性和实用性, 适用于很多需要实时通信的

场合, 如电信、网络、移动通信、计算、消费类产品、工业控制、医疗和安保等. 具有良好的发展前景和广泛的应用领域.

1通用异步收发器的系统功能

通用异步收发器是在通讯中得到广泛应用的一种器件, 它主要是控制设备

之间的串行通信根据使用环境和功能的不同, 通用异步收发器分为很多不同的

型号, 本文主要介绍通用异步收发器TL16C554的设计.TL16C554是德州仪器公

司生产的4 通道异步收发器集成芯片, 它的每个通道能从外围设备或MODEM

接收数据, 实现串- 并转换; 同时它也可从CPU 端接受数据, 实现并- 串转换. 在FIFO模式下, 传输和接收前将数据缓冲为16字节数据包, 减少了CPU 的中断

数量. 内部包含4片改良的16C550异步传输器件, 使得串行I /O 更加可靠, 每个

信道可实现串行和并行两种连接方式的转换, 每个信道的状态可以通过CPU 的操作读取, 可以获取操作情况或任何的错误状态. 三态输出为双向数据总线和控制总线提供TTL 驱动能力、优先级中断系统控制、可编程的串行接口特性.

TL16C554的主要特点如下:由4个带有逻辑控制的TL16C550逻辑单元组成; 具有可编程的波特率发生器, 便于灵活选择数据收发频率; 具有16字节的收发FIFO; 具有可独立控制的接收、发送、线路状态和MODEM 状态中断; 具有全双工的接收发送线路, 可独立进行接收发送控制; 全面的线路状态报告功能; 充分

分级的中断系统控制; 三态TTL电平输出.本设计由4 路异步通信单元TL16C550 组成, 相当于4个TL16C550. 而每路TL16C550又是由以下模块组成: ( 1)寄存器模块: 主要用于读写通用异步收发器中状态寄存器和控制寄存器。

( 2)数据接收模块: 由接收移位寄存器、接收缓存寄存器、16字节的FIFO 和接收控制逻辑组成. 主要完成将异步的串行数据转化为并行, 并发送给CPU 的

接收端口;

( 3)数据发送模块: 由发送移位寄存器、发送保持寄存器、16字节的FIFO 和发送控制逻辑组成. 主要完成将CPU 发送过来的并行数据转换成串行数据, 并

发送给其他器件;

( 4)中断模块: 由中断使能寄存器、中断识别寄存器及其他中断控制电路组成. 主要完成中断仲裁;

( 5)MODEM模块: 由MODEM 状态寄存器和MODEM 控制寄存器组成. 主

要通过通用异步收发器完成CPU和MODEM之间的通信功能;

( 6)波特率产生模块: 它接受频率在直流与8MH z之间的时钟输入并把它按

范围在1与( 216- 1)之间的除数加以分频.

图1TL16C 554 功能方框图

2、V er ilog语言实现以及仿真验证

在确定了整体及各个功能模块之后, 就可以用Verilog 对设计进行RTL建模. 然后用Mode lsim对设计进行仿真并调试. 仿真结果如图4、5, 发送的数据能严格按照异步串行协议进行传输, 而接收数据也完全正确.

图4接收模块仿真波形图

图5发送模块仿真波形图

3 通用异步收发器模块的设计分析

UART的设计采用层次结构化的设计方法,分别对各底层模块进行设计, 最后将底层模块映射到一个顶层模块. 发送和接收模块的设计采用有限状态机的

方法, 依据一帧数据发送或接收的格式详细定义每一个状态, 模块设计采用verilogHDL语言进行描述.

3. 1接收模块设计

接收器主要完成串/转换功能, 同时完成起始位、停止位的识别和检错, 并把出错标志写入线路状态寄存器. 数据接收过程如下. 接收单元从通用异步收发器外部接收串行数据, 首先检测下降沿的跳变, 若连续8个串行数据输入都为低电平, 则认为是起始位. 以后每隔16个时钟对数据位, 奇偶校验位, 停止位采样. 串行数据通过移位送到接收移位寄存器, 然后把数据并行送到接收缓冲寄存器.

在设计中, 共定义了4个接收器状态, 分别是空闲状态( ide l), 移位状态( sh ift), 校验状态( parity)和停止状态( stop).空闲状态( ide l): 当系统复位时, 接收

状态机进入此状态. 当进入此状态时, 接收状态机等待S IN 信号下降沿的出现, 状态机进入接收数据状态, 并开始对波特时钟进行计数, 若检测到正确的起始位, 就进入转移状态, 开始顺次接收8个有效

数据位.移位状态( sh ift): 状态机根据接收控制字, 对接收数据移位, 并按正确

格式将数据放入接收缓冲器中.校验状态( parity ): 对接收的数据根据接收的校

验位进行判断. 并置相关的状态位和中断.停止状态( stop): 不管停止位被配置

为几位,状态机都进入到此状态对停止位进行采样, 置相关状态位和中断.

图2接收器模块

3. 2发送模块设计

发送模块将从处理器接收到的数据, 按规定的格式加上起始位, 奇偶校验位和停止位后串行输出. 发送数据格式由一个有限状态机来控制. 数据发送过程如下. 当发送保持寄存器为空时, CPU的并行数据写入发送保持寄存器, 当发送移位寄存器为空时, 发送保持寄存器中的数据送到发送移位寄存器. 发送单元首先发送一位起始位, 然后每隔16个时钟发送数据位, 奇偶校验位和停止位. 发送模块的设计主要集中在其控制逻辑的设计上, 本设计采用有限状态机来作为它的控制器.在设计中, 共定义了6个发送器工作状态: 开始状态( start) , 移位状态( shift) , 校验状态( parity ), 停止1位( stop 1b it), 停止0. 5位( stop ha lfbit),停止2位( stop 2b it) . 对于这6个设计, 在设计中采用了独热码的编码方式, 这种编码方式可省下许多组合电路, 综合后电路更简单, 使得电路的速度和可靠性得到显著提高, 而总的单元增加不多.

开始状态( start): 当UART 复位后, 发送状态机复位到此状态, 发送模块将待发送的数据从发送缓冲器中移入移位寄存器, 给待发送的数据加上起始位0 .

移位状态( sh ift): 按规定格式发送数据, 由于UART发送时使用的时钟频率是发送信号波特率的16倍, 故计数器每隔15个波特时钟后, 发出一位移位信号, 直到所有数据全部发送完. 发送模块根据发送数据格式控制字判断是否进入校验状态. 若无, 则到停止一位状态, 否则到校验状态.

校验状态( parity ): 发送状态按照控制字格式, 给发送数据加上奇偶校验位.

停止1位状态( stop 1bit) : 发送模块首先进入停止1位状态, 对于1位停止位, 给数据加上1位停止位, 状态机进入start状态, 等待下一个数据帧的起始位. 否

相关文档
最新文档