首页 » 技术文章 » 基于NiosII的SOPC多处理器系统设计方法

基于NiosII的SOPC多处理器系统设计方法

作者:  时间:2010-12-29 14:43  来源:EDN

  4 NiosII多处理器系统设计实例

  下面将利用SOPC Builder建立一个基于标准模板的3处理器、共享片上存储器的NiosII系统,之后在NiosII IDE中为每个处理器建立一个软件工程。系统功能是:3CPU的软件将产生要显示的消息。使用硬件牛互斥核将所产生的不同消息放在共享的消息缓冲区中。 cpul将连续检查缓冲区中的新消息,如果发现新消息,就通过jtag_uart显示出来。

  实例的开发环境是QuartuslI 5.0或以上版本[2],开发套件CycloneII EditionnioslI_cycloneII_2c35开发板。

  4.1 创建硬件系统

  在标准硬件实例standard.qp的设计基础上,增加2个处理器、2个定时器和1个硬件互斥核组件;另外增加1个消息缓存区message_buffer_ram(片上RAM),用作3个处理器的消息缓存区。按如下步骤连接共享资源:

  使用连接矩阵,SDRAM连接到每个处理器的指令和数据主端口。允许3个处理器访问SDRAM

  ext_ram_bus莲接到每个处理器的指令和数据主端口。允许3个处理器访问外部RAMFlash
 
message_buffer_ram连接到每个处理器数据主端口。允许3个处理器访问该存储器。

  去除在message_buffer_ramcpul指令主端口之间的缺省连接。

  选择System→Auto-Assign Base Addresses,为每个外设分配一个唯一的基地址。

  完成以上操作后,系统配置如图1所示。3个处理器的数据主端口与共享存储器的同一从端口连接。因为cpulcpu2cpu3在物理上能够同时将数据写到共享存储器中,软件必须仔细设计以保证存储在共享存储器上数据的完整性。注意:图1所示的系统配置中,只有cpul的数据主端口与jtag_uart相连。

   最后,3CPU设置复位和异常地址,创建和编译系统,并下载FPGA的设计文件.sof文件到开发板。

  4.2 为多处理器系统创建软件

   NiosII IDE[3]环境下,3个处理器系统分别创建6个软件工程,为每个处理器创建一个应用工程和一个系统库工程。之后对软件工程进行编译、运行和调试。

   软件使用硬件Mutex共享一个消息缓存区。3个处理器分别写消息到消息缓存区(count)且循环加1cpul读消息且通过jtag_uart显示消息。每个处理器运行同样的C文件,但处理器的操作稍有不同。这是通过使用Ni-osIIcpuid实现的。在NioslI处理器系统中,某个处理器通过写其cpuid控制寄存器的值到Mutex寄存器的OWNER域来对Mutex加锁。cpuid寄存器保持一个静态值,在多处理器系统中,该值唯一地识别一个处理器,且在系统创建时确定。软件执行某个处理器的函数时,首先检查处理器的cpuid,如果cpuid正确,则执行相应函数。工程中的文件为 hello_world_multi.c,其中将信息写入缓冲区的功能由以下程序段实现:

  如果将信息从jtag_uart输出,那么程序首先判断id是否等于3。因为硬件设计时,只有cpuljtag_uart相连,cpulid的值为 3(在系统创建时确定),cpu2cpu3id分别为12,id的值等于cpuid控制寄存器的值加1,可在NiosII IDE环境下读取cpuid控制寄存器的内容。其信息输出的程序如下:

  在System Library属性中,1个工程选择jtag_uartstdinstderrstdout,选择cpul_timerthe Systemclock timer;2个工程选择cpu2_timerSystem clocktimer,验证stdinstderrstdoutnull,因为这个处理器不与jtag_uart连接;3个工程选择 cpu3_timerSystemclock timer,其余同工程2。验证这3个工程的SDRAM被选择为Program memoryRead-only data memoryReadwrite data memoryHeap memoryStack memory

  分别经编译、下载、运行后,在终端上显示这3个处理器产生的消息,如图2所示。

  结

  结果表明,3处理器系统通过硬件互斥核,实现了存储器的共享。在此实例的基础上,按同样的方法添加处理器及相应的硬件组件,并开发相关应用软件,即可实现满足不同需求的多处理器系统。

相关推荐

基于SOPC的分布式干扰系统嵌入式网关设计

干扰系统  网关  SOPC  2011-06-01

基于NiosII的SOPC多处理器系统设计方法

NiosII  SOPC  QuartusII  2010-12-29

建设EDA&SoPC实验室的优势

EDA  Protel  SoPC  2010-10-15

SOPC中NiosII的LCD显示驱动IP设计

NioslI  SOPC  LCD显示  Cyclone  2010-08-31

SoPC系统的综合优化设计策略

SoPC  综合优化  EP2S60  Nios  2010-06-09

Chirp函数的Nios Ⅱ嵌入式实现

FPGA  SoPC  Chirp  2010-05-27
在线研讨会
焦点