这个例子展示了如何使用硬件-软件协同设计工作流在Arrow®SoCKit®评估套件上以不同频率闪烁led。
此示例是一个逐步指南,可帮助您使用HDL Coder™软件生成自定义HDL IP核心,呈现箭头型号评估套件上的LED,并显示如何使用嵌入式码头®生成运行的C代码在ARM®处理器上控制LED闪烁频率。
您可以使用MATLAB®和Simulink®设计金宝app,模拟和验证您的应用程序,执行具有算法的What-If场景,并优化参数。然后,您可以通过决定可编程逻辑执行哪些系统元素以及在ARM Cortex-A9上运行的系统元素来准备Altera Cyclone V SoC的硬件和软件实现设计。
使用本例中所示的引导工作流,您可以使用HDL Coder自动生成可编程逻辑的HDL代码,使用Embedded Coder为ARM生成C代码,并在Intel SoC设备上实现设计。
在此工作流程中,您执行以下步骤:
设置您的英特尔SOC硬件和工具。
将您的设计划分为硬件和软件实现。
使用HDL Workflow Advisor生成HDL IP核心。
将IP核心集成到英特尔QSYS项目中并编程英特尔SOC硬件。
生成软件界面模型。
根据软件接口模型生成C代码,并在ARM Cortex-A9处理器上运行。
使用外部模式从英特尔SoC硬件中调整参数和捕获结果。
有关更多信息,请参阅其他更高级的示例和HDL编码器和嵌入式编码器文档。
中列出的支持版本金宝appHDL编码文档
英特尔SoC嵌入式设计套件
箭头套管旋风V SOC评估套件
用于英特尔SOC设备金宝app的HDL编码器支持包
英特尔SoC设备的嵌入式编码器金宝app支持包
1.按照下图设置Arrow SoCKit评估工具包。要了解关于Arrow SoCKit硬件设置的更多信息,请参阅主板文档。
1.1设置SW4
开关(JTAG链选择)如下图所示。位置1:关闭;位置2:上。此配置包括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使用以太网电缆连接计算机和箭头侧板电路板。
2.如果您还没有,请为英特尔SOC设备安装HDL编码器和嵌入式编码器支持软件包。金宝app开始安装程序,转到MATLAB工具条并单击附加组件>获取硬件支持包金宝app.有关更多信息,请参阅金宝app支持包安装文档.
3.确保您使用的是英特尔SoC设备的嵌入式编码器支持包提供的SD卡映像。金宝app如果您需要更新您的SD卡图像,请参考硬件设置部分这个文档。
4.通过在MATLAB命令窗口中输入以下命令设置箭头型袜子硬件连接:
H = AlterAsoc.
的alterasoc
函数通过COM端口登录硬件并运行ifconfig.
命令获取板的IP地址。此功能还测试以太网连接。
5.您可以选择使用以下配置测试串行连接,使用Putty™等程序。波特率:115200
;数据位:8
;停止位:1
;平价:没有任何
;流量控制:没有任何
.当您在箭头侧板电源循环时,您应该能够观察串行控制台上的Linux启动日志。您必须在使用之前关闭此串行连接alterasoc
函数了。
6。使用MATLAB命令窗口中的以下命令设置Intel Quartus综合工具路径。运行命令时使用自己的Quartus安装路径。
hdl setuptoolpath('toolname','Altera Quartus II','工具路径',“C: \ intelFPGA \ 18.0 \第四的\ bin64 \ quartus.exe);
英特尔SOC硬件软件共同设计工作流程的第一步是决定设计的哪些部分在可编程逻辑上实现,以及在ARM处理器上运行的部分。
将您想要在可编程逻辑上实现的所有块集团到原子子系统中。此原子子系统是硬件软件分区的边界。此子系统内的所有块将在可编程逻辑上实现,并且此子系统外的所有块将在ARM处理器上运行。
在此示例中,子系统led_counter是硬件子系统。它模拟了一个计数器,闪烁在FPGA板上的LED。两个输入端口,blink_frquency和blink_direction.,是确定LED闪烁频率和方向的控制端口。子系统之外的所有块led_counter用于软件实现。
在Si金宝appmulink中,您可以使用滑块获得要么手动开关块调整硬件子系统的输入值。在嵌入式软件中,这意味着ARM处理器通过写入AXI接口可访问寄存器来控制生成的IP内核。硬件子系统的输出端口,引领,连接LED硬件。输出端口,回过头再读,可用于将数据读回处理器。
Open_System('hdlcoder_led_blinking_4bit');
使用HDL Workflow Advisor中的IP核心生成工作流程使您可以从Simulink模型自动生成可共享和可重用的IP核心模块。金宝app生成的IP内核设计为在FPGA设备上连接到嵌入式处理器。HDL编码器从Simulink块生成HDL代码,并且还为将IP核心连接到嵌入金宝app式处理器的AXI接口逻辑的HDL代码。HDL编码器将所有生成的文件包装到IP核心文件夹中。然后,您可以将生成的IP核心集成在英特尔Qsys环境中具有更大的FPGA嵌入式设计。
1.启动IP核心生成工作流程。
1.1。从。打开HDL工作流顾问hdlcoder_led_blinking_4bit / LED_COUNTER.
通过右键单击led_counter
子系统,并选择HDL码>HDL工作流程顾问.
1.2。在里面设定目标>设置目标设备和合成工具任务,for.目标工作流程中,选择IP核心生成.
1.3。为目标平台中,选择箭插座开发板.如果您没有这个选项,请选择得到更多打开支持包安装程序。金宝app在Suppor金宝appt Package Installer中,选择Intel SoC Devices,并按照Support Package Installer提供的说明完成安装。
1.4。点击运行这个任务运行设置目标设备和合成工具任务。
1.5在里面设定目标>设置目标参考设计任务,选择默认系统.对于本例,它是默认选择的
1.6。点击运行这个任务运行设置目标参考设计任务。
2.配置目标接口。
将DUT中的每个端口映射到其中一个IP核心目标接口。在此示例中,输入端口blink_frquency和blink_direction.映射到AXI4接口,因此HDL编码器为它们生成AXI接口可访问寄存器。的引领输出端口映射到外部接口,LED通用[0:3],它连接到英特尔SOC板上的LED硬件。
2.1在里面设定目标>设置目标接口任务,选择AXI4.为了blink_frquency,blink_direction., 和回过头再读.
2.2选择LED通用[0:3]为了引领.
2.3在里面设定目标>设置目标频率任务,选择目标频率为50 MHz.
3.生成IP核心。
要生成IP核,右键单击生成RTL代码和IP核任务和选择跑到选定的任务.
4.生成并查看IP核心报告。
生成自定义IP核心后,IP核心文件位于Ipcore.项目文件夹中的文件夹。与自定义IP核心一起生成HTML自定义IP核心报告。该报告描述了生成的自定义IP核心的行为和内容。
在工作流程的这一部分中,您将生成的IP内核插入嵌入式系统参考设计,生成FPGA比特流,并将比特流下载到英特尔SOC硬件。
参考设计是预定义的英特尔Qsys项目。它包含所有元素,即可将设计部署到英特尔SoC设备,除了您生成的自定义IP核心和嵌入式软件。
1.要与英特尔Qsys环境集成,请选择创建项目下任务嵌入式系统集成,然后单击运行这个任务.将生成一个Intel Qsys项目和一个Intel Quartus项目,并在对话框窗口中提供到这些项目的链接。您可以选择打开项目来查看。
2.如果您有嵌入式编码器许可证,则可以在下一任务中生成软件界面模型,生成软件接口模型.软件接口模型的细节在此示例的下一部分中解释,“生成软件界面模型”。
3.中构建FPGA位流构建FPGA比特流任务。确保这一点在外部运行构建过程选项已选中,因此英特尔综合工具将在来自Matlab的单独进程中运行。等待综合工具过程完成在“外部命令”窗口中运行。
4.生成比特流后,选择程序目标设备任务。选择下载为了编程方法要将FPGA比特流下载到英特尔SOC板上的SD卡上,因此当您自行动力时,您的设计将自动重新加载到英特尔SOC板时。点击运行这个任务编程英特尔SOC硬件。
编程FPGA硬件后,LED开始在英特尔SOC板上闪烁。
接下来,您将生成C代码以在ARM处理器上运行,以控制LED闪烁频率和方向。
在HDL Workflow Advisor中,当您生成IP核并将其插入到Qsys参考设计中之后,您可以在嵌入式系统集成>生成软件接口模型任务。
软件界面模型包含在软件中运行的设计的一部分。它包括HDL子系统外部的所有块,并用AXI驱动程序块替换HDL子系统。如果您有嵌入式编码器许可证,则可以从软件界面模型自动生成嵌入式代码,构建它,并在ARM处理器上运行Linux上的可执行文件。所生成的嵌入式软件包括从AXI驱动程序块生成的AXI驱动程序代码,其控制HDL IP核心。
运行生成软件接口模型任务并查看生成的新模型。任务对话框显示了到模型的链接。
在生成的软件接口模型中,“LED_Counter”子系统被替换为AXI驱动程序块,该块在ARM处理器和FPGA之间生成接口逻辑。
在工作流程的这一部分中,您可以配置生成的软件界面模型,自动生成嵌入式C代码,并在外部模式下在英特尔SOC硬件中的ARM处理器上运行模型。
在构建和开发算法原型时,在算法在硬件上运行时监视和调优算法是很有用的。Simulink中的外部模式特性支持此功能。金宝app在这种模式下,首先将算法部署到Intel SoC硬件中的ARM处理器上,然后通过以太网连接到主机上的Simulink模型上。金宝app
Simulink模型的主要作用是调谐和监视金宝app在硬件上运行的算法。由于ARM处理器通过AXI接口连接到HDL IP核心,因此可以使用外部模式调谐参数,并捕获来自FPGA的数据。
在生成的模型中,打开配置参数对话框。
选择求解器将“停止时间”设置为“inf”。
从硬件菜单,点击监视和优化模型ToolStrip上的按钮以在外部模式下在英特尔SoC硬件中的ARM处理器上运行您的模型。嵌入式编码器构建模型,将ARM可执行到英特尔SoC硬件,执行它,并将模型连接到Intel SoC硬件上的可执行文件。
双击滑块获得堵塞。更改滑块增益值并观察Intel SoC硬件闪烁闪烁的LED阵列频率的变化。双击手动开关块来切换闪烁的led方向。
双击连接到的范围回过头再读观察FPGA IP核的输出数据被捕获并发送回Simulink示波器。金宝app
完成更改模型参数时,单击停止在模型上的按钮。观察在上一步中打开的系统命令窗口表示模型已停止。此时,您可以关闭系统命令窗口。
这个例子展示了硬件和软件协同设计工作流如何帮助自动化部署您的MATLAB和Simulink设计到英特尔SoC设备。金宝app您可以通过迭代工作流来探索划分和部署设计的最佳方法。
下图显示了您在此示例中完成的工作流的高级图片。要了解有关硬件和软件共同设计工作流程的更多信息,请参阅HDL编码文档.