全面解析Nios Ⅱ嵌入式软核多处理器系统
器和互斥核之间连接成一个环,连接子系统与系统顶层组件之间的通信通道。
![](../img/eep/emb/emb-442411fh2nhlewoh.jpg)
3.2 Nios Ⅱ处理器选择和参数设置
Nios Ⅱ处理器有快速型、标准型和经济型三种类型[3],快速型配置性能最高,经济型配置占用片内资源最少,标准型配置的性能和占用片上资源介于快速型和经济型之间。根据实际应用需要对系统性价比及功耗的要求,合理选择和配置Nios Ⅱ处理器。
多处理器系统中对每一个处理器都要进行正确的设置,否则即使创建的硬件系统已通过编译并生成,也会造成多处理器系统不能正常运行的问题。如果多个处理器使用片上存储器为共享程序存储器,则必须正确设计异常地址。如果使用CFI FLASH存储器区域作为多个处理器的引导区,则必须要正确设计复位地址。使用不同类型的存储器要正确的进行设置。
3.3 共享程序存储器
为了降低成本、功耗,简化多处理器系统结构,实例中利用FPGA的芯片资源共享程序存储器,六个Nios Ⅱ处理器的运行软件共同使用片上存储器,每个处理器的软件位于片上存储器所属特有的存储器区域。如果六个处理器的软件在片上存储器运行,假设每个处理器的软件需要有8 KB的内存空间用于程序代码和数据。这样第一个处理器使用片上存储器0×0~0x1FFF之间的作为其程序空间,第二个处理器使用片上存储器0×2000~0x3FFF 之间的区域,第三个处理器使用片上存储器0×4000~0x5FFF之间的区域;其他各个处理器所需的存储器区域采用同样的方法对片上存储器进行分区。
Nios Ⅱ SBT 提供了一个简单的存储器分区模式,允许多个处理器的软件运行于同一存储器的不同区域,确保位于存储器中的主要代码段的链接和固定地址。
图2所示六个处理器在片上储存器的分区及代码段的链接。
![](../img/eep/emb/emb-442421apj2oucetq.jpg)
3.4 设置启动地址
在多处理器系统中,每个处理器在存储器中必须拥有自己的启动区域,多个处理器不能从同一非易失性存储器的同一地址启动。启动存储器类似程序存储器一样也可以进行分区,但段和链接的概念不同,因为通常引导代码只是复制到它实际的程序代码被链接在RAM中,然后跳转到该程序代码处。为了从同一非易失性存储器的不同区域启动多个处理器,设置每个处理器复位地址,这个地址就是启动该处理器的位置,启动区域要留出足够的空间存放启动代码。由于没有支持机制多个处理器无法直接访问CFI FLASH存储器,需要使用一个CFI FLASH控制器,Nios Ⅱ处理器通过CFI FLASH控制器读取或写入到CFI FLASH存储器。如果多个Nios Ⅱ处理器启动在同一个CFI FLASH存储器。为确保安全访问,必须删除一个主控处理器之外的CFI FLASH 存储器alt_main()函数所有初始化的驱动程序,并确认启动前完成所有其他处理器在CFIFLASH存储器的程序初始化。图3所示六个处理器从一个FLASH存储器启动的映射。
![](../img/eep/emb/emb-442433pihrgdy1zl.jpg)
3.5 共享外设资源
多个处理器共享外设存在严重的问题。共享外设的最大的问题是中断,如果允许一个外设中断且所有处理器共享它,没有可靠的方法保证哪一个处理器首先响应中断且为哪个外设服务。此外,如果外设是用来作为多处理器的输入设备,很难确定哪个处理器应该从设备中接受输入信息。Nios Ⅱ多处理器系统共享外设资源的方式,是系统中的外设仅被一个处理器访问,如果其他处理器需要使用外设,最好是使用硬件先进先出(FIFO)或消息缓冲区互斥保护。创建多处理器系统时,仅对需要通信的处理器和外设之间进行连接。例如,如果一个处理器运行仅使用一个片上存储器,该处理器没有必要与系统中任何其他存储器连接。处理器与存储器的分离,不使用物理断开连接,这样可节约FPGA资源,保证处理器不会破坏存储器的数据。
共享资源多处理器与各种组件连接是设计中的关键环节,要验证每个处理器及所需组件的连接是否正确。多数组件最好是由单一的处理器管理。例如处理器A要求一个外设的服务,而该外设与处理器B连接并由处理器B 管理,处理器A 要求对该外设进行操作,处理器A 必须请求处理器B.这样可以使用处理器互斥保护的共享片上存储器,用于个两处理器之间的通信,达到多处理器共享外设的目的。
在多处理器系统中,每个从外设可以占据相同的基地址不会发生冲突,只要每个外设是被不同的处理器控制。因为每个从外设不必一定被每个处理器控制。如果处理器A被连接到映射地址为0x00008a00的一个从外设,处理器B也可以被连接到映射地址0x00008a00另一个从外设,只要处理器A是没有连接到处理器B的从外设,处理器B 没有连接到处理器A 的从外设,不会因为从外设占据相同的基地址而发生冲突。图4方框图显示多处理器系统
- 单片DSP处理器功能系统的SOPC技术设计(01-12)
- 基于DSP和SOPC数字信号发生器的设计(01-05)
- 基于Linux的SoPC应用系统设计(04-23)
- 基于DSP的实时数据处理系统浅析(02-28)
- 基于LXI总线的1553B通讯模块设计与开发(11-24)
- 双MicroBlaze软核处理器的SOPC系统设计(01-27)