主要内容

使用万博1manbetx用于HDL代码生成的模板

Simulink中的HDL Coder™模型模板万博1manbetx®为您提供用于HDL代码生成的模型的设计模式和最佳实践。您从HDL Coder模型模板之一创建的模型已经为HDL代码生成设置了它们的配置参数和求解器设置。要为HDL代码生成配置现有模型,请使用hdlsetup

使用创建模型高密度脂蛋白编码器模型模板

要为高效的HDL代码生成建模硬件,请使用HDL Coder模型模板创建一个模型。

  1. 打开Simulin万博1manbetxk开始页。在MATLAB中®Home选项卡,选择万博1manbetx按钮。或者,在命令行输入:

    万博1manbetx

  2. 高密度脂蛋白编码器节中,您将看到为HDL代码生成预配置的模板。选择模板将在Simulink编辑器中打开一个空白模型。万博1manbetx要保存模型,请选择文件>另存为

  3. 打开Simulink库浏万博1manbetx览器,然后打开高密度脂蛋白编码器块库,选择库浏览器按钮在Simulink编辑器万博1manbetx中。或者,在命令行中输入

    slLibraryBrowser

    若要筛选Simulink库浏万博1manbetx览器以显示支持HDL代码生成的块库,请使用万博1manbetxhdllib功能:

    hdllib

高密度脂蛋白编码器模型模板

复杂的乘数

Complex Multiplier模板展示了如何建模一个复杂的乘数-累加器,并手动管道中间阶段。复杂乘法的硬件实现使用四个乘法器和两个加法器。

该模板应用了以下最佳实践:

  • 2 .在“配置参数”对话框中,单击HDL代码生成>全局设置重置类型设置为同步

  • 为了提高速度,延迟块映射到硬件中的寄存器,位于乘法器和加法器的输入和输出。

  • 为了支万博1manbetx持全精度复杂乘数的输出数据,需要手动指定输出数据字长为(operand_word_length2) + 1。

    例如,在模板中,操作数字长为18,输出字长为37。

MATLAB算术

MATLAB算术模板包含在硬件中推断DSP48s的MATLAB算术运算。

例如,ml_mul_accMATLAB函数block展示了如何在MATLAB中编写乘法累加运算。hdlfimath为HDL代码生成应用定点数学设置。

函数Y = fcn(u1, u2)%设计的6x6倍增器%相同的重置输入和输出%后面跟着一个加法器Nt =数字类型(0,6,0);Nt2 = numerictype(0,12,0);FM = hdlfimath;持续的U1_reg u2_reg mul_reg add_reg;如果Isempty (u1_reg) u1_reg = fi(0, nt, fm);U2_reg = fi(0, nt, fm);Mul_reg = fi(0, nt2, fm);Add_reg = fi(0, nt2, fm);结束Mul = mul_reg;Mul_reg = u1_reg * u2_reg;Add = add_reg;Add_reg (:) = mul+add;U1_reg = u1;U2_reg = u2;Y = add;

ROM模板是映射到硬件中的ROM的设计模式。

该模板应用了以下最佳实践:

  • 在查找表的输出中,有一个Delay块ResetType没有一个

  • 查找表的结构使断点之间的间距为2的幂。

    使用2的幂的表维使HDL Coder能够生成移位操作而不是除法操作。如有必要,在表格中填上零。

  • 查找表项的数量是2的幂。对于一些综合工具,有2次幂条目的查找表更好地映射到ROM。如果有必要,用0填充表。

注册

Register模板展示了如何建模硬件寄存器:

  • 在Si万博1manbetxmulink中,使用延迟块。

  • 在MATLAB中,使用持久变量。

    这个设计模式还展示了如何使用自动传播数据类型。

的MATLAB代码MATLAB函数Block使用一个持久化变量对寄存器进行建模。

函数Y = fcn(u)映射到硬件中寄存器的单位延迟实现持续的u_d;如果isempty (u_d)%定义在时间步骤0时由单位延迟驱动的初始值U_d = cast(0,“喜欢”u);结束返回上次采样命中的延迟输入Y = u_d;%存储当前输入U_d = u;

生存研究实验室

SRL模板展示了如何在硬件中实现一个映射到SRL16的移位寄存器。您可以使用类似的模式映射到SRL32。

在移位寄存器子系统中利用延迟实现移位操作,而MATLAB函数select_tap,实现输出mux。

select_tap,从零开始的地址,addr增量为1,因为MATLAB索引是基于1的。

函数dout = fcn(addr, tdelay) %#codegen addr1 = fi(addr+1,0,5,0);Dout = tdelay(addr1);
在生成的代码中,HDL Coder会自动省略增量,因为Verilog®和硬件描述语言(VHDL)®是从零开始的。

该模板还应用以下最佳实践来映射到硬件中的SRL16:

  • 利用延迟布洛克:

    • 在“块参数”对话框中在输出矢量中包含当前输入未启用。

    • 在“HDL块属性”对话框中,ResetType设置为没有一个

  • 子系统在HDL块属性对话框中,FlattenHierarchy设置为

万博1manbetx硬件模式

Simu万博1manbetxlink硬件模式模板包含常见硬件操作的设计模式:

  • 串行到并行移位寄存器

  • 探测上升边缘

  • 检测下降边缘

  • SR闭锁

  • RS门闩

例如上升沿检测和下降沿检测的设计模式:

状态机MATLAB

状态机在MATLAB模板展示了如何实现Mealy和Moore状态机使用MATLAB函数块。

要了解有关建模状态机的最佳实践的更多信息,请参见为HDL和SystemC代码生成建模一个状态机

另请参阅

|

相关的话题