主要内容

开始使用HDL编码器与MATLAB SystemC工作流应用程序

这个例子展示了如何创建一个高密度脂蛋白编码器™项目和生成SystemC代码从MATLAB®设计对称有限脉冲响应滤波器(杉木)。

设置这个例子的冷杉模型和试验台。

mlhdlc_demo_setup (“sfir”);

冷杉过滤器MATLAB设计

MATLAB设计mlhdlc_sfir是一个简单的对称冷杉过滤器。

design_name =“mlhdlc_sfir”;testbench_name =“mlhdlc_sfir_tb”;

审查设计。

打开(design_name);
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %% MATLAB设计:对称冷杉过滤器%%的介绍:%%我们可以减少冷杉的复杂性过滤器利用其对称性。%的对称n-tap过滤器所暗示的,系数h0 = hn-1系数,h1 = %系数,系数hn-2等等。在这种情况下,数量的%乘数可以大约减半。关键是要添加的%两个数据值需要乘以系数是相同的%之前执行乘法。%%的关键设计模式在这个例子:%(1)过滤器使用持久性变量来表示%(2)滤波器系数作为参数传递% 2011 - 2019版权MathWorks公司。% # codegen函数[y_out, delayed_xout] = mlhdlc_sfir (x_in、h_in1 h_in2, h_in3, h_in4)%对称冷杉过滤器%声明和初始化延迟寄存器持续的ud1 ud2 ud3 ud4 ud5 ud6 ud7 ud8;如果isempty (ud1) ud1 = 0;ud2 = 0;ud3 = 0;ud4 = 0;ud5 = 0;ud6 = 0;ud7 = 0;ud8 = 0;结束%访问国家的前一个值/寄存器a1 = ud1 + ud8;a2 = ud2 + ud7;a3 = ud3 + ud6;a4 = ud4 + ud5;%乘数链m1 = h_in1 * a1;m2 = h_in2 * a2;m3 = h_in3 * a3;m4 = h_in4 * a4;%加法器链a5 = m1 + m2;a6 = m3 + m4;%过滤输出y_out = a5 + a6;% delayout输入信号delayed_xout = ud8;%更新延迟线ud8 = ud7;ud7 = ud6;ud6 = ud5;ud5 = ud4;ud4 = ud3;ud3 = ud2;ud2 = ud1;ud1 = x_in;结束

冷杉过滤MATLAB试验台

MATLAB试验台mlhdlc_sfir_tb测试过滤器的设计。回顾这个试验台。

