APP下载

基于Virtex-II Pro的双核系统构建

2011-08-13赵明生

电子技术应用 2011年7期
关键词:开发板双核串口

吕 平,赵明生

(清华大学 电子工程系,北京 100084)

随着对信息处理技术要求的不断提高,单核系统设计在提升系统整体性能上出现瓶颈,系统设计逐渐向多核系统设计转变。Xilinx Virtex-II Pro开发板为各大学主要采用的开发板,该板上主芯片XC2VP30内置两个硬核PowerPC405,具有30 816逻辑单元、136个 18位的乘法器、2 448 Kbit的 Block RAM。

但国内研究应用多使用该板进行单核系统设计,未能充分利用其双核资源。其原因在于:Xilinx公司软件对Virtex-II系列开发板的双核系统设计支持性不好;Virtex-II Pro开发板只具有一个串口输出,给调试带来了极大的不便。

针对在Virtex-II Pro开发板进行双核系统设计难度大的问题,本文给出双核硬件系统的构建方法,提出一种共享串口输出和共享存储器的系统结构,能够充分利用板上资源,下载调试非常便利,可以很好地支持双核的应用设计。

1 硬件系统设计

系统采用EDK10.1i03开发环境。设计双核的系统硬件结构如图1所示。

图1 双核的系统结构示意图

系统具有 2个PowerPC405处理器:PPC_0和 PPC_1,两个处理器具有各自独立的私有Boot BRAM,用于存储相应的应用程序。PPC_0通过总线PLB_0控制外设SDRAM,PPC_1通过总线 PLB1控制外设 LED_4Bits。两个处理器具有各自的中断控制器和复位控制器。JTAG具有2个PowerPC的接口,并通过共享串口进行信息输出。

双核系统设计流程如下:

(1)利用 BSB(Base system Builder)向导生成单核系统。

系统BSB设置的参数如下:

(2)添加和配置 IP

由于EDK10不支持双核系统设计,因此需要手动添加和配置相关IP,需添加的IP核有:

ppc405,plb_v46,plb2plb_bridge,bram_block,opb_intc plb_bram_if_cntlr,xps_mutex

MHS(Microprocessor Hardware Specification)是描述硬件结构的文件,需要修改MHS文件对添加的IP核进行配置。这里给出主要的 ppc405、bram_block、xps_mutex核的配置说明,其他IP核将不再赘述。

①对PPC405_1的配置说明

②对Mutex核进行配置

③共享BRAM核进行配置

(3)生成地址空间(Generate Addresses)

使用Generate Addresses命令,系统自动分配地址空间。由于软件本身不支持双核系统设计,在地址空间冲突时,需要手动对冲突的地址空间进行调整。使用Generate Bitstream可产生系统的硬件比特流。

2 软件工程设计

2.1 软件工程构建

(1)配置软件平台

由于两个PowerPC通过总线及总线桥共享串口输入,因此需要在 Software Platform Settings中,对 stdout和stdin配置为 RS232_Uart_1。

(2)添加应用工程

添加工程ppc0_test_share和 ppc1_test_share。选中两个工程文件,分别Mark to initialize BRAM,并将软件工程指定给各自的处理器。

Generate the linker script,指定将所有程序段放入各自的私有BRAM中。Update Bitstream以生成相应的全局比特流文件。

软件工程包括SDRAM测试、LED外设测试、SHARE BRAM的读写操作,测试结果通过共享串口进行输出。双核CPU通过Mutex核进行互锁访问,控制访问共享串口。

2.2 Mutex核使用

Mutex提供多核环境下处理器对共享设备的互斥访问。其原理是:Mutex具有32 bit的写数据寄存器,如图2所示。CPU_0访问共享资源前,先向该数据寄存器写自己的CPU_ID,如果 Mutex设备空闲,则将 CPUID写入寄存器,并Lock置1。CPU_0通过查询和比较写数据寄存器和自己的CPUID,以确定是否获得访问共享资源的权限。没有获得权限,则等待或者退出;获得权限后,对共享资源访问,访问结束后释放锁。其在系统中的连接如图3所示。

图3 Mutex连接方式

xps_mutex连接到PLB0和PLB1总线上,初始化时需要对其地址进行配置。在设计过程中发现,由于Xilinx的软件设计问题,EDK10在头文件xparameters.h中不能正常生成SPLB1的地址,表现为软件自动生成的SPLB1和SPLB0的地址相同,会造成Mutex初始化失败。因此在初始化Mutex时,切勿直接使用XMutex_LookupConfig()函数。PPC_1初始化Mutex的过程如下:

2.3 系统测试结果

2.3.1 共享串口测试

设置超级终端,连接JTAG电缆,选中Download Bitstream将比特流下载到目标板上。通过共享串口,两个CPU分别输出其工作状态。输出结果如图4所示。

图4 PowrPC_0测试DDRRAM的串口输出

其中CPU(0)输出私有存储器SDRAM的测试正确信息,说明PPC_0正常工作。

同时观察板上 LED显示,led_0、led_2和 led_1、led_3呈现交替闪烁状态,说明PPC_1及外设LED工作正常。

2.3.2 共享存储器读写测试

SSHM_READFLAG为CPU读写状态指示。SSHM_READFLAG为 0时,PPC_0进行写操作;为 1时,PPC_1进行读操作。共享存储器的读写操作测试结果如图5所示。

PPC_0对共享BRAM进行写数据操作,数据依次为0~4,每次写操作完成后将 SSHM_READFLAG置 1。PPC_1在PPC_0每次数据操作完毕后,检测到SSHM_READFLAG为1时进行读数据操作,操作完成后置SSHM_READFLAG为0。

图5 SHARE_BRAM测试:PPC_0写数据,PPC_1读数据

本文完成基于Virtex-II pro开发板的双核PowerPC系统的构建,提高板上资源利用效率。系统通过Mutex的互锁机制完成对共享资源的控制。共享串口输出调试结果,解决了开发板的单串口不易调试的问题;通过共享BRAM进行数据交换,可以实现系统的并行协同处理;直接下载比特流即可实现双核的系统运行,调试和系统运行更为方便。该系统为使用Virtex-II Pro开发板进行双核系统设计提供了参考价值。

[1]Kowalczyk J.Multiprocessor systems virtex-II series.Xilinx WP162(v1.1).2003.

[2]ASOKAN V.Designing multiprocessor systems in platform studio.Xilinx WP262(v2.0).2007.

[3]Xilinx.ML410 dual processor hardware build using EDK 8.2i SP1.2007.

[4]Asokan V.Dual processor reference design suite.Xilinx XAPP996(v1.0),2007.

[5]Harn Hua Ng.PPC405 lockstep system on ML310.Xilinx XAPP564(v1.0),2004.

[6]Bennett J K.Shared memory multiprocessing using the virtex II PPC:sharing memory,sharing a UART,and synchronization a guide for the XUP development board.University of Colorado at Boulder,2005.

[7]XPS Mutex(v1.00c).www.xilinx.com.2009,24(6).

猜你喜欢

开发板双核串口
全球金融“F20”在此召开!横沥进入“双核”时代
浅谈AB PLC串口跟RFID传感器的通讯应用
浅析单片机开发板的设计与制作
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
新型夹心双核配和物[Zn2(ABTC)(phen)2(H2O)6·2H2O]的合成及其荧光性能
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证
Mouser为您呈上开发关键之STMicroelectronics Nucleo开发板
Arduino和Atmel发布Arduino Zero开发板