精华内容
下载资源
问答
  • 原文Xilinx官方文档《ug898-vivado-embedded-design》第三章 一、MicroBlaze处理器设计介绍(略) 二、创建带有MicroBlaze处理器的IP...使用Vivado进行MicroBlaze设计和使用ISE有很大的不同。(译者加:所以你要...

    转自 https://blog.csdn.net/duinodu/article/details/46723181

    原文Xilinx官方文档《ug898-vivado-embedded-design》第三章

    一、MicroBlaze处理器设计介绍(略)

    二、创建带有MicroBlaze处理器的IP设计

    使用Vivado进行MicroBlaze设计和使用ISE有很大的不同。(译者加:所以你要仔细看下面的说明)

    Vivado IDE使用IP综合设计工具进行嵌入式开发。IP综合工具是一个基于图像界面的工具,能够帮助你构建复杂的IP子系统。

    Vivado IDE的IP目录中提供了很多现成的IP核,提供使用。你也可以向这个目录添加自定义的IP核。

     

    开始IP综合设计(步骤)

    1、在工作流导向面板中的IP Integrator中,点击Create Block Design。(表示你要开始构建带有IP核的框图了)

    2、Add IP,找到MicroBlaze,添加到Block中。

    (当然,也可以用tcl命令添加IP核:create_bd_cell -type ip -vlnv xilinx.com:ip:microblaze:9.3 microblaze_0)

    3、双击MicroBlaze的Block,开始配置软核。

     

    三、MicroBlaze配置窗口(配置窗口说明)

    MicroBlaze的配置向导提供如下功能:

    ---可一键配置的基于模板的配置对话框

    ---MicroBlaze主要参数的评估:相对面积,频率,性能表现,评估是基于对话框中给定的参数。

    ---配置流程的向导

    ---所有配置选项的提示,用来理解各个选项的作用

    ---使用Adaanced按钮,可以直接访问tabbed接口的所有选项。

     

    MicroBlaze配置向导提供如下向导页:

    ---配置向导(Configuration Wizard):第一页,提供模板选择和一般设置。

    ---一般设置(General):执行单元的选择,优化。

    ---异常(Exceptions):异常功能的使能。(如果在第一页选中了该功能)

    ---调试(Debug):断点和查看点的数量。(如果在第一页选中了该功能)

    ---缓存(Cache):缓存设置。(如果在第一页选中了该功能)

    ---内存管理单元(MMU):MMU设置。(如果在第一页选中了该功能)

    ---总线(Buses):总线设置。最后一页,总是显示。

     

    在配置向导的欢迎页中,左边显示的是当前设置的频率、面积和性能的相对评估值。

    频率:这个值是用当前架构的最大值进行归一化取得相对值。表示当前设置能够达到的频率。(这个值可能会比实际的值超过30%,不要把这个估计值当做系统一定能达到的频率的保证。)

    面积:这个值表示LUT数量,用当前架构的最大值进行归一化取得相对值。...(...5%...)

    性能:当前设置下的相对性能估计。

    BRAMs:(Vivado 2015.1中没找见)

    DSP48或者MULT18:(Vivado 2015.1中没找见)

     

    第一页(Welcome Page)

    使用配置向导最简单的办法便是,使用六个配置模板中的一个,每一个配置模板都是一个完整的配置方案。你可以使用模板作为自己配置的起点,再修改模板给定的设置。

    每当你修改一个选项,左边的评价参数便会实时更新。下面介绍这六个配置模板。

    ---最小面积(Minimum Area):软核提供的最小架构。没有缓存和调试。

    ---最强性能(Maximum Performance):可能的最大性能。拥有很大的缓存和调试,拥有所有的执行单元。

    ---最高频率(Maximum Frequency):可能的最高频率。小缓存,没有调试,一部分执行单元。

    ---带有MMU的Linux(Llinx with MMU):当运行带有MMU的linux时,能够获得高性能的设置。内存管理使能,大的缓存和调试,所有的执行单元。

    ---低端的带有MMU的Linux:...内存管理使能,小的缓存和调试。

    ---典型:在性能、面积、频率中取了折中。适合脱机程序,低开销内核。有缓存和调试功能。

     

    一般设置

    如果模板没有选择,也可以在页面中,根据项目需求,进行选项配置。当你把鼠标放在选项上时,会出现一个提示,告诉你它有什么用。下面详细介绍这些选项。

    ---Select implemention to optimize area(with lower instruction throughput):使能面积优化功能。如果选了这个,implementation就会优化面积,尤其是减少流水线数量,从5条减少到3条。(推荐:建议在资源比较紧张的架构,如Artix-7,使能这个选项。然而,如果对性能有敏感的要求,就不要选这个选项,因为一些指令需要额外的时钟周期去执行。另外,对于MMU, Branch Target Cache, Instruction Cache Streams, Instruction Cache Victims, Data Cache Victims, ACE是不能进行面积优化的。)

    ---Enable MicroBlaze Debug Module Interface:使能调试功能。用Xilinx Microprocessor Debugger来下载、调试程序。(推荐:除非面积资源奇缺,否则不要禁止这个功能。)

    ---Use Instruction and Data Caches:当执行放在LMB之外的程序的时候,可以使用指令缓存来改善性能。指令缓存有如下特点:....当使用外部存储时,激活这个选项可以明显地改善性能,即使这个缓存很小。

    ---Enable Exceptions:当使用一个支持异常的操作系统时,需要激活这个选项。或者在一个单独的程序中添加异常回调函数。

    ---Use Memory Management:当使用一个支持虚拟内存保护的操作系统时(如Linux),需要激活。(当你使能面积优化或者堆栈保护功能时,内存管理单元是不可见的,自动禁止)

    ---Enable Discrete Ports:使能软核上的独立端口。

     

    第二页(General)

    1、指令(Instructions)

    ---使能桶型移位器(Enable Barrel Shifter):使能软核中的筒形移位器硬件。激活这个参数,就可以使用如下指令(bsrl,bsra,...)使能这个可以提高应用的性能,但是会增大软核的尺寸。如果激活,编译器会自动使用筒形移位器指令。

    ---使能浮点单元(Enable Floating Point Unit):使能一个单精度浮点单元(FPU)。使用FPU可以明显地提高应用的单精度浮点性能,同时也会增大软核的尺寸。

    ---使能整形乘法器(Enable Integer Multiplier):使能一个整形乘法器硬件。若激活,则可以在给MUL32赋值时,使用mul和muli指令。当给MUL64赋值时,使用mulh,mulhu,mulhsu指令。这个参数可以设置为NONE,可以把MUL或者DSP48释放,用作其他用途。这样做对软核的面积影响很小。当使用这个选项,编译器自动使用mul指令。

    ---使能整形触发器(Enable Integer Divider):使能一个整形除法器硬件。若激活,可以使用idiv,iduvu指令。使能这个选项可以提高应用中的除法性能,但是增大了软核的尺寸。当使用这个选项,编译器自动使用idiv指令。

    ---使能额外机器状态寄存器指令(Enable Additional Machine Status Register Instructions):若激活,则可以读写MSR,使用msrset和msrclr命令。可以提高访问MSR的性能。

    ---使能模式比较器(Enable Pattern Comparator):如激活,则可以使用模式匹配指令pcmpbf,pcmpeq,pcmpne。模式匹配字节查找指令(pattern comparator byte find, pcmpbf)返回找到的第一个字节的位置,提高字符串和模式匹配操作的效率。若使能,SDK库会自动使用这个指令。pcmfeq和pcmpne指令根据两个字是否相同,返回1或者0。这些指令会提高setting flags的效率,编译器会自动使用它们。激活这个选项还可以count leading zeros指令,clz。clz指令能提高优先级编码的效率。

    ---使能保留的加载/保存和交换指令(Enable Reserved Load/Store and Swap Instructions):lbur,lhur,lwr,sbr,shr,swr,swapb,和swaph。这些指令能够以相对的字节序来读写数据,交换指令能交换字节或者半个字长。当用little-endian的MicroBlaze访问big-endian的网络时,可以提高效率。

    ---使能额外的流命令(Enable Additional Stream Instructions):当使用AXI4-Stream链接时,提供额外的功能。这包括动态访问指令GETD和PUTD,这两个指令用寄存器来选择接口。(重要:一定要激活流异常功能,才能使用这些指令,而且知道选择一个流链接)

    2、优化

    选择Implementation来优化面积(当指令吞吐量很低时):这个选项和欢迎页的选项功能相同。...

    3、容错

    ---使能容错功能(Enable Fault Tolerance Support)

     

    第三页(异常)

    1、数学异常(Math Exceptions)

    ---使能浮点单元异常

    ---使能整形除法异常

    2、总线异常(Bus Exceptions)

    ---使能指令端AXI异常

    ---使能数据段AXI异常

    3、其他异常(Other Exceptions)

    ---使能非法指令异常

    ---使能Unaligned数据异常

    ---产生非法指令异常,除了NULL指令

    ---使能流异常

    ---使能堆栈保护

     

    第四页(缓存)

    第五页(MMU)

    第六页(调试)

    第七页(总线)

    1、本地内存总线接口(LMB)

    2、AXI和ACE接口

    3、流接口

    4、其他接口

     

    四、MicroBlaze处理器的交叉触发特性

    当使能basic debugging,交叉触发功能有两个信号提供:DBG_STOP和MB_Halted。

    ---当DBG_STOP输入为1,MicroBlaze会在几条指令后暂停。XMD检测到MicroBlaze暂停了,并记录暂停的位置。这个信号可以被任何外部的事件用来暂停软核,例如当一个集成逻辑分析器(ILA)被触发。

    ---MB_Halted输出信号为1,当MicroBlaze暂停的时候,例如碰到一个断点或者观察点,执行了一条XMD停止指令之后,或者当DBG_STOP被置1。当通过XMD命令重新启动软核时,输出清0。

    这两个引脚是隐藏的,除非在欢迎页中使能显示独立端口(Show Discrete Ports)。

     

    你也可以使用MB_Halted信号来触发一个集成逻辑分析器,或者在多核系统中,暂停其他MicroBlaze软核(连接到它们的DBG_STOP端)。

    当启动扩展调试功能时,交叉触发功能可以和MDM一起使用。MDM在所有连接的处理器中,提供可编程的交叉触发功能,包括外部触发的输入端和输出端。可以查阅MicroBlaze Debug Module Product Guide手册查看细节。

    MicroBlaze最多支持8个交叉触发动作。交叉触发动作由相对应的MDM交叉触发输出产生,两者通过调试总线连接。

    可以有两个地方设置扩展调试功能:一个是前面提到的调试配置页,另一个是在运行MicroBlaze的Block Antomation时,选择该功能。

    另外,还要在MDM模块的配置页中,使能交叉触发功能(Enable Cross Trigger)。MDM模块可以最多配置4组外部触发的输入和输出。

    最后,运行Connection Automation,连接交叉触发信号到ILA(ILA教程)。

    ...

     

     

    五、自定义逻辑

    Vivado的IP管理器允许用户和第三方IP核开发者将自定义的IP核添加到Vivado的IP核目录中。这样用户就能在Vivado中实例化第三方IP核了。

    当IP开发者使用Vivado的IP管理器打包IP核时,IP的使用者对xilinx提供的IP核,还是第三方IP,亦或用户定义的IP,都有一样的使用体验。

    IP开发者可以使用IP管理器打包IP文件,并把数据放入ZIP文件。IP使用者接收这个ZIP文件,安装到Vivado的IP目录中,然后用户就可以使用这个IP核了。

    推荐:为了保证IP核的质量,建议IP开发者在用用户的使用工作流中运行每一个IP核,确保每个IP核都是可用的。

     

     

    六、完成连接(Completing Connections)

    当你配置完了MicroBlaze处理器,就可以开始实例化其他IP核,继续你的设计。

    在Canvas(放置Block的面板)上,右击,选择Add IP。

    你可以使用两个内置的特性来完成子系统剩余部分的IP核设计:Block Automation和Conncetions Automation,帮助你放置一个基本的微处理器系统,并且/或者连接端口到外部I/O口。

    Block Automation

    当block design中实例化了一个ZYNQ7处理系统或者MicroBlaze处理器时,Block Automation功能就可以使用。

    1、点击Run Block Automation,帮助你完成一个简单的MicroBlaze系统。

    Run Block Automation对话框提供了一个微处理器系统必需的基本特性。

    2、单击OK。

    Using Connection Automation

    当IP集成工具发现canvas上的IP实例化之间,存在可能的连接时,它会打开Connection Automation功能。

    例如,我另外添加了两个IP核,GPIO和Uartlite。IP集成工具会决定一下连接:

    ---处理器的ext_reset_in引脚必须连接到一个复位源,复位源可以是内部的复位源,或者是外部输入引脚。

    ---时钟模块的CLK_IN_1_D引脚必须连接到一个内部时钟源,或者外部输入引脚。

    ---AXI GPIO的s_axi必须接到一个主机的AXI接口上。

    ---AXI GPIO的核心gpio必须接到外部的IO引脚。

    ---Uartlite的s_axi必须接到一个主机的AXI接口上。

    ---Uartlite的uart必须接到外部引脚上。

     

    Using Board Automation

    当使用像KC705这种刁刁的板子的时候,Vivado提供了Board Automation(像我这种撑死只有Nexys4的屌丝,只能......怒略一记)

     

     

    Manual Connections in an IP Integrator Design

    (译者注:一般连线方式,可以手动连接,类似于AD画板子软件里的那种)

    Manual Creating and Connecting to I/O Ports

    你可以在IP工具中创建外部IO端口。你可以选择信号或者接口到外部的IO端口,通过选择一个引脚,总线或者接口连接。

    具体办法是,在模块的引脚接口处,右击。在弹出的菜单中,选择:

    ---Make External.可以用多选操作(Ctrl+Click)选择多个端口。这个命令的作用是连接模块上的引脚到外部引脚。

    startgroup
    create_bd_intf_port -mode Master -vlnv xilinx.com:interface:gpio_rtl:1.0 GPIO
    connect_bd_intf_net [get_bd_intf_pins axi_gpio_0/GPIO] [get_bd_intf_ports GPIO]
    endgroup

    (这是该操作的tcl命令,第一句话是创建端口,第二句话是连接)

     

    ---Create Port.对非信号接口使用该命令,如clock,reset,或者uart_txd.创建的时候,可以设定很多参数,比如输出/输出,位宽,类型等等。如果是时钟,需要指定它的频率。

    startgroup
    create_bd_port -dir I -type clk aa
    set_property CONFIG.FREQ_HZ 100000000 [get_bd_ports aa]
    endgroup

    (这是该操作的tcl命令,第一句话是创建端口,第二句话是设置参数)

     

    ---Create Interface Port。对同一个功能的一组信号接口创建此类端口。例如,S_AXI是一些Xilinx IP的接口端口。这个接口还可以指定接口的类型和模式(主机还是从机)。

     

    Memory Mapping in Address Editor

    产生地址映射的方法如下:

    1、单击Address Editor。

    2、单击左边的Auto Assign Address按钮。(按钮在左侧)

    如果你从IP框图产生RTL代码时没有第一次生成地址,会弹出一个提示框,提供一个自动分配地址的工具。

    你也可以在Offset Address和Range两类输入值,来设置地址。只有当IP框图中包含一个总线主机的IP核(例如ZYNQ7)时,Address Editor才会打开。

     

    Running Design Rule Checks

    Vivado实时进行设计规则检查。然而,错误总是会发生。例如,时钟引脚上的频率也许没有设置正确。

    如果要运行一个全面的检查,可以单击Validate Design。

     

    Integrating a Block Design in the Top-Level Design

    完成了上面的步骤后,还有两个步骤需要做:

    ---产生输出文件

    ---创建HDL封装

    在项目的源文件窗口创建文件。文件类型取决于项目新建时是verilog还是vhdl。具体方法如下:

    1、在Block Design面板下,展开Design Source,选择Generate Output Products。

    2、在左侧的工作流面板中的IP工具下,单击Generate Block Design.

    你可以在一个高层次设计中集成一个IP block。这样做的方法是,在高层次的HDL文件中,实例化这个Block设计。

     

    为了实例化一个更高的层次,在Block Design面板中的Design Sources中,右键design,选择创建HDL封装。

    Vivado提供了两种创建HDL封装的方法:

    ---Vivado新建并自动更新封装,这是默认选项。

    ---创建一个用户可修改的脚本,这个脚本可以修改和保存。如果你选择了这个,那你每次如果修改了block design中的端口,都需要修改手动更新封装。

     

    到这里,你已经为你的IP设计做好了HDL封装,可以进行后面的步骤了。

     

    MicroBlaze处理器约束

    IP工具已经在产生输出文件时,为IP核创建了约束文件;然而,你必须为自定义的IP或者更高层次的代码设置约束。

    一组约束,是XDC文件中的包含了设计约束的集合。有两种约束:

    ---物理约束。定义了引脚放置,以及元胞(BRAM, LUT, Flip Flop)的绝对或者相对位置,还有器件的配置。

    ---时序约束。遵循SDC业界标准,定义了设计的频率要求。如果没有时序约束,Vivado仅仅会优化线宽和布线拥堵。(如果没有时序约束,Vivado的implementation就无法提高设计的性能。Vivado不支持UCF格式的约束)

     

    关于时序约束,下面多说两句:

    你有几种使用约束集合的方法:

    ---一个约束集合中有多个约束文件

    ---多个约束集合,然而在分开的文件夹中。

    ---一个主约束文件,设计中的改变存于一个新的约束文件夹中。

    ---...

    按功能,分开约束文件,有利于你从宏观更清楚地把握约束策略,有利于应对时序和实现过程中的变化。

    约束水太深,又太重要,详情查看官方文档。Vivado Design Suite User Guide: Using Constraints

     

    当你完成了设计,也约束完了,现在可以进行合成、实现、生成bit流了。

    然后,就可以导入硬件到SDK了。具体方法是:

    File->Export->Export Hardware for SDK,弹出对话框,提供一些选择选项。你可以导出硬件定义和比特流,并打开SDK。然后,就可以开始编写软件了。

    或者,你也可以从SDK把elf文件导入到Vivado。

    展开全文
  • 一、MicroBlaze处理器设计介绍(略)二、创建带有MicroBlaze处理器的IP设计使用Vivado进行MicroBlaze设计和使用ISE有很大的不同。(译者加:所以你要仔细看下面的说明)Vivado IDE使用IP综合设计工具进行嵌入式开发。IP...

    一、MicroBlaze处理器设计介绍(略)

    二、创建带有MicroBlaze处理器的IP设计

    使用Vivado进行MicroBlaze设计和使用ISE有很大的不同。(译者加:所以你要仔细看下面的说明)

    Vivado IDE使用IP综合设计工具进行嵌入式开发。IP综合工具是一个基于图像界面的工具,能够帮助你构建复杂的IP子系统。

    Vivado IDE的IP目录中提供了很多现成的IP核,提供使用。你也可以向这个目录添加自定义的IP核。

    开始IP综合设计(步骤)

    1、在工作流导向面板中的IP Integrator中,点击Create Block Design。(表示你要开始构建带有IP核的框图了)

    2、Add IP,找到MicroBlaze,添加到Block中。

    (当然,也可以用tcl命令添加IP核:create_bd_cell -type ip -vlnv xilinx.com:ip:microblaze:9.3 microblaze_0)

    3、双击MicroBlaze的Block,开始配置软核。

    三、MicroBlaze配置窗口(配置窗口说明)

    MicroBlaze的配置向导提供如下功能:

    ---可一键配置的基于模板的配置对话框

    ---MicroBlaze主要参数的评估:相对面积,频率,性能表现,评估是基于对话框中给定的参数。

    ---配置流程的向导

    ---所有配置选项的提示,用来理解各个选项的作用

    ---使用Adaanced按钮,可以直接访问tabbed接口的所有选项。

    MicroBlaze配置向导提供如下向导页:

    ---配置向导(Configuration Wizard):第一页,提供模板选择和一般设置。

    ---一般设置(General):执行单元的选择,优化。

    ---异常(Exceptions):异常功能的使能。(如果在第一页选中了该功能)

    ---调试(Debug):断点和查看点的数量。(如果在第一页选中了该功能)

    ---缓存(Cache):缓存设置。(如果在第一页选中了该功能)

    ---内存管理单元(MMU):MMU设置。(如果在第一页选中了该功能)

    ---总线(Buses):总线设置。最后一页,总是显示。

    在配置向导的欢迎页中,左边显示的是当前设置的频率、面积和性能的相对评估值。

    频率:这个值是用当前架构的最大值进行归一化取得相对值。表示当前设置能够达到的频率。(这个值可能会比实际的值超过30%,不要把这个估计值当做系统一定能达到的频率的保证。)

    面积:这个值表示LUT数量,用当前架构的最大值进行归一化取得相对值。...(...5%...)

    性能:当前设置下的相对性能估计。

    BRAMs:(Vivado 2015.1中没找见)

    DSP48或者MULT18:(Vivado 2015.1中没找见)

    第一页(Welcome Page)

    使用配置向导最简单的办法便是,使用六个配置模板中的一个,每一个配置模板都是一个完整的配置方案。你可以使用模板作为自己配置的起点,再修改模板给定的设置。

    每当你修改一个选项,左边的评价参数便会实时更新。下面介绍这六个配置模板。

    ---最小面积(Minimum Area):软核提供的最小架构。没有缓存和调试。

    ---最强性能(Maximum Performance):可能的最大性能。拥有很大的缓存和调试,拥有所有的执行单元。

    ---最高频率(Maximum Frequency):可能的最高频率。小缓存,没有调试,一部分执行单元。

    ---带有MMU的Linux(Llinx with MMU):当运行带有MMU的linux时,能够获得高性能的设置。内存管理使能,大的缓存和调试,所有的执行单元。

    ---低端的带有MMU的Linux:...内存管理使能,小的缓存和调试。

    ---典型:在性能、面积、频率中取了折中。适合脱机程序,低开销内核。有缓存和调试功能。

    一般设置

    如果模板没有选择,也可以在页面中,根据项目需求,进行选项配置。当你把鼠标放在选项上时,会出现一个提示,告诉你它有什么用。下面详细介绍这些选项。

    ---Select implemention to optimize area(with lower instruction throughput):使能面积优化功能。如果选了这个,implementation就会优化面积,尤其是减少流水线数量,从5条减少到3条。(推荐:建议在资源比较紧张的架构,如Artix-7,使能这个选项。然而,如果对性能有敏感的要求,就不要选这个选项,因为一些指令需要额外的时钟周期去执行。另外,对于MMU, Branch Target Cache, Instruction Cache Streams, Instruction Cache Victims, Data Cache Victims, ACE是不能进行面积优化的。)

    ---Enable MicroBlaze Debug Module Interface:使能调试功能。用Xilinx Microprocessor Debugger来下载、调试程序。(推荐:除非面积资源奇缺,否则不要禁止这个功能。)

    ---Use Instruction and Data Caches:当执行放在LMB之外的程序的时候,可以使用指令缓存来改善性能。指令缓存有如下特点:....当使用外部存储时,激活这个选项可以明显地改善性能,即使这个缓存很小。

    ---Enable Exceptions:当使用一个支持异常的操作系统时,需要激活这个选项。或者在一个单独的程序中添加异常回调函数。

    ---Use Memory Management:当使用一个支持虚拟内存保护的操作系统时(如Linux),需要激活。(当你使能面积优化或者堆栈保护功能时,内存管理单元是不可见的,自动禁止)

    ---Enable Discrete Ports:使能软核上的独立端口。

    第二页(General)

    1、指令(Instructions)

    ---使能桶型移位器(Enable Barrel Shifter):使能软核中的筒形移位器硬件。激活这个参数,就可以使用如下指令(bsrl,bsra,...)使能这个可以提高应用的性能,但是会增大软核的尺寸。如果激活,编译器会自动使用筒形移位器指令。

    ---使能浮点单元(Enable Floating Point Unit):使能一个单精度浮点单元(FPU)。使用FPU可以明显地提高应用的单精度浮点性能,同时也会增大软核的尺寸。

    ---使能整形乘法器(Enable Integer Multiplier):使能一个整形乘法器硬件。若激活,则可以在给MUL32赋值时,使用mul和muli指令。当给MUL64赋值时,使用mulh,mulhu,mulhsu指令。这个参数可以设置为NONE,可以把MUL或者DSP48释放,用作其他用途。这样做对软核的面积影响很小。当使用这个选项,编译器自动使用mul指令。

    ---使能整形触发器(Enable Integer Divider):使能一个整形除法器硬件。若激活,可以使用idiv,iduvu指令。使能这个选项可以提高应用中的除法性能,但是增大了软核的尺寸。当使用这个选项,编译器自动使用idiv指令。

    ---使能额外机器状态寄存器指令(Enable Additional Machine Status Register Instructions):若激活,则可以读写MSR,使用msrset和msrclr命令。可以提高访问MSR的性能。

    ---使能模式比较器(Enable Pattern Comparator):如激活,则可以使用模式匹配指令pcmpbf,pcmpeq,pcmpne。模式匹配字节查找指令(pattern comparator byte find, pcmpbf)返回找到的第一个字节的位置,提高字符串和模式匹配操作的效率。若使能,SDK库会自动使用这个指令。pcmfeq和pcmpne指令根据两个字是否相同,返回1或者0。这些指令会提高setting flags的效率,编译器会自动使用它们。激活这个选项还可以count leading zeros指令,clz。clz指令能提高优先级编码的效率。

    ---使能保留的加载/保存和交换指令(Enable Reserved Load/Store and Swap Instructions):lbur,lhur,lwr,sbr,shr,swr,swapb,和swaph。这些指令能够以相对的字节序来读写数据,交换指令能交换字节或者半个字长。当用little-endian的MicroBlaze访问big-endian的网络时,可以提高效率。

    ---使能额外的流命令(Enable Additional Stream Instructions):当使用AXI4-Stream链接时,提供额外的功能。这包括动态访问指令GETD和PUTD,这两个指令用寄存器来选择接口。(重要:一定要激活流异常功能,才能使用这些指令,而且知道选择一个流链接)

    2、优化

    选择Implementation来优化面积(当指令吞吐量很低时):这个选项和欢迎页的选项功能相同。...

    3、容错

    ---使能容错功能(Enable Fault Tolerance Support)

    第三页(异常)

    1、数学异常(Math Exceptions)

    ---使能浮点单元异常

    ---使能整形除法异常

    2、总线异常(Bus Exceptions)

    ---使能指令端AXI异常

    ---使能数据段AXI异常

    3、其他异常(Other Exceptions)

    ---使能非法指令异常

    ---使能Unaligned数据异常

    ---产生非法指令异常,除了NULL指令

    ---使能流异常

    ---使能堆栈保护

    第四页(缓存)

    第五页(MMU)

    第六页(调试)

    第七页(总线)

    1、本地内存总线接口(LMB)

    2、AXI和ACE接口

    3、流接口

    4、其他接口

    四、MicroBlaze处理器的交叉触发特性

    当使能basic debugging,交叉触发功能有两个信号提供:DBG_STOP和MB_Halted。

    ---当DBG_STOP输入为1,MicroBlaze会在几条指令后暂停。XMD检测到MicroBlaze暂停了,并记录暂停的位置。这个信号可以被任何外部的事件用来暂停软核,例如当一个集成逻辑分析器(ILA)被触发。

    ---MB_Halted输出信号为1,当MicroBlaze暂停的时候,例如碰到一个断点或者观察点,执行了一条XMD停止指令之后,或者当DBG_STOP被置1。当通过XMD命令重新启动软核时,输出清0。

    这两个引脚是隐藏的,除非在欢迎页中使能显示独立端口(Show Discrete Ports)。

    你也可以使用MB_Halted信号来触发一个集成逻辑分析器,或者在多核系统中,暂停其他MicroBlaze软核(连接到它们的DBG_STOP端)。

    当启动扩展调试功能时,交叉触发功能可以和MDM一起使用。MDM在所有连接的处理器中,提供可编程的交叉触发功能,包括外部触发的输入端和输出端。可以查阅MicroBlaze Debug Module Product Guide手册查看细节。

    MicroBlaze最多支持8个交叉触发动作。交叉触发动作由相对应的MDM交叉触发输出产生,两者通过调试总线连接。

    可以有两个地方设置扩展调试功能:一个是前面提到的调试配置页,另一个是在运行MicroBlaze的Block Antomation时,选择该功能。

    另外,还要在MDM模块的配置页中,使能交叉触发功能(Enable Cross Trigger)。MDM模块可以最多配置4组外部触发的输入和输出。

    最后,运行Connection Automation,连接交叉触发信号到ILA(ILA教程)。

    ...

    五、自定义逻辑

    Vivado的IP管理器允许用户和第三方IP核开发者将自定义的IP核添加到Vivado的IP核目录中。这样用户就能在Vivado中实例化第三方IP核了。

    当IP开发者使用Vivado的IP管理器打包IP核时,IP的使用者对xilinx提供的IP核,还是第三方IP,亦或用户定义的IP,都有一样的使用体验。

    IP开发者可以使用IP管理器打包IP文件,并把数据放入ZIP文件。IP使用者接收这个ZIP文件,安装到Vivado的IP目录中,然后用户就可以使用这个IP核了。

    推荐:为了保证IP核的质量,建议IP开发者在用用户的使用工作流中运行每一个IP核,确保每个IP核都是可用的。

    六、完成连接(Completing Connections)

    当你配置完了MicroBlaze处理器,就可以开始实例化其他IP核,继续你的设计。

    在Canvas(放置Block的面板)上,右击,选择Add IP。

    你可以使用两个内置的特性来完成子系统剩余部分的IP核设计:Block Automation和Conncetions Automation,帮助你放置一个基本的微处理器系统,并且/或者连接端口到外部I/O口。

    Block Automation

    当block design中实例化了一个ZYNQ7处理系统或者MicroBlaze处理器时,Block Automation功能就可以使用。

    1、点击Run Block Automation,帮助你完成一个简单的MicroBlaze系统。

    Run Block Automation对话框提供了一个微处理器系统必需的基本特性。

    2、单击OK。

    Using Connection Automation

    当IP集成工具发现canvas上的IP实例化之间,存在可能的连接时,它会打开Connection Automation功能。

    例如,我另外添加了两个IP核,GPIO和Uartlite。IP集成工具会决定一下连接:

    ---处理器的ext_reset_in引脚必须连接到一个复位源,复位源可以是内部的复位源,或者是外部输入引脚。

    ---时钟模块的CLK_IN_1_D引脚必须连接到一个内部时钟源,或者外部输入引脚。

    ---AXI GPIO的s_axi必须接到一个主机的AXI接口上。

    ---AXI GPIO的核心gpio必须接到外部的IO引脚。

    ---Uartlite的s_axi必须接到一个主机的AXI接口上。

    ---Uartlite的uart必须接到外部引脚上。

    Using Board Automation

    当使用像KC705这种刁刁的板子的时候,Vivado提供了Board Automation(像我这种撑死只有Nexys4的屌丝,只能......怒略一记)

    Manual Connections in an IP Integrator Design

    (译者注:一般连线方式,可以手动连接,类似于AD画板子软件里的那种)

    Manual Creating and Connecting to I/O Ports

    你可以在IP工具中创建外部IO端口。你可以选择信号或者接口到外部的IO端口,通过选择一个引脚,总线或者接口连接。

    具体办法是,在模块的引脚接口处,右击。在弹出的菜单中,选择:

    ---Make External.可以用多选操作(Ctrl+Click)选择多个端口。这个命令的作用是连接模块上的引脚到外部引脚。

    startgroup

    create_bd_intf_port -mode Master -vlnv xilinx.com:interface:gpio_rtl:1.0 GPIO

    connect_bd_intf_net [get_bd_intf_pins axi_gpio_0/GPIO] [get_bd_intf_ports GPIO]

    endgroup

    (这是该操作的tcl命令,第一句话是创建端口,第二句话是连接)

    ---Create Port.对非信号接口使用该命令,如clock,reset,或者uart_txd.创建的时候,可以设定很多参数,比如输出/输出,位宽,类型等等。如果是时钟,需要指定它的频率。

    startgroup

    create_bd_port -dir I -type clk aa

    set_property CONFIG.FREQ_HZ 100000000 [get_bd_ports aa]

    endgroup

    (这是该操作的tcl命令,第一句话是创建端口,第二句话是设置参数)

    ---Create Interface Port。对同一个功能的一组信号接口创建此类端口。例如,S_AXI是一些Xilinx IP的接口端口。这个接口还可以指定接口的类型和模式(主机还是从机)。

    Memory Mapping in Address Editor

    产生地址映射的方法如下:

    1、单击Address Editor。

    2、单击左边的Auto Assign Address按钮。(按钮在左侧)

    如果你从IP框图产生RTL代码时没有第一次生成地址,会弹出一个提示框,提供一个自动分配地址的工具。

    你也可以在Offset Address和Range两类输入值,来设置地址。只有当IP框图中包含一个总线主机的IP核(例如ZYNQ7)时,Address Editor才会打开。

    Running Design Rule Checks

    Vivado实时进行设计规则检查。然而,错误总是会发生。例如,时钟引脚上的频率也许没有设置正确。

    如果要运行一个全面的检查,可以单击Validate Design。

    Integrating a Block Design in the Top-Level Design

    完成了上面的步骤后,还有两个步骤需要做:

    ---产生输出文件

    ---创建HDL封装

    在项目的源文件窗口创建文件。文件类型取决于项目新建时是verilog还是vhdl。具体方法如下:

    1、在Block Design面板下,展开Design Source,选择Generate Output Products。

    2、在左侧的工作流面板中的IP工具下,单击Generate Block Design.

    你可以在一个高层次设计中集成一个IP block。这样做的方法是,在高层次的HDL文件中,实例化这个Block设计。

    为了实例化一个更高的层次,在Block Design面板中的Design Sources中,右键design,选择创建HDL封装。

    Vivado提供了两种创建HDL封装的方法:

    ---Vivado新建并自动更新封装,这是默认选项。

    ---创建一个用户可修改的脚本,这个脚本可以修改和保存。如果你选择了这个,那你每次如果修改了block design中的端口,都需要修改手动更新封装。

    到这里,你已经为你的IP设计做好了HDL封装,可以进行后面的步骤了。

    MicroBlaze处理器约束

    IP工具已经在产生输出文件时,为IP核创建了约束文件;然而,你必须为自定义的IP或者更高层次的代码设置约束。

    一组约束,是XDC文件中的包含了设计约束的集合。有两种约束:

    ---物理约束。定义了引脚放置,以及元胞(BRAM, LUT, Flip Flop)的绝对或者相对位置,还有器件的配置。

    ---时序约束。遵循SDC业界标准,定义了设计的频率要求。如果没有时序约束,Vivado仅仅会优化线宽和布线拥堵。(如果没有时序约束,Vivado的implementation就无法提高设计的性能。Vivado不支持UCF格式的约束)

    关于时序约束,下面多说两句:

    你有几种使用约束集合的方法:

    ---一个约束集合中有多个约束文件

    ---多个约束集合,然而在分开的文件夹中。

    ---一个主约束文件,设计中的改变存于一个新的约束文件夹中。

    ---...

    按功能,分开约束文件,有利于你从宏观更清楚地把握约束策略,有利于应对时序和实现过程中的变化。

    约束水太深,又太重要,详情查看官方文档。Vivado Design Suite User Guide: Using Constraints

    当你完成了设计,也约束完了,现在可以进行合成、实现、生成bit流了。

    然后,就可以导入硬件到SDK了。具体方法是:

    File->Export->Export Hardware for SDK,弹出对话框,提供一些选择选项。你可以导出硬件定义和比特流,并打开SDK。然后,就可以开始编写软件了。

    或者,你也可以从SDK把elf文件导入到Vivado。

    转载:http://blog.csdn.net/DuinoDu/article/details/46723181

    展开全文
  • 原文Xilinx官方文档《ug898-vivado-...使用Vivado进行MicroBlaze设计和使用ISE有很大的不同。(译者加:所以你要仔细看下面的说明) Vivado IDE使用IP综合设计工具进行嵌入式开发。IP综合工具是一个基于图像...

     

    原文Xilinx官方文档《ug898-vivado-embedded-design》第三章

    一、MicroBlaze处理器设计介绍(略)

    二、创建带有MicroBlaze处理器的IP设计

    使用Vivado进行MicroBlaze设计和使用ISE有很大的不同。(译者加:所以你要仔细看下面的说明)

    Vivado IDE使用IP综合设计工具进行嵌入式开发。IP综合工具是一个基于图像界面的工具,能够帮助你构建复杂的IP子系统。

    Vivado IDE的IP目录中提供了很多现成的IP核,提供使用。你也可以向这个目录添加自定义的IP核。

     

    开始IP综合设计(步骤)

    1、在工作流导向面板中的IP Integrator中,点击Create Block Design。(表示你要开始构建带有IP核的框图了)

    2、Add IP,找到MicroBlaze,添加到Block中。

    (当然,也可以用tcl命令添加IP核:create_bd_cell -type ip -vlnv xilinx.com:ip:microblaze:9.3 microblaze_0)

    3、双击MicroBlaze的Block,开始配置软核。

     

    三、MicroBlaze配置窗口(配置窗口说明)

    MicroBlaze的配置向导提供如下功能:

    ---可一键配置的基于模板的配置对话框

    ---MicroBlaze主要参数的评估:相对面积,频率,性能表现,评估是基于对话框中给定的参数。

    ---配置流程的向导

    ---所有配置选项的提示,用来理解各个选项的作用

    ---使用Adaanced按钮,可以直接访问tabbed接口的所有选项。

     

    MicroBlaze配置向导提供如下向导页:

    ---配置向导(Configuration Wizard):第一页,提供模板选择和一般设置。

    ---一般设置(General):执行单元的选择,优化。

    ---异常(Exceptions):异常功能的使能。(如果在第一页选中了该功能)

    ---调试(Debug):断点和查看点的数量。(如果在第一页选中了该功能)

    ---缓存(Cache):缓存设置。(如果在第一页选中了该功能)

    ---内存管理单元(MMU):MMU设置。(如果在第一页选中了该功能)

    ---总线(Buses):总线设置。最后一页,总是显示。

     

    在配置向导的欢迎页中,左边显示的是当前设置的频率、面积和性能的相对评估值。

    频率:这个值是用当前架构的最大值进行归一化取得相对值。表示当前设置能够达到的频率。(这个值可能会比实际的值超过30%,不要把这个估计值当做系统一定能达到的频率的保证。)

    面积:这个值表示LUT数量,用当前架构的最大值进行归一化取得相对值。...(...5%...)

    性能:当前设置下的相对性能估计。

    BRAMs:(Vivado 2015.1中没找见)

    DSP48或者MULT18:(Vivado 2015.1中没找见)

     

    第一页(Welcome Page)

    使用配置向导最简单的办法便是,使用六个配置模板中的一个,每一个配置模板都是一个完整的配置方案。你可以使用模板作为自己配置的起点,再修改模板给定的设置。

    每当你修改一个选项,左边的评价参数便会实时更新。下面介绍这六个配置模板。

    ---最小面积(Minimum Area):软核提供的最小架构。没有缓存和调试。

    ---最强性能(Maximum Performance):可能的最大性能。拥有很大的缓存和调试,拥有所有的执行单元。

    ---最高频率(Maximum Frequency):可能的最高频率。小缓存,没有调试,一部分执行单元。

    ---带有MMU的Linux(Llinx with MMU):当运行带有MMU的linux时,能够获得高性能的设置。内存管理使能,大的缓存和调试,所有的执行单元。

    ---低端的带有MMU的Linux:...内存管理使能,小的缓存和调试。

    ---典型:在性能、面积、频率中取了折中。适合脱机程序,低开销内核。有缓存和调试功能。

     

    一般设置

    如果模板没有选择,也可以在页面中,根据项目需求,进行选项配置。当你把鼠标放在选项上时,会出现一个提示,告诉你它有什么用。下面详细介绍这些选项。

    ---Select implemention to optimize area(with lower instruction throughput):使能面积优化功能。如果选了这个,implementation就会优化面积,尤其是减少流水线数量,从5条减少到3条。(推荐:建议在资源比较紧张的架构,如Artix-7,使能这个选项。然而,如果对性能有敏感的要求,就不要选这个选项,因为一些指令需要额外的时钟周期去执行。另外,对于MMU, Branch Target Cache, Instruction Cache Streams, Instruction Cache Victims, Data Cache Victims, ACE是不能进行面积优化的。)

    ---Enable MicroBlaze Debug Module Interface:使能调试功能。用Xilinx Microprocessor Debugger来下载、调试程序。(推荐:除非面积资源奇缺,否则不要禁止这个功能。)

    ---Use Instruction and Data Caches:当执行放在LMB之外的程序的时候,可以使用指令缓存来改善性能。指令缓存有如下特点:....当使用外部存储时,激活这个选项可以明显地改善性能,即使这个缓存很小。

    ---Enable Exceptions:当使用一个支持异常的操作系统时,需要激活这个选项。或者在一个单独的程序中添加异常回调函数。

    ---Use Memory Management:当使用一个支持虚拟内存保护的操作系统时(如Linux),需要激活。(当你使能面积优化或者堆栈保护功能时,内存管理单元是不可见的,自动禁止)

    ---Enable Discrete Ports:使能软核上的独立端口。

     

    第二页(General)

    1、指令(Instructions)

    ---使能桶型移位器(Enable Barrel Shifter):使能软核中的筒形移位器硬件。激活这个参数,就可以使用如下指令(bsrl,bsra,...)使能这个可以提高应用的性能,但是会增大软核的尺寸。如果激活,编译器会自动使用筒形移位器指令。

    ---使能浮点单元(Enable Floating Point Unit):使能一个单精度浮点单元(FPU)。使用FPU可以明显地提高应用的单精度浮点性能,同时也会增大软核的尺寸。

    ---使能整形乘法器(Enable Integer Multiplier):使能一个整形乘法器硬件。若激活,则可以在给MUL32赋值时,使用mul和muli指令。当给MUL64赋值时,使用mulh,mulhu,mulhsu指令。这个参数可以设置为NONE,可以把MUL或者DSP48释放,用作其他用途。这样做对软核的面积影响很小。当使用这个选项,编译器自动使用mul指令。

    ---使能整形触发器(Enable Integer Divider):使能一个整形除法器硬件。若激活,可以使用idiv,iduvu指令。使能这个选项可以提高应用中的除法性能,但是增大了软核的尺寸。当使用这个选项,编译器自动使用idiv指令。

    ---使能额外机器状态寄存器指令(Enable Additional Machine Status Register Instructions):若激活,则可以读写MSR,使用msrset和msrclr命令。可以提高访问MSR的性能。

    ---使能模式比较器(Enable Pattern Comparator):如激活,则可以使用模式匹配指令pcmpbf,pcmpeq,pcmpne。模式匹配字节查找指令(pattern comparator byte find, pcmpbf)返回找到的第一个字节的位置,提高字符串和模式匹配操作的效率。若使能,SDK库会自动使用这个指令。pcmfeq和pcmpne指令根据两个字是否相同,返回1或者0。这些指令会提高setting flags的效率,编译器会自动使用它们。激活这个选项还可以count leading zeros指令,clz。clz指令能提高优先级编码的效率。

    ---使能保留的加载/保存和交换指令(Enable Reserved Load/Store and Swap Instructions):lbur,lhur,lwr,sbr,shr,swr,swapb,和swaph。这些指令能够以相对的字节序来读写数据,交换指令能交换字节或者半个字长。当用little-endian的MicroBlaze访问big-endian的网络时,可以提高效率。

    ---使能额外的流命令(Enable Additional Stream Instructions):当使用AXI4-Stream链接时,提供额外的功能。这包括动态访问指令GETD和PUTD,这两个指令用寄存器来选择接口。(重要:一定要激活流异常功能,才能使用这些指令,而且知道选择一个流链接)

    2、优化

    选择Implementation来优化面积(当指令吞吐量很低时):这个选项和欢迎页的选项功能相同。...

    3、容错

    ---使能容错功能(Enable Fault Tolerance Support)

     

    第三页(异常)

    1、数学异常(Math Exceptions)

    ---使能浮点单元异常

    ---使能整形除法异常

    2、总线异常(Bus Exceptions)

    ---使能指令端AXI异常

    ---使能数据段AXI异常

    3、其他异常(Other Exceptions)

    ---使能非法指令异常

    ---使能Unaligned数据异常

    ---产生非法指令异常,除了NULL指令

    ---使能流异常

    ---使能堆栈保护

     

    第四页(缓存)

    第五页(MMU)

    第六页(调试)

    第七页(总线)

    1、本地内存总线接口(LMB)

    2、AXI和ACE接口

    3、流接口

    4、其他接口

     

    四、MicroBlaze处理器的交叉触发特性

    当使能basic debugging,交叉触发功能有两个信号提供:DBG_STOP和MB_Halted。

    ---当DBG_STOP输入为1,MicroBlaze会在几条指令后暂停。XMD检测到MicroBlaze暂停了,并记录暂停的位置。这个信号可以被任何外部的事件用来暂停软核,例如当一个集成逻辑分析器(ILA)被触发。

    ---MB_Halted输出信号为1,当MicroBlaze暂停的时候,例如碰到一个断点或者观察点,执行了一条XMD停止指令之后,或者当DBG_STOP被置1。当通过XMD命令重新启动软核时,输出清0。

    这两个引脚是隐藏的,除非在欢迎页中使能显示独立端口(Show Discrete Ports)。

     

    你也可以使用MB_Halted信号来触发一个集成逻辑分析器,或者在多核系统中,暂停其他MicroBlaze软核(连接到它们的DBG_STOP端)。

    当启动扩展调试功能时,交叉触发功能可以和MDM一起使用。MDM在所有连接的处理器中,提供可编程的交叉触发功能,包括外部触发的输入端和输出端。可以查阅MicroBlaze Debug Module Product Guide手册查看细节。

    MicroBlaze最多支持8个交叉触发动作。交叉触发动作由相对应的MDM交叉触发输出产生,两者通过调试总线连接。

    可以有两个地方设置扩展调试功能:一个是前面提到的调试配置页,另一个是在运行MicroBlaze的Block Antomation时,选择该功能。

    另外,还要在MDM模块的配置页中,使能交叉触发功能(Enable Cross Trigger)。MDM模块可以最多配置4组外部触发的输入和输出。

    最后,运行Connection Automation,连接交叉触发信号到ILA(ILA教程)。

    ...

     

     

    五、自定义逻辑

    Vivado的IP管理器允许用户和第三方IP核开发者将自定义的IP核添加到Vivado的IP核目录中。这样用户就能在Vivado中实例化第三方IP核了。

    当IP开发者使用Vivado的IP管理器打包IP核时,IP的使用者对xilinx提供的IP核,还是第三方IP,亦或用户定义的IP,都有一样的使用体验。

    IP开发者可以使用IP管理器打包IP文件,并把数据放入ZIP文件。IP使用者接收这个ZIP文件,安装到Vivado的IP目录中,然后用户就可以使用这个IP核了。

    推荐:为了保证IP核的质量,建议IP开发者在用用户的使用工作流中运行每一个IP核,确保每个IP核都是可用的。

     

     

    六、完成连接(Completing Connections)

    当你配置完了MicroBlaze处理器,就可以开始实例化其他IP核,继续你的设计。

    在Canvas(放置Block的面板)上,右击,选择Add IP。

    你可以使用两个内置的特性来完成子系统剩余部分的IP核设计:Block Automation和Conncetions Automation,帮助你放置一个基本的微处理器系统,并且/或者连接端口到外部I/O口。

    Block Automation

    当block design中实例化了一个ZYNQ7处理系统或者MicroBlaze处理器时,Block Automation功能就可以使用。

    1、点击Run Block Automation,帮助你完成一个简单的MicroBlaze系统。

    Run Block Automation对话框提供了一个微处理器系统必需的基本特性。

    2、单击OK。

    Using Connection Automation

    当IP集成工具发现canvas上的IP实例化之间,存在可能的连接时,它会打开Connection Automation功能。

    例如,我另外添加了两个IP核,GPIO和Uartlite。IP集成工具会决定一下连接:

    ---处理器的ext_reset_in引脚必须连接到一个复位源,复位源可以是内部的复位源,或者是外部输入引脚。

    ---时钟模块的CLK_IN_1_D引脚必须连接到一个内部时钟源,或者外部输入引脚。

    ---AXI GPIO的s_axi必须接到一个主机的AXI接口上。

    ---AXI GPIO的核心gpio必须接到外部的IO引脚。

    ---Uartlite的s_axi必须接到一个主机的AXI接口上。

    ---Uartlite的uart必须接到外部引脚上。

     

    Using Board Automation

    当使用像KC705这种刁刁的板子的时候,Vivado提供了Board Automation(像我这种撑死只有Nexys4的屌丝,只能......怒略一记)

     

     

    Manual Connections in an IP Integrator Design

    (译者注:一般连线方式,可以手动连接,类似于AD画板子软件里的那种)

    Manual Creating and Connecting to I/O Ports

    你可以在IP工具中创建外部IO端口。你可以选择信号或者接口到外部的IO端口,通过选择一个引脚,总线或者接口连接。

    具体办法是,在模块的引脚接口处,右击。在弹出的菜单中,选择:

    ---Make External.可以用多选操作(Ctrl+Click)选择多个端口。这个命令的作用是连接模块上的引脚到外部引脚。

    startgroup
    create_bd_intf_port -mode Master -vlnv xilinx.com:interface:gpio_rtl:1.0 GPIO
    connect_bd_intf_net [get_bd_intf_pins axi_gpio_0/GPIO] [get_bd_intf_ports GPIO]
    endgroup

    (这是该操作的tcl命令,第一句话是创建端口,第二句话是连接)

     

    ---Create Port.对非信号接口使用该命令,如clock,reset,或者uart_txd.创建的时候,可以设定很多参数,比如输出/输出,位宽,类型等等。如果是时钟,需要指定它的频率。

    startgroup
    create_bd_port -dir I -type clk aa
    set_property CONFIG.FREQ_HZ 100000000 [get_bd_ports aa]
    endgroup

    (这是该操作的tcl命令,第一句话是创建端口,第二句话是设置参数)

     

    ---Create Interface Port。对同一个功能的一组信号接口创建此类端口。例如,S_AXI是一些Xilinx IP的接口端口。这个接口还可以指定接口的类型和模式(主机还是从机)。

     

    Memory Mapping in Address Editor

    产生地址映射的方法如下:

    1、单击Address Editor。

    2、单击左边的Auto Assign Address按钮。(按钮在左侧)

    如果你从IP框图产生RTL代码时没有第一次生成地址,会弹出一个提示框,提供一个自动分配地址的工具。

    你也可以在Offset Address和Range两类输入值,来设置地址。只有当IP框图中包含一个总线主机的IP核(例如ZYNQ7)时,Address Editor才会打开。

     

    Running Design Rule Checks

    Vivado实时进行设计规则检查。然而,错误总是会发生。例如,时钟引脚上的频率也许没有设置正确。

    如果要运行一个全面的检查,可以单击Validate Design。

     

    Integrating a Block Design in the Top-Level Design

    完成了上面的步骤后,还有两个步骤需要做:

    ---产生输出文件

    ---创建HDL封装

    在项目的源文件窗口创建文件。文件类型取决于项目新建时是verilog还是vhdl。具体方法如下:

    1、在Block Design面板下,展开Design Source,选择Generate Output Products。

    2、在左侧的工作流面板中的IP工具下,单击Generate Block Design.

    你可以在一个高层次设计中集成一个IP block。这样做的方法是,在高层次的HDL文件中,实例化这个Block设计。

     

    为了实例化一个更高的层次,在Block Design面板中的Design Sources中,右键design,选择创建HDL封装。

    Vivado提供了两种创建HDL封装的方法:

    ---Vivado新建并自动更新封装,这是默认选项。

    ---创建一个用户可修改的脚本,这个脚本可以修改和保存。如果你选择了这个,那你每次如果修改了block design中的端口,都需要修改手动更新封装。

     

    到这里,你已经为你的IP设计做好了HDL封装,可以进行后面的步骤了。

     

    MicroBlaze处理器约束

    IP工具已经在产生输出文件时,为IP核创建了约束文件;然而,你必须为自定义的IP或者更高层次的代码设置约束。

    一组约束,是XDC文件中的包含了设计约束的集合。有两种约束:

    ---物理约束。定义了引脚放置,以及元胞(BRAM, LUT, Flip Flop)的绝对或者相对位置,还有器件的配置。

    ---时序约束。遵循SDC业界标准,定义了设计的频率要求。如果没有时序约束,Vivado仅仅会优化线宽和布线拥堵。(如果没有时序约束,Vivado的implementation就无法提高设计的性能。Vivado不支持UCF格式的约束)

     

    关于时序约束,下面多说两句:

    你有几种使用约束集合的方法:

    ---一个约束集合中有多个约束文件

    ---多个约束集合,然而在分开的文件夹中。

    ---一个主约束文件,设计中的改变存于一个新的约束文件夹中。

    ---...

    按功能,分开约束文件,有利于你从宏观更清楚地把握约束策略,有利于应对时序和实现过程中的变化。

    约束水太深,又太重要,详情查看官方文档。Vivado Design Suite User Guide: Using Constraints

     

    当你完成了设计,也约束完了,现在可以进行合成、实现、生成bit流了。

    然后,就可以导入硬件到SDK了。具体方法是:

    File->Export->Export Hardware for SDK,弹出对话框,提供一些选择选项。你可以导出硬件定义和比特流,并打开SDK。然后,就可以开始编写软件了。

    或者,你也可以从SDK把elf文件导入到Vivado。

    转载:http://blog.csdn.net/DuinoDu/article/details/46723181

     

    转载于:https://www.cnblogs.com/limanjihe/p/9884991.html

    展开全文
  • ALINX基于VivadoMicroBlaze基础教程.pdf
  • 目录 一、创建带有MicroBlaze处理器的IP设计 二、开始IP综合设计(步骤) 三、MicroBlaze配置窗口(配置窗口说明) 第一页(Welcome Page) 第二页(General) ...四、MicroBlaze处理器的交叉...使用Vivado进行Micr

    目录

    一、创建带有MicroBlaze处理器的IP设计

    二、开始IP综合设计(步骤)

    三、MicroBlaze配置窗口(配置窗口说明)

    第一页(Welcome Page)

    第二页(General)

    第三页(异常)

    第四页(缓存)

    第五页(MMU)

    第六页(调试)

    第七页(总线)

    四、MicroBlaze处理器的交叉触发特性

    五、自定义逻辑

    六、完成连接(Completing Connections)


    一、创建带有MicroBlaze处理器的IP设计

    使用Vivado进行MicroBlaze设计和使用ISE有很大的不同。(译者加:所以你要仔细看下面的说明)
    Vivado IDE使用IP综合设计工具进行嵌入式开发。IP综合工具是一个基于图像界面的工具,能够帮助你构建复杂的IP子系统。
    Vivado IDE的IP目录中提供了很多现成的IP核,提供使用。你也可以向这个目录添加自定义的IP核。

    二、开始IP综合设计(步骤)

    1、在工作流导向面板中的IP Integrator中,点击Create Block Design。(表示你要开始构建带有IP核的框图了)
    2、Add IP,找到MicroBlaze,添加到Block中。
    (当然,也可以用tcl命令添加IP核:create_bd_cell -type ip -vlnv xilinx.com:ip:microblaze:9.3 microblaze_0)
    3、双击MicroBlaze的Block,开始配置软核。

    三、MicroBlaze配置窗口(配置窗口说明)

    MicroBlaze的配置向导提供如下功能:
    ---可一键配置的基于模板的配置对话框
    ---MicroBlaze主要参数的评估:相对面积,频率,性能表现,评估是基于对话框中给定的参数。
    ---配置流程的向导
    ---所有配置选项的提示,用来理解各个选项的作用
    ---使用Adaanced按钮,可以直接访问tabbed接口的所有选项。

    MicroBlaze配置向导提供如下向导页:
    ---配置向导(ConfiguraTIon Wizard):第一页,提供模板选择和一般设置。
    ---一般设置(General):执行单元的选择,优化。
    ---异常(ExcepTIons):异常功能的使能。(如果在第一页选中了该功能)
    ---调试(Debug):断点和查看点的数量。(如果在第一页选中了该功能)
    ---缓存(Cache):缓存设置。(如果在第一页选中了该功能)
    ---内存管理单元(MMU):MMU设置。(如果在第一页选中了该功能)
    ---总线(Buses):总线设置。最后一页,总是显示。

    在配置向导的欢迎页中,左边显示的是当前设置的频率、面积和性能的相对评估值。
    频率:这个值是用当前架构的最大值进行归一化取得相对值。表示当前设置能够达到的频率。(这个值可能会比实际的值超过30%,不要把这个估计值当做系统一定能达到的频率的保证。)
    面积:这个值表示LUT数量,用当前架构的最大值进行归一化取得相对值。...(...5%...)
    性能:当前设置下的相对性能估计。
    BRAMs:(Vivado 2015.1中没找见)
    DSP48或者MULT18:(Vivado 2015.1中没找见)

    第一页(Welcome Page)

    使用配置向导最简单的办法便是,使用六个配置模板中的一个,每一个配置模板都是一个完整的配置方案。你可以使用模板作为自己配置的起点,再修改模板给定的设置。每当你修改一个选项,左边的评价参数便会实时更新。下面介绍这六个配置模板。
    ---最小面积(Minimum Area):软核提供的最小架构。没有缓存和调试。
    ---最强性能(Maximum Performance):可能的最大性能。拥有很大的缓存和调试,拥有所有的执行单元。
    ---最高频率(Maximum Frequency):可能的最高频率。小缓存,没有调试,一部分执行单元。
    ---带有MMU的Linux(Llinx with MMU):当运行带有MMU的linux时,能够获得高性能的设置。内存管理使能,大的缓存和调试,所有的执行单元。
    ---低端的带有MMU的Linux:...内存管理使能,小的缓存和调试。
    ---典型:在性能、面积、频率中取了折中。适合脱机程序,低开销内核。有缓存和调试功能。

    一般设置
    如果模板没有选择,也可以在页面中,根据项目需求,进行选项配置。当你把鼠标放在选项上时,会出现一个提示,告诉你它有什么用。下面详细介绍这些选项。
    ---Select implemenTIon to opTImize area(with lower instruction throughput):使能面积优化功能。如果选了这个,implementation就会优化面积,尤其是减少流水线数量,从5条减少到3条。(推荐:建议在资源比较紧张的架构,如Artix-7,使能这个选项。然而,如果对性能有敏感的要求,就不要选这个选项,因为一些指令需要额外的时钟周期去执行。另外,对于MMU, Branch Target Cache, Instruction Cache Streams, Instruction Cache Victims, Data Cache Victims, ACE是不能进行面积优化的。)
    ---Enable MicroBlaze Debug Module Interface:使能调试功能。用Xilinx Microprocessor Debugger来下载、调试程序。(推荐:除非面积资源奇缺,否则不要禁止这个功能。)
    ---Use Instruction and Data Caches:当执行放在LMB之外的程序的时候,可以使用指令缓存来改善性能。指令缓存有如下特点:....当使用外部存储时,激活这个选项可以明显地改善性能,即使这个缓存很小。

    一般这两个缓存cache在MicroBlaze内部集成了,通过AXI_DC和AXI_IC管理DDR内存里面的指令和数据代码。如下图:


    ---Enable Exceptions:当使用一个支持异常的操作系统时,需要激活这个选项。或者在一个单独的程序中添加异常回调函数。
    ---Use Memory Management:当使用一个支持虚拟内存保护的操作系统时(如Linux),需要激活。(当你使能面积优化或者堆栈保护功能时,内存管理单元是不可见的,自动禁止)
    ---Enable Discrete Ports:使能软核上的独立端口

    第二页(General)

    1、指令(Instructions)
    ---使能桶型移位器(Enable Barrel Shifter):使能软核中的筒形移位器硬件。激活这个参数,就可以使用如下指令(bsrl,bsra,...)使能这个可以提高应用的性能,但是会增大软核的尺寸。如果激活,编译器会自动使用筒形移位器指令。
    ---使能浮点单元(Enable Floating Point Unit):使能一个单精度浮点单元(FPU)。使用FPU可以明显地提高应用的单精度浮点性能,同时也会增大软核的尺寸。
    ---使能整形乘法器(Enable Integer Multiplier):使能一个整形乘法器硬件。若激活,则可以在给MUL32赋值时,使用mul和muli指令。当给MUL64赋值时,使用mulh,mulhu,mulhsu指令。这个参数可以设置为NONE,可以把MUL或者DSP48释放,用作其他用途。这样做对软核的面积影响很小。当使用这个选项,编译器自动使用mul指令。
    ---使能整形除法器(Enable Integer Divider):使能一个整形除法器硬件。若激活,可以使用idiv,iduvu指令。使能这个选项可以提高应用中的除法性能,但是增大了软核的尺寸。当使用这个选项,编译器自动使用idiv指令。
    ---使能额外机器状态寄存器指令(Enable Additional Machine Status Register Instructions):若激活,则可以读写MSR,使用msrset和msrclr命令。可以提高访问MSR的性能。
    ---使能模式比较器(Enable Pattern Comparator):如激活,则可以使用模式匹配指令pcmpbf,pcmpeq,pcmpne。模式匹配字节查找指令(pattern comparator byte find, pcmpbf)返回找到的第一个字节的位置,提高字符串和模式匹配操作的效率。若使能,SDK库会自动使用这个指令。pcmfeq和pcmpne指令根据两个字是否相同,返回1或者0。这些指令会提高setting flags的效率,编译器会自动使用它们。激活这个选项还可以count leading zeros指令,clz。clz指令能提高优先级编码的效率。
    ---使能保留的加载/保存和交换指令(Enable Reserved Load/Store and Swap Instructions):lbur,lhur,lwr,sbr,shr,swr,swapb,和swaph。这些指令能够以相对的字节序来读写数据,交换指令能交换字节或者半个字长。当用little-endian的MicroBlaze访问big-endian的网络时,可以提高效率。
    ---使能额外的流命令(Enable Additional Stream Instructions):当使用AXI4-Stream链接时,提供额外的功能。这包括动态访问指令GETD和PUTD,这两个指令用寄存器来选择接口。(重要:一定要激活流异常功能,才能使用这些指令,而且知道选择一个流链接)

    2、优化
    选择Implementation来优化面积(当指令吞吐量很低时):这个选项和欢迎页的选项功能相同。...

    3、容错
    ---使能容错功能(Enable Fault Tolerance Support)

    第三页(异常)

    1、数学异常(Math Exceptions)
    ---使能浮点单元异常
    ---使能整形除法异常
    2、总线异常(Bus Exceptions)
    ---使能指令端AXI异常
    ---使能数据段AXI异常
    3、其他异常(Other Exceptions)
    ---使能非法指令异常
    ---使能Unaligned数据异常
    ---产生非法指令异常,除了NULL指令
    ---使能流异常
    ---使能堆栈保护

    第四页(缓存)


    第五页(MMU)


    第六页(调试)


    第七页(总线)

    1、本地内存总线接口(LMB)

    数据和指令也可存储在本地小的内存里面,通过LMB接口访问,在生成IP的时候需要选择DLMB和ILMB存储器的大小,越大可能性能越高。


    2、AXI和ACE接口
    3、流接口
    4、其他接口

    四、MicroBlaze处理器的交叉触发特性

    当使能basic debugging,交叉触发功能有两个信号提供:DBG_STOP和MB_Halted。
    ---当DBG_STOP输入为1,MicroBlaze会在几条指令后暂停。XMD检测到MicroBlaze暂停了,并记录暂停的位置。这个信号可以被任何外部的事件用来暂停软核,例如当一个集成逻辑分析器(ILA)被触发。
    ---MB_Halted输出信号为1,当MicroBlaze暂停的时候,例如碰到一个断点或者观察点,执行了一条XMD停止指令之后,或者当DBG_STOP被置1。当通过XMD命令重新启动软核时,输出清0。

    这两个引脚是隐藏的,除非在欢迎页中使能显示独立端口(Show Discrete Ports)。

    你也可以使用MB_Halted信号来触发一个集成逻辑分析器,或者在多核系统中,暂停其他MicroBlaze软核(连接到它们的DBG_STOP端)。
    当启动扩展调试功能时,交叉触发功能可以和MDM一起使用。MDM在所有连接的处理器中,提供可编程的交叉触发功能,包括外部触发的输入端和输出端。可以查阅MicroBlaze Debug Module Product Guide手册查看细节。

    MicroBlaze最多支持8个交叉触发动作。交叉触发动作由相对应的MDM交叉触发输出产生,两者通过调试总线连接。

    可以有两个地方设置扩展调试功能:一个是前面提到的调试配置页,另一个是在运行MicroBlaze的Block Antomation时,选择该功能。
    另外,还要在MDM模块的配置页中,使能交叉触发功能(Enable Cross Trigger)。MDM模块可以最多配置4组外部触发的输入和输出。
    最后,运行Connection Automation,连接交叉触发信号到ILA(ILA教程)。
    ...

    五、自定义逻辑

    Vivado的IP管理器允许用户和第三方IP核开发者将自定义的IP核添加到Vivado的IP核目录中。这样用户就能在Vivado中实例化第三方IP核了。
    当IP开发者使用Vivado的IP管理器打包IP核时,IP的使用者对xilinx提供的IP核,还是第三方IP,亦或用户定义的IP,都有一样的使用体验。
    IP开发者可以使用IP管理器打包IP文件,并把数据放入ZIP文件。IP使用者接收这个ZIP文件,安装到Vivado的IP目录中,然后用户就可以使用这个IP核了。

    推荐:为了保证IP核的质量,建议IP开发者在用用户的使用工作流中运行每一个IP核,确保每个IP核都是可用的。

    六、完成连接(Completing Connections)

    当你配置完了MicroBlaze处理器,就可以开始实例化其他IP核,继续你的设计。
    在Canvas(放置Block的面板)上,右击,选择Add IP。
    你可以使用两个内置的特性来完成子系统剩余部分的IP核设计:Block Automation和Conncetions Automation,帮助你放置一个基本的微处理器系统,并且/或者连接端口到外部I/O口。

    Block Automation
    当block design中实例化了一个ZYNQ7处理系统或者MicroBlaze处理器时,Block Automation功能就可以使用。

    1、点击Run Block Automation,帮助你完成一个简单的MicroBlaze系统。
    Run Block Automation对话框提供了一个微处理器系统必需的基本特性。

    2、单击OK。
    Using Connection Automation
    当IP集成工具发现canvas上的IP实例化之间,存在可能的连接时,它会打开Connection Automation功能。
    例如,我另外添加了两个IP核,GPIO和Uartlite。IP集成工具会决定一下连接:
    ---处理器的ext_reset_in引脚必须连接到一个复位源,复位源可以是内部的复位源,或者是外部输入引脚。
    ---时钟模块的CLK_IN_1_D引脚必须连接到一个内部时钟源,或者外部输入引脚。
    ---AXI GPIO的s_axi必须接到一个主机的AXI接口上。
    ---AXI GPIO的核心gpio必须接到外部的IO引脚。
    ---Uartlite的s_axi必须接到一个主机的AXI接口上。
    ---Uartlite的uart必须接到外部引脚上。

    Using Board Automation
    当使用像KC705这种刁刁的板子的时候,Vivado提供了Board Automation(像我这种撑死只有Nexys4的屌丝,只能......怒略一记)

    Manual Connections in an IP Integrator Design
    (译者注:一般连线方式,可以手动连接,类似于AD画板子软件里的那种)

    Manual Creating and Connecting to I/O Ports
    你可以在IP工具中创建外部IO端口。你可以选择信号或者接口到外部的IO端口,通过选择一个引脚,总线或者接口连接。

    具体办法是,在模块的引脚接口处,右击。在弹出的菜单中,选择:
    ---Make External.可以用多选操作(Ctrl+Click)选择多个端口。这个命令的作用是连接模块上的引脚到外部引脚。
    startgroup
    create_bd_intf_port -mode Master -vlnv xilinx.com:interface:gpio_rtl:1.0 GPIO
    connect_bd_intf_net [get_bd_intf_pins axi_gpio_0/GPIO] [get_bd_intf_ports GPIO]
    endgroup
    (这是该操作的tcl命令,第一句话是创建端口,第二句话是连接)

    ---Create Port.对非信号接口使用该命令,如clock,reset,或者uart_txd.创建的时候,可以设定很多参数,比如输出/输出,位宽,类型等等。如果是时钟,需要指定它的频率。
    startgroup
    create_bd_port -dir I -type clk aa
    set_property CONFIG.FREQ_HZ 100000000 [get_bd_ports aa]
    endgroup
    (这是该操作的tcl命令,第一句话是创建端口,第二句话是设置参数)

    ---Create Interface Port。对同一个功能的一组信号接口创建此类端口。例如,S_AXI是一些Xilinx IP的接口端口。这个接口还可以指定接口的类型和模式(主机还是从机)。

    Memory Mapping in Address Editor

    产生地址映射的方法如下:
    1、单击Address Editor。
    2、单击左边的Auto Assign Address按钮。(按钮在左侧)

    如果你从IP框图产生RTL代码时没有第一次生成地址,会弹出一个提示框,提供一个自动分配地址的工具。
    你也可以在Offset Address和Range两类输入值,来设置地址。只有当IP框图中包含一个总线主机的IP核(例如ZYNQ7)时,Address Editor才会打开。

    Running Design Rule Checks
    Vivado实时进行设计规则检查。然而,错误总是会发生。例如,时钟引脚上的频率也许没有设置正确。
    如果要运行一个全面的检查,可以单击Validate Design。

    Integrating a Block Design in the Top-Level Design
    完成了上面的步骤后,还有两个步骤需要做:
    ---产生输出文件
    ---创建HDL封装

    在项目的源文件窗口创建文件。文件类型取决于项目新建时是verilog还是vhdl。具体方法如下:
    1、在Block Design面板下,展开Design Source,选择Generate Output Products。
    2、在左侧的工作流面板中的IP工具下,单击Generate Block Design.
    你可以在一个高层次设计中集成一个IP block。这样做的方法是,在高层次的HDL文件中,实例化这个Block设计。

    为了实例化一个更高的层次,在Block Design面板中的Design Sources中,右键design,选择创建HDL封装。

    Vivado提供了两种创建HDL封装的方法:
    ---Vivado新建并自动更新封装,这是默认选项。
    ---创建一个用户可修改的脚本,这个脚本可以修改和保存。如果你选择了这个,那你每次如果修改了block design中的端口,都需要修改手动更新封装。

    到这里,你已经为你的IP设计做好了HDL封装,可以进行后面的步骤了。

    MicroBlaze处理器约束
    IP工具已经在产生输出文件时,为IP核创建了约束文件;然而,你必须为自定义的IP或者更高层次的代码设置约束。
    一组约束,是XDC文件中的包含了设计约束的集合。有两种约束:
    ---物理约束。定义了引脚放置,以及元胞(BRAM, LUT, Flip Flop)的绝对或者相对位置,还有器件的配置。
    ---时序约束。遵循SDC业界标准,定义了设计的频率要求。如果没有时序约束,Vivado仅仅会优化线宽和布线拥堵。(如果没有时序约束,Vivado的implementation就无法提高设计的性能。Vivado不支持UCF格式的约束)

    关于时序约束,下面多说两句:
    你有几种使用约束集合的方法:
    ---一个约束集合中有多个约束文件
    ---多个约束集合,然而在分开的文件夹中。
    ---一个主约束文件,设计中的改变存于一个新的约束文件夹中。
    ---...
    按功能,分开约束文件,有利于你从宏观更清楚地把握约束策略,有利于应对时序和实现过程中的变化。
    约束水太深,又太重要,详情查看官方文档。Vivado Design Suite User Guide: Using Constraints

    当你完成了设计,也约束完了,现在可以进行合成、实现、生成bit流了。

    然后,就可以导入硬件到SDK了。具体方法是:
    File->Export->Export Hardware for SDK,弹出对话框,提供一些选择选项。你可以导出硬件定义和比特流,并打开SDK。然后,就可以开始编写软件了。或者,你也可以从SDK把elf文件导入到Vivado。


    1.本文部分素材来源网络,版权归原作者所有,如涉及作品版权问题,请与我联系删除。

    2.未经原作者允许不得转载本文内容,否则将视为侵权;

    3.转载或者引用本文内容请注明来源及原作者;

    4.对于不遵守此声明或者其他违法使用本文内容者,本人依法保留追究权等。

    下面是我的个人微信公众号,关注【一个早起的程序员】精彩系列文章每天不断。

    展开全文
  • vivadomicroblaze程序固化下载

    千次阅读 2019-05-17 14:16:05
    vivado版本:2016.4 FPGA:XC7A100T-fgg484 FLASH:N25Q128-3.3V-SPI-X1_X2_X4 FPGA程序固化下载流程: 1、vivado中生成XXX.bit文件,program Device. 2、Export Hardware platform,打开SDK\Tools\program FPGA,在...
  • FPGA硬件逻辑独有的并行性使其在... 下面描述怎么搭建一个最小的microblaze软核,以及各个模块的意义。 create block design,添加microblaze软核。 配置添加microblaze之后,点击 run block automation 这里...
  • Vivado下使用Microblaze控制LED

    千次阅读 2017-03-30 22:10:59
    Vivado 版本 2016.3 之前觉得控制个LED很简单,但实现起来不是很顺利,简单Mark一记。 例化microblaze,led IP 核,自动连接,自动生成的时钟是差分对,可以直接双击clock IP把差分改为单端,之前碰到这个问题然后...
  • vivadoMicroblaze软核led测试

    千次阅读 2013-09-03 11:35:18
    新建工程:打开vivado软件,新建工程,选择xc7v2000t1925-1芯片。 2、  添加嵌入式microblaze核: 选中Design Sources选项,右击,选择add sources,出现如下对话框, 选择next, 创建Create Sub-...
  • https://blog.csdn.net/HHL334417/article/details/90292177
  • 非常详细地介绍基于ViVado搭建硬件平台来讲解EDK的使用,让你快速的掌握ViVado下的硬核搭建和EDK开发环境。
  • Vivado2018.2开发的FPGA例程,XC7K325T-2FFG676I,使用Microblaze软核,SDK Standalone C程序,V22 为 LED 管脚,AB11 AC11 为差分200Mhz 晶振输入,复位键为AF25.
  • FPGA中植入的软核是软IP,是以...下面以xilinx的软核——MicroBlaze作为例子,讲解如何查看RTL电路。第一步:打开xilinx的开发工具,本例中使用vivado14.2版本,新建工程。第二步:在左侧IP Integrator栏下选择Creat...
  • Vivado软核microblaze用gpio控制led 软件版本:vivado2017.2 芯片型号:xc7a35tcsg325-2 AXI通用输入/输出(GPIO)核心提供了一般性AXI的目的输入/输出接口。 优点:操作简便 缺点:速度慢 然后介绍下AXI GPIO...
  • Vivado/SDK实现microblaze的一些总结

    千次阅读 2013-11-22 11:11:26
    1. 可以在vivado中通过block diagram生成microblaze的硬件,注意Xilinx提供了一个microblaze的例子,如果有问题可以参考这个例子来实现; 2. 画好bd以后,先保存,然后verify,然后保存,然后点“生成bitstram”...
  • Vivado_MicroBlaze_问题及解决方法_汇总(不定时更新) 标签:Vivado 2015-07-03 14:354453人阅读评论(0)收藏举报 分类: 硬件(14) 版权声明:本文为博主原创文章,未经博主允许不得转载。 ...
  • 选择的板子是ZYBO,如果没有找到板子的话,则需要到vivado的安装mulxia替换下面的文件,使之包括该型号的板子 下面开始正式工程的配置。 点击Create Block Design创建一个IP,然后出现下面的界面 点击图中的加号,...
  • arty a7是基于Artix-7 FPGA设计的开发平台,具有丰富的Pmod接口,扩展性较强,搭建...基于microblazevivado开发流程 以下是在vivado2017.4_MicroBlaze_ArtyA735t上的开发流程 新建工程 注:路径不要有中文名,电
  • 目前,xilinx的zynq系列FPGA炒的火热,SOC成为FPGA发展的必然趋势。可见所有功能均用硬件描述语言设计是不科学的。硬件逻辑独有的并行性使其在实时处理...但相比硬核,microblaze可移植性较强,性能要求不高的场合下还
  • 打开vivado,左侧功能区选择Quick Start-->Create Project; 选择RTL Project 选择当前的器件: 搭建硬件平台 在左侧功能区中选择 IP INTEGRATOR-->CreateBlockDesign 右侧窗口出现一个...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 132
精华内容 52
关键字:

microblazevivado