0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在XPS作平台实现双MieroBlaze处理器片上系统的设计

电子设计 来源:郭婷 作者:电子设计 2019-07-11 08:12 次阅读

随着时代的发展,单核片上可编程系统SOPC(Systern On a Programmable Chip)解决复杂问题的能力与处理速度已很难满足用户的需求,面向多处理器SOPC系统的设计成为片上系统发展的必然趋势。具有高密度、大容量逻辑的FPGA(Field Programmable Gate Array)的出现使得高性能片上多处理器的设计成为现实。目前,片上多核系统的设计已有一定发展,但在处理器间通信和中断方面仍需进一步的研究。本文在处理器间通信和中断控制方面进行了深入的研究。

MicroBlaze是一个被优化过的可以在Xilinx公司FPGA中运行的软核处理器,可以和其他外设IP核一起完成可编程系统芯片的设计。它具有运行速度快、占用资源少、可配置性强等优点,广泛应用于通信、高端消费市场等领域。MicroBlaze处理器采用RISC(ReducedInstruction Set Computer)指令集结构和哈佛存储结构,指令、数据总线位宽均为32位。本文MicroBlaze处理器采用面积优化,流水线分为3级,即取指、译码和执行,减少了硬件开销。

1系统设计

1.1双MicroBlaze SOPC系统结构

双MicroBlaze SOPC系统结构图如图1所示。从图1中可知,整个SOPC系统可以分为两个处理器子系统。系统采用两个PLB(Processor Local Bus)v46总线作为系统的通信结构,所有的模块都是直接或间接地连接到这两个总线上。两个总线上均挂有用于处理器间通信和同步的核,即Mailbox和Mutex,因此两个处理器并不是完全独立的。表1列出了SOPC系统包含的主要模块。

在XPS作平台实现双MieroBlaze处理器片上系统的设计

表1中的BRAM有两种用途:一是作为单个处理器的私有存储器用来存储指令和数据,它通过存储器局部总线LMB与处理器相连;二是作为两个处理器之间的共享存储器(Shared Memory)用作通信模块进行数据传输。它所传输的数据量比Mailbox大很多,特别是在传输信息量大于千字节时,共享存储器是最常用的通信模块。

1.2硬件设计

1.2.1硬件结构

图1所示的SOPC系统的整体结构不仅和处理器的数目有关,还和系统中模块的配置及功能有关,外部存储器和外围设备的不同配置都会影响系统的结构和功能。具体如下:

①SOPC系统通过各自独立的PLBv46总线隔离两处理器子系统,可以确保两个处理器系统在执行各自的处理器事务时不会相互干扰。

②共享模块(例如MPMC),采用多端口结构,这些多端口模块使多个处理器在访问共享模块时可以并行进行。

③两个独立的MicroBlaze处理器Mb_0和Mb_1,通过共享部件连接在一起,这些共享部件使得两个MicroBlaze处理器之间以各种方式通信。

④此SOPC系统中有两个MicroBlaze处理器软核,其中任何一个MicroBlaze都可以灵活地被其他类型的处理器所代替,比如PowerPC,因此处理器的选择是非常灵活的。

⑤两个处理器可以共享互斥访问设备,比如串口UART、串行外设接口SPI(Serial Periphieral Interface)等,这种情况需要在没有直接连接此外设的总线和直接连接此外设的总线之间提供一个系统总线桥。

⑥关键的外围设备是外部存储控制器MPMC,它最多提供8个端口,可以通过XCL(Xilinx Cache Link)连接处理器局部存储器(BRAM),通过PLBv46总线连接到系统中,因此,可以将1~4个处理器同时连接到MPMC控制器上。

⑦两个处理器之间的Mailbox和Mutex有简单通信的功能,主要体现在处理器之间的通信和同步上。

1.2.2存储器映像

当程序没有被加载或者运行的时候,它以文件的形式存放在硬盘上。当它被下载到MPMC内存中的时候,系统会自动从MPMC内存中划分出一段区域,用来将这个磁盘上的文件映射到内存相应的位置上。此时这块内存中的数据就是磁盘文件的一个拷贝。存储器映像就是指和被加载的磁盘文件相对应的一块内存区域。由于MPMC存储器和外围设备是统一编址的,两者的地址范围不可能重叠,因此直接或者间接连接到处理器上的外围设备地址的分配决定了外部存储器的地址空间。

