集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 16626|回复: 12

verilog 中define和parameter定义常量的区别?

[复制链接]
encounter 发表于 2010-6-28 00:32:39 | 显示全部楼层 |阅读模式
verilog 中define和parameter定义常量的区别?,他们的适用范围分别有多大呀,我现在想在顶层模块中定义一个常量,方便以后修改数值,但希望这个常量在子模块中也能用,我试过用上面两种定义方法都不行,请问有没有可行的方法?谢谢!
CHAN 发表于 2010-6-28 01:45:26 | 显示全部楼层
怎么没有人回复呀,急用!
usd 发表于 2010-6-28 02:24:02 | 显示全部楼层
当某个模块在另一个模块内被引用时,高层模块可以改变低层模块的参数值。<br>
可以用defparam或者直接带参数引用试一下
ATA 发表于 2010-6-28 03:54:26 | 显示全部楼层
&rsquo;define<br>
一旦&lsquo;define指令被编译,其在整个编译过程中都有效。例如,通过另一个文件中的&rsquo;define指令,定义的常量可以被其他文件中被调用。直到遇到&lsquo;undef<br>
parameter<br>
只在定义的文件中有效,在其它文件中无效
interige 发表于 2010-6-28 04:34:12 | 显示全部楼层
同意楼上的,一般的文件都使用parameter,操作方便,而且在超出文件的范围以后不会出现<br>
参数的冲突。
ICE 发表于 2010-6-28 06:21:55 | 显示全部楼层
哦,一直搞不明白,现在知道了。
ANG 发表于 2010-6-28 08:01:40 | 显示全部楼层
在使用状态机时候区别挺大的<br>
状态机的定义可以用parameter 定义,但是不推荐使用`define 宏定义的方<br>
式,因为'define 宏定义在编译时自动替换整个设计中所定义的宏,而<br>
parameter 仅仅定义模块内部的参数,定义的参数不会与模块外的其他状态机<br>
混淆。例如一个工程里面有两个module 各包含一个FSM,如果设计时都有<br>
IDLE 这一名称的状态,如果使用'define 宏定义就会混淆起来,如果使用<br>
parameter 则不会造成任何不良影响。
ngtim 发表于 2010-6-28 08:42:26 | 显示全部楼层
建议用parameter 这样可以很容易修改
ups 发表于 2010-6-28 09:16:24 | 显示全部楼层
类似于局部变量与全局变量&nbsp; &nbsp;parameter&nbsp;&nbsp;多用。
HANG 发表于 2010-6-28 09:39:39 | 显示全部楼层
不错。<br>
刚清楚。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

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

GMT+8, 2024-5-3 00:39 , Processed in 0.074026 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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