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“年代”);