主要内容

开始瞄准基于英特尔Quartus Pro的设备

本示例展示了如何定义和注册Intel®Arria10 SoC开发套件的电路板和参考设计,并使用硬件-软件协同设计工作流在Intel Arria10 SoC开发套件上以不同频率闪烁led。

简介

通过这个例子,您可以在HDL Workflow Advisor中注册Arria 10 SoC开发工具包和参考设计。参考设计也显示了早期I/O(分割位流)Intel Ar金宝appria 10 SoC在HDL Workflow Advisor中支持的特性。本示例是一个逐步指导,帮助您使用HDL Coder™软件在Intel Arria 10 SoC开发工具包上生成一个自定义HDL IP核,该IP核可以闪烁LED,并展示如何使用Embedded Coder®生成运行在ARM®处理器上的C代码来控制LED闪烁频率。

您可以使用MATLAB®和Simulink®设计金宝app、模拟和验证应用程序,使用算法执行假设场景,并优化参数。然后,您可以通过确定哪些系统元素由可编程逻辑执行,哪些系统元素将运行在ARM Cortex-A9上,从而为英特尔Arria 10 SoC上的硬件和软件实现准备设计。

在此工作流中,执行以下步骤:

  1. 设置英特尔SoC硬件和工具。

  2. 为使用早期I/O功能的Intel Arria 10 SoC创建参考设计。

  3. 将设计划分为硬件和软件实现。

  4. 使用HDL工作流顾问生成HDL IP核。

  5. 将IP核集成到Intel Platform Designer Qsys项目中,并对Intel SoC硬件进行编程。

  6. 生成软件接口模型。

  7. 从软件接口模型生成C代码,并在ARM Cortex-A9处理器上运行。

  8. 使用外部模式从Intel SoC硬件调优参数和捕获结果。

需求

  1. Intel Quartus®Pro(或Intel Quartus II),支持的版本列于金宝appHDL语言支持和支持的第三金宝app方工具和硬件

  2. 英特尔SoC嵌入式设计套件

  3. 英特尔Arria 10 SoC开发工具包

  4. Intel SoC设金宝app备的HDL编码器支持包

  5. 嵌入式编码器支持包的英特尔So金宝appC设备

设置英特尔SoC硬件和工具

1.如下图所示设置Arria 10 SoC。要了解有关Arria 10 SoC硬件设置的更多信息,请参阅主板文档。

1.1设置拨码开关和跳线设置如下图所示。

1.2使用Micro-USB电缆将Arria10 SoC Kit的USB UART连接到您的计算机。确保正确安装了USB设备驱动程序(例如FTDI USB to UART)。如果没有,请在网上搜索并安装驱动程序。

1.3使用以太网线将Arria10 SoC Kit连接到您的计算机。

2.如果你还没有安装英特尔SoC设备的HDL编码器和嵌入式编码器支持包。金宝app要启动安装程序,请转到MATLAB工具条并单击附加组件>获取硬件支持包金宝app

3.请确保您使用的是Intel SoC设备的嵌入式编码器支持包提供的SD卡映像。金宝app如果您需要更新SD卡映像,请参阅的“硬件设置”部分增加对I金宝appntel SoC平台的支持(Intel SoC设备嵌入式编金宝app码器支持包)

4.在MATLAB命令窗口中输入以下命令,建立Arria10 SoC硬件连接:

H = alterasoc

alterasoc功能通过COM口登录硬件,运行ifconfig命令获取单板IP地址。此函数还测试以太网连接。

5.您可以选择使用PuTTY™等程序使用以下配置测试串行连接。波特率:115200;数据位:8;停止位:1;奇偶校验:没有一个;流控制:没有一个.在Arria10 socckit板上电循环时,您应该能够在串行控制台上观察到Linux引导日志。方法之前,必须关闭此串行连接alterasoc函数了。

6.在MATLAB命令窗口中使用以下命令设置Intel Quartus Pro合成工具路径。运行该命令时,请使用自己的Quartus安装路径。

hdlsetuptoolpath (“ToolName”英特尔Quartus Pro“路径”“C: \ intelFPGA \ 19.4 \第四的\ bin64 \ qpro.exe);

如果您正在使用Intel QUARTUS II,使用以下命令:

hdlsetuptoolpath (“ToolName”英特尔QUARTUS II“路径”“C: \ intelFPGA \ 18.1 \第四的\ bin64 \ quartus.exe);

参考设计创建使用英特尔Quartus Pro

