基于XC2VP30的双核处理器嵌入式系统的构建与实现_第1页
基于XC2VP30的双核处理器嵌入式系统的构建与实现_第2页
基于XC2VP30的双核处理器嵌入式系统的构建与实现_第3页
基于XC2VP30的双核处理器嵌入式系统的构建与实现_第4页
基于XC2VP30的双核处理器嵌入式系统的构建与实现_第5页
已阅读5页,还剩1页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于XC2VP30的双核处理器嵌入式系统的构建与实现摘要:基于Xilinx的Virtex-IIPro开发板实现了双核嵌入式系统构建,具有共享存储器及共享串口输出的特性。主要给出了双核系统的构建方法及原理,共享串口的输出验证了双核系统的可行性。随着信息技术的逐渐发展,传统的嵌入式单核系统已经不能适应高性能的计算要求,基于FPGA的双核系统架构也逐渐发展起来。Xilinx公司设计的Virtex-IIPro开发板有较高的硬件配置,由Digilent公司制造,有高达30,816个逻辑单元的XC2VP30FPGA芯片,主芯片XC2VP30上内置两个硬核PowerPC405,136个18位的乘法器、2448Kbit的BlockRAM,在各大学中使用广泛。但Xilinx公司的系列开发工具并不支持在此开发板上构建双核,Xilinx公司也没有提供如何利用此双核的技术文档,并且Virtex-IIPro开发板只具有一个串口输出,调试不便,所以国内的多数大学实验室都是进行的单核PowerPC405的应用开发,没有利用到其有两个硬核的优势,造成资源闲置。为了充分利用Virtex-IIPro开发板的双核资源,提出了一种构建双核的方法,步骤简洁明了,下载调试方便,共享串口的输出结果验证了此双核系统的可行性,且对VirtexIIPro及Virtex4系列面临同样问题的开发板也具有指导意义。1硬件系统构建开发工具为EDK9.1i02,硬件结构如图1所示。硬件体系利用了PPC_0和PPC_1两个处理器,它们共享了一部分外设,共享的外设需要设置共享通道。各处理器也可独占部分外设,PPC_0通过总线桥控制外设DIPSwiches,PPC_1控制外设LED_4Bits,可以验证各处理器的工作状态,为了保存程序,为两个处理器分别设置了独占的BootBRAM及中断控制器和复位控制器。2个PowerPC共享JTAG,都能通过串口进行输出。系统设计流程如下:

(1)利用XPS生成单核系统系统参数设置如下:

①Systemclock:频率100M,无缓存。

②RS232:波特率115200,8位,无中断。

③DDRAM:片内存储器512MB,无中断。

④LEDs_4Bit:无中断。配置好后的总线与端口如图2所示。

(2)添加PPC405_1及相关设置

1)PPC405_1的设置

添加新的IP核PPC405,则PPC405_1已经随PPC405_0一起添加到了工程中,只不过还没有连上线而已。点击Businterface,把DPLB和IPLB分别连到PLB总线上。然后点击-Ports,配置PPC405_1的端口,(默认情况下,有PLBCLK,BRAMDSOCMCLK,BRAMISOCMCLK这三个端口看不到,需要点击ConnectionFilters才会看到)增加一个Reset的IP模块,选择ResetControl->ProcessorSystemResetModule,会生产一个proc_sys_reset_0模块。配置IP属性中ExternalResetActiveHigh的值为0。为了方便验证两个核是否正常工作,用UART为PPC405_0显示运行信息,用LED为PPC405_1显示运行信息,所以增加一个Opb_gpio核,属性为位宽4bit,设置Channel1为Bi-directional,Channel1的InputOnly设置为FALSE。2)jtagppc_cntlr核的配置

BEGINjtagppc_cntlr

PARAMETERINSTANCE=jtagppc_0

PARAMETERHW_VER=2.00.a

BUS_INTERFACEJTAGPPC0=jtagppc_0_0

BUS_INTERFACEJTAGPPC1=jtagppc_0_1

END

3)共享BRAM核的配置

BEGINbram_block

PARAMETERINSTANCE=share_bram

PARAMETERHW_VER=1.00.a

BUS_INTERFACEPORTB=share_bram_if_cntlr_1_PORTA

BUS_INTERFACEPORTA=share_bram_if_cntlr_0_

PORTA

END(3)配置地址

给外设和OCM分配地址,对于powerpc,ISOCM必须落在地址的最高端,DSOCM可以随意。2软件工程配置2.1工程构建(1)配置软件平台

为PPC405_1添加应用程序是最关键的一步,所以要分别为PPC405_0和PPC405_1设置编译选项,也就是修改Linkerscript(.ld文件),一种可行的方法是:把启动代码和数据分别放在两个核独立的Isbram_if_cntrl和dsbram_if_ctrl中,而把stack和heap放在公共的bram中,如Plb_bram_if_ctrl中。

(2)添加应用工程

添加工程ppc0_test_share和ppc1_test_share,分别MarktoinitializeBRAM,并将软件工程指定给各自的处理器,所有程序段则放入各自的私有BRAM中,更新Bitstream以生成相应的全局比特流文件。为两个核设置softwarePlatformsettings,其输入输出设备都配成UART,,然后生成库和BSP,编译应用程序,更新bitsream,最后下载bitsream到FPGA,输出到超级终端则能验证双核配置的正确与否。2.2互锁程序的编写互锁程序是在xilinx自带的测试程序基础上修改而成,主要的修改部分在于添加识别处理器状态的程序,作用在于保证两个处理器不会互相干扰,其中定义了lwarx.PPCandstwcx.PPC两个声明,并为了让gcc编译器顺利编译,编写如下代码:

#definelwarx(adr)({unsignedintrval;\

__asm____volatile__(\

"lwarx%0,0,%1\n"\

:"=r"(rval):"r"(adr)\

);\

rval;\

})

#definestwcx(adr,val)__asm____volatile__(\

"stwcx.%0,0,%1\n"\

::"r"(val),"r"(adr)\

)互锁程序通过变量Pr_Lock的值来表示串口占用情况,0表示空闲,1表示PPC_0占用,2表示PPC_1占用,代码段如下:

volatileint*Pr_Lock=PR_LOCK_ADDR;

voidPRLOCK()

/*PRLOCKimplementsaTEST&TEST&SETusingthe

PPCstwcxandlwarxinstructions*/

{

while(1)

{

while(*Pr_Lock!=0);//等待释放

if(lwarx(Pr_Lock)!=0)continue;//锁存

stwcx(Pr_Lock,MY_LOCK_VAL);

if(*Pr_Lock==MY_LOCK_VAL)

{

sync;//返回

return;

}

elsecontinue;//重试

}}

voidPRUNLOCK()

{

//等待清空

while(XUartLite_mIsTransmitEmpty

(XPAR_RS232_UART_1_BASEADDR)==XFALSE);

sync;

*Pr_Lock=0;

return;

}2.3系统测试结果配置好超级终端,连接好电缆,下载线,将比特流文件输出到开发板上。通过共

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论