微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 通过先进的高性能UART提高串行I/O的连接性能

通过先进的高性能UART提高串行I/O的连接性能

时间:06-27 来源:21IC 点击:

新一代系统采用高端处理器,可以在较短时间里处理大量的任务。这些处理器的工作电压分别是3.3V、2.5V或1.8V。因此,甚至如UART这样的基本接口都必须精心设计,以进一步降低CPU开销。为构造高性能的UART,必须考虑以下特性指标:主机接口的性能、UART的FIFO的深度、波特率、电源电压和功耗。低分辨率时钟预定标器、自动支持RS485和先进的封装技术等其它性能也能给某些特定设计带来显著好处。

主机接口和处理时间

UART可以通过并行或串行总线与主机连接。通常许多独立的UART提供两种类型的8位异步存储接口,兼容大多数的摩托罗拉(Motorola)和英特尔(Intel)总线接口。有些UART同时具有两个接口,如恩智浦半导体(NXP Semiconductors)的SC28Lxx和1.8V SC16C85x UART系列。通过配制引脚,这个独立的UART可以被设置成支持Motorola或者Intel的总线接口。在许多手持设备中,一种被称为VLIO (可变延迟I/O)的新型接口也得到了采用,此外新一代1.8V UART将被设计成可以与总线无缝连接(图1)。

 


  图1:具有VLIO(可变延迟I/O)接口的1.8V UART的移动应用示例。

并行总线接口的优点是具有很高的吞吐量,而速度可高达100 Mbps,但缺点是需要大约15根线与处理器连接。为克服这个缺点,或者说是消除对并行总线的依赖性,可以选择如SPI或I2C的标准串行总线与主机相连。当今流行的解决方案是NXP SC16IS7xx系列,这些产品通过I2C或SPI端口实现与主机的无缝连接,并将与主机连接的15根线减少到5根(I2C)和7根(SPI),如图2所示。这个串行UART还有其它一些优点,例如它能为设计工程师提供现成的I2C或SPI到RS232/RS485/IrDa的协议转换器,但缺点是串行总线的速度被限制在400 Kbps(I2C)和15 Mbps (SPI)内。

 


  图2:带有串行接口(I2C/SPI)的NXP SC16IS752高速UART的应用示例。

一旦选定了主机接口,最佳的主机处理时间取决于以下几个要素:UART的 FIFO深度和FIFO计数器、中断触发等级的数量、硬件和软件流程控制。

FIFO深度和FIFO计数器

UART的 FIFO深度直接影响通过UART传输数据所需的CPU开销。FIFO的深度越深,在每个中断就可以有更多数据传输,从而减少CPU的中断。一个标准的FIFO深度范围从16 到 6? 字节。但越来越多的设计要求具有更深FIFO的UART,而可提供具有高达128字节FIFO深度的独立方案的厂商也越来越多。如今市场上具有最深FIFO的UART是NXP公司的SC28L202 和SC28L201,它们的FIFO深度高达256字节。

下面例子说明了更深FIFO的优点。假设UART的传输速率设置为115.2Kbps,并且字符格式为1个开始位、8个数据位和一个停止位,即有10位字符和115.2 Kbps波特率,那么UART接收一个完整的字符需要86.8 ?s时间。如果UART接收器的FIFO是16字节,那么它需要大约1.39ms(16×86.8 ?s)去填满一个接收器FIFO。这时,UART将对主机产生一个接收数据就绪中断,并且主机必须立刻去读取这个接收器FIFO中的数据,否则如果这个UART收到另外的字符,这个接收器FIFO中的数据将会溢出。有了上面的设置,在整个接收过程中,主机将每隔1.39 ms就获得一个来自UART的中断。但如果这个UART的接收器FIFO的容量是128字节,那么UART中断的间隔时间将为原先的8倍(128/16=8),达到11.12 ms,主机处理UART任务的频率也将从每1.39 ms一次降到每11.12 ms一次。主机处理器可以用节省下来的时间去处理其它任务。

在今天的许多应用中,系统需要去读取UART上的线状态寄存器(LSR),以首先确认在接收FIFO上是否有数据。这要求CPU每次从接收FIFO读取一个字符都要轮询LSR,这将显著增加CPU的处理时间。只有少数的独立的UART,比如NXP SC28L202 和 SC16C85x,拥有FIFO计数器,允许CPU在得到这些数据之前就找出在FIFO上的字符数量。这种方法使CPU不必每次都去读取LSR,而是直接从接收FIFO读取数据,从而进一步优化系统。

可编程的中断触发等级

在一些应用中,主机需要在固定时间内接收和响应固定长度的数据包。通过使用UART的中断触发等级,设计工程师可以对UART编程,使其在收到特定数量的字符以后,或者输出特定数量的字符之后,发出一个中断信号。目前的集成UART方案有许多预定义的触发等级,比如1、4、8或者16。这种模式的缺点是,在接收到一个不是1、4、8 或者16字节的数据包以后,设计工程师难以对UART编程以产生中断信号。NXP公司 SC16C850L/852L UART能够提供127个中断触发等级,可以灵活地对UART编程,设计工程师可以在1到 127之间任意设置中断触发等级。

硬件和软件流程控制提供两个通讯UA

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top