找回密码
 注册
关于网站域名变更的通知
查看: 327|回复: 1
打印 上一主题 下一主题

你知道Verilog中parameter和define的区别吗?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-5-14 17:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
你知道Verilog中parameter和define的区别吗?
* t4 d2 @" y3 a) \1 s
1、语法3 `# @; b) K; n5 H2 ?
声明:; x& y3 q$ e0 z$ f
8 W) l- n# n% x6 b6 B! a' g
parameter data = 8‘d14;7 g' h) |" P( y1 R  [% [5 ~: q" _
/ Y- a# j+ D! @& {6 a. L
`define data 8’d14
' S+ _  Y% }/ c' C0 k, ?: C5 N/ E2 ^% r
使用:
! b/ C, v) k2 p6 q3 G       data
8 Z8 e- O5 H( x; k  a- l; t7 \# l
`data
' ?2 u4 p7 w0 S+ G0 z* _' h% a+ @5 z

) b9 r2 S, _8 D# N3 m2、作用域; u3 w2 J  c8 d+ o" O- ^

3 ^2 W; j. [& Q. Z! dparameter 作用于声明的那个文件;`define 从编译器读到这条指令开始到编译结束都有效,或者遇到`undef命令使之失效。! H/ |6 {) [7 S# B
% O! [# u5 ?4 ]$ N$ }0 i. Z
如果想让parameter或`define作用于整个项目,可以将如下声明写于单独文件,并用`include让每个文件都包含声明文件:
  G+ ]; @$ a9 _* C( X8 i) P# o+ [4 l! }; k2 Y
`ifndef data% R/ a0 m4 Z/ I) k  l! C

* ]6 i+ h& G: b `define data  8’d14
6 E9 h$ g3 E7 u6 Z1 i$ E+ a2 e* W: M1 @. Y) O) x: Z2 d0 C
或者, P/ M; D' r7 }( Z4 V, x$ a6 b

" u1 Q5 F3 O3 q! P( hparameter data = 8‘d14;
8 Z* ?! X+ B, n# X" D- F9 e8 a+ d, J) }# v
`endif0 a8 j* u7 r/ t# ]: \
. j1 v& L  B' r, |: Y' J
`define也可以写在编译器最先编译的文件顶部。通常编译器都可以定义编译顺序,或者从最底层模块开始编译。因此写在最底层就可以了。* w, `& ~4 Q! k' y1 K

9 L! o& m- ^+ c3、区别
6 W: L1 ?5 J/ {% h' @
  i& m3 [7 g  A2 Zparameter可以用作例化时的参数传递。
% q7 Y; r6 f2 m3 b! n+ X
" _4 @! r8 M- [' S在使用状态机时候区别挺大的。状态机的定义可以用parameter 定义,但是不推荐使用`define 宏定义的方式,因为'define 宏定义在编译时自动替换整个设计中所定义的宏,而parameter 仅仅定义模块内部的参数,定义的参数不会与模块外的其他状态机混淆。例如一个工程里面有两个module 各包含一个FSM,如果设计时都有IDLE 这一名称的状态,如果使用'define 宏定义就会混淆起来,如果使用parameter 则不会造成任何不良影响。
  P( R  ~2 ~' E: t. y& H( l, g
/ p( f; }0 x- l9 x& ?8 ~ 一旦`define指令被编译,其在整个编译过程中都有效。例如,通过另一个文件中的`define指令,定义的常量可以被其他文件中被调用。直到遇到`undef;parameter只在定义的文件中有效,在其它文件中无效。
3 |  \+ Z- j2 T! N8 e8 Y7 t4 ~  W+ h9 D' P7 T9 s
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-3 04:29 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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