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

发布者:leader5最新更新时间:2014-09-11 来源: eefocus关键字:SOPC  NiosII  多处理器系统  共享存储器 手机看文章 扫描二维码
随时随地手机看文章
  两个或多个微处理器一起工作来完成某个任务的系统称为“多处理器系统”。传统基于单片机的多处理器系统结构复杂,可靠性差;而基于32位的嵌入式软核处理器NiosII的SOPC(可编程片上系统)多处理器系统解决方案,从根本上改变了多处理器系统的设计理念和方法。使用Altera公司的NiosII软核处理器和SOPC Builder工具,可以快速地设计和建立共享资源的多处理器系统。多处理器系统一般用于工作站和使用分载(load-sharing)的复杂算法(称为“对称多处理器SMP”)的高端PC计算。对于大部分嵌入式系统,当SMP的开销太大时,使用多个处理器执行不同的任务,实现不同的功能正引起越来越多的关注。Altera公司的FPGA为开发非对称的嵌入式多处理器系统提供了一个理想的平台。为了提供理想的系统性能,使用SOPC Builder工具可以很容易地对硬件进行修改和调整,从而很快完成不同配置系统的没计、编译和评估。

  本文将对基于NiosII的OSPC多处理器系统的实现原理、设计流程和方法进行详细的讨论。

  1 NiosII多处理器系统硬件设计

  QuartusII 5.O及以上版本支持多处理器系统的创建和调试。多个NiosII处理器能够有效地共享系统资源。由于SOPC Builder允许用户轻松添加多个处理器到系统中,因此建立多处理器系统的难点已不再是硬件的排列和连接,而在于多个处理器的软件设计,使它们正常操作,相互之间不产生冲突。NiosII多处理器系统分为2类:一类是共享资源的多处理器系统;另一类处理器相互独立,之间不进行信息交换。

  2 NiosII多处理器系统的资源共享

  资源共享是多处理器系统的强大功能,但必须仔细考虑所要共享的资源,以及不同处理器如何使用共享资源。

  2.1 共享存储器

  在多处理器系统中最普遍的共享资源是存储器。共享存储器用于存放任何数据,从指示处理器间通信状态的简单标志,到被多个处理器同时进行计算的复杂数据结构。

  如果存储器中包含不只一个处理器的程序代码,那么每个处理器需要有不同的存储地址。对于程序空间,处理器不能共享存储器的同一区域。如果共享数据存储器,则存储器的数据需要从端口与共享存储器的处理器的数据主端口连接。多处理器之问共享数据存储器比共享指令存储器困难,原因是数据存储器可读/写。如果某一处理器正在对共享存储器的特定区域进行写操作,而同时另一个处理器正在对同一区域进行读或写操作,则很可能出现数据错误,至少使应用程序出错,甚至使系统崩溃。

  共享存储器的处理器需要一个机制来通知其他处理器何时正在使用共享资源,以便不受其他处理器的干扰。

  2.2 硬件互斥核

  NiosII处理器允许使用其硬件互斥核部件对共享资源进行保护处理。这个硬件互斥核不是一个NiosII处理器内部的部件,而是一个称为Mutex的SOPC Builder组件。

  互斥核也可看作一种共享资源,提供一个原子的“测试和置位”操作,处理器测试Mutex是否可行。如果可行,就在某个操作中获取它。当处理器结束与Mutex相关的共享资源使用时,释放该Mutex;此时,另一个处理器可能获取了Mutex,使用共享资源。互斥核在物理上并不能防止资源同时被多个处理器访问。运行在处理器上的软件必须被设计为在访问相关共享资源之前总是获取Mutex的。

  在大部分情况下,多个处理器之间应该使用互斥核来保护共享资源。然而,也有一些不需要互斥核的,例如对于单方向或循环的消息缓冲队列,此时只有一个处理器往存储器的某个特殊位置写数据。

  一般地,NiosII不支持多个处理器之间非存储器外设的共享,NiosII硬件抽象层(HAL)库也不支持。NiosIIHAL提供访问Mutex核的API函数如表l所列。

  2.3 多处理器地址空间的重叠

  在单处理器系统中,不允许多于一个的从外设具有相同的地址空间,原因是这将引起矛盾。然而,在多处理器系统中,只要外设被不同的处理器控制,那么不同的从外设就可以具有相同的基地址。

  3 NiosII多处理器系统软件设计

  3.1 程序存储器

  在多处理器系统中,多个处理器可能使用同一个程序存储器,每个处理器的程序必须存放在不同的位置。NiosII和SOPC Builder提供一个简单的存储器分区模式,允许多个处理器在同一存储器的不同区域运行各自的软件。分区模式使用处理器的异常地址,可以在SOPC Builder中进行设置。NiosII IDE负责根据异常地址计算出不同代码段链接的位置。如果2个不同的处理器被链接到同一存储器,那么每个处理器的异常地址用来决定处理器软件存放的基地址,其末地址由下一个异常地址或者存储器的末地址决定。对于每个处理器,软件有5个主要的代码段需要被链接到存储器中的固定地址。分别是:

  ·text 实际的可执行代码;

  ·rodata代码段执行时所使用的常量数据;

  ·rwdata读/写变量和指针;

  ·heap 动态分配的存储器;

  ·stack 函数调用参数和其他临时数据。

  在多处理器系统中,对于每个处理器,都希望使用连续的存储区域存储其所有的代码段。在这种情况下,异常地址用来定义2个处理器之间代码存放的分界。

  值得注意的是,异常地址的低6位总是设置为Ox20,因为偏移量OxO是NiosII的复位地址,所以异常地址必须位于其他位置。偏移量选择为Ox20,原因是它与一条指令的缓存行有关。Ox20字节的复位代码初始化指令缓存行,然后跳转到系统的起始代码处。

  3.2 启动地址

  在多处理器系统中,每个处理器必须从自己的存储区域启动。为了从同一个非易失性存储器中的不同区域启动多处理器,简单地设置每个处理器的复位地址为所期望的启动地址。在启动地址之间要留出足够的空间存放启动代码。

  NiosII Flash Programmet能够将多个处理器的启动代码编程到一个Flash器件中。Flash Programmer根据每个处理器的复位地址计算Flash内的编程地址。

  3.3 Niosll IDE中多处理器系统的运行和调试

  NiosII IDE中包含许多帮助开发多处理器系统软件的工具,最重要的是具有对多处理器同时进行在片调试的能力。在多处理器系统上,多个debug(调试)可同时运行;每个处理器可以单独暂停和恢复,也可以单独设置每个处理器的断点。某个处理器停在一个断点处,并不影响其他处理器的操作。每个debug通道也可以单独打开和停止。在NiosII IDE中,利用一项称为“处理器集合(mul-tlprocessor collections)”的功能,一个操作就可以打开多个处理器的debug通道。multiprocessor collections是被连接在一个配置名字下的每个处理器的debug配置组。使用multiprocessor collections的好处是无论何时打开collections,NiosII IDE都可以打开每个debug通道,而不用手动打开。也町以用一个操作停止multiprocessor col-lections,但是同时暂停和恢复multiprocessor collections目前不支持。

  multiprocessor collections的打开和停止不是同时的,这意味着在collections中的处理器不能在同一个时钟周期开始执行代码。事实上,不同处理器的启动可能有几秒的延迟。multiprocessor collections的目的是方便打开多处理器系统的debug通道,而不是为了同步处理器。如果需要在较短的时间内启动多个处理器,则需要构建单独的硬件和软件机制。

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

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

  实例的开发环境是QuartusII 5.0或以上版本,开发套件CycloneII Edition和niosII_cycloneII_2c35开发板。

  4.1 创建硬件系统

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

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

  ②将ext_ram_bus连接到每个处理器的指令和数据主端口。允许3个处理器访问外部RAM和Flash。

  ③将message_buffer_ram连接到每个处理器数据主端口。允许3个处理器访问该存储器。

  ④去除在message_buffer_ram和cpul指令主端口之间的缺省连接。

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

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

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

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

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

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

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

  在System Library属性中,第1个工程选择jtag_uart为stdin、stderr和stdout,选择cpul_timer为the Systemclock timer;第2个工程选择cpu2_timer为System clocktimer,验证stdin、stderr和stdout为null,因为这个处理器不与jtag_uart连接;第3个工程选择cpu3_timer为Systemclock timer,其余同工程2。验证这3个工程的SDRAM被选择为Program memory、Read-only data memory、Read/write data memory、Heap memory和Stack memory。

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

   结语

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