打开(testbench_name);
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %% MATLAB试验台的冷杉过滤器% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %% 2011 - 2019版权MathWorks公司。清晰的mlhdlc_sfir;T = 2;dt = 0.001;N = T / dt + 1;sample_time = 0: dt: T;df = 1 / dt;sample_freq = linspace (1/2, 1/2, N)。* df;%输入信号与噪声x_in = cos(2。*π。* (sample_time)。* (1 + (sample_time)。* 75))。”;%滤波器系数h1 = -0.1339;h2 = -0.0838;h3 = 0.2026;h4 = 0.4064;len =长度(x_in);len y_out = 0 (1);len x_out = 0 (1);2 = 1:len data = x_in (ii);%调用“mlhdlc_sfir”,是针对硬件设计[y_out (ii), x_out (ii)] = mlhdlc_sfir(数据,h1, h2, h3, h4);结束图(“名字”(mfilename“_plot”]);次要情节(1,1);阴谋(1:len x_in,“- b”);包含(“时间(ms)”)ylabel (“振幅”)标题(的输入信号(噪声))次要情节(3、1、2);阴谋(1:len y_out,“- b”);包含(“时间(ms)”)ylabel (“振幅”)标题(的输出信号(过滤))freq_fft = @ (x) abs (fftshift (fft (x)));次要情节(3,1,3);semilogy (sample_freq freq_fft (x_in),“- b”);持有semilogy (sample_freq freq_fft (y_out),“- r”)举行包含(的频率(赫兹))ylabel (“振幅(dB)”)标题(的输入和输出信号(频域))({传奇“FilterIn”,“FilterOut”},“位置”,“南”轴((-500 500 100))

测试MATLAB算法

为避免运行时错误,模拟试验台的设计使用。

mlhdlc_sfir_tb

生成SystemC代码通过使用HDL工作流顾问

SystemC与HDL代码生成工作流顾问有以下基本步骤:

  1. 在MATLAB命令行设置高级合成(HLS)工具路径SystemC代码生成使用函数hdlsetuphlstoolpath

  2. 创建一个MATLAB HDL编码项目。

  3. 设计和试验台文件添加到项目中。

  4. 启动HDL工作流MATLAB设计顾问。

  5. 定点转换和SystemC运行代码生成。

创建高密度脂蛋白编码器项目和分配文件

创建一个高密度脂蛋白编码器项目:

1。在MATLAB编辑应用程序选项卡上,选择高密度脂蛋白编码器。输入sfir_project随着的名字的项目。

在MATLAB命令提示符创建一个项目,运行以下命令:

编码器-hdlcoder不管是新sfir_project

一个sfir_project.prj文件被创建在当前文件夹。

2。为MATLAB函数,单击添加MATLAB函数链接并选择冷杉MATLAB设计滤波器mlhdlc_sfir。下MATLAB试验台部分中,点击添加文件并添加MATLAB试验台mlhdlc_sfir_tb.m

3所示。点击Autodefine类型并使用MATLAB设计推荐的类型。代码生成器的输入类型推断MATLAB试验台。

在高密度脂蛋白工作流运行定点转换和SystemC代码生成的顾问

1。高密度脂蛋白工作流顾问开始,单击工作流的顾问按钮。

2。在高密度脂蛋白工作流顾问一步,指定代码生成工作流作为用MATLAB对SystemC

3所示。如果你的设计不使用定点类型和功能,然后把你的浮点MATLAB设计一个定点的设计。检查生成的定点从浮点设计代码,单击定点转换的任务。在MATLAB生成的定点MATLAB代码打开编辑器。有关详细信息,请参见浮点定点转换

4所示。在选择代码生成目标一步,指定工作流作为高水平的合成合成工具作为韵律层云

5。右键单击SystemC代码生成任务和选择选择任务运行

代码生成器运行工作流顾问任务生成SystemC滤波器设计的代码。

检查生成的SystemC代码,点击超链接mlhdlc_sfir_fixptClass.hppSystemC代码生成日志窗口。

6。你可以比较SystemC代码生成的输出的MATLAB代码与高密度脂蛋白试验台验证的一步。这一步还生成SystemC试验台文件和创建节奏层云项目。

7所示。合成是代码生成过程的最后一步。在运行合成步骤,生成SystemC HLS工具和Verilog代码使用合成或VHDL代码生成。

SystemC代码生成报告

SystemC代码生成步骤中,您可以通过点击查看代码生成报告查看报告在日志窗口中。

代码生成报告能帮助你:

  • 调试代码生成问题,并验证您的MATLAB代码适用于代码生成。

  • 视图生成的SystemC代码。

  • 访问额外的报告一致性报告。

  • 看看代码生成器决定和传播类型信息在MATLAB代码中变量和表达式。

查看一个MATLAB函数代码中的窗格中,单击MATLAB源窗格的函数的名称。在代码中窗格中,当你暂停一个变量或表达式,工具提示显示信息的大小,类型和复杂性。

限制

  • 只支持韵律层为高水平的综合工具。金宝app韵律层仅支持点对点(p2p)通信金宝appSystemC代码生成。

  • 生成SystemC不支持多个线程上运行的代码。金宝app

  • 真正的数据类型和系统对象不支持SystemC代码生成。金宝app

  • 不支持结构和枚举顶级DUT的输入和输出端口SystemC代码生成。金宝app

另请参阅