verilog generate语句 for语句
时间:10-02
整理:3721RD
点击:
小弟有几个问题想向各位大侠求助:
1、verilog中的generate语句和for语句的区别是啥?
2、现在有这样一个问题,就是我自己定义了一个memory,也就是二维数组,然后我想每次使用完了之后,将其清0,我本来想使用generate语句,但是发现generate语句似乎不能在always语句中使用,那么这个generate到底怎样使用才是合理的?我的理解“generate语句允许细化时间(Elaboration-time)的选取或者某些语句的重复”,那也就是说generate语句是在编译期间起作用的,是将generate块内的语句展开使用,是这样的吗?
1、verilog中的generate语句和for语句的区别是啥?
2、现在有这样一个问题,就是我自己定义了一个memory,也就是二维数组,然后我想每次使用完了之后,将其清0,我本来想使用generate语句,但是发现generate语句似乎不能在always语句中使用,那么这个generate到底怎样使用才是合理的?我的理解“generate语句允许细化时间(Elaboration-time)的选取或者某些语句的重复”,那也就是说generate语句是在编译期间起作用的,是将generate块内的语句展开使用,是这样的吗?
这两个语句八杆子关系都没有,你怎么会扯到一起?
我觉得
1,在generate语句里使用for循环可以次模块例化不同的次数(可以例化模块,也可以例化always块)
2,for循环不一次是可综合的,比如用它来例化则可以综合,但按你上面的说法对RAM初始化则是不可综合的。
谢谢你们的解答,实质上经过这两天的思索,我觉得generate也是一种块语句,但是generate块语句的层次要比always块语句高,所以generate可以包含always语句,而always语句不能包含generate语句
这两个都是软件层面上的意义,组合使用相当于复制硬件模块
最好可以通过几个具体实例来研究
大家看书要仔细,生成语句实际就是生成块,是块。