关键字:SOPC  NiosII  多处理器系统  共享存储器 引用地址:基于NiosII的SOPC多处理器系统设计方法

上一篇:Linux2.6内核中的最新电源管理技术综述
下一篇:基于气动人工肌肉的双足机器人关节设计

推荐阅读最新更新时间:2024-03-16 13:41

基于嵌入式SoPC的以太网接口设备
SoC(片上系统)的概念已日益普及,而随着FPGA技术的迅速发展,可编程系统芯片(SoPC)作为一种特殊的嵌入式微处理器系统,融合了SoC和FPGA各自的优点,并具备软硬件在系统可编程、可裁减、可扩充、可升级的功能,已逐渐成为一个新兴的技术方向。SoPC的核心是在FPGA上实现的嵌入式微处理器核,目前主要有Xilinx公司的32位软核MicroBlaze、32位PowerPC系列处理器硬核PowerPC 405,以及Altera公司的Nios系列微处理器软核等。 本文介绍的系统是一个以PowerPC 405为微处理器,基于VME总线的以太网接口设备,它通过以太网和VME总线接口,实现VME系统与外部局域网的实时数据交换。 硬件
[应用]
基于SOPC的MPEG-4视频播放器
摘要 介绍Altera SOPC平台上MPEG-4视频播放器的实现。以NiosII用户自定义指令方式实现IQ、IDCT、MC等计算密集型功能模块,从而在XviD Codec基础上实现Simple Profile视觉框架下,L1级、QCIF、25 fps的MPEG-4视频实时解码。 关键词 MPEG-4 视频播放器 SOPC NiosII 引言   多媒体技术实用化的关键技术之一,就是解决视频、音频数字化以后数据量大,与数字存储媒体、通信网容量小的矛盾,其解决途径就是压缩。   为了支持低比特率视频传输业务,MPEG(Moving Picture Experts Group)推出了MPEG-4标准。于1999年正式成为国际标准的
[手机便携]
SoPC与嵌入式系统软硬件协同设计
摘要 软硬件协同设计是电子系统复杂化后的一种设计新趋势,其中SoC和SoPC是这一趋势的典型代表。SoPC技术为系统芯片设计提供了一种更为方便、灵活和可靠的实现方式。在介绍系统级芯片设计技术的发展由来后,重点介绍SoPC设计系统芯片中的软硬件协同设计方法,并指出它比SoC实现方式所具有的优势。 关键词 嵌入式系统软硬件协同设计片上可编程系统(SoPC) 1 概述 20世纪90年代初,电子产品的开发出现两个显著的特点:产品深度复杂化和上市时限缩短。基于门级描述的电路级设计方法已经赶不上新形势的发展需要,于是基于系统级的设计方法开始进入人们的视野。随着半导体工艺技术的发展,特别是超深亚微米(VDSM,0.25μm)工艺
[嵌入式]
基于SOPC的便携式边界扫描故障诊断仪
   边界扫描 原理剖析   边界扫描技术的核心思想是在器件内部的核心逻辑与I/O引脚之间插入的边界扫描单元,它在芯片正常工作时是“透明”的,不影响电路板的正常工作。各边界扫描单元以串行方式连接成扫描链,通过扫描输入端将测试矢量以串行扫描的方式输入,对相应的引脚状态进行设定,实现测试矢量的加载;通过扫描输出端将系统的测试响应串行输出,进行数据分析与处理,完成电路系统的故障诊断及定位,边界扫描测试原理示意图如图1所示。         图1 边界扫描测试基本原理示意图   边界扫描测试的物理基础是IEEE1149.1边界扫描测试总线和设计在器件内的边界扫描结构,标准的边界扫描结构如图2所示。其中边界扫描测试总线由测试数据输