一般而言,当多个处理器共用一条总线时,存储器、外围设备和共享元素是密不可分的,在本文设计的处理器系统中,每一个处理器都有自己独立的系统总线,因此,所有的存储器和外围设备与共享元素都是分开的。也就是说,不同总线上的相同外围设备可以有相同的地址范围。在每一个处理器子系统中,为了能够运行可执行文件,对存储器映像有一些要求。每个处理器都必须将自己的可执行文件加载到各自私有的MPMC地址空间中,可执行文件加载地址不能重叠。在私有存储器里必须有各自的复位和中断存储器映像,这种私有存储器可以通过本地存储器接口(XCL)或者PLBv46总线接口连接起来。一旦私有存储器与其他总线连接完毕,XPS的地址发生器会为每一个MieroBlaze处理器子系统(包括外围设备和存储器)生成适当地址范围的存储器映像。

1.2.3处理器之间的通信与同步

在Xilinx SOPC系统设计中,常用的处理器之间的通信模块是Shared Memory和Mailbox,同步控制模块是Mutex,调试模块是MDM. Shared Memory共有两个通信端口,它通过存储器控制端口分别连接到系统的两条PLBy46总线上。系统通过处理器对Slhared Memory模块进行读写操作完成通信。Shared Memory可以由片上本地存储器或者外部存储器构成。当信息传输量比较大时,Shared Memory的异步传输效率比较高,它支持零拷贝或者原状信息队列拷贝。

利用Mailbox也可以进行处理器之间的通信。关于Mailbox,有如下一些特征描述:

①Mailbox可以认为是处理器之间的类似于TCP/IP的一个简单的通信协议。

②处理器之间通过Mailbox通信有同步和异步之分:同步主要体现在处理器之间的通信上,接收者实时地读取Mailbox中的数据;异步主要体现在处理器之间的中断上,发送者通过Mailbox发送中断信息给接收者,接收者收到中断后反馈给发送者。

③每一个Mailbox核都有一个FIFO和一个双端队列,分别用来发送和接收信息,用户可以根据自己的需要对它们的深度进行配置,主要通过分布式的RlAM或者BRAM来实现。

④Mailbox共有两个端口分别连接到系统的两个总线上来实现处理器之间的通信。

⑤Mailbox软核比较适合传输信息量小于100字节的信息,发送者需要从本地或者外部存储器拷贝整个信息到FIFO,然后,接收者同步地拷贝整个信息到自己的存储器中,因此,Mailbox不适合传输信息量较大的信息,这些将会耗费掉处理器的一些时钟周期。

⑥处理器间的中断是指一个处理器去中断另一个处理器的行为,通过Mailbox的异步通信来实现,处理器发送中断就是往Mailbox里写入一个信息,然后Mailbox通过中断控制器对接收者产生一个中断,接收者收到中断以后会反馈给发送者,当Mailbox中没有新的信息时,中断为无效状态。

本文在SOPC系统设计中,用到的同步控制模块是Mutex.此模块主要有以下特点:

①存储器映像以后,Mutex寄存器的数量可配置这些寄存器中有分别存储数据和处理器ID的区域,Mutex寄存器中的数据和ID分别通过Mutex进行测试和设置。

②复位时,Mutex的值变为0,它表示Mutex处于开锁状态(UNLOCK),并且其中的处理器ID号没有赋值,当Mutex处于锁定状态(LOCK)时,其中的值保持不变。

③处理器通过软件赋值的方式将各自的处理器ID号写入到相应的Mutex寄存器中,从而获得Mutex的使用权,当两个处理器同步访问Mutex寄存器时,每个处理器都会读取Mutex寄存器中的值,然后和自己的ID号进行比较,比较匹配的处理器才可访问Mutex寄存器,修改其中的数据。

MicroBlaze核通过处理器调试口与MDM(Microprocessor Debug Module)调试模块相连。调试模块MDM可以调试系统中的每一个处理器。MDM的特点如下:①MDM的调试端口数目是可配置的,最多可以达到8个。

②MDM提供一个JTAG UART接口通向系统中的某个处理器,这个UART接口是通过PLBv46总线接口连接到处理器上的。

