对于设计人员而言,根据应用的性能、电源、存储器以及接口要求寻找特定的嵌入式处理器是一项令人生畏的艰巨任务,因为即便是相似的系统也存在着显着的差异。尽管ARM?处理器提供十几种选择,系统设计人员却很难找到“完美的搭配”.
本文将重点介绍各种标准接口,并揭示它们对不同嵌入式芯片厂商的区别所在。了解基本接口可帮助设计人员优先考虑哪些接口应为片上。另外,虽然标准接口具有很高的使用价值,但为了提供额外的片上资源,也需要可定制化的片上接口。本文将介绍两种这样的外设块。
USB
通用串行总线 (USB) 接口最初的开发目的是用来连接个人计算机与外设。随着时间的推移,它已经成为工业与基础设施应用的常用接口。诸如键盘、鼠标以及示波器等人机接口设备 (HID) 一般都采用 USB 接口,这就意味着它必须得到系统嵌入式处理器的支持。实现这一目标的最有效方法是采用片上外设。
除 HID 之外,工业与基础设施应用还使用另外两种设备。USB 通信设备类 (CDC) 不但适用于调制解调器与传真机,而且还可通过提供用于以太网数据包传输的接口来支持简单的联网。同样,USB 大容量存储设备 (MSD) 主要用于硬盘驱动器及其它存储介质。
USB 2.0 规范要求主机初始化所有向内及向外的传输。此外,该规范还定义了三种基本设备:主机控制器、集线器以及外设。
USB 2.0 的物理互连是一种在每个星型中心使用一个集线器的分层星型拓扑结构。每条线段都是一个主机与集线器或功能之间的点对点连接,或者是一个连接至另一个集线器或功能的集线器。
USB 2.0 系统中用于设备的寻址方案可实现单个主机连接多达 127 个设备。这 127 个设备可以是集线器或外设的任何组合。复合或组合设备可以是这 127 个设备中两个或两个以上的设备。
虽然 USB 2.0 很可能是工业和许多基础设施应用的首选,但外设设备需要在没有主机参与的情况下彼此通信时,还需要部署移动 USB ( USB OTG)。为了实现点对点通信,USB OTG 引入了一种新的设备,这类设备包含可为两个外设实现数据共享的限制主机功能。
OTG 补充方案定义了一套新的、称之为主机协商协议 (HNP) 的握手方式。使用 HNP,能够作为默认外设连接的设备可请求成为主机。这有助于现有 USB 2.0 主机设备范例提供点对点通信。另外还定义了会话请求协议 (SRP)。
USB 具有可靠标准的普及性与极高地位,可向嵌入式处理器厂商提供专门针对 USB 功能的软件库,从而可大幅缩短开发时间。系统设计人员不必编写自己的代码,只需进行功能调用,便可实施接口。
这些库应通过认证,证明已通过了 USB 实施人员论坛实施的 USB 设备及嵌入式主机合规性测试。德州仪器 (TI) 等一些厂商可为其嵌入式处理器提供广泛的 USB 库。
2007 年,旨在创建一种更快 USB 类型的 USB3.0 推广团队 (the USB 3.0 Promoter Group)得以成立,这种 USB 类型不但向后兼容以前的 USB 标准,而且还可提供比 USB2.0 快 10 倍的数据速率。USB 3.0 采用新的信号发送方案,并通过保留 USB 2.0 双线接口实现了向后兼容性。然而这种更快的版本还处于部署初期,USB 2.0 今后数年仍将是最常用的 USB 类型,其具有高速 (480Mbps)、低速 (1.5Mbps) 以及全速 (12Mbps) 三种速度选项。
EMAC
虽然符合IEEE 802.3以太网标准的接口一般会被误称为以太网介质访问控制器 (EMAC),但完整的 EMAC 子系统接口实际上包括三个模块,这三个模块可能会集成在片上,也可能不会:
1.物理层接口 (PHY);
2.以太网 MAC,其可实施协议的 EMAC 层;
3.定制接口一般称为 MAC 控制模块。
EMAC 模块可控制系统到 PHY 的包数据流。MDIO 模块可执行 PHY 的配置以及状态监控。两个模块都可通过 MAC 控制模块访问系统核心,从而还可优化数据流。在 TI嵌入式处理器等完全集成型解决方案中,定制接口被视为 EMAC/MDIO 外设不可或缺的组成部分。
完整的 EMAC 子系统如图 1 所示。
EMAC 控制模块不但可控制设备中断,而且还整合了一个用于保持 EMAC 缓存器描述符的 8K 字节内部随机访问存储器 (RAM)。该 MDIO 模块采用 802.3 串行管理接口来询问和控制多达 32 个采用共享双线总线连接至设备的以太网 PHY.
主机软件使用 MDIO 模块来配置连接至 EMAC 的每个 PHY的自动协商参数,恢复协商结果,并在 EMAC 模块中配置所需的参数,以实现正确的操作。该模块可为 MDIO 接口实现近乎透明的操作,基本不需要核心处理器的维护。
EMAC 模块可在网络与处理器之间提供一个高效率的接口。EMAC 模块通常可提供 10Base-T(10Mbit/秒)与 100Base TX(100Mbit/秒)、半双工与全双工模式,以及硬件流控制与服务质量 (QoS) 支持。此外,部分处理器现在还支持可实现 1000 Mbit/秒数据速率的千兆位 EMAC 容量。
由于以太网的广泛使用,嵌入式处理器一般都在芯片上集成了一个或多个 EMAC 接口。不同的厂商在实施上述完整的 EMAC 子系统时采用的方法也稍有不同。实施以太网接口所需的软件支持与库的质量和范围是选择嵌入式处理器厂商时需要考虑的另一个问题。
路由器或交换机等应用所需的 EMAC 有时不止一个。这些应用通过使用多个 EMAC,能够在创建同步过程通信的同时,与众多设备通信。
SATA
串行 ATA (SATA) 可将主机总线适配器与诸如硬盘驱动器与光盘驱动器等大容量存储设备相连。它已基本取代了之前的并行 ATA (PATA)。PATA 要求 40/80 线并行线缆,长度不超过 18 英寸。PATA 的最大数据传输速率为 133Mbit/秒,而 SATA 串行数据格式则使用两个差分对来支持连接数据存储设备的接口,线路速率为 1.5Gbit/秒(SATA 版本 1)、3.0Gbit/秒(SATA 版本 2)与 6.0Gbit/秒(SATA 版本 3)。SATA 1 和 SATA 2 现已面市,SATA 3 将在近期推出。
此外,SATA 控制器需要的线缆较细,而且可以长达 3 英尺。较细的线缆更加灵活,一方面可实现更便捷的布线,另一方面更有利于大容量存储设备外壳内的空气流通。
串行链路可获得高性能的部分原因是采用高级系统存储器结构来容纳高速串行数据。这种高级主机控制器接口 (AHCI) 存储器结构可为控制、状态以及命令列表数据表提供一个通用域。命令列表的每条记录都包含用于编程 SATA 设备的信息以及一个用于在系统存储器与设备之间传输数据、指向描述符表的指针。
大多数 SATA 控制器不但支持热插拔,而且还采用端口多路器来增加可连接至单个 HBA 端口的设备数量。SATA 标准有一个很长的特性列表,但几乎没有 SATA 控制器可支持所有这些特性。常见特性包括:
· 支持AHCI 控制器规范1.1版;
· 集成SERDES PHY;
· 集成Rx与Tx数据缓存器;
· 支持SATA 电源管理特性;
· 每端口配备内部 DMA 引擎;
· 多达 32 条记录的硬件辅助原生命令排序 (NCQ);
· 32 位寻址;
· 支持端口乘法器;
· 支持 LED 工作;
· 机械控制开关 (mechanical presence switch)。
由于 SATA 能够存储可延伸至太字节范围的大量数据,因此应用非常广泛,其中包括上网本、膝上型电脑、台式机、多媒体设备以及便携式数据终端等。此外,SATA 还可用于可能需要传感器或系统监控器存储大量数据以待后续分析的工业应用。
DDR2/移动DDR
DDR2 是双陪数据速率 (DDR) SDRAM规范的后继标准,这两个标准互不兼容。DDR2 在总线时钟信号的上升沿与下降沿传输数据,并能够以更高的总线速度运行,从而可实现每个内部时钟周期四次的数据传输。
简化型 DDR2 控制器包括以下设计块:
· 存储器控制;
· 读取接口;
· 写入接口;
· 以及 IO 块。
这些块以及它们与 DDR2 存储器芯片及核心逻辑的关系见图 2 所示。
存储器控制块发出存储器对专用核心逻辑的访问,反过来也是如此。读取物理块负责处理在各个读取周期中采集数据的外部信号时序,而写入物理块则使用适当的外部信号时序管理时钟与数据的发出。
字节宽度双向数据选通 (DQS) 随数据 (DQ) 通过外部方式传输,用于采集目的。DQS 在读取存储器时由控制器通过边缘对齐的方式传输,而在写入存储器时则采用中心对齐的方式。片上延迟锁相环 (DLL) 用于锁住 DQS 及相应的 DQ.这可在电压及温度发生变化时确保它们能够彼此跟踪。
DDR2 SRAM具有差分时钟输入,可降低时钟输入占空比变化时的影响。此外,DDR2 SRAM 还支持数据掩码信号,可在各个写入周期中为数据位添加掩码。
移动 DDR (MDDR) 也称低功耗双倍数据传输速率存储器 (LPDDR),因为其工作电压为 1.8 V,而传统存储器工作电压为 2.5 V 或 3.3 V,通常用于便携式电子产品。此外,移动 DDR 存储器还支持传统 DDR2 存储器不具备的低功耗状态。与所有 DDR 存储器一样,双倍数据传输速率是通过器件时钟上下沿同时传输数据实现的。
由于片上外设的数量受成本或其它限制条件的约束,系统设计人员往往想找出数据片上与片外传输的新方法。一种策略是利用未使用视频端口的资源,实际上是利用它来高速发送和接收非视频数据。这种方法的缺点之一就是数据必须被格式化成视频帧,这在工作中需要部分处理器 MIPS的支持,而在设计周期中则需要宝贵的编程时间。
其它的方法存在类似的困难,而且大多数标准片上数据接口是串行端口,不能执行高速数据传输。
最终许多系统设计人员认识到将某种不符合特定接口标准,但能够以多种方式配置的高灵活高速外设专门用于数据传输会带来显着的优势。如果系统处理器必须与高速 DAC、ADC、DSP 乃至 FPGA 连接,实现 250MB/秒的高速数据传输,则这种思路就非常有价值了。
这种外设的基本架构很容易描述。它要有多个具有单独并行总线的通道,经配置后可以容纳超过一个字的长度。此外,它还要有内部 DMA 块,这样其工作就无需占用内核的 MIPS 预算。单、双倍数据速率以及多种数据打包格式也是可以使用的。
TI 各种嵌入式处理器都提供通用并行端口 (uPP),包括Sitara? ARM9 AM1808与AM1806微处理器 (MPU) 以及集成TMS320C674x 内核与ARM9 内核的OMAP-L138处理器。与 SPI 及 UART 等串行外设不同,uPP 可为设计人员提供并行数据总线优势,每通道数据宽度为 8 位和 16 位。
uPP 在以 75MHz 的最高时钟速率运行时,能够以远超串行端口外设的速度传输数据。例如,单个运行在 75MHz 速率下的 16 位 uPP 通道能够比运行在 50MHz 速率下的 SPI 外设快 24 倍。
简化的方框图见图 3.
uPP 最重要的特性包括:
· 具有单独数据总线的两个独立通道;
o 两个通道可同时以相同或相反方向运行
· I/O 速度高达 75MHz,每通道数据位宽为 8 ~ 16 位;
· 内部DMA -可释放CPU EDMA;
· 具有极少控制引脚的简单协议(可配置:每通道 2 ~ 4 个);
· 单倍及双倍数据速率(使用时钟信号的单沿或双沿);
o 双倍数据速率要求 37.5MHz 的最高时钟速率;
· 支持 9 ~ 15 位数据位宽的多种数据打包格式;
· 数据交错模式(限单通道)。
uPP 与另一种专用于可配置数据处理的 TI 外设-主机端口接口 (HPI) 有某种相似之处。HPI 是一种可帮助外部主机直接访问处理器内部存储器的并行接口。然而与 HPI 不同,uPP 不允许外部设备直接访问存储器,它需要设备软件对 I/O 传输进行排队。其最大差异可能在于 uPP 比 HPI 速度快得多,而且协议也简单得多。
uPP 主要用于如 FPGA 或 DSP 等需要片外实时处理的应用,可为医疗领域等需要即时数据的市场带来极大的优势。通过使用uPP,决策处理器能够凭借最新信息做出结论。
PRU
可编程实时单元 (PRU) 是一种小型 32 位处理引擎,可为片上实时处理提供更多的资源。PRU 专门用于AM1x MPU与OMPAP-L138解决方案中的 TI嵌入式处理器,可为系统设计人员提供具有高灵活性的额外措施,通常可降低组件成本。
PRU 的四总线架构有助于指令随数据传输同步传输和执行。此外,还可提供一个输入寄存器,让外部状态信息反映在内部处理器的状态寄存器内。
PRU 设计的一个重要目的就是尽可能地创建灵活性,以便执行各种功能。PRU 的高灵活性可帮助开发人员在其终端产品(不管是触摸屏、集成型显示屏还是存储功能)中整合更多的接口,以进一步扩展产品功能或者其自己的专有接口功能。该目标主要是通过提供包括所有系统存储器、I/O 以及中断在内的 PRU 全面系统可视性实现的。
虽然 PRU 能够全面访问系统资源,但其内部资源相对来说比较普通。它具有 4K 字节的指令存储器和 512 字节的数据存储器。此外,PRU 还具有自己的GPIO,时延仅为数纳秒。
PRU 可通过使用简单的汇编语言代码编程来实施定制逻辑。该指令集可分为四大类:
· 将数据移入或移出处理器内部寄存器;
· 执行算术运算;
· 执行逻辑运算;
· 控制程序流。
在工业应用中,通常将 PRU 配置为 IO 块,用来顶替处理器未能提供的 IO.例如,它可以用在需要 UART 块组合的便携式数据终端中,用来连接 GSM、GPS 与蓝牙 (Bluetooth)、小键盘、打印机、LED 组以及 RS232 端口。然而,虽然该处理器系列中的最佳选择只集成了三个 UART,但 PRU 可提供更多的 UART 接口,可充分满足不断发展的终端设备对处理各种功能的需求。
除了用来顶替 IO,PRU 经编程后还可执行各种控制、监控或其它片上没有提供的功能。这种灵活性对于一些应用而言特别有帮助,这些应用包含的控制要求与任何标准处理器配置提供的控制要求不匹配。
ARM子系统与外设集成
在评估 ARM 处理器中的外设接口时,理解外设与 ARM 子系统的集成方式非常重要。
ARM 处理器适合复杂、多任务的通用控制任务。它不但可为大型程序提供存储器空间,而且还具有良好的环境切换功能,适合运行实时操作系统 (RTOS) 和精细的高级操作系统。ARM 负责系统配置与控制,其任务包括外设配置及控制、时钟控制、存储器初始化、中断处理以及电源管理等。ARM 子系统包含 ARM 处理器以及作为整体处理器系统主控制器工作所必须的其它组件。
典型 ARM 子系统包括下列组件组合:
· ARM内核 (例如:ARM926EJ-S或ARM Cortex-A8?)
o 协处理器15 (CP15)
o MMU
o 写入缓冲器
o 指令高速缓存
o 数据高速缓存
o Java加速器
o Neon单指令、多数据 (SIMD) 协处理器
o 矢量浮点协处理器 (VFP)
· ARM内部存储器
o RAM
o ROM (ARM引导加载程序)
· 总线判优器
o 用于访问内部存储器的总线判优器
o 用于访问系统及外设控制寄存器的总线判优器
o 用于访问外部存储器的总线判优器
· 调试、跟踪以及仿真模块
o JTAG
o ICECrusher
o嵌入式跟踪宏单元 (ETM)
· 系统控制外设
o ARM中断控制模块
o 锁相环 (PLL) 及时钟控制模块
o 电源管理模块
o 系统控制模块
可参考图 5,了解典型 ARM9 ARM 子系统的方框图。
对于 USB、EMAC、SATA、uPP 以及 PRU 等外设而言,ARM 子系统可访问外设的控制与配置寄存器、时钟以及电源管理控制。
结论
虽然标准接口在系统设计过程中发挥着重要的作用,可为设计实现互操作性与低成本,并减少设计所需的时间,但对需要实现产品差异化的设计团队而言,其实用用性仍然很有限。设计人员还应依赖芯片厂商为其提供各种多组合标准接口。对芯片厂商而言,可帮助高效实施接口的高质量软件库是实现差异化的其它因素。提供更高级别的灵活性也非常有帮助,能够通过 TI PRU 与 uPP 等可配置接口获得。系统设计人员利用其工具套件中的这些选项,既可发挥创造性,同时又能保持组件的低成本。