参考设计捕获了SoC设计的完整结构,定义了不同的组件及其互连。HDL Coder SoC工作流生成一个与参考设计集成的IP核,然后用于编程SoC板。下图描述了参考设计、HDL IP核和SoC板之间的关系

在本节中,我们概述了使用Intel Quartus Pro和平台设计器(QSys)环境创建和导出简单参考设计所需的基本步骤。有关QSys系统集成工具的更多信息,请参阅Intel文档。

1.使用新建项目向导创建一个空的Quartus项目,设备部件编号如下图所示。

2.通过导航到初始化Quartus Pro中的平台设计器(Qsys)工具——>平台设计器如下图所示。

3.选择硬处理器系统Intel Arria 10 FPGA IP(HPS),时钟和重置IP从IP目录到创建的平台设计器项目。将所需的时钟和重置连接到Arria 10 HPS IP,如下图所示。完成arria10硬处理器系统所需的其他设置,如外设引脚设置和模式设置。

4.保持h2f_axi_master端口连接打开,以便在工作流IP集成过程中连接到DUT IP。完成Altera PLL IP和HPS IP之间的其余连接,如下图所示。

5.保存Qsys文件。此文件用于创建参考设计插件。

注册Intel arria10 SoC开发工具包。

在本节中,您将在HDL Workflow Advisor中注册Intel Arria 10 SoC开发工具包。

1.用该名称创建一个董事会注册文件hdlcoder_board_customization.m并将其添加到MATLAB路径。

有关创建单板注册文件的详细信息,请参见定义自定义板和参考设计的英特尔SoC工作流程

2.创建板定义文件。

单板定义文件包含了SoC单板的相关信息。

有关创建板定义文件的详细信息,请参见定义自定义板和参考设计的英特尔SoC工作流程

在HDL Workflow Advisor中注册自定义参考设计

在本节中,您将在HDL Workflow Advisor中注册定制参考设计。

1.创建一个名为hdlcoder_ref_design_customization.m包含与SoC板相关的参考设计插件列表。

有关创建自定义参考设计的详细信息,请参见定义自定义板和参考设计的英特尔SoC工作流程

2.创建参考设计定义文件。

参考设计定义文件定义了定制参考设计与HDL Coder SoC工作流生成的HDL IP核之间的接口。有关创建参考设计定义文件的详细信息,请参见定义自定义板和参考设计的英特尔SoC工作流程

Arria 10的早期I/O: Intel Arria 10 SoC FPGA设备支持早期I/O释放。金宝app

早期IO发布允许您在编写核心原始二进制文件(RBF)之前启用DDR功能,以加快引导时间。在此流程中,配置和释放共享I/O和硬内存控制器I/O,允许HPS立即访问它们。

该特性将FPGA的配置顺序分为两部分。第一部分配置FPGA I/O,共享I/O,如果存在,还启用HPS外部内存接口(EMIF)。序列的第二部分配置核心FPGA结构。通过拆分配置顺序,Arria10硬处理系统现在可以在FPGA结构配置之前访问共享I/O和EMIF。这为需要更快启动时间或替代启动源的设计提供了更大的灵活性。在这个早期I/O中,会生成两个原始二进制格式(.rbf)文件:peripheral.rbf文件。(2)core.rbf文件。这些配置文件包含的数据与不使用早期I/O发布特性时生成的组合配置.rbf文件相同。的peripheral.rbf配置FPGA I/O、共享I/O和HPS EMIF。的core.rbf加载,通过配置FPGA fabric完成FPGA配置顺序。后peripheral.rbf加载成功,Intel Arria 10 SoC FPGA HPS EMIF引脚被释放,接口开始校准。

要使用此功能,您需要启用一个参考设计参数hRD。GenerateSplitBitstream = true;如下面的plugin_rd文件所示。因此,如果这个参考设计参数为真,它将生成两个.rbf文件,用于如上所述的FPGA配置。

此参考设计定义文件的内容plugin_rd.m类似于英特尔Quartus标准版本,英特尔Quartus Pro的差异如下所示。

