集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 3171|回复: 3

[求助]verilog生成块语句的疑问

[复制链接]
alwayszeta 发表于 2011-6-1 16:20:14 | 显示全部楼层 |阅读模式
生成块语句有三种形式:循环生成,条件生成,Case生成。
循环生成可以用一个语句来完成对所有类似语句的生成,那条件生成和Case生成有什么用呢?

我看的是Verilog教材是Samir Palnitkar的,里面的关于条件生成块的例句是这样的:
...//声明略去,一个参数化乘法器,a0_width和a1_width是参数,值都为8,product 16位,a0,a1 8位
generate
if (a0_width<8)||(a1_width<8)
cla_multiplier #(a0_width,a1_width) m0 (product,a0,a1);
else
tree_multiplier #(a0_width,a1_width) m0 (product,a0,a1);
endgenerate

关于上面这段代码,这个#()代表的是什么?是延迟吗?在这里生成块是什么意思?在书上对那条语句解释说“不能在实例引用时通过传递参数语句,即#(参数1,参数2..)的方法修改”这句话是什么意思?
tiphen 发表于 2011-7-21 22:33:32 | 显示全部楼层
#(a0_width,a1_width)表示括号内参数a0_width,a1_width所对应的实例m0 (product,a0,a1)【multiplier(product,a0,a1)中已定义a0_width,a1_width】
“不能在实例引用时通过传递参数语句,即#(参数1,参数2..)的方法修改”是由于localparam声明了它们l是在本module内有效的定义,不可用于参数传递,即不能把参数改变了再返回上一层定义的该参数。
tiphen 发表于 2011-7-21 22:34:13 | 显示全部楼层
#(a0_width,a1_width)表示括号内参数a0_width,a1_width所对应的实例m0 (product,a0,a1)【multiplier(product,a0,a1)中已定义a0_width,a1_width】
“不能在实例引用时通过传递参数语句,即#(参数1,参数2..)的方法修改”是由于localparam声明了它们l是在本module内有效的定义,不可用于参数传递,即不能把参数改变了再返回上一层定义的该参数。
fpga_feixiang 发表于 2022-1-10 17:56:18 | 显示全部楼层
66666666666666666666666
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-5-3 10:22 , Processed in 0.152741 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表