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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
你知道Verilog中parameter和define的区别吗?
% x; L9 I! |2 b. x/ g2 A
1、语法  z* S( X* l" L8 d
声明:
% Z4 z3 \+ n) {! X; @2 f' n5 U; V/ v" f# A3 d* Z- [7 Q
parameter data = 8‘d14;
% t+ @3 A) J4 h
  D$ S9 o+ j; l4 U6 O& s9 M8 v" a`define data 8’d14
2 a# ]# T" G: X9 N5 Z7 J, S- K* y! I/ S% @* Q$ `
使用:. o' V5 H5 V2 p, ~/ d! R% s" b. }
       data
- X8 T% h3 t$ r* k$ _2 \+ l
$ p, ?" Q; L9 [& {5 |+ s1 ^`data
6 g1 Y4 N" @6 l2 k) n! |" u: g
, t! M9 c  _, S) H9 k
& z/ x$ o/ Y4 Y: T: N$ E% t  `) G' l2、作用域: y, w1 q/ K1 z

/ l. b0 K! U, v9 Mparameter 作用于声明的那个文件;`define 从编译器读到这条指令开始到编译结束都有效,或者遇到`undef命令使之失效。
8 U5 ?0 K$ @% k& G- v% ~: ^
! x+ P5 C% O+ r9 Z( r0 {" x如果想让parameter或`define作用于整个项目,可以将如下声明写于单独文件,并用`include让每个文件都包含声明文件:; z# v7 |$ `1 R9 u
( w0 d3 `5 X' l: G+ B  ~
`ifndef data- p& ], T8 h, o( f

( O& S) M$ K2 c2 ?+ F/ B+ z `define data  8’d14
4 e: J/ I5 R% f  V2 j
: a! \9 x- j* E  Z, W  w或者, B$ t( y6 U2 B- {% |& t
$ ^# n1 C1 p) w
parameter data = 8‘d14;% f7 s/ j' F* ~  x3 ]: H4 D; [

6 Q/ m; l6 D; H" s( w# x: }`endif( y1 m2 o  ^" l, g+ H. q

! K( k/ I! s; [' {; Q; b`define也可以写在编译器最先编译的文件顶部。通常编译器都可以定义编译顺序,或者从最底层模块开始编译。因此写在最底层就可以了。
+ N; F1 b5 w# K
3 k  X4 U! \3 u* I# w" j2 n0 U3、区别1 u  J+ m$ {  z; k; b3 Q. U

% o2 U1 {' y2 h1 P3 T- rparameter可以用作例化时的参数传递。
# J5 g3 p! F7 k% v9 }# @( d
* R. T! o+ [8 D, A在使用状态机时候区别挺大的。状态机的定义可以用parameter 定义,但是不推荐使用`define 宏定义的方式,因为'define 宏定义在编译时自动替换整个设计中所定义的宏,而parameter 仅仅定义模块内部的参数,定义的参数不会与模块外的其他状态机混淆。例如一个工程里面有两个module 各包含一个FSM,如果设计时都有IDLE 这一名称的状态,如果使用'define 宏定义就会混淆起来,如果使用parameter 则不会造成任何不良影响。8 J. z# H# x0 T# ~$ Z, ^; x- E8 j6 f

4 B, R. @. N, }4 O/ j( r, y 一旦`define指令被编译,其在整个编译过程中都有效。例如,通过另一个文件中的`define指令,定义的常量可以被其他文件中被调用。直到遇到`undef;parameter只在定义的文件中有效,在其它文件中无效。' K8 u$ |; m% K; w
  e- V; Z  J+ [( Q$ o
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-2 12:05 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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