函数hRD = plugin_rd(%参考设计定义
构造参考设计对象hRD = hdlcoder。ReferenceDesign (“SynthesisTool”英特尔Quartus Pro);
添加自定义设计文件%添加自定义Qsys设计hRD.addCustomQsysDesign (...“CustomQsysPrjFile”“system_soc.qsys”);
%将完整的rbf文件分为核心和外围rbf文件,用于早期I/O特性hRD。GenerateSplitBitstream = true;

将设计划分为硬件和软件实现

英特尔SoC硬件-软件协同设计工作流的第一步是决定设计的哪些部分要在可编程逻辑上实现,哪些部分要在ARM处理器上运行。

将您想要在可编程逻辑上实现的所有块分组到一个原子子系统中。这个原子子系统是硬件-软件分区的边界。这个子系统内部的所有块都是在可编程逻辑上实现的,而这个子系统之外的所有块都将在ARM处理器上运行。

在本例中,是子系统led_counter是硬件子系统。它模拟了一个计数器,使FPGA板上的led闪烁。两个输入端口,Blink_frequency而且Blink_direction,是决定LED闪烁频率和方向的控制端口。子系统之外的所有块led_counter用于软件实现。

在Si金宝appmulink中,您可以使用滑块获得手动开关块来调整硬件子系统的输入值。在嵌入式软件中,这意味着ARM处理器通过写入AXI接口可访问寄存器来控制生成的IP核。硬件子系统的输出端口,领导,连接LED硬件。输出端口,Read_Back,可用于将数据读回处理器。

open_system (“hdlcoder_led_blinking_4bit”);

使用HDL工作流顾问生成HDL IP核

使用IP核生成HDL workflow Advisor中的工作流使您能够从Simulink模型自动生成可共享和可重用的IP核模块。金宝app生成的IP核被设计为连接到FPGA设备上的嵌入式处理器。HDL Coder从Simulink块生成HDL代码,也为连接IP核和嵌入式金宝app处理器的AXI接口逻辑生成HDL代码。HDL Coder将所有生成的文件打包到一个IP核文件夹中。然后,您可以将生成的IP核与英特尔Qsys环境中的更大的FPGA嵌入式设计集成。

1.启动IP核生成工作流。

1.1.中打开HDL Workflow Advisorhdlcoder_led_blinking_4bit / led_counterled_counter子系统和选择HDL代码>HDL工作流顾问

1.2.设定目标>设置目标设备和合成工具任务,为目标工作流程中,选择IP核生成

1.3.目标平台中,选择英特尔Arria 10 SoC开发工具包.如果没有此选项,请选择得到更多的打开“支持包安装程序”。金宝app在“Suppo金宝apprt Package Installer”中,选择“Intel SoC Devices”,并按照“Support Package Installer”提供的说明完成安装。

1.4.选择合成工具作为英特尔Quartus Pro(或Altera QUARTUS II

1.5.点击运行此任务运行设置目标设备和合成工具任务

1.6.设定目标>设定目标参考设计任务,选择默认的系统.对于本例,默认情况下是选中的。

1.7.点击运行此任务运行设定目标参考设计的任务。

2.配置目标接口。

将DUT中的每个端口映射到一个IP核心目标接口。本例中为输入端口Blink_frequency而且Blink_direction映射到AXI4接口,因此HDL Coder为它们生成AXI接口可访问寄存器。的领导输出端口映射到外部接口,led通用用途[0:3],连接到Intel SoC板上的LED硬件。

2.1设定目标>设置目标接口任务,选择AXI4Blink_frequencyBlink_direction,Read_back

2.2选择led通用用途[0:3]领导

2.3设定目标>设定目标频率任务,选择目标频率为50 MHz

3.生成IP Core

生成IP核时,右键单击生成RTL代码和IP核任务和选择运行到选定任务

4.生成并查看IP核报表。

生成自定义IP核后,IP核文件在ipcore项目文件夹中的文件夹。与自定义IP核一起生成HTML自定义IP核报表。该报表用于描述生成的自定义IP核的行为和内容。

5.遵循以下步骤的第一步将IP核与Intel Qsys环境集成的部分开始瞄准英特尔SoC设备在参考设计中集成IP核并创建Qsys项目的示例。

6.现在让我们在完成嵌入式系统集成下的创建项目任务后,检查由SoC工作流创建的Intel Qsys项目。下图显示了我们突出显示HDL IP核的SoC项目。将这个项目与以前在自定义参考设计插件中使用的项目进行比较是有指导意义的,以便更深入地理解自定义参考设计和HDL IP核之间的关系。

7.的步骤2、3和4将IP核与Intel Qsys环境集成的部分开始瞄准英特尔SoC设备以生成软件接口模型为例,分别生成FPGA位流和编程目标设备。

8.Arria 10 SoC上的led将在加载比特流后开始闪烁。此外,您还可以通过执行软件界面模型来控制LED闪烁的频率和方向。参考示例开始瞄准英特尔SoC设备实例从生成的软件界面模型中控制LED闪烁频率和方向。