[应用]
基于NiosII的二维条码识别系统设计
二维条码PDF417中PDF为Portable Data File的缩写,每一个PDF码的储存量可高达1 108字节,若将数字压缩则可存放2 729字节。作为一种新的信息存储和传递技术,PDF417具有成本低、信息可随载体移动、不依赖于数据库和计算机网络、保密防伪性能强等优点,广泛应用在国防、公共安全、交通运输、医疗保健、工业、商业、金融、海关及政府管理等领域,PDF417码的例子如图1所示。 1 系统总体设计 本系统在FPGA上使用SOPC技术来实现无线手持二维条码识读器,与传统一维条码识读器最大的区别在于完全脱离后台数据库,以及在高达50%破损率的情况下能够进行高效率识别。 SOPC技术是一种基于FPGA解决方案的SOC
[单片机]
基于<font color='red'>NiosII</font>的二维条码识别<font color='red'>系统</font>设计
车载导航监控终端功能需求及基于SOPC技术设计方案
1 引 言 车载导航监控终端可广泛用于交警巡逻车、消防用车、公安用车、运钞车、长途客车及一些特殊车辆上, 监控中心通过无线通信网络与车载导航监控终端进行信息交流, 从而实现监控中心对车辆的集中、高效、可视化管理以及车辆之间的相互协作。 本设计系统分析了车载导航监控终端的各种功能需求, 借助 ltera StratixTM 系列FPGA EP1S10丰富的逻辑资源, 应用SOPC Builder开发工具实现了车载导航监控终端硬件结构的高度集成。同时,利用N ios嵌入式处理器强大的处理能力, 配合使用 C /OS- II实时操作系统, 实现了终端对多种传感信息的实时、高效处理。 2 功能描述 车载导航监控终端主要实现
[嵌入式]
SOPC技术在视觉测量中的设计方案与应用
   1引言   视觉测量技术是以机器视觉技术为基础,融合电子技术、计算机技术、近景摄影测量技术、图像处理技术为一体的测量技术,其基本任务是以测量为目的,从图像信息出发计算三维空间中物体的几何信息。其中,图像处理技术是视觉测量系统中最重要的一部分,也是本文的研究重点。   传统的视觉测量系统主要是在 PC机上采用软件方式实现,由于其专用性不够高,因此处理速度较慢。近年来,基于 FPGA的 SOPC技术的出现,使 FPGA高效的硬件并行信号处理能力和软件控制的灵活性完美的结合到一起。在 SOPC系统中,对速度要求高的算法可以采用自定义硬件逻辑的方法实现;而用硬件难以实现的复杂算法以及控制流程可以在 Nios II核中以软件方式实
[测试测量]
<font color='red'>SOPC</font>技术在视觉测量中的设计方案与应用
单片DSP处理器功能系统SOPC技术设计
结合Altera公司推出的Nios II嵌入式软核处理器,提出一种具有常规DSP处理器功能的NiosII系统SOPC解决方案;利用NiosII可自定叉指令的特点。 通过Matlab和DSP Builder或直接用VHDL设计并生成复数乘法器、整数乘法器和浮点乘法器等硬件模块,将它们定制为相应的指令,从而将软件的灵活性和硬件的高速性结合起来,较好地解决了传统DSP处理器所面临的速度问题、硬件结构不可重构性问题、开发升级周期长和不可移植性等问题。 随着微电子技术和计算机工具软件的发展,可编程片上系统SOPC的设计理念和设计方法成为了一种趋势。为了解决传统DSP处理器所面临的速度问题、硬件结构不可重构性问题、开发升级周期长和不可移植性
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved