主要内容

开始瞄准英特尔SoC设备

这个例子展示了如何使用硬件-软件协同设计工作流在Arrow®SoCKit®评估套件上以各种频率闪烁led。

介绍

本示例是一个逐步指导,帮助您使用HDL Coder™软件生成定制的HDL IP核,在Arrow SoCKit评估套件上闪烁LED,并展示如何使用Embedded Coder®生成运行在ARM®处理器上的C代码,以控制LED闪烁频率。

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

使用本例中所示的指导工作流,您可以使用HDL Coder为可编程逻辑自动生成HDL代码,使用Embedded Coder为ARM生成C代码,并在Intel SoC设备上实现设计。

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

  1. 设置你的Intel SoC硬件和工具。

  2. 划分你的硬件和软件实现的设计。

  3. 使用HDL工作流顾问生成一个HDL IP核。

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

  5. 生成软件接口模型。

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

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

要了解更多信息,请参考其他更高级的示例,以及HDL Coder和Embedded Coder文档。

需求

  1. Intel Quartus Prime,其支持版本列于HDL语言支持和支持的第三方工具和硬件

  2. Intel SoC嵌入式设计套件

  3. Arrow SoCKit Cyclone V SoC评估套件

  4. 用于Intel SoC设备的HDL编码器支持包

  5. Intel SoC设备的嵌入式编码器支持包

设置Intel SoC硬件和工具

1.设置如下图所示的Arrow SoCKit评估套件。要了解更多关于Arrow SoCKit硬件设置的信息,请参考主板文档。

1.1设置SW4switch (JTAG chain select)如下图所示。位置1:OFF;位置2:ON。此配置包括JTAG链中的HPS,并绕过HSMC。

1.2设置JP2如下图所示,调整FPGA/HSMC引脚的I/O标准。短引脚5和6,将I/O电压设置为2.5V。

1.3设置J17——J19如上图所示,从SD卡启动HPS。J17:短引脚1和2;J18:短引脚1、2;J19:短引脚2和3。

1.4设置J15——J16如上图所示为HPS时钟设置。J15:短引脚2和3;J16:短引脚2和3。

1.5设置送回在板背面,如下图所示。这个开关设置了FPGA的配置模式。将所有6个位置设置为ON。

1.6使用Micro-USB电缆将计算机连接到USB UART连接器。确保您的USB设备驱动程序,如FTDI USB到UART,已正确安装。如果没有,请在网上搜索驱动程序并安装它们。

1.7使用以太网线连接您的计算机和Arrow SoCKit板。

2.如果你还没有安装英特尔SoC设备的HDL编码器和嵌入式编码器支持包。开始安装程序,进入MATLAB工具条,单击附加组件>获取硬件支持包

3.确保您使用的是由英特尔SoC设备的嵌入式编码器支持包提供的SD卡映像。如果您需要更新您的SD卡映像,请参阅增加对Intel SoC平台的支持(用于Intel SoC设备的嵌入式编码器支持包)这个文档。

4.在MATLAB命令窗口中输入以下命令设置Arrow SoCKit硬件连接:

h = alterasoc

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

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

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

hdlsetuptoolpath (“ToolName”,“阿尔特拉第四的二世”,“路径”,“C: \ intelFPGA \ 18.0 \第四的\ bin64 \ quartus.exe);

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

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

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

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

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

open_system (“hdlcoder_led_blinking_4bit”);

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

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

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

1.1.打开HDL工作流顾问从hdlcoder_led_blinking_4bit / led_counter子系统通过右键单击led_counter子系统,并选择HDL代码>高密度脂蛋白工作流顾问

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

1.3.目标平台中,选择箭头SoCKit开发板。如果没有此选项,请选择得到更多的打开支持包安装程序。在“支持包安装程序”中,选择“Intel SoC Devices”,并按照支持包安装程序提供的说明完成安装。

1.4.点击运行这个任务运行设置目标装置和合成工具的任务。

1.5设定目标>设定目标参考设计任务,选择默认的系统.对于本例,它是默认选择的

1.6.点击运行这个任务运行设定目标参考设计的任务。

2.配置目标接口。

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

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

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

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

3.生成IP核。

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

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

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

将IP核与Intel Qsys环境集成

在这部分的工作流程中,您将生成的IP核插入到嵌入式系统参考设计中,生成FPGA位流,并将位流下载到Intel SoC硬件。

参考设计是一个预定义的Intel Qsys项目。它包含了英特尔软件部署你的设计到英特尔SoC设备所需的所有元素,除了你生成的自定义IP核和嵌入式软件。

1.要与Intel Qsys环境集成,请选择创建项目下任务嵌入式系统集成,然后单击运行这个任务。生成了Intel Qsys项目和Intel Quartus项目,并在对话窗口中提供了项目的链接。您可以选择打开这些项目来查看。

2.如果你有Embedded Coder许可证,你可以在下一个任务中生成一个软件接口模型,生成软件界面模型。软件接口模型的细节将在本例的下一节“生成软件接口模型”中解释。

3.构建FPGA位流构建FPGA比特流的任务。确保外部运行构建过程选项被选中,所以英特尔合成工具将运行在一个独立的进程从MATLAB。等待合成工具进程在外部命令窗口中完成运行。

4.位流生成后,选择项目目标设备的任务。选择下载编程方法下载FPGA位流到英特尔SoC板上的SD卡上,因此当您为英特尔SoC板通电循环时,您的设计将自动重新加载。点击运行这个任务来对英特尔SoC硬件进行编程。

在您编程FPGA硬件后,LED开始闪烁在您的英特尔SoC板上。

接下来,你将生成C代码在ARM处理器上运行,以控制LED闪烁的频率和方向。

生成一个软件界面模型

在HDL Workflow Advisor中,生成IP核并将其插入Qsys参考设计之后,您可以选择在嵌入式系统集成>生成软件界面模型的任务。

软件接口模型包含在软件中运行的设计部分。它包含了HDL子系统之外的所有块,并用AXI驱动块替换了HDL子系统。如果你有Embedded Coder许可,你可以从软件接口模型自动生成嵌入式代码,构建它,并在ARM处理器上的Linux上运行可执行程序。生成的嵌入式软件包括由AXI驱动程序块生成的控制HDL IP核的AXI驱动程序代码。

运行生成软件界面模型执行任务并查看生成了一个新模型。任务对话框显示了一个到模型的链接。

在生成的软件接口模型中,“led_counter”子系统被替换为生成ARM处理器和FPGA之间接口逻辑的AXI驱动块。

在Intel SoC硬件上运行软件接口模型

在这部分工作流程中,您需要配置生成的软件接口模型,自动生成嵌入式C代码,并在Intel SoC硬件中的ARM处理器上以外部模式运行您的模型。

当你在原型化和开发一个算法时,当它在硬件上运行时,监视和调优算法是很有用的。Simulink中的外部模式功能实现了这一功能。在这种模式下,你的算法首先被部署到Intel SoC硬件中的ARM处理器上,然后通过以太网连接到主机上的Simulink模型。

Simulink模型的主要作用是调优和监视在硬件上运行的算法。因为ARM处理器通过AXI接口连接到HDL IP核上,所以可以使用External模式调优参数,并从FPGA捕获数据。

  1. 在生成的模型中,打开配置参数对话框。

  2. 选择解算器and将“Stop Time”设置为“inf”。

  3. 硬件菜单,点击监视和优化按钮,以外部模式在Intel SoC硬件中的ARM处理器上运行模型。Embedded Coder构建模型,下载ARM可执行文件到Intel SoC硬件,执行它,并将模型连接到运行在Intel SoC硬件上的可执行文件。

  4. 双击滑块获得块。改变Slider Gain的值,观察Intel SoC硬件上LED阵列闪烁频率的变化。双击手动开关块来切换闪烁的led的方向。

  5. 对象连接的作用域Read_back输出端口,观察FPGA IP核的输出数据被捕获并发送回Simulink作用域。

  6. 当您完成了模型参数的更改后,单击停止模型上的按钮。注意,上一步中打开的系统命令窗口表明模型已经停止。这时,就可以关闭系统命令窗口了。

总结

这个例子展示了硬件和软件协同设计工作流如何帮助自动部署您的MATLAB和Simulink设计到英特尔SoC设备。通过遍历工作流,您可以探索分区和部署设计的最佳方法。

下面的图表显示了您在这个例子中所经历的工作流的高级图片。要了解更多关于硬件和软件协同设计工作流的信息,请参考SoC平台软硬件协同设计工作流程

Baidu
map