IPIntegratorflow1.创建RTL工程2.创建IPIntegratorBlockDesign3.添加zynq处理器ip中搜索zynq,添加zynq7ProcessingSystem,其中的BFM版本为先前的IP处理器版本。鼠标右键点击FIXED_IO和DDR接口,选择makeexternal,连接到芯片外部。但此时处理是完全未经过配置的,双击处理器进行配置。自动添加的外部接口:(参考ug585文档)FIXED_IO,是专用的内部固化的外设IO,作用?54个MIO口,DDR_VRN,DDR_VRP:DDRDCIvoltagereferencepins,refertoUG933,Zynq-7000APSoCPCBDesignandPinPlanningGuide.PS_SRSTB:Debugsystemreset,activeLow.Forcesthesystemtoenteraresetsequence.PS_CLK:SystemreferenceclockPS_PORB:Poweronreset,activelowDDR接口,处理器ddr内存寻址接口;M_AXI_GP0_ACLK,M_AXI_GP0,在PS-PLConfiguration中可取消对GPMasterAXITnterface的选择FCLK_CLK0:PLPabricClocks,不使用可在ClockConfiguration中disable。FCLK_RESET0_N:时钟复位使能,可在General中disable。4.配置processingSystem,配置处理器内部控制模块的详细功能与特性查看:SocTechnicalReferencemanual通用配置:(1)MIO配置:Bank0与Bank1分区的IO对应FPGA处理器可配置的IO,由硬件决定电平还是芯片已经指定电平?由硬件决定。UART1映射到MIO[48:49]zedboardBank0IOVoltage:LVCMOS3.3VzedboardBank1IOVoltage:LVCMOS1.8VzedboardPS与PL电源部分是完全独立,但是无论什么时候有PL电源供电就必须有PS电源供电。PS电源部分为DDRIO口独立供电,还为MIO的两个独立的分区Bank0与Bank1供电。PS专用的信号pin汇总表2-2,注意,对于MIOpin允许的输入电压取决于slcr,MIO_PIN_xx[IO_Type]和[DisableRcvr]bits,约束条件被定义在Zynq-7000APSoCdatasheets,超出限制的电压输入可能损坏输入buffer。(2)核对IO配置,选择ZynqBlockDesign,注意UART1是否已经在IO特性中被连接。注意勾上:GPIO,以使其它的MIO口能够作处理器的GPIO使用。(3)GeneralSetting常规设置:设置端口特性在ZynqBlockDesign中选择GeneralSetting或在PS-PLConfiguration中设置。设置UART1波特率。(4)配置Memory和Clocks即使一个简单的HelloWorld程序被运行,一些不可缺少的PSelements也必须被配置,它包括DDR3Memory(用来执行PS应用程序),另外系统时钟也必须被配置。DDR3为zedboard开发板上的IC25与IC26,MT41K128M16JT_125.ClockConfiguration:默认时钟频率与ZedBoard和MicroZed匹配:IOPeripheralCLocks被指定(SPI、QSPI、CAN、SMC、SDIO、ENET),选择后如何更改,例如SPI?如果不用FCLK_CLK0,可废除PLFabricClock,同时还需废除AXIconnectiontothePL,在PS-PLConfiguration中的取消对GPMasterAXITnterface的选择。也可在PS-PLConfiguration中取消对FCLK_RESET的选择。SPI:时钟要求比cpu_1x频率111.1111Mhz更大,可设160Mhz,然后4分频为10Mhz使能DDRConfiguration:必须设置为PCB使用的DDR设置。因为使用2x16DDR3配置,所以在DDRControllerConfiguration中设置游戏的DRAM总线宽度为32bits。DRAMTraining必须全被使能和设置:writelevel,readgate,readdataeye。保存后完成最小系统设置:其中内部设置的UART1引脚内部设置,未显示出来,其实包含在了FIXED_IO。展开FIXED_IO可查看被固定的IO口包含了哪些IO口:包含了含有串口UART1的MIO口、处理器的时钟口......。(5)完成IP集成文件(bd文件)完成处理器配置后,为了便于bd文件作为工程的子模块,可以将bd文件例化为HDL文件。展开designSources,右键点击bd文件创建HDLwrapper。再把HDL文件设为顶层文件或例化在其它工程中。5.输出设计到SDK(softwaredevelopmentkit)5.1输出到SDK前先完成硬件设计在FLowNavigator中点击GenerateBitstream,如没有综合和实现,软件将自动综合布线后产生二进制文件。Bitstream产生完成后,选择OpenImplementedDesign才能使能Vivado输出bitstream到SDK。输出到SDK:File—Export—ExportHardwareforSDK…5.2输出到SDK后产生的文件产生文件夹hw_platform_0产生文件:System.xml,包含系统的地址映射ps7_init.c和ps7_init.h,包含ZYNQprocessingsystem初始化代码和DDR,Clocks,PLL,MIO的初始化设置。ps7_init.html,将初始化等设置以网页的格式显示出来。?_wrapper.bit,implemented设计时,PLbitstream产生的二进制文件,用于初始化PL。5.3SDK中创建硬件级支持包(BoardSupportPackage)常规默认设置即可点击完成后弹出支持包设置设置标准输入输出设备:stdin、stdout自动设置为uart_1,添加其他外设时可以更改。设置驱动包:自动列出驱动,不需要的驱动选择‘none’5.4新建ApplicationProject,使用existing的BoardSupportPackage5.5一个软件工程包含了3个部分:硬件信息、驱动包、软件包5.6运行调试程序右键点击Hello应用程序runas---runconfigurations(1)选择XilinxC/C++Application(GDB)然后点击New图标。(2)选择STDIO连接,连接到Console。如不选择,则直接输出到串口上。(3)编译完成,生成二进制elf文件。点击Apply和Run,工具编译好下载elf文件到DDR。JTAG模式:设置MIO2~6为000005.7上电启动配置利用FSBL模板建立FSBL的boot程序(1)建立boot启动程序:新建应用工程ApplicationProject,选择FSBL模板。应用要求xilffslibrary库支持,如未在建立BoardSupportPackage时选择该库,可右键点击standalone_bsp_0选择BoardSupportPackage设置。建立完成即可,默认设置。输出在fsbl程序的PropertiesC/C++BuildSettingsARMgcccompiler添加两个符号:RSA_SUPPORT和FSBL_DEBUG_INFO(用于打开FSBL的输出,可选)applyok。(2)使用XilinxTools/CreateZynqBootImage命令建立镜像文件。首先在FSBLelf的Browse中选择Boot.elf,该文件会自动添加到下边的文件列表中。然后添加Bitstream,在hw下;再添加LED_Dimmer.elf文件。三者的顺序不能颠倒。最后Create。(需要先编译工程Project—buildall)。在bootimagepartitions中添加bootloader类型的FSBL生成的.elf文件;添加hw_platform中的硬件.bit二进制文件;添加软件工程生成的.elf文件;(3)使用xilinx-tool/ProgramFlash.选择qspisingle,offset可以不填写内容。Program.(4)下载文件:QSPI—Flash对应.MSC文件,SDcard对应.bin文件6其它操作ZedboardProcessingSystem配置:最重要的外设配置是bootdevice,ZYNQ允许使用QSPI、NOR/NAND、SDCard。QSPI:QSPI固定使用MIO[1-6,8],其中MIO8为feedbackclk,通常应勾选上。如果有灵感QSPI,选择Dual配置。注意:SRAM/NOR/NANDFlash接口不能被配置,是因为ZYNQPS仅仅允许一个存储器接口。USB0:MIO28-39,LVCMOS1.8V以太网ENET0:MIO[16-27],LVCMOS1.8VMDIO——MIO[52-53]SDCARD:SD0——MIO[40-45];CD=MIO47;WP=MIO46预设为Zedboard默认值:Presets—Zedboard设置PSPLLCLocks:有三个PLL-ARM,DDR和IO,每一个在Zedboard上都使用同样的输入参考时钟33.3333MHz。PLL输出设定好后可以更改为整数倍的其它时钟。例如:ARMPLL——1333.33MHz(33.333MHz*40)DDRPLL——1600MHz(33.333Mhz*48)或1066.667MHz(33.3333*32)QSPI可设置为200MHzPS能够驱动4个不同时钟频率给PL例如:7绑定PL管脚管脚约束PS部分使用的I/O直接由软件配置,综合后可在I/OPlanning中直接查看。如DDR部分与FIXED部分,为PS指定I/O,综合后直接映射到对应I/O,不需用户单独指定。方法一:I/OPlaning(1)打开SynthesizedDesign(2)菜单Layout——I/Oplaning(3)方法二:xdc约束文件(1)注释语句,语句前加“#”(2)IO位置:set_propertyPACKAGE_PINpinname[get_portsport](3)IO电平标准:set_propertyIOSTANDARDIOstandard[get_portsports]例:set_propertyPACKAGE_PINU14[get_portsled1s]set_propertyIOSTANDARDLVCMOS33[get_portsled1s]8.使用GPAXI总线(需要配置的AXIMaster,FCLK,FCLK_RESET)Theseinterfacesareforgeneral-purposeuseonlyandarenotintendedtoachievehighperformance.8.1配置,使能AXIMaster总线,同时必须为AXIMaster配置一个FCLK时钟,和一个FCLK_RESET复位信号。配置完成后处理器增加两个端口:M_AXI_GP0,M_AXI_GP0_ACLK。与两个必须的辅助AXI的信号端口:FCLK_CLK,FCLK_RESET。8.2在bd文件中添加ip:axi_gpio8.3运行自动连接8.4添加Por