Champ-av3主板的开发和应用
引言
Champ-av3是一种功能强大的数字信号处理板,内嵌vxWorks操作系统,具有专门的DSP算法库,运行速度快、实时性好,町以配合多种子卡来适应不同的接口要求,十分适用于雷达、声纳、人工智能等应用场合。
Champ-av3集成了4片Motorola公司的MPC7447/A处理芯片,每片处理器各自拥有256 MB的SDRAM存储空间。4片处理器通过MV64360桥片挂在内部64位100 MHz的PCI-x数据总线上,通过这条总线,4片MPC7447/A可以方便快速地传输数据,共享资源。它还具有专门的OBIC模块,对多处理器之间的联系进行管理。同时,板上还具备两个安装子卡的接口,支持多种PMC(PCI Mezzanine Card)子卡,使得数据的出入接口灵活,便于用户扩展功能。
1 硬件结构
硬件结构框图如图1所示。
Champ-av3提供4个高性能的处理模块,每个模块包括1个1 GHz的MPC7447/A处理器、256 MB的SDRAM和MV64360 PCI桥片。这4个模块通过构成回路的PCI-X总线挂在一起,彼此可以进行高速的互连。而MV64360 PCI桥片则给MPC7447/A、SDRAM和PCI-X总线提供丫通畅的连接接口。
在多处理器共同工作时,会碰到需要将数据发送给多个处理器或者数据从多个处理器流水通过的问题,这个问题常常比处理器的运算能力更限制板子的性能。本板的四方回路式结构很好地解决了这个问题。
1.1 存储器类型和存储空问的分配
Champ-av3在地址空问分配上独具特色,它的存储空间全部统一编址,因此任何一个处理器都能访问到其他处理器的存储空间,也能访问两个PMC子卡的存储空问和VME总线的空间。而任何一个子卡模块或VME主控器也能随意访问这些处理器的存储空问。它的存储空间分配方式见表1。
Champ-av 3的每个处理模块都有128 MB或256 MB的SDRAM,它具有双倍的传输速率,在125 MHz工作频率下,数据传输速率可达2.0 GB/s。每个SDRAM都可以被所有的处理器访问,VME总线也可以通过PCI到VME的转换接口访问到它。
为了分担SDRAM的压力,板上还有一片256 kB的高速SRAM,可以专门用来存储外围设备的一些状态字。例如在DMA传输时,DMA控制器可以一边从SDRAM中访问数据,一边从SRAM中获取外围设备状态。
在Champ-av3板上,靠近A处理模块处有一片64 MB或128 MB、32 bit的Flash存储空间,它可以被擦除100万次,数据保存可达20年以上。为了防止意外擦除,板上提供硬件跳线器。实际应用中值得注意的是,这片Flash存储器只能由A处理模块直接访问,A处理模块将Flash存储器中的数据读到自己的存储空间后,其他处理模块才能共享。这一点也可以从表1的存储空间分配表看出。
Champ-av3主板的处理器读取存储器时,先从存储器搬人高速缓冲存储器,再进行访问,而外部设备只能直接访问存储器。所以在访问数据时一定要注意,最新数据究竟是在存储器中还是在高速缓冲存储器中。这里需要提及两个函数cacheFlush()和cacheIn-validate()。它们是编程中经常需要使用的指令。在外部器件读取数据之前,需要将数据从高速缓冲存储器cacheFlush()到存储器中,以保证外部器件读到当前的最新数据;在外部器件向存储器写了数据后,需要将数据从存储器cacheInvalidate()到高速缓冲存储器中,以保证处理器读到的是最新数据。在DMA传数和处理器之间共享数据时必须注意这种数据的及时刷新。
1.2 接口
Champ-av3有两个网口:网口0是百兆网,它与前面板上的RJ45连接器和后面板上的P2插座都连在一起;网口1是干兆网,它只与后面板上的P2插座连接。这两个网口的接口都在A处理模块上,但是基于vx-Works共享空间网络特点,所有的处理模块都可以通过一个网口通信。这个特点也可以推广到多板系统。
本板还具有VME64主从接口能力。VME64接口通过PCI-PCI桥挂到A、B处理模块之间,在DMA方式下,本地存储器与VME总线之间可以有50 MB/s的传输速率。
板上还有3个串口:串口1是EIA-232电平,与前面板后面板都相连;串口2、3有EIA-232和EIA-422两种传输电平,串口2与后面板的P2插座相连,串口3与后面板的P0插座相连。需要注意,串口2、3只有B处理模块能够直接使用。
同时,板上还具备两个安装PMC子卡的接口,它们都符合PCI和PCI-X总线标准,其中PCI-X总线接口支持64 bit、66 MHz或100 MHz的传输速率,可以具有800 MB/s的峰值传输能力。本板支持多种PMC子卡,使得数据的出入接口灵活,便于用户扩展功能。
2 软件设计
Champ-av3提供一套与硬件相结合的软件包,可以对板子进行初始化和板内自检。板内自检包括上电自检和初始自检,可以保证95%的检测范围。
用户编程的开发环境在tornarlo2.0以上的版本中进行,编程语言址C/C++。但除了用C语言编写应用程序外,还有一些软包但需要深入了解。
1 ) vxWorks BSP
vxWorks BSP(板级支持包)支持Tronado2.02和tronado2.2,开发环境,主机操作系统要求足Windows和Solaris,使用GNU编译器。BSP还包含一系列功能函数,可以进行更改系统时钟、初始化硬件、串口等操作。
需要指出的是,虽然4个处理模块的存储器空间是可以共享的,但是BSP的初始设定对共享加了权限限制,使A处理模块只可以访问B、C、D处理模块的头64 MB空间,B、C、D处理模块也可以访问A处川模块的头64 MB空间,但B、C、D处理模块彼此之间小能访问。如果需要改变设置,可以到sysLib.c程序的sysH-wlnit子程序中用sysPhysMemAdd函数更改。
2)BSL文件
BSL(板级支持库)文件支持对板子进行较为低级的操作和控制,它不依赖操作系统,也就是说基于vx-Works操作系统的BSP可以使用BSL,而不需要操作系统的应用也可以使用BSL。BSL的功能主要有以下几大类:板信息类函数:可以控制和获得板子的状念信息;DMA类函数:对存储器直接进行访问的函数;Flash管理类函数:只有A处理器才能管理Flash;中断类函数:处理器之间的中断有多种方式,。它们都由板内中断控制器(OBIC模块)统一管理;PCI、VME总线类函数;串口调用类函数:只有B处理器才能使用。
3)IXLibs-AV 库函数
这是被优化的DSP运算函数库,提供32位浮点数据构成的向量和矩阵运算。专门有资料显示这些运算的耗时,因为MPC7447/A的主频可以达到1 GHz,它的运算速度非常快,但需要注意的是这些资料仅仅显示运算时间,在实际算法运行时,数据从存储空间搬人高速缓冲存储器还需要额外的时间,这足由于Champ-av3的存储伞问的构造方式决定的。所以必须综合数据的更新率、数据量和运算时问这3个因素,才能真正估算算法的牦时。
IXLibs-AV库函数可以简化DSP运算,但使用时最好先对函数进行验证。因为它虽然足以C语言的方式应用,但有些参数的调用却不像按C语言的习惯那样使用,而且编译和运行时不会出现任何提示。
3 处理模块之问协同工作方式
多处理芯片涉及协同工作问题,彼此之间的握手信息可以有多种方式传递。
1)FIFO-IPI中断
每个处理器都拥有1个16位宽度、32位深度的FIFO,用来存储FIFO_IPI中断。只要这个FIFO不空,就会产生INT_ID_FIFO_NOT_EMPTY中断向量。BSL中专门有这类调用函数。这种中断的优点是不会丢失,还可以携带不同的中断信息。
2)IPI中断
每个处理器拥有8个相互独立的IPI中断:INT_ID_IPIO~INT_ID_IPI7。IPI中断无奇存,这意味着如果不能及时响应巾断,后一个中断会丢失。但是IPI中断支持广播式中断,1个处理器可以向所有的处理器(包括自己)发送中断。
此外,还有若十种方法如硬件信号量也可以同步多处理器系统。上述这些方式都是通过OBIC模块统一管理的,每个处理器都有与OBIC的独立通道,因此,这些方式的产生和响应不占用CPU总线周期。即使当阿系统正在频繁进行传数工作,也不会影响系统的同步。
4 软件程序运行时问估算
软件程序的耗时估算是前期工作不可缺少的一步,大致可分为数据传输耗时和算法运算耗时。
数据传输耗时主要指DMA传输数据的时间,虽然数据可以异地共享,但会额外花费时间,尤其在共享数据量很大的时候。所以对于大数据量,一般采用DMA方式传到各个处理模块的本地存储器,以供它们各自访问。这就涉及到DMA传输数据的耗时估算。经过实测,同一个DMA通道传输数据量与耗时之比是常数,但是启动1个DMA通道的传输耗时与启动多个DMA通道的传输耗时之比不是常数。例如:A处理器启动1个DMA,传输10 MB数据给B处理器,大约需要25.196 ms;而A处理器同时启动3个DMA,分别传输10 MB数据给B、C、D处理器,只需要37.383 ms。从此叮以看出,选择适当的DMA传输方式,可以大大降低传输耗时。
Champ-av3的存储空间构造方式特殊,由于高速缓冲存储器空间远小于存储空间,所以算法的耗时和参与运算的数据量并不成正比。除了了解算法本身的运算时间外,最好充分考虑数据的更新率和运算数据量。如果算法允许,可以将数据拆成小包运算,减少算法耗时。
5 Champ-av3板的应用
图2所示是一则Champ-av3主板的硬件应用实例。它的输入信号是同步数据流,PMC子卡1有64位可用户自定义的IO口,而且接口电平可以有多种选择。数据进入子卡后可以在大容量的FPGA中进行预处理,然后通过PCI总线进入主板。需要注意的是PCI总线是64位的,所以数据在预处理时最好拼接成64位,这样除了可以提高PCI总线传输速率,还便于存储器存放数据。而主板调用这些数据时,由于是C语言编程,可以以C语言允许的数据形式任意调用。
输出信号是异步数据流,PMC子卡2通过PCI总线与主板连接,任何一个处理模块都可以控制它,通过它传输或接收数据。PMC子卡2最多可以有4对双向星形结构连接方式,因此它可以实现点对多传输方式,但在这种传输方式下,传输速率最好不要超过50 MB/s。
由于A处理模块对Flash存储器的特殊控制地位,让它处在主控地位是比较方便的。A处理模块负责所有的控制流程,其他模块可以在A处理模块的控制下运行程序,并行处理数据。
6 结束语
Champ-av3板内部有4片MPC7447/A处理器,每片主频都是1 GHz,所以本板的运算速度很快,可以满足目前大多数数字信号处理的要求。而且它配备各种子卡,有灵活的接口方式,所以是一种功能强大、通用性好的硬件平台,适用于多种数字信号处理方面的开发应用。
评论