③MDM不会自动地调试每个处理器,用户必须通过输入调试命令来进行选择性的调试。

1.3软件设计

1.3.1存储器映像

为了保证每个处理器在执行软件部分时不发生冲突,必须对其存储器进行存储器映像。图2是存储器映像图。

在XPS作平台实现双MieroBlaze处理器片上系统的设计

从图2中可以看出,用户可以灵活地为两个ELF文件分配适当大小的存储器空间作为ELF文件的映射地址范围。由于boot(引导)存储器不可以共享,所以ELF文件的boot部分(。vectors*)被映射到私有存储器中,它可以实现MicroBlaze处理器随时调用,也可以引导ELF文件加载到DDR中。Heap和stack的范围表示ELF文件在DDR中映像的存储器大小。boot存储器的大小表示boot部分所能引导的DDR的范围。ELF文件的位置和输出链接脚本的位置可以根据用户的需求选择。每个可执行文件的存储器映像地址都是通过编译器来实现的,实现以后被传到链接器,生成链接脚本。

1.3.2通信与同步

利用Shared Memory模块通信是处理器之间最常用的通信方式。其通信接口函数如下:SHM_WRITEAREA();/*向Shared Memory中写数据*/ SHM_READAREA();/*从Shared Memory中读数据*/利用Mailbox模块可以实现处理器之间的信息传递和中断。这在软件设计中主要体现在以下代码行中:XMbox_WriteBloeking();/*向Mailbox中写数据*/ XMbox_ReadBlocking();/*从Mailbox中读数据*/在软件应用设计中,两个处理器之间的同步是通过Mutex Locks实现的,它的状态有LOCK和UNLOCK之分。Mutex状态的操作主要体现在以下命令行中:MLOCK();/*使用之前LOCK*/ MUNLOCK();/*使用之后UNLOCK*/软件的调试(debug)需要手工地选择处理器,两个处理器不可以同时调试。在XMD Console中的调试命令主要有:debugconfig-reset_on_run disable/*下载时避免复位*/ dow executable.elf/*下载ELF文件*/run/*运行*/

2实验结果

本设计采用调试模块分别对两个处理器进行调试,通过超级终端输出测试结果。

2.1 Mailbox的测试结果

通过Mailbox可以实现处理器之间的中断和通信。两处理器首先通过交换字符串“helo BOY”的形式汇合(rendezvous),以此来证明两个处理器的连接情况。在这里,每次发送的数据包为2 044字节,共发送了3个数据包,都能成功地发送。经验证,每次发送的信息量最大为4 096字节,可以重复发送。

2.2 Mutex的测试结果

通过Mutex可以实现两处理器的同步。当两个MicroBlaze处理器访问共享资源时,可以用Mutex核修改临界区域里共享资源的值。临界区域里的值是随着处理器的访问而更新的。在没有输出时处理器会锁定Mutex核,有输出时解锁Mutex核。同步使得控制台的输出结果正确可用,不会出现混乱的状态。

2.3 Shared Memory的测试结果

通过Shared Memory实现处理器之间的通信。处理器O首先向共享存储器中写入一个32位的数据并设置一个共享flag表明数据可用,等待处理器1读取这个数据。然后,处理器1从共享存储器中读取处理器0写入的数据并设置一个共享flag表明它已经读取了这个数据。双处理器会重复这样的过程,直到达到所设置的最大数目12.

结语

本文以MieroBlaze软核为基础,利用XPS作平台来设计双MieroBlaze处理器片上系统,此片上系统可以很好地实现两软核处理器间的通信和中断功能,该系统在Xilinx公司的XUPV5-LX110T开发板上得到实现,在超级终端中得到验证。本设计的优点是把处理器核之间的通信、中断、同步放在了同一系统中进行研究,深入研究了处理器之间的中断控制。下一步要做的工作是更多核的片上系统设计和操作系统移植。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19262

    浏览量

    229664
  • 芯片
    +关注

    关注

    455

    文章

    50727

    浏览量

    423179
  • 存储器
    +关注

    关注

    38

    文章

    7484

    浏览量

    163768
收藏 人收藏

    评论

    相关推荐

    SoPC实现的波形发生

    ,最大限度地实现系统的集成化。关键词:SoPC IPCore EDK MicroBlaze DDS 波形发生引 言  SoPC可编程
    发表于 06-25 08:12

    怎么设计集软核处理器的嵌入式设计平台

    编程接口共用或并存,可能包含部分可编程模拟电路,单芯片、低功耗。本文主要研究的是应用嵌入式系统开发的软硬件协同设计方法来实现一个集软核处理器的嵌入式设计平台,在此基础
    发表于 03-13 07:03

    SHARC处理器的评估系统

    用于SHARC处理器的ADZS-21489-EZLITE,ADSP-2148x EZ-KIT Lite评估系统。 SHARC处理器基于32位超级哈佛架构,包括一个独特的内存架构,由两个大型
    发表于 03-16 10:19

    求一款MicroBlaze软核处理器的SOPC系统设计

    随着时代的发展,单核可编程系统SOPC(Systern On a Programmable Chip)解决复杂问题的能力与处理速度已很难满足用户的需求,面向多
    发表于 03-16 07:44

    请问如何实现嵌入式Nios Ⅱ软核六处理器系统的设计?

    Nios Ⅱ嵌入式软核多处理器系统具有哪些优势?如何实现
    发表于 04-19 08:17

    Linux/ARM嵌入式平台属于系统

    Linux/ARM 嵌入式平台是《ARM 嵌入式系统编程与优化》的第一章。好好学学硬件,然后深入一下 Linux,修炼好自己的内功。ARM 处理器不是独立芯片产品,而是具有多样性和异质性嵌入式
    发表于 12-14 09:25

    基于处理器TMS320DM6446的图像压缩系统

    高速核信号处理器 TMS320DM6446 芯片实现了JPEG2000 标准的嵌入式图
    发表于 11-27 15:46 21次下载

    什么是处理器

    什么是处理器 什么是处理器呢?处理器背后的概念蕴涵着什么意义呢?简而言之,
    发表于 10-12 09:47 1.7w次阅读

    什么是处理器

      简单来说,处理器就是一个硅片上集成两个CPU。那么什么是处理器呢?
    发表于 10-08 18:21 970次阅读

    嵌入式处理器调试功能的设计

    以 龙芯1号 处理器为研究对象,探讨了嵌入式处理器调试功能的设计实现方法。大大方便了软件开发与系统
    发表于 06-29 17:45 48次下载
    嵌入式<b class='flag-5'>处理器</b><b class='flag-5'>在</b><b class='flag-5'>片</b>调试功能的设计

    多核处理器存储系统研究

    针对 多核处理器 计算能力和访存速度间差异不断增大对多核系统性能提升的制约问题,分析几款典型多核处理器存储系统的设计特点,探讨多核处理器
    发表于 07-27 15:49 29次下载
    多核<b class='flag-5'>处理器</b><b class='flag-5'>片</b><b class='flag-5'>上</b>存储<b class='flag-5'>系统</b>研究

    8位处理器实现高效文件系统

    8位处理器实现fat fat12 fat16 fat32的高效文件系统
    发表于 12-30 15:37 0次下载

    多核系统上网络的发展

    第一款被大众所熟知的商用化多核系统是著名处理器芯片提供商之一的AMD公司面向个人电脑推出的ATHLON X2核中央
    的头像 发表于 10-01 16:43 3354次阅读
    <b class='flag-5'>片</b><b class='flag-5'>上</b>多核<b class='flag-5'>系统</b>与<b class='flag-5'>片</b>上网络的发展

    EE-346:模拟器件处理器使用热二极管

    EE-346:模拟器件处理器使用热二极管
    发表于 04-17 15:38 6次下载
    EE-346:<b class='flag-5'>在</b>模拟器件<b class='flag-5'>处理器</b><b class='flag-5'>上</b>使用<b class='flag-5'>片</b><b class='flag-5'>上</b>热二极管

    基于LEON开源微处理器IP软核实现SoC系统基本平台的构建

    SoC芯片的核心是实现运算和控制功能的微处理器。LEON是一款基于SPARC V8架构的开源微处理器IP软核,VHDL源代码基础,结合具
    的头像 发表于 06-17 14:32 2830次阅读
    基于LEON开源微<b class='flag-5'>处理器</b>IP软核<b class='flag-5'>实现</b>SoC<b class='flag-5'>系统</b>基本<b class='flag-5'>平台</b>的构建