simulink生成hdl的几个理解

1,simulink生成hdl的话需要用支持的模块,否则不能生成,支持的模块组成一个库,这个库需要自己生成,用hdllib命令生成,官方原话:

The hdllib function creates a library of blocks that are currently supported
for HDL code generation. The block library, hdlsupported , affords quick
access to supported blocks. By constructing models using blocks from this
library, your models will be compatible with HDL code generation.

2,simulink生成hdl的话需要做一些设置,如solver的type等,其实可以用一条指令搞定,就是hdlsetup('model name');这样就会自动设置成可以生成hdl的模式了。

3,生成hdl的model结构一般是subsystem加testbench,这与hdl语言的结构类似,生成的时候只会对subsystem生成hdl文件,当然也可以生成testbench文件,如果整个model就是一个hdl的功能模块的话也可以生成hdl,只不过不能再生成testbench了。

4,每一个添加的模块是有两个属性界面的,一个是在添加的时候左键单击模块两次就会出来一个参数设置对话框,还有一个是hdl block properties,右键单击模块,在弹出的属性菜单中选hdlcode-》hdl block properties,里边有一些针对此模块的hdl优化选项,如pipeline,balance delay ,dsp style 等等。

5,生成hdl可以在 hdl work flow advisor中,也可以直接生成。

6,hdl中模块之间重要的触发和使能关系在simulink里分别对应trigger ,enable,输入为布尔型,触发和使能之后执行,但是不触发或使能的话就保持。

7,hdl的移位寄存器模块可以用delay模块实现,delay的初值可设定。

8,simulink种滤波器的da算法有两个参数,一个dalutpartion一个daradix,dalutpartion可以把查找表切割,但是总数等于h的个数,daradix决定一个时钟查找多少个表,最多查找w个表,表示为2^w,默认为2,也就是说假如8位的数据过来之后第一个时钟只是将延时链上所有数的第0位组成的数作为地址查表,第二个时钟就将第1位组成的数作为地址查表。。。。。而如果daradix为2^8=256的话,那么一个数据过来后第一个时钟周期第0位组成一个地址查表,第1位组成一个地址查表,第2位组成一个地址查表。。。。第8位组成一个地址查表。

原文地址:https://www.cnblogs.com/lianjiehere/p/4213770.html