将Microblaze处理器添加到块设计中

Microblaze软核处理器IP可用于在FPGA设计中实例化处理器。这个处理器对于控制和配置硬件组件非常有用。本节讨论如何将Microblaze处理器和几个有用的组件添加到块设计中,包括用于标准输出的UART和DDR内存支持。

注意:本节适用于没有Zynq芯片的单板。对于Zynq板,应该使用Zynq7处理系统。

注意:如果您不确定您的板是否有DDR内存,请检查内存列的规格表在本网站的可编程逻辑页面。

对于没有DDR内存的单板,请遵循此下拉列表中的步骤

首先,应该在模块设计中添加一个外部时钟,这样它就可以用来生成设计所需的任何其他时钟。打开董事会选项卡,查找系统时钟。右键单击并选择连接板组件


连接板组件对话框,选择一个新的时钟向导IP的CLK_IN1。这将为设计添加一个时钟向导,可以用来轻松地配置板的mmcm和锁相环,以生成任何所需的时钟。点击好吧继续。


接下来,应该在设计中添加一个外部复位端口,可以用来复位整个系统。单击连接自动化运行绿色按钮设计师的帮助工具栏。


连接自动化运行对话框,在对话框左侧的列表中,确保时钟向导的重置框被选中。的选择单板部件接口下拉列表中列出了在你的董事会文件中指定的任何重置选项。对于大多数董事会来说,只有一种选择。点击好吧继续。


注意:根据复位按钮的极性(主动高或主动低),a效用向量逻辑IP可能在重置端口和时钟向导之间插入。这是用来确保IP的主动高复位引脚提供了正确的复位信号极性,并且设计不会在复位时保持,而复位按钮没有被按下。


您的设计至少需要一个时钟向导提供的时钟。如果您的设计需要更多的时钟,那么必须通过时钟向导添加它们。

双击时钟向导IP核以编辑其设置。导航到输出时钟选项卡。中的复选框可将其他时钟添加到时钟向导中输出时钟列,并指定请求的输出频率.此外,如果需要,可以根据它们的预期用途来命名端口。

如果您的设计需要额外的时钟(例如ext_spi_clock针),那么现在就应该添加它们。

点击好吧以确认对时钟向导设置的更改。

如果您不确定是否拥有所需的所有时钟,请不要担心,您随时可以返回并通过重新配置这个IP添加它们。在设计过程中,只要有必要,就可以执行这项任务。


接下来,使用添加IP按钮()添加MicroBlazeIP到设计。添加的块代表Microblaze处理器的核心。


接下来,将运行块自动化,以便在设计中添加额外的支持基础设施。点击块自动化运行在绿色设计师的帮助酒吧。

注意:右边的截图并不代表一个不使用DDR的设计,因为这些设计将不包含MIG的IP核。


块自动化运行对话框,几个设置可以指定如何Microblaze IP将连接到其余的设计:

  • 本地内存指定块的大小内存内存将被专用于处理器。ddr较少的设计需要更多的内存,而所需的内存数量在很大程度上取决于正在运行的软件应用程序的大小。32KB对于许多小型应用程序来说已经足够了。
  • 缓存配置可以帮助设计速度使用DDR存储器。使用DDR时应启用,其他情况下应禁用。
  • 调试模块允许您指定调试器的功能。默认的调试只选择建议。
  • 外围AXI港口启用或禁用处理器的AXI主接口。它必须启用,以允许处理器连接到硬件外设。
  • 中断控制器指定处理器是否可以被其外设中断。是否需要启用它取决于您的设计需求。如果您打算连接到处理器的任何IP必须有中断才能正常工作,则必须选中复选框。
  • 时钟连接指定处理器的时钟。使用DDR的设计应该使用MIG的ui_clk引脚,而没有DDR的设计应该使用时钟向导的clk_out1引脚。

注意:此列表中没有出现的设置超出了本指南的范围,可以安全地保留其默认值。

请确认设置符合您的设计要求。应该注意的是,虽然可以手动更改这些设置后(例如,通过手动添加一个AXI intel IP和连接到处理器),这样做将是最简单的方法清除Microblaze处理器的块设计和重新启动添加处理器的过程。这就是说,这里选择的设置很重要。从长远来看,第一次做对会节省你的时间。

点击好吧继续。


