将MicroBlaze处理器添加到块设计中
在建设中
Microblaze软核处理器IP可用于在FPGA设计中实例化处理器。这个处理器对于控制和配置硬件组件非常有用。本节讨论如何将Microblaze处理器和几个有用的组件添加到块设计中,包括用于标准输出的UART和DDR内存支持。
注意:本节适用于没有Zynq芯片的单板。
用于将处理器添加到设计中的工作流因设计是否包含DDR内存而有所不同。一些板没有DDR内存,这可以从Vivado的DDR接口的缺乏看出董事会选项卡。对于这些板,遵循DDR-less流程。对于那些确实有DDR的董事会来说,问题更为复杂。一些软件设计需要比FPGA的块更大的内存内存.建议使用DDR提供的额外内存启动,并在稍后将其删除,如果不需要,则将其从设计中删除。
- Microblaze无DDR内存
-
在里面运行连接自动化对话框,在对话框左侧的列表中,确保时钟向导的重置框被选中。的选择单板部件接口下拉列表中列出了在你的董事会文件中指定的任何重置选项。对于大多数董事会来说,只有一种选择。点击行接着说。
注意:根据复位按钮的极性(主动高或主动低),a实用程序矢量逻辑IP可能在重置端口和时钟向导之间插入。这是用来确保IP的主动高复位引脚提供了复位信号的正确极性,并且当复位按钮没有被按下时,设计将不会在复位中保持。
您的设计至少需要一个时钟向导提供的时钟。如果您的设计需要更多的时钟,那么必须通过时钟向导添加它们。
双击时钟向导IP核以编辑其设置。导航到输出时钟选项卡。中的复选框可将其他时钟添加到时钟向导中输出时钟列,并指定请求的输出频率.此外,如果需要,可以根据它们的预期用途来命名端口。
如果您的设计需要其他时钟(例如ext_spi_clock引脚),则会在此处添加它们。您可以始终返回添加或修改设计的时钟。
点击行以确认对时钟向导设置的更改。
在里面块自动化运行对话框,几个设置可以指定如何Microblaze IP将连接到其余的设计:
-
本地内存指定块的大小内存内存将被专用于处理器。ddr较少的设计需要更多的内存,而所需的内存数量在很大程度上取决于正在运行的软件应用程序的大小。32KB对于许多小型应用程序来说已经足够了。
-
缓存配置可以帮助设计速度使用DDR存储器。当不使用DDR时,应该禁用它。
-
调试模块允许您指定调试器的功能。默认的调试只选择建议。
-
外围AXI港口启用或禁用处理器的AXI主接口。必须启用它以允许处理器连接到硬件外围设备。
-
中断控制器指定处理器是否可以由其外设中断。是否需要启用它取决于您的设计要求。如果您打算连接到处理器的任何IP必须正确运行中断,则必须检查该框。
-
时钟连接指定处理器的时钟。没有DDR的设计应该使用时钟向导的clk_out1引脚。
注意:此列表中不存在的设置超出本指南的范围,并且可以安全地留下默认值。
确认设置满足您的设计要求。要重新运行块自动化,必须首先从设计中删除它所创建的每个IP。点击行接着说。
-
- 微勃丁与DDR记忆
-
首先,将DDR内存添加到设计中。Xilinx的内存接口发生器IP将用于控制DDR总线,需要直接连接到板提供的振荡器,称为MIG系统时钟。然后,这个时钟被用来生成其他时钟,这些时钟可以在设计的其他地方使用。MIG首先被添加,因为它依赖于它生成的时钟。
查看单板的DDR接口董事会选项卡,右键单击条目,然后选择连接板组件.在弹出的对话框中,选择MIG的mig_ddr_interface,然后单击行接着说。这将添加上述内存控制器,并使用DigIlent为Lober文件选择的默认设置配置它。
重要的!董事会文件仍被切换到回环风格。有这些变化的工作分支可以在下面找到:
DigIlent的板文件设置为使用循环回参考时钟,这意味着MIG的输出时钟之一将用于驱动MIG的REF_CLK引脚。删除CLK_REF_I外部端口,然后通过单击并从一个拖动到另一个,将MIG的CLK_REF_I输入引脚连接到其UI_ADDN_CLK_0输出引脚。
检查董事会选项卡以查看外部重置是否可用。如果是,请右键单击它并选择连接板组件.在弹出对话框的顶部选择MIG的sys_rst端口,然后单击行将重置连接到MIG。
注意:根据复位按钮的极性(主动高或主动低),a实用程序矢量逻辑IP可能需要在重置端口和MIG的active-low sys_rst端口之间插入,以便反转重置信号。如果单板的重置不可用,则可能需要Const IP来绑定sys_rst引脚。
接下来,需要通过使用主板的主XDC文件来约束系统时钟引脚。其他引脚通常通过板文件限制,但在编写时,这是不支持米格时钟。下面的下拉列表介绍了如何将您的董事会的主XDC添加到项目中,以便可以根据需要对其进行修改。
- 添加主XDC
-
在XDC文件中,找到与主板主时钟相对应的行—通常在最上面。如果您的板有多个时钟,那么用于MIG的时钟将始终是100或200MHz,由' create_clock '行中以纳秒为单位的周期指定。通过删除开头的' # '来取消注释这些行,并将每行末尾的' get_ports '调用中的端口名称替换为' sys_clk_i '。
完成这些更改后,保存XDC,并通过单击图表选项卡。
如果MIG上存在device_temp_i[11:0]端口,这意味着MIG没有使用FPGA本身的模数转换器功能,应该提供设备温度,以便它可以进行补偿。也就是说,这个端口可以连接到一个持续的宽度为12位,值为0的IP。
如果您的设计需要额外的时钟,可以通过在MIG的下游放置一个时钟向导来生成它们。这个IP实例化从设计中已经存在的时钟中生成一个或多个新时钟所需的原语。例如,为了为SPI接口生成时钟,一些设计可能需要一个最大频率为50MHz的时钟。
如果不需要其他时钟,则可以安全地关闭处理器的MIG的UI_CLK引脚。
- 添加下行时钟向导
-
双击时钟向导以打开它进行定制。特别重要的是输出时钟选项卡。在这里,可以定义内核生成的输出时钟。在右边的屏幕截图中,两个时钟clk_out1和clk_out2分别被配置为使用100MHz和50MHz的频率。
剩余在“输出时钟”选项卡中,确保滚动到右下方以检查重置类型选择。确保选择与电路板上复位的极性匹配 - 通常但并不总是高电平的。此重置将很快连接。如果您的电路板没有专用重置按钮,请通过取消选中来关闭时钟向导的重置重启框在“重置类型”字段的左边。虽然通常建议在设计中构建一个重置,但这并不是严格要求的。点击行保存更改并将其应用到时钟向导。
在里面块自动化运行对话框,几个设置可以指定如何Microblaze IP将连接到其余的设计:
-
本地内存指定块的大小内存内存将被专用于处理器。ddr较少的设计需要更多的内存,而所需的内存数量在很大程度上取决于正在运行的软件应用程序的大小。32KB对于许多小型应用程序来说已经足够了。
-
缓存配置可以帮助设计速度使用DDR存储器。在使用DDR时应该启用它。16KB缓存是一个有用的起点。
-
调试模块允许您指定调试器的功能。默认的调试只选择建议。
-
外围AXI港口启用或禁用处理器的AXI主接口。必须启用它以允许处理器连接到硬件外围设备。
-
中断控制器指定处理器是否可以由其外设中断。是否需要启用它取决于您的设计要求。如果您打算连接到处理器的任何IP必须正确运行中断,则必须检查该框。
-
时钟连接指定处理器的时钟。通常,处理器将从MIG的ui_clk引脚驱动,或下游的时钟向导,如前所述。
注意:此列表中不存在的设置超出本指南的范围,并且可以安全地留下默认值。
确认设置满足您的设计要求。要重新运行块自动化,必须首先从设计中删除它所创建的每个IP。点击行接着说。
接下来,需要将MIG连接到微孔处理器。为此,请单击运行连接自动化在绿色的横幅在顶部图表窗格。
“连接自动化”对话框显示设计中可以自动连接到其他端口的所有端口。在右边的截图中,我们可以在左边的列表中看到,Microblaze的数据和指令缓存端口,以及MIG的AXI接口,都是可用的。由于这些端口将相互连接- DC和IC将通过桥接IP连接到MIG的端口-只有一个集合应该被连接。
检查只要米格的AXI端口旁边的盒子,如截图所示。确保为连接选择的“主接口”为缓存,确保MIG连接到DC和IC,而不是到外围设备的通用AXI端口。自动选择桥IP的时钟很好。
←-
要连接尚未连接到处理器的所有剩余AXI核心,请单击运行连接自动化绿色按钮设计师的帮助酒吧。检查所有自动化框中选择所有剩余的AXI核心。每个核心可用的下拉设置可以安全地保留为它们的默认值。点击行自动连接到处理器上。