C6455复位和上电时的引导模式主要有:NO BOOT模式,主机引导模式,FLASH引导模式,主I2C引导模式,从I2C引导模式,SRIO引导模式。C6455的EMIFA端口引脚EMIFA [0:19]和ABA[1:0]被复用作配置引脚,和专用引脚PCI_EN一起构成C6455的硬件配置引脚。采用哪种引导模式,由复位或上电时采样管脚 BOOTMOOD[3:0]来决定[7-9]。表1是引导模式选择方式。
对被加载的从DSP来说,设置BOOTMOOD[3:0]=1x00,此时为SRIO引导模式,SRIO被配置成四个1x端口,由port0对从DSP进行加载。另外,差分晶振选择125M的时钟源。上电后,固化在从DSP内部ROM的“boot loader”对从DSP进行一些必要的初始化配置:
使能全局中断,SRIO的中断管脚被使能,使从 DSP可以接收来自主DSP的中断;
boot loader配置PLL1模块为15倍频,也就是使内核工作在750MHz;
boot loader初始化从 DSP的SRIO端口,使SRIO的时钟模块配置成1.25G。
主DSP对SRIO端口进行初始化配置,并将时钟模块配置成1.25G。此时主DSP与从DSP之间互相发送同步信息,直到链路建立。链路成功建立以后,主DSP执行NWRITE操作,将待加载程序装载到L2 SRAM内存中。代码装载完成后,执行门铃操作,向从DSP发送中断,从DSP收到中断后脱离“挂起”状态,从地址0x800000处运行程序,加载过程结束。图7便是SRIO引导过程。实测表明,主DSP通过FLASH加载完成后,可通过SRIO接口对从DSP完成加载。
4 C6455与FPGA等构建SRIO网络
SRIO与微处理器总线类似,它在硬件中完成存储器和器件寻址以及分组处理,降低了用于I/O处理的开销,减小了延迟。一个运行于3.125 Gbps的4通道SRIO链路能在完全保持数据完整性的前提下提供25 Gbps的流量,保障了海量数据传输的实时性。
SRIO网络建立在两个“基本模块”基础之上:端点设备(Endpoint)和交换设备(Switch)。有两种连接方式,一种是简单的端点到端点互联,一种是端点到交换设备的互联,端点设备负责收发数据包,交换设备负责在端口之间传递数据包,但不负责数据包的解释。通过Switch交换,可以构建一个 CPU,DSP以及FPGA不同平台互联互通的数据传输网,进行共享式或分布式处理。图8给出了SRIO网络的构建模块。
C6455具有很强的处理能力,但对于并行算法,采用FPGA可以达到更高的效率。本文以SRIO为桥接,设计了一个C6455和Xilinx Virtex-4 FPGA两者相结合的处理平台,C6455和Virtex-4都有丰富的接口,该平台不但实现了C6455与Virtex-4之间的数据传输,还实现了 PCI、网络MAC、USB等不同协议域之间建立数据流。结构如图9所示。
SRIO系统由一块主C6455管理,可加载另外2片C6455,也可建立SRIO到SRIO,PCI到SRIO,MAC到SRIO等数据流。 Xilinx公司根据最新的RapidIO v1.3规范设计了其端点IP解决方案,同时集成了PCIe,以太网MACs等IP核,PCIe的32/64位地址空间(基地址)可自动映射至34/66 位SRIO地址空间(基地址)。PCIe应用程序通过内存或I/O读写与C6455通信。这些事务均可通过流写入、原语和确认读/写事务 (SWRITEs, ATOMIC, NREADs, NWRITE/NWRITE_Rs)等I/O操作映射至SRIO空间。以实现从PCIe到SRIO或从SRIO向PCIe的转换,从而在各个协议域之间建立数据流。
5 结 论
在C6455等高端DSP中,SRIO已逐渐成为主流数据互连方式之一。SRIO具有引脚少、I/O处理开销低、可达3.125Gbps高速率等优势, C6455间的SRIO通信设计和基于SRIO的加载技术提高了系统设计的灵活性,而基于DSP和FPGA的SRIO网络设计降低了多处理器集成的难度,可方便进行共享式或分布式处理,构成具备共享带宽和强大处理能力的通用处理平台,从而更好地解决“强大计算能力”和“快速数据传输”两大挑战。