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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
你知道Verilog中parameter和define的区别吗?
1 W" `6 C# Q5 |6 {- h) E
1、语法
" e' y- Q  \/ a! x* `声明:
6 Z9 A$ T/ A0 `9 @
. v# s4 m3 e2 u# Q3 j+ g- z8 y( G' ]parameter data = 8‘d14;
: ^# N) n* {- ~6 r; E6 @8 Z' `5 q# K9 v! V
`define data 8’d14
: D- D/ _$ N9 V! F9 E0 Q$ \
6 U7 I" f# J- a5 e  i; ~使用:9 c6 Y- f0 q& _, v' Q3 }3 Y1 y
       data
$ c3 `1 ]! ]! f  V/ A: }6 p) P4 v2 J
`data
( m: ]- Y7 C4 P8 A0 W9 w
9 Y+ C" e& w% e8 r! {# g* q. u, Y: B- v+ f5 w
2、作用域
/ M3 X# o7 O8 x+ u3 d
, Y8 Z/ E# [/ m: W7 w* pparameter 作用于声明的那个文件;`define 从编译器读到这条指令开始到编译结束都有效,或者遇到`undef命令使之失效。0 K3 f& ~" |7 R
4 i& W& \# S3 i- W2 f# A+ ~
如果想让parameter或`define作用于整个项目,可以将如下声明写于单独文件,并用`include让每个文件都包含声明文件:- f5 C+ u& v' Z- T7 M, t) [
3 @. O$ @* F* q: |, o7 N
`ifndef data
0 e2 G6 n6 C( F1 Z+ k! w7 o$ x0 Q0 b7 N4 g9 g: J
`define data  8’d14
3 U2 P, u! H* `' L: O* t$ u5 n! N4 T( @& ]( J. P+ ?$ A
或者: N; `# v7 p; C! [6 X5 c

( B, S7 ?, s/ C) Vparameter data = 8‘d14;
* K' b( R& v8 {& X+ b  m) {5 h
7 Z! X, H& U+ |  W8 T`endif* G! N7 A3 k+ x. Q: `
* J/ i) U" F; _& F0 a5 X
`define也可以写在编译器最先编译的文件顶部。通常编译器都可以定义编译顺序,或者从最底层模块开始编译。因此写在最底层就可以了。
3 s6 V& q6 Z( N$ f( d5 V, X- [, O; Z" f* F
3、区别
" |* a+ F+ u2 b, i$ ?) [
: l0 c: T' `' z6 aparameter可以用作例化时的参数传递。
7 Q' Z( q+ }- ^! {' r8 e( C* x) F6 P4 q6 G/ [1 M
在使用状态机时候区别挺大的。状态机的定义可以用parameter 定义,但是不推荐使用`define 宏定义的方式,因为'define 宏定义在编译时自动替换整个设计中所定义的宏,而parameter 仅仅定义模块内部的参数,定义的参数不会与模块外的其他状态机混淆。例如一个工程里面有两个module 各包含一个FSM,如果设计时都有IDLE 这一名称的状态,如果使用'define 宏定义就会混淆起来,如果使用parameter 则不会造成任何不良影响。
/ e' L1 l9 h, Y* M$ k( v$ p% _# G0 X- F
一旦`define指令被编译,其在整个编译过程中都有效。例如,通过另一个文件中的`define指令,定义的常量可以被其他文件中被调用。直到遇到`undef;parameter只在定义的文件中有效,在其它文件中无效。4 y8 \* O* w% V- W

$ \0 f  {$ B% a1 D0 B' F
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-9 13:28 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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