Verilog中parameter和define的区别

 我来答
出家人词悲
高赞答主

2015-06-14 · 大脑停止不了思考
知道大有可为答主
回答量:1.4万
采纳率:12%
帮助的人:3833万
展开全部
1、语法
声明:
parameter xx = yy;
`define XX YY

使用:
xx
`XX

2、作用域
parameter 作用于声明的那个文件;`define 从编译器读到这条指令开始到编译结束都有效,或者遇到`undef命令使之失效。

如果想让parameter或`define作用于整个项目,可以将如下声明写于单独文件,并用`include让每个文件都包含声明文件:
`ifndef xx
`define xx yy // or parameter xx = yy;
`endif

`define也可以写在编译器最先编译的文件顶部。通常编译器都可以定义编译顺序,或者从最底层模块开始编译。因此写在最底层就可以了。

3、作用
parameter可以用作例化时的参数传递。具体方法参见《Verilog例化时的参数传递》一文

在使用状态机时候区别挺大的
状态机的定义可以用parameter 定义,但是不推荐使用`define 宏定义的方
式,因为'define 宏定义在编译时自动替换整个设计中所定义的宏,而
parameter 仅仅定义模块内部的参数,定义的参数不会与模块外的其他状态机
混淆。例如一个工程里面有两个module 各包含一个FSM,如果设计时都有
IDLE 这一名称的状态,如果使用'define 宏定义就会混淆起来,如果使用
parameter 则不会造成任何不良影响

’define
一旦‘define指令被编译,其在整个编译过程中都有效。例如,通过另一个文件中的’define指令,定义的常量可以被其他文件中被调用。直到遇到 ‘undef
parameter
只在定义的文件中有效,在其它文件中无效
就烦条0o
2018-07-27 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46487
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
1、语法
声明:
parameter xx = yy;
`define XX YY

使用:
xx
`XX

2、作用域
parameter 作用于声明的那个文件;`define 从编译器读到这条指令开始到编译结束都有效,或者遇到`undef命令使之失效。

如果想让parameter或`define作用于整个项目,可以将如下声明写于单独文件,并用`include让每个文件都包含声明文件:
`ifndef xx
`define xx yy // or parameter xx = yy;
`endif

`define也可以写在编译器最先编译的文件顶部。通常编译器都可以定义编译顺序,或者从最底层模块开始编译。因此写在最底层就可以了。

3、作用
parameter可以用作例化时的参数传递。具体方法参见《Verilog例化时的参数传递》一文

在使用状态机时候区别挺大的
状态机的定义可以用parameter 定义,但是不推荐使用`define 宏定义的方
式,因为'define 宏定义在编译时自动替换整个设计中所定义的宏,而
parameter 仅仅定义模块内部的参数,定义的参数不会与模块外的其他状态机
混淆。例如一个工程里面有两个module 各包含一个FSM,如果设计时都有
IDLE 这一名称的状态,如果使用'define 宏定义就会混淆起来,如果使用
parameter 则不会造成任何不良影响

’define
一旦‘define指令被编译,其在整个编译过程中都有效。例如,通过另一个文件中的’define指令,定义的常量可以被其他文件中被调用。直到遇到
‘undef
parameter
只在定义的文件中有效,在其它文件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式