找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4816|回复: 0
打印 上一主题 下一主题
收起左侧

Verilog中parameter和define的区别

[复制链接]
跳转到指定楼层
楼主
ID:105323 发表于 2016-2-23 03:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、语法
  

声明:

  

parameter data = 8‘d14;

  

`define data 8’d14

  

使用:
       data

  

`data

  

  

2、作用域

  

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

  

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

  

`ifndef data

  

`define data  8’d14

  

或者

  

parameter data = 8‘d14;

  

`endif

  

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

  

  

3、区别

  

parameter可以用作例化时的参数传递。

  

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

  

一旦`define指令被编译,其在整个编译过程中都有效。例如,通过另一个文件中的`define指令,定义的常量可以被其他文件中被调用。直到遇到`undef;parameter只在定义的文件中有效,在其它文件中无效。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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