主要内容

matlab - hdl工作流程中的协同仿真和fpga在环

这个例子展示了如何在MATLAB®到HDL的HDL代码生成工作流中使用HDL Cosimulation和fpga -in- loop来验证生成的HDL代码。

要求和前提条件

s manbetx 845本示例所需的产品:

  • MATLAB

  • 定点设计师™

  • 高密度脂蛋白校验™

  • FPGA设计软件(Xilinx®ISE®或Vivado®设计套件或Intel®Quartus®II设计软件)

  • 其中一个万博1manbetx支持的FPGA器件用于FPGA校验及配件

  • 使用以太网连接:主机上安装千兆以太网适配器,千兆以太网交叉电缆

  • 用于连接使用JTAG: USB Blaster I或II电缆和驱动器的英特尔FPGA板。用于Xilinx FPGA板的Digilent®JTAG电缆和驱动器。

先决条件:

MATLAB和FPGA设计软件既可以本地安装在您的计算机上,也可以安装在网络可访问设备上。如果使用来自网络的软件,则需要在计算机中安装第二个网络适配器,以便为FPGA开发板提供专用网络。要了解如何安装网络适配器,请参阅计算机的硬件和网络指南。

MATLAB设计

本例中使用的MATLAB代码实现了一个简单的对称FIR滤波器,并使用了dsp。延迟系统对象的模型状态。这个例子还展示了一个练习过滤器的MATLAB测试台架。

让我们来看看MATLAB的设计。

类型(“mlhdlc_sysobj_ex.m”);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % MATLAB设计:对称冷杉过滤器% %设计模式在这个例子:% Filter状态建模使用DSP系统对象(DSP . delay) % Filter系数作为参数传递到设计%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %版权所有2011-2015 the MathWorks, Inc. % codegen函数[y_out, delayed_xout] = mlhdlc_sysobj_ex(x_in, h_in1, h_in2, h_in3, h_in4) %对称FIR Filter持久h1 h2 h3 h4 h5 h6 h7 h8;if isempty(h1) h1 = sp. delay;h2 = dsp.Delay;h3 = dsp.Delay;h4 = dsp.Delay;h5 = dsp.Delay;h6 = dsp.Delay;h7 = dsp.Delay;h8 = dsp.Delay; end h1p = step(h1, x_in); h2p = step(h2, h1p); h3p = step(h3, h2p); h4p = step(h4, h3p); h5p = step(h5, h4p); h6p = step(h6, h5p); h7p = step(h7, h6p); h8p = step(h8, h7p); a1 = h1p + h8p; a2 = h2p + h7p; a3 = h3p + h6p; a4 = h4p + h5p; m1 = h_in1 * a1; m2 = h_in2 * a2; m3 = h_in3 * a3; m4 = h_in4 * a4; a5 = m1 + m2; a6 = m3 + m4; % filtered output y_out = a5 + a6; % delayout input signal delayed_xout = h8p; end
类型(“mlhdlc_sysobj_ex_tb.m”);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % MATLAB试验台的冷杉过滤器  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 版权2011 - 2015 MathWorks公司清楚mlhdlc_sysobj_ex;x_in = cos(2。*π。*(0:0.001:2)。*(1 +(0:0.001:2)。* 75))。”;H1 = -0.1339;H2 = -0.0838;H3 = 0.2026;H4 = 0.4064;Len = length(x_in);Y_out_sysobj = 0 (1,len);X_out_sysobj = 0 (1,len);A = 10; for ii=1:len data = x_in(ii); % call to the design 'sfir' that is targeted for hardware [y_out_sysobj(ii), x_out_sysobj(ii)] = mlhdlc_sysobj_ex(data, h1, h2, h3, h4); end figure('Name', [mfilename, '_plot']); subplot(2,1,1); plot(1:len,x_in); title('Input signal with noise'); subplot(2,1,2); plot(1:len,y_out_sysobj); title('Filtered output signal');

模拟设计

在代码生成之前,用测试台架模拟设计,以确保没有运行时错误。在MATLAB中运行这个命令。

mlhdlc_sysobj_ex_tb

创建一个新的HDL Coder™项目

要创建一个新项目,输入以下命令:

编码器-hdlcoder不管是新mlhdlv_cosimFIL_prj

接下来,添加文件'mlhdlc_sysobj_ex。m'到项目的MATLAB函数和'mlhdlc_sysobj_ex_tb. m'。m’作为MATLAB测试台。

你可以参考开始使用MATLAB到HDL工作流程(高密度脂蛋白编码器)一个关于创建和填充MATLAB HDL Coder项目的更完整的教程。

定义输入数据类型

对于这个浮点MATLAB系统对象,所有的输入都是双标量的。使用MATLAB函数提供的下拉菜单指定它们。

运行定点转换和HDL代码生成

启动Workflow Advisor。在Workflow Advisor中,右键单击“HDL Code Generation”步骤。选择“运行到所选任务”选项,从开始到HDL代码生成运行所有步骤。

通过单击Workflow Advisor日志面板中的链接来检查生成的HDL代码。

生成协同仿真试验台,运行HDL协同仿真

选择“用Cosimulation验证”步骤。

选择标记为“生成协同仿真测试台架”的复选框。该操作将启用对话框中的其他选项,允许您选择记录输出以进行比较,选择您喜欢的HDL模拟器并模拟生成的联合仿真测试台。勾选剩下的两个复选框并选择您首选的HDL模拟器。

选择“GUI”作为HDL模拟器的运行模式。

点击“运行”,观察将联合仿真的输出与定点系统对象的输出进行比较的图。还要注意HDL模拟器波形查看器中的信号转换。

设置您的FPGA开发板

组建FPGA开发板参阅有关设置您的FPGA板和计算机以进行FPGA在环仿真通信的信息。

生成fpga -in- loop (FIL)测试台架并运行FIL模拟

在Workflow Advisor的左侧面板中选择“Verify with fpga -in- loop”步骤。

选中所有3个复选框(用于生成fpga in- loop测试台架,输出日志记录,模拟生成的FIL测试台架。

选择您选择的FPGA开发板。

点击“运行”,观察FPGA输出与定点系统对象输出的比较图。

清理生成的文件

运行以下命令清理临时项目文件夹。

清晰的墨西哥人;cd (hdlverif_demo_dir);删除目录(mlhdlv_temp_dir“年代”);