接下来,为了使软件设计能够打印到主机上的串行控制台,必须连接UART外设。找到USB UART接口的董事会选项卡,右键单击它,然后选择连接板组件


在弹出的对话框中,选择一个新的AXI Uartlite IP的UART接口,然后单击好吧将块添加到关系图中。


要连接尚未连接到处理器的所有剩余AXI核心,请单击连接自动化运行绿色按钮设计师的帮助酒吧。检查所有自动化框中选择所有剩余的AXI核心。每个核心可用的下拉设置可以安全地保留为它们的默认值。点击好吧自动连接到处理器上。

对于带有DDR内存的单板,请遵循此下拉列表中的步骤

使用DDR创建设计时,最好先添加DDR接口,因为它通常还用于生成一个或多个时钟,您的其余设计将使用这些时钟。

在Board选项卡中,右键单击DDR接口,选择“Auto Connect”。这个过程将增加一个MIG和外部DDR接口的设计。两个时钟引脚也创建,这将需要修改。


删除“clk_ref_i”引脚。这可以通过右键点击大头针和选择删除或选择并按下删除键来完成。


验证“ui_addn_clk_0”引脚的频率接近200兆赫通过选择它并查看“Block Pin Properties”窗格中的“Frequency”值。


手动连接“ui_addn_clk_0”引脚到“clk_ref_i”引脚,点击并拖动从一个到另一个。


需要注意的是,“sys_clk_i”引脚不受板文件的约束,您需要添加一个约束文件将其映射到FPGA上相应的引脚位置。

如果您的项目不包含板的主Xilinx Design Constraint (XDC)文件,下面的下拉菜单将详细说明如何添加它。此文件包含您的板对使用它的设计施加的约束——特定接口连接到特定引脚、时钟频率和FPGA银行电压,举例说明。单击下面的下拉列表了解如何将此文件添加到项目中。

将主XDC文件添加到Vivado项目

下载并提取digilent-xdc-master.zip.这个文件包含了Digilent的所有最新的XDC模板文件,这些文件可以在Github的digilent-xdc存储库。


返回Vivado,单击添加资源按钮项目经理部分的流导航器窗格。这将启动一个对话框,您可以使用该对话框向项目添加各种类型的源文件(或创建新的源文件)。


在第一个屏幕上,选择添加或创建约束.点击下一个继续。


在下一个屏幕中,确保指定的约束集(主XDC将被添加到的约束集)被设置为constrs_1,它是活跃的集。单击添加文件按钮。


在弹出的对话框中,导航到digilent-xdc-master.zip文件被提取到。突出显示您的板的XDC文件,然后单击好吧继续。


回到添加资源对话框中,确保所选的约束文件出现在表中。同时,确保复制约束文件到项目检查框。如果不选中此框,则该文件将由项目链接,在项目中进行的任何修改都将影响下载的版本。由于您可能需要在其他项目中再次使用此文件,因此建议复制约束文件,以便您总是可以从一个新的副本工作。

点击完成将约束文件添加到项目中。


添加后,XDC文件将出现在来源选项卡(与董事会选项卡)。双击它以打开文件。


为你的board的100找到set_property和create_clock约束兆赫输入时钟,通过删除在每一行的开头,并更改名称港口他们不得不这样做sys_clk_i,以匹配块设计中的端口名称。

如果你的黑板上有多个时钟,那就是100兆赫可以通过观察create_clock约束指定一个10.000n周期,如右边的截图所示。

确保保存您的更改。


接下来,米格的复位引脚将连接到主板的复位按钮。单击窗口顶部绿色栏中的“Run Connection Automation”。


在弹出的对话框左侧的列表中,确保选中了“sys_rst”框。点击好吧连接复位到对应单板部件接口。


MIG模块可能需要连接其他端口,以确保其正常工作。本节将讨论每一个端口。

如果您的MIG有一个“device_temp_i”端口,请打开这个下拉框

如果您的MIG块有一个“device_temp_i”端口,这意味着MIG没有使用芯片的XADC模数转换器功能。我们会将港口搁浅以防止它发出任何警告。在设计中添加一个“固定”IP。


双击块打开它的配置向导,修改它的值为“0”,宽度为“12”。


将其输出端口连接到MIG上的“device_temp_i”端口。


如果你的设计需要更多的时钟,而不仅仅是MIG提供的ui_clk,你需要添加一个由MIG的ui_clk驱动的时钟向导IP。

使用“添加IP”按钮搜索时钟向导并将其添加到设计中。


手动连接时钟向导的clk_in1和重置端口到MIG的ui_clk和ui_clk_sync_rst端口,分别。


最后,双击时钟向导打开并配置它。第三个选项卡,输出时钟包含指定需要多少个时钟和什么频率所需的所有设置。右边的屏幕截图显示了配置为创建100的向导兆赫Clk_out1和50兆赫clk_out2。

如果您的设计需要额外的时钟(例如ext_spi_clock针),那么应该在这里添加它们。

注意:如果您不确定是否拥有所需的所有时钟,请不要担心,您随时可以返回并通过重新配置这个IP添加它们。在设计过程中,只要有必要,就可以执行这项任务。


在这个过程的最后,模块设计将是这样的:



接下来,使用添加IP按钮()添加MicroBlazeIP到设计。添加的块代表Microblaze处理器的核心。


接下来,将运行块自动化,以便在设计中添加额外的支持基础设施。点击块自动化运行在绿色设计师的帮助酒吧。

注意:右边的截图并不代表一个不使用DDR的设计,因为这些设计将不包含MIG的IP核。


块自动化运行对话框,几个设置可以指定如何Microblaze IP将连接到其余的设计:

  • 本地内存指定块的大小内存内存将被专用于处理器。ddr较少的设计需要更多的内存,而所需的内存数量在很大程度上取决于正在运行的软件应用程序的大小。32KB对于许多小型应用程序来说已经足够了。
  • 缓存配置可以帮助设计速度使用DDR存储器。使用DDR时应启用,使用DDR时应禁用。
  • 调试模块允许您指定调试器的功能。默认的调试只选择建议。
  • 外围AXI港口启用或禁用处理器的AXI主接口。它必须启用,以允许处理器连接到硬件外设。
  • 中断控制器指定处理器是否可以被其外设中断。是否需要启用它取决于您的设计需求。如果您打算连接到处理器的任何IP必须有中断才能正常工作,则必须选中复选框。
  • 时钟连接指定处理器的时钟。使用DDR的设计应该使用MIG的ui_clk引脚,而没有DDR的设计应该使用时钟向导的clk_out1引脚。

注意:此列表中没有出现的设置超出了本指南的范围,可以安全地保留其默认值。

请确认设置符合您的设计要求。应该注意的是,虽然可以手动更改这些设置后(例如,通过手动添加一个AXI intel IP和连接到处理器),这样做将是最简单的方法清除Microblaze处理器的块设计和重新启动添加处理器的过程。这就是说,这里选择的设置很重要。从长远来看,第一次做对会节省你的时间。

重要!当在一个设计中使用多个时钟时(当使用MIG时,碰巧总是这样的情况),重要的是要验证您选择的是正确的时钟连接从下拉。在右边的截图中,100兆赫选择时钟向导中的Clk_out1。你可能希望使用ui_clk本身来运行你的设计。不要选择MIG的系统时钟输入。

点击好吧继续。


接下来,MIG的AXI接口必须连接到Microblaze的缓存端口,以便允许数据在处理器和DDR内存之间来回移动。

要将MIG的AXI接口连接到处理器,请单击连接自动化运行按钮在绿色横幅在街区的顶部设计。


在弹出的对话框中,您将看到几个接口选项,这些接口可以连接到其他接口。无论是Microblaze的IC和DC端口,以及米格的AXI端口将出现。您应该只对连接的一端(S_AXI端口)运行连接自动化,如右边的屏幕截图所示。确保它的方框被选中。检查主界面设置为“/microblaze_0 (Cached)”,表示microblaze本地内存将作为DDR内存的缓存,然后点击好吧建立联系。


接下来,为了使软件设计能够打印到主机上的串行控制台,必须连接UART外设。找到USB UART接口的董事会选项卡,右键单击它,然后选择连接板组件


在弹出的对话框中,选择一个新的AXI Uartlite IP的UART接口,然后单击好吧将块添加到关系图中。


要连接尚未连接到处理器的所有剩余AXI核心,请单击连接自动化运行绿色按钮设计师的帮助酒吧。检查所有自动化框中选择所有剩余的AXI核心。每个核心可用的下拉设置可以安全地保留为它们的默认值。点击好吧自动连接到处理器上。