第四个寄存器用于存储哪个总线主控有数据在等待向AHB传输,而第五个寄存器则是程序设计者用来为每个总线请求和准许槽位(分配给特定总线主控)分配权重值。
使用循环仲裁
图3:NS9xxx的总线架构。
在前面例子中,当基于特定仲裁再分配调度方案的LCD请求额外的总线访问时,程序设计者可根据LCD必须处理的数据流的性质来指定分配给LCD的优先级。如果程序设计者认为需要分配10个槽位给LCD控制器,剩余的6个槽位会按最初仲裁方案分配给其它总线主控。这样LCD控制器可获得十倍于正常情况下可得到的带宽,以及十倍于其它主控的带宽来处理这种特定情形下的负载。
当通过以太网连接传送数据、同时LCD屏幕进行刷新的时候,这种特性十分重要。LCD需要实时、准确地进行刷新,且不会被以太网请求中断。
在典型的AMBA总线架构中,如果LCD对总线提出请求,不论有怎样的刷新需求,它都不得不等待直到以太网主控将总线释放出来。采用新的循环可编程仲裁方案,程序设计者可降低以太网传输的优先级,使数据以更低但可接受的速率传输,确保LCD得以适当地刷新而不至于使屏幕出现空白。
如果为保证活动画面显示对LCD延时和带宽要求极高,则以太网协议需求还可进一步降低传输速率。但停止数据流传输是不可以的。实际上,如果LCD主控控制了该总线并且只有当刷新工作完成后才将总线释放,则有可能停止数据流的传输。
在外围总线中增加突发模式DMA
在基于AMBA的设计中,外围总线的传统设计方法是假定基于ARM内核的嵌入式器件用于低端性能应用。但现在的器件经常需要在不切断低带宽外围电路访问总线资源的情况下,运行一种或多种高带宽应用。在具有较多外围电路的设计中,这种情况特别容易出问题。例如NS9750或NS9360,它们支持USB、 I2C,具有四个多功能串行模块(可选用UART或SPI,同步模式下的速率可达11Mbps)、50个单独的可编程GPIO引脚、一个IEEE1284 外围端口以及16个通用定时器或计数器(每个都有自己的I/O引脚)。
在传统的APB实现方案中,采用FIFO就足以应付通信外设(如UART)的低速率传输,FIFO可以在处理器必须介入并访问APB之前将数个字节传送到接口。但在本文所描述的许多高端嵌入式应用中,一个或多个这样的外围电路可能需要高带宽传输,要求能通过APB/AHB桥快速访问主要的高性能总线。
一种让外围总线工作于这种突发模式的方法,是仅用一条突发模式外围总线(如NetSilicon的 BBUS)替代APB总线。这种突发模式外围总线带有四个支持突发模式的总线主控(见图3):第一个总线主控是具有13个通道的DMA引擎,支持13个 USB端点;第二个总线主控是具有12个通道的DMA引擎,支持4个串行模块(每个串行模块有8个通道)和1284端口;第三个总线主控为BBUS- AHB桥,它包含一个DMA引擎,该引擎具有可访问AHB系统总线的通道;第四个总线主控是一个USB宿主模块。另外,这种DMA引擎有两个独立的专用 DMA通道,可支持连接到外部存储总线的外部设备。为简化突发模式状态,每一个内部DMA通道以“飞越模式”(fly-by mode)在系统存储器及BBUS外围电路之间传输数据,而两个外部DMA通道则选择存储器到存储器的传输模式。