数码公司网站建设的意义,网站开发需求分析与功能设计,营销型和展示型网站,wordpress 自动删除文章通用串行总线#xff08;USB#xff09;完全取代了PC上的UART#xff0c;PS2和IEEE-1284并行接口#xff0c;现在已在嵌入式开发应用程序中得到广泛认可。嵌入式开发系统使用的大多数I / O设备#xff08;键盘#xff0c;扫描仪#xff0c;鼠标#xff09;都是基于USB的…通用串行总线USB完全取代了PC上的UARTPS2和IEEE-1284并行接口现在已在嵌入式开发应用程序中得到广泛认可。嵌入式开发系统使用的大多数I / O设备键盘扫描仪鼠标都是基于USB的。
由于USB是USB联盟所保证的明确定义的标准因此任何供应商提供的经过USB认证的设备都可以即插即用的方式与任何其他供应商提供的经过USB认证的设备一起使用。
多个设备可以在同一总线上运行而互不影响。绝大多数32位闪存MCU和MPU供应商都提供某种形式的USB接口作为标准外设一点也不奇怪USB主机USB设备USB OTG通常限于“全速”规格即12 Mbps下图1。 图1. USB框图
现在USB标准旨在解决嵌入式开发系统的另一个问题数据速率的指数级增长。五年前人们认为10 Mbps的数据速率很高。12 Mbps全速USB10 Mbps SPI或400 kps I2C接口可以满足几乎所有嵌入式应用程序的数据需求。
但是如今随着日志文件大小的不断增加以及用户界面的日益复杂化的出现甚至数十Mbps的数据速率也不足以提供足够的用户体验。千兆字节的日志文件必须在10秒钟内在系统之间传输并且将从系统内不同PCB收集的信息传输到图形显示单元。
输入“高速” USB。凭借480 Mbps的带宽高速USB可以满足当今对数十Mbps的需求以及未来对百Mbps的需求。它提供了一种易于理解且易于使用的工具可以处理系统之间以及系统内部的印刷电路板PCB之间的大量数据和互连。
毫无疑问它将很快用于单个PCB上的芯片间通信从而绕开了物理层并消除了对电缆连接的需求。预计支持该技术的系统将于2009年投放市场。
显然微控制器将必须增加USB HS支持以跟上市场发展。但是问题是如何构建一个微控制器可以处理来自480 Mbps USB接口的数据负载同时又能满足嵌入式系统的功耗和实时限制。
在一个400MHz的基于ARM9的微处理器中保持480 Mbp的数据速率并且将片上高速缓冲存储器连接到单个平面高速外部存储器非常容易。在相对较慢的闪存上运行的在100 MHz Cortex M3闪存MCU上运行它是另外一回事。
Cortex-M3是否可以在运行诸如数据处理算法文件系统和通信协议之类的过程密集型任务时处理所有这些数据传输
解决此问题的方法是将ARM9微处理器中使用的多层总线体系结构下面的图2适应Cortex M3并将存储器空间分为多个分布在体系结构内的块以确保高速时的实时关键处理。数据通过DMA并行传输。 图2.高数据速率架构。
直接内存访问DMA至关重要。使用CPU进行传输会导致CPU过载可能会阻止CPU处理应用程序和实时控制任务。理想情况下必须将三种类型的DMA连接到所有低速和高速外设以最大程度地减少总线和存储器上的数据传输负载并使处理器腾出空间进行数据处理和系统控制任务。
带有内置缓冲区的DMA相对较大仅保留给最高速度的接口以提高对总线等待时间和突发传输的耐受性以及对链表的支持。
它们提供了高度的CPU独立性和最低的总线使用率。由于每个通道的成本较高因此无法在每个片上外设上全局使用这些功能齐全的DMA。
多种DMA实现方案在成本和性能之间取得了平衡并结合了外围DMA控制器PDC该控制器以最低的复杂度和最简单的使用方式直接将低数据速率的外围设备链接到存储器并专门针对并优化了经过调谐的DMA控制器用于最高带宽的外围设备以及针对存储器到存储器和存储器到高速外围设备块传输进行了优化的中央DMA。
由于DMA控制器完全独立于处理器运行因此消除了中断开销并大大减少了数据传输所需的时钟周期数。
降低成本的DMA实现是外围DMA控制器或PDC它紧密集成在外围编程器的空间中。PDC带来了整体系统性能成本和易于编程的优势。
PDC通道的用户界面集成在每个外设的存储空间中。它包含一个32位存储器指针寄存器一个16位传输计数寄存器一个用于下一个存储器指针的32位寄存器以及一个用于下一个传输计数的16位寄存器。
当外设接收到外部字符时它会向PDC发送一个接收就绪信号然后请求访问系统总线。授予访问权限后PDC开始读取外设接收保持寄存器RHR然后触发对存储器的写操作。
每次传输后相关的PDC内存指针都会增加剩余的传输次数将减少。当达到存储块大小时下一个块传输将自动开始或者将信号发送到外围设备然后传输停止。相反遵循相同的过程进行传输传输。
当传输第一个编程数据块时相应的外设会产生传输结束中断。第二个块的数据传输会自动开始并且第一个块的处理可以由ARM处理器并行执行从而消除了用于更新处理器上DMA内存指针的繁重的实时中断约束并维持了15至20Mbps的速度任何外围设备上的数据传输。
如果在相同的外围设备上同时发生相同类型的请求接收器或发送器则优先级由外围设备的编号确定。如果传输请求不是同时发生的则将按照发生的顺序对其进行处理。首先处理来自接收方的请求然后处理发送方请求。
高于10 Mbps时访问内部总线和内存的时间变得至关重要并且两级深度的接收和发送缓冲区不再足以维持连续传输。需要具有更深缓冲区并能够突发数据传输的中央DMA。
该中央DMA具有内置FIFO可提高对总线延迟的容忍度可编程长度突发传输可优化每次传输分散收集和链接列表操作的平均时钟周期数。它可以编程用于存储器到存储器的传输或存储器到外设的存储器例如48Mbps SPI4位192 Mbps SDIO / SDCard 2.0或8位384 Mbps MMC 4.3主机接口。
每个专用DMA在总线矩阵上都有自己的层从而消除了任何总线访问延迟。这些DMA针对诸如高速USB接口以太网MAC或LCD控制器之类的高速外围设备进行了优化以在最短的时间内最大化数据传输。
对于7端点高速USB设备接口此类DMA将集成4kB DPRAM存储器以存储完整的数据包有效负载并防止缓冲区下溢和溢出。该DMA由几个通道组成每个通道专用于一个端点。DMA通道将在DPRAM和USB控制器内的多个存储体之间传输数据。 图3. SAM3U框图
最多3个存储体应分配给单个端点以存储微帧。在带有5层总线矩阵和两个中央SRAM存储器的96MHz的Cortex M3 MCU上的这种高速USB实现上图3可以维持480 Mbps的最大带宽。
回忆。 Cortex M3处理器具有三个内存总线指令总线I数据总线D和系统总线S。M3上的此总线体系结构与单总线ARM7体系结构有很大不同。除了在S总线上提取指令外所有其他总线都为处理器提供单周期内存访问。
有两种选择可从Cortex M3获得最高的指令取回速度并克服闪存的访问时间限制在I总线上连接单周期访问SRAM或增加闪存的宽度以支持多条指令读取和因此顺序指令提取加速。
只有SRAM的速度足以匹配Cortex M3处理器的最大96 MHz工作频率。但是通过将多个片上SRAM存储器用于指令和数据存储来优化性能会增加成本和待机功耗。使用价格便宜低泄漏的非易失性闪存会带来另一个问题闪存无法以与Cortex M3处理器相同的频率运行。
典型的闪存访问时间在35至50ns的范围内而Cortex M3时钟周期约为13 ns。为了补偿较长的闪存访问时间可以将闪存的宽度增加到64位或128位分别对应于四个和八个指令拇指2。
这种方法允许在每个周期读取多个顺序指令将其存储在寄存器中然后以完整的96 MHz时钟速率执行而没有任何等待状态。
SRAM还应用于存储数据并用作暂存器。为了最大化性能需要将SRAM存储器分为多个块以允许处理器和外设通过多总线体系结构的并行总线将数据移入和移出。这样的模块可以直接集成在高带宽外围设备中或在软件控制下用作分配给CPU和外围设备的中央存储器。
连接到Cortex M3 D总线的数据存储器不与其他片上外设或DMA共享。这带来了一个难题1如果数据存储器在S总线上共享并且因此放弃一些原始性能以换取允许DMA在没有CPU干预的情况下将数据加载和存储在存储器中或者2如果数据存储器连接到D总线并使用处理器移动数据。
下表1中的PDC基准 运行在SAM7X处理器上清楚显示了在具有多个通信通道的微控制器中最大程度地提高数据传输的DMA使用率的好处。 表1在SAM7X闪存微控制器上以Thumb模式从55MHz的闪存读取基准测试
具有高速USB接口的Cortex M3微控制器通常将在芯片上具有其他高速通信或存储接口。为了在这些接口之间维持较高的数据传输速率并进行协议转换应并行多个共享的SRAM块实现数据处理和系统控制功能以实现最佳的系统性能。
DMA和处理器S总线可以作为总线主控器连接到片上多层总线矩阵并可以直接访问共享存储器的块。
如果目标是创建数字处理器并传输有限数量的数据则必须将SRAM放在ID总线上。在这种情况下性能关键代码的一部分应在连接到I总线的SRAM中被遮蔽以在100MHz操作下释放完整的1.25 DMIPS / MHz。
当程序和数据存储需要片外存储器时通常使用Cortex M3 S总线因为它结合了指令和数据提取功能从而将外部总线限制为一条总线。这种折衷导致性能从1.25 IPSIPS / MHz突然下降到0.9 DMIPS / MHz这是由于S总线上的指令提取要比I总线多一个周期。
内部总线体系结构和外部存储器总线控制器实现的效率决定了在外部存储器中执行时获得的最终性能。 表2最高性能基准Dhrystone 2.1RVCT编译器和链接器性能优化零等待状态内存
上面的表2 比较了具有外部总线接口EBI的ARM7和Cortex M3 MCU的实现。基于ARM7的EBI可以维持0.54至0.67 DMIPS / MHz而Cortex M3器件上的EBI仅限于0.117 DMIPS / MHz。对于微控制器的选择过程显然需要考虑对外部存储器的执行进行基准测试。
多层总线。 数据密集型应用面临的另一个问题是片上总线带宽。当多个DMA控制器和处理器通过一条总线推送大量数据时总线可能会变得过载并降低整个系统的速度。时钟频率为48 MHz的32位总线的最大数据速率为每秒15亿位Gbps。
尽管听起来很多但是在数据密集型应用程序中可能有太多数据总线本身就成为了瓶颈。USB高速SDIO网关就是这种情况每个网关的数据速率都超过100 Mbps。使用优化数据传输的DMA几乎没有带宽留给处理器访问共享数据存储器。
通过提供多个并行的片上总线也称为多层总线矩阵可以避免这种情况。与仅支持单层ASB总线的ARM7相比Cortex M3处理器具有对多层总线的本机支持。因此Cortex M3是具有高速USB的微控制器的更好处理器。
在多层AHB总线上下面的图4处理器和芯片中的不同DMA控制器在总线上都有各自的专用层。 图4. SAM3U多层总线和内存
当多个外设共享一个DMA通道或共享存储器时仲裁器设置优先级。使用的仲裁策略示例为固定优先级主机无默认主机上次访问的默认主机或固定默认主机的循环仲裁。
AHB总线相对于ASB总线
的优势AHB总线相对于ASB总线具有主要优势因为它是为并行数据传输而设计的。可以将可配置数量的总线并行路由到连接到处理器的主总线。
直接内存访问控制器DMA应该使用这些附加总线之一将数据从外设传输到内存或从内存传输到内存而无需处理器的干预。在ARM7 ASB架构上DMA将窃取处理器的总线并阻止其从片上和片外存储器中获取指令或数据。
最后通过增加控制器中易失性存储块的数量可以减少对共享存储器的访问冲突并消除了另一个性能瓶颈。存储块可以直接集成在高带宽外围设备中或在软件控制下用作分配给处理器或外围设备的中央存储器。
因此可以创建基于Cortex-M3的实现该实现可以在最高1.8 MHz的96 MHz和1.62 V的84MHz的最大时钟速率下达到480 Mbps的数据传输速率单周期为1.25 DMIPS / MHz乘除。
实现这一壮举的关键是在总线接口中采用低门数高效的多通道DMA架构该架构采用低门数易于使用的DMA能够在每个通道的每个通道上维持高达20 Mpb的速率。中低端数据速率外设。
此外应使用中央DMA通道和专用的USB高速DMA来支持每个外设几百Mbps的更高数据速率。使用此设置处理器只会干预以开始每次数据传输并且在传输完成时会被中断提醒。
这种安排几乎减轻了处理器的全部数据传输负担从而使处理器能够确定控制和数据处理任务的优先级。Cortex M3中断控制器确定性地在最多12个指令周期内处理中断。如果使用尾链链接中断等待时间将降至6个周期从而进一步减少了切换任务时的处理器开销。
最后USB 2.0高速480 Mbps提供的更高速度使其比绝大多数其他接口更快从而可以在最短的时间内传输大量数据从而改善了系统的用户体验。
DMA和存储器的正确组合可以增加确定性Cortex3 MCU的资源以轻松处理高速USB从而为微控制器中当前和将来的数据需求提供了有效的解决方案。