无任是用CPU作为体系的首要器材,仍是用FPGA作为体系的首要器材,体系规划中首先要考虑到的问题便是处理器的发动加载问题。XILINX推出的ZYNQ可扩展处理渠道,片内包含两个高性能的ARM Cortex A9硬核(称为处理体系processing system (PS))和FPGA(称为可编程逻辑programmable logic (PL)),在根据该渠道的体系规划时具有极大的灵活性,本文就ZYNQ体系规划时都会遇到发动加载问题作一个抛砖引玉的描绘,如有不当之处还请高手指正。^_^一、器材装备单元ZYNQ器材都带有一个器材装备单元(device configuraTIon unit (DEVCFG) ),该模块由PS操控,供给软件操控下的PS和PL的初始化和装备功用。曾经单个FPGA器材供给的下载办法现已不在适用,PL的装备下载必须在PS的参加下进行。Zynq-7000的器材装备单元包含下面的PS单元:①CPU②OCM(引导ROM和同享RAM)③ 部分顶层总线和外设④PS器材装备模块在PL侧,下面的单元也将参加:①PLS器材装备逻辑和接口② 解密/鉴权硬件③存储在eFUSE单元或许电池备份RAM(BBRAM)内的解密密钥下图为PS器材装备子体系框图:[[wysiwyg_imageupload:1338:]]供给的要害特性如下:A.供给3种不同的PS装备办法,包含2种主形式和1种从形式。① 加密主形式② 非加密主形式③ 非加密从形式B.3种不同的主形式发动源①NOR FLASH②NAND FLASH③QSPI FLASHC:JTAG非加密从形式D:用AES-256和HMAC (SHA-256)进行PS/PL的加密下载E:高速装备用的主DMA接口F:100 MHz 32-bit PCAP流接口H:SoC加密调试功用在体系上电复位时,PS采样专用bootstrapping signals引脚电平来决议从什么办法引导器材。这个引导进程是由一个Cortex A9核履行片内的ROM code完结的,ROM code的功用是初始化L1 cache和根本的总线体系,加载相应的NAND, NOR, Quad-SPI, and PCAP驱动,从指定接口加载榜首级BOOTLOADER(the first stage boot loader (FSBL))到片内履行。由于OCM RAM巨细有约束,榜首级BOOTLOADER巨细最大为256KB。用户只需求按要求供给发动映像和设置正确的bootstrapping signals引脚电平,体系上电复位时由ROM code主动加载到片内而且程序调转到发动映像,此刻体系的悉数操控功用交由用户的发动映像操控,用户如要完结的第二级BOOTLOADER功用由发动映像的程序完结。关于加密装备办法,需求用到AES-256解密代码和SHA-256签定(签名)算法, PS需求用PL内硬连线的AES-256 和SHA-256模块,这时就要求在加密装备情况下PL就必须上着电,既使体系并不装备PL部分也需上电。器材的加密密钥能够由用户挑选是存储在片内的eFUSE单元(具有掉电非易失性)或许内部电池供电的BBRAM内(具有掉电易失性,适用于安全级别要求更高的场合), 下表总结了装备形式和相关信息:[[wysiwyg_imageupload:1339:]]二、PS非加密主形式装备进程这种形式下PS发动映像是直接从外部非易失存储器(NAND, NOR, Quad-SPI)内加载到片内OCM内,随后PL映像能够直接装备到PL内,整个进程如下图示:[[wysiwyg_imageupload:1340:]]PL映像的装备可由装备接口模块用DMA来高速完结,在非加密情况下速度能够到达400MB/s, 加密情况下速度能够到达100MB/s, 这在FPGA需求部分重装备时非常有用。三、PS加密主形式装备进程PS加密主形式用到了位与片内PL部分的硬件AES-256解密模块和SHA-256模块来对PS发动映像进行解密和完整性判定,器材密钥存储在片内的eFUSE单元或许内部BBRAM内,当PS加载成功后,用户能够挑选用下面缺省的PL引导进程来装备PL部分,如下图示:[[wysiwyg_imageupload:1341:]]其间装备PL时的比特流既能够是现现已过AES-256加密的比特流,也能够是先通过PS先进行解密后成为明文比特流送到PL内,这个进程的保密性由用户挑选运用。在保密ROM引导阶段假如PS完整性判定失利,CPU就当即断语PROG_B信号而铲除PL内容,一起宣布一个加密复位信号,这使PS内部的RAM和寄存器进行复位,然后CPU进入睡觉形式,体系只要重复上电才干复位。PL装备发生在BOOT的第二阶段,这个进程完结能够由用户挑选自己的办法在任何时间内来装备一次或屡次,并不需求必定按缺省的PL引导进程来装备PL部分。四、发动形式引脚ZYNQ器材有5个发动形式信号mode[4:0],用来指出从哪里发动,是否是JTAG形式,PLL是否旁路等。别的有两个电压形式信号vmode[1:0]用来指明MIO BANK的电压形式,vmode[1:0] 信号和mode[4:0] 信号通过上拉和下拉来确认电平值,上拉和下拉电阻主张为20k欧姆,上拉是连接到VCCO_MIO0电压,下拉是连接到地。体系在开释PS_POR_B复位脚后这些发动形式引脚信号会被采样3个PS_CLK时钟用来确认发动办法。vmode[1:0] 信号和mode[4:0] 信号对应的I/O管脚为MIO[8:2],各信号详细意义如下:①Mode[0] 用来指明是否是JTAG 模正。②Mode[3:1]用来挑选发动源,是从NOR Flash仍是从NAND Flash仍是从QSPI发动。③Mode[4]用来使能PLL。④Vmode[1:0] 用来装备I/O BANK电压。这些信号和MIO管脚的对应联系如下表表明:[[wysiwyg_imageupload:1342:]]注:上表中X表明不关心。实践规划中,由于MIO管脚数量有限(只要54个),且只分为两个BANK(MIO Bank 0对应管脚为PS_MIO[15:0],PS_CLK,PS_POR_B;MIO Bank 1对应管脚为PS_MIO[53:16],PS_VREF_MIO和PS_SRST_B),并不主张体系规划为从并行的NOR Flash发动,由于这种办法NOR Flash占用的MIO管脚数量大多(大于40个管脚),体系规划为从NAND Flash或QSPI发动都能够,这两种办法占用的MIO管脚数量要少些,NAND Flash的长处是容量比较大,缺陷是读写速度要慢些(典型速度10MB/s), QSPI也是一种NOR Flash,不过接口是四线串行接口,能够获得比较高的读写速度(典型速度50MB/s),假如体系期望从其它办法如USB, Ethernet, SD/SDIO等办法发动,这都需求用户在榜首级发动映像内自行规划发动引导代码。以上抛砖引玉,欢迎我们弥补阐明,首要参考文献为Zynq-7000 Extensible Processing Platform Technical Reference Manual,我们可到XILINX官方网站上下载来细心研讨。