赛灵思 Zynq-7000 All Programmable SoC已具有很强的板载处理才能。可是Zynq运用处理单元(APU)中强壮的双Cortex-A9处理器和相关外设的存在并不阻碍您在同一封装中增加一个或多个MicroBlaze?处理器,只需能让运用获益就好。
为什么要给处理功用现已很强壮的处理方案增加MicroBlaze呢?首要便是可靠性的问题。单线程会大幅进步可靠性。您能够针对核算密集型使命为每个Cortex-A9都安置一个线程,并且能根据需求为其它线程实例化任何数量的MicroBlaze处理器。其次,您可将任何庶务交给MicroBlaze去完结,让处理功用强壮的Cortex-A9去履行最需求它的作业,充分发挥其用武之地,然后节约数个要害的作业周期。
下面这个比方能反映以上两种状况。想象一下,一个使命需求长时间高强度核算,一起还要监控用户输入。这儿,MicroBlaze可办理用户输入(频率较低、核算强度不高),并写入APU存储器空间,这样APU搁置时(也便是完结了处理使命时)就能看看接下来需求处理什么信息。
一旦您决定在根据Zynq的规划中增加一个MicroBlaze处理器,立刻就会发现一些问题。首要问题便是APU怎么与MicroBlaze通讯,哪些处理器体系(PS)资源可供MicroBlaze运用。包含ZC702和Zedboard等在内的许多开发板将许多外设直接映射到与处理体系相连的引脚。可编程逻辑(PL)中,这些引脚不能直接拜访MicroBlaze。处理体系还包含多种不同定时器和中止资源。有什么办法能从MicroBlaze范畴拜访这些资源吗?
PS与PL之间的接口
处理器体系和可编程逻辑严密结合,这意味着Cortex-A9、窥视操控单元(SCU)、PS外设、时钟办理及其它功用与可编程逻辑之间存在多个严密的集成衔接。事实上,PS和PL之间共有6种不同类型的互联,您可将这些互联类型互相结合运用。此外,许多途径是对称的,也便是说PC能发动到PL的衔接,而PL也能发动到PS的衔接。
图1:PL中PS和MicroBlaze的鸿沟是一片雷区吗?二者能否同享资源?
赛灵思公司现在供给的运用攻略、用户攻略和白皮书等许多材料均介绍了作为规划“中心”的Zynq-7000 APU怎么运用可编程逻辑来拜访存储器、根据PL的外设和硬芯片外设(如PCIe模块、BRAM、DSP48和千兆位级收发器等)。要剖析MicroBlaze怎么成为其本身范畴的主导,逻辑上的第一步便是看看6个接口变量,首要从通用、高功能和加快器一致性端口这三类AXI接口下手。
PS有两个衔接到PL的主AXI通道和两个由PL发动的从通道(图2)。这儿的“主”是指AXI通道为建议方,能发动数据交换,而“从”在只能用于呼应抵达的数据。主AXI通道一般用来与PL中的外设通讯。从AXI通道担任呼应PL的恳求,其间或许包含MicroBlaze处理器所履行的事务处理。这些AXI通道衔接到PS的中心互联,可路由到许多资源。
此外,还有4个高功能(64位宽)AXI通道衔接点。从PS视点来说,一切这4个通道均为从通道,衔接至PS中的存储器接口子体系(图3)。这4个通道的意图便是让PS中的主设备发动DDR存储器事务处理。
这种存储器互联和DDR存储器操控器是一切资源到DDR存储器的门户。尽管Cortex-A9处理器的优先级一般高于从AXI衔接,但4个AXI衔接中每个都有一个“现在为我服务”信号,能让宣布该恳求的通道取得优先级。未断语该信号时,架构、选用循环机制承认哪个恳求方有权拜访特定类型存储器。
加快器一致性端口(ACP)是另一种PL的32位AXI PS从衔接。ACP的共同之处在于它直接衔接到SCU中。SCU的使命便是保证L1、L2和DDR存储器之间的一致性。选用ACP,您能拜访PS中的每个Cortex- A9处理器的高速缓存存储器,而不用忧虑与主存储器中的数据同步问题(硬件会主动处理好这个问题)。该功用不只可大幅下降规划担负,并且还能明显加快处理器与PL之间的数据传输。
图2:到处理体系中心互联的简化衔接。
图3:到DDR存储器操控器和片上存储器(OCM)的简化衔接。
除了AXI链接之外,可扩展多路输入输出(EMIO)信号也可用于路由许多PS的硬外设直至PL,以便拜访封装引脚。只要54个封装引脚直接衔接到PS,不过PS的硬外设可运用的引脚数量大大超越54个。EMIO是PS硬外设和PL之间的通道。这些I/O信号可直接路由到PL可用的封装引脚,而您也可运用这些引脚与PL中兼容的外设进行通讯。
PS和PL之间别的的各种杂项信号能够分为5个基本类:时钟与复位、中止信号、事情信号、闲暇AXI与DDR存储器信号,以及DMA信号。
* 时钟与复位:PS为PL供给4个独立的可编程频率。一般这些时钟之一用于AXI衔接。每个时钟域都有自己的域复位信号,可重设与该域相关的任何器材。
* 中止信号:PS中的通用中止操控器(G%&&&&&%)担任搜集一切可用源的中止,包含PS外设的一切中止源和可编程逻辑的16个“外设”类型中止。此外,还有4个衔接到CPU(IRQ0、 IRQ1、FIQ0和FIQ1)的直接中止。来自PS外设的共28个中止可供给给PL。
* 事情信号:这些“带外”异步信号阐明PS的特殊状况。PS供给一系列信号用于标明哪个CPU进入待机形式,哪个CPU履行了SEV(“发送事情”)指令。PS可用事情信号从WFE(“等候事情”)状况中唤醒。
* 闲暇AXI与DDR存储器信号:PS的闲暇AXI信号用来指示PL中没有未处理的AXI事务处理。该信号由PL驱动,是用来发动PS总线时钟关断功用的条件之一,保证一切PL总线器材均处于搁置状况。DDR紧迫/裁定信号用来向PS DDR存储器操控器的4个AXI端口DDR裁定标明要害的存储器处于紧张状况。
* DMA信号:PS的直接存储器拜访(DMA)模块经过一系列“恳求和承认”信号与PL从设备通讯。
图4:硬件规划实例方框图。
拜访DDR存储器
咱们下面来剖析一个规划实例,该实例涵盖了典型MicroBlaze用户或许触及的几个常见的需求,比方怎么拜访DDR存储器;怎么运用PS IOP中的外设;怎么在MicroBlaze和PS之间传输数据块;怎么在MicroBlaze和PS之间完结事情同步等。图4给出了处理每种问题的办法(别离标识为1、2、3、4)。
拜访DDR存储器最简略办法便是经过4个高功能(HP)AXI接口的一个或多个衔接(方框图右上方)。4个64位宽端口可供可编程逻辑拜访。您首要有必要启用一个端口,然后衔接AXI到端口。MicroBlaze选用AXI4-Lite接口,而HP端口则运用作全AXI4衔接。所幸的是,赛灵思规划东西可主动补偿,无需任何手动修正就保证完结成功衔接。方框图中①显现了该衔接。这类衔接的优势在于创立起来十分简略,而DDR存储器对规划来说便是惯例存储器。而缺乏之处在于,AXI-Lite不支撑突发形式,并且只要32位宽,因此会损失不少功能。
还可经过其它办法将根据PL的外设衔接到DDR存储器,比方选用DMA操控器,相同也可选用HP端口。尽管这种衔接机制更杂乱,但能进步大数据块的传输功能。
在PS中启用UART和三重定时器/计数器(TTC)。M_AXI_GP0衔接的BRAM操控器坐落PL中,但从概念上说是PS规划的组成部分(实践上也是PS规划的一部分)。
MicroBlaze作为规划的另一部分选用BRAM供给64KB的整合代码和数据空间,供MicroBlaze专用。明显,咱们能衔接这些端口到PS的HP端口以拜访DDR存储器,不过这样做会让完结作业变得更杂乱。
有3个衔接到MicroBlaze的规范外设:一个是担任接纳TTC的PWM波形输入并将其解释为中止源和接纳的UART字符中止的中止操控器;一个是担任驱动ZC702开发板上8个LED的GPIO,第三个是用于衔接到PS所衔接的同一BRAM的B侧的BRAM操控器。此外还有两个衔接:一个是到S_AXI_GP0的衔接,用于完结PS内部外设的寻址;另一个到高功能端口的衔接,可让MicroBlaze拜访DDR存储器部分。
外设、数据块和同步
到PS S_AXI_GP0端口的衔接是拜访可编程体系IOP模块的要害(图中的②)。S代表这是一个从端口,也便是承受PL中的组件发动的事务处理。在MicroBlaze和S_AXI_GP0端口之间树立衔接时,IOP模块可从0xE000_0000扩展到0xE02F_FFFF,这意味着MicroBlaze地址空间中的其它外设都不能堆叠于这段地址,而这段地址将供处理器同享。
与此一起,许多机制均支撑MicroBlaze和PS之间的数据块传输。往复DMA和DDR以及DMA和片上存储器(OCM)便是两个或许性。另一种便是在规划实例中完结的机制,其运用双端口BRAM(图中的③)。PS为BRAM操控器一侧主设备,而MicroBlaze则为其另一侧主设备。软件担任办理分区和同享BRAM存储器空间的运用,因为两边都有权对存储器的全部内容进行全面读取和写入。
终究问题触及怎么在MicroBlaze和PS之间同步事情。PS包含许多定时器,您能对PL中恣意数量的定时器实例化。规划实例中选用了一个TTC外设中的一个通道来生成100毫秒的脉冲信号(图中的④)。这儿的要害是要认识到TTC生成的波形能从PS以外拜访,但TTC中止只能在PS以内可用。您可用波形本身作为MicroBlaze中止,然后躲避这个问题。此外,您也可选用硬件定时器(AXI定时器或用户编码的定时器)为PS和MicroBlaze供给中止。
图5:独立软件域和堆叠项。
软件支撑
与任何嵌入式规划相同,您要考虑的不光是硬件完结问题,还要考虑软件支撑。对本例而言,要考虑两个处理器的堆叠区域(如图5所示)。
就硬件而言,要把体系视为两个彼此穿插的嵌入式规划:PS和MicroBlaze。咱们的参阅规划可让PS为其本身和MicroBlaze生成时钟信号并供给中止。MicroBlaze可运用这些信号,但不能影响或对其修正。PS和PL共用PS的IOP模块、DDR存储器与操控器以及常见的双端口BRAM。
从地址映射视点看,IOP地址固定在硬件中,不能修正。MicroBlaze和Cortex-A9有必要对外设运用相同的地址。技能参阅手册在这方面做了具体阐明,十分具有参阅价值。技能参阅手册分两部分对处理规划中的外设问题进行了论述。这部分中的一切寄存器都列出了地址和简介,办理两个处理器之间的资源则是用户要展开的一项使命,要防止数据抵触,防止资源缺乏等。
图6:Cortex-A9运用和MicroBlaze运用流程图。
选用DDR存储器及其操控器比较简略,因为DDR存储器操控器能办理抵触问题,并且供给恰当的启示防止任何恳求方无法取得数据。因为这不在用户操控下,时延或许会有些难以预见。
常见的BRAM选用相同的较低地址位,不过针对该模块的每个处理器存储器空间的方位可用XilinxPlatform Studio的地址标签来挑选。跟曾经相同,数据抵触、同步和存储器分配也是读者要完结的作业。
咱们的软件规划实例更首要的意图是演示衔接Cortex-A9和MicroBlaze的进程,而不是要做任何实践的作业。一些办法将演示这方面的或许性。
图6左边所示的Zynq-7000运用是一款简略的规划,其选用赛灵思单机版板支撑包。它运转的程序很大程度上让处理器坚持闲暇状况,仅仅周期性地经过串行端口宣布T字符标明自己仍在作业。此外,它会核算T的次数并将计数核算保存在BRAM中,与MicroBlaze同享。
MicroBlaze运用也运转单机版板支撑套件。这样就能支撑中止,每次串行端口上呈现字符,MicroBlaze就把字符缓存起来,并发送对应的Hex-ASCII到PS IOP模块的串行端口。此外,它会构建接纳字符串,每收到一个字符都保存在DDR存储器中。收到回车后,将核算校验和,并在字符串后直接增加到DDR存储器。BRAM预先设定的方位处设置符号,当Cortex代码“看到”符号时就从DDR存储器读取字符串,并验证校验和。假如校验和精确,MicroBlaze宣布“+”,不然宣布“X”。
简而言之,规划实例证明MicroBlaze和Zynq7000 PS完全能和平共处。AXI衔接点数量许多,使MicroBlaze(或PL中的任何组件)能方便地拜访IOP模块中的外设、OCM和DDR。可编程逻辑能方便地拜访IOP模块的中止,而PL中能生成一系列中止并发送给PS。软件协谐和界说杰出的行为是防止争抢状况和寻址抵触的要害。