IC基础知识(三)define、parameter、localparam的区别

本文详细介绍了Verilog中的`define、parameter和localparam的区别和用途。`define是宏定义,作用域贯穿整个编译过程;parameter用于模块间参数传递,而localparam则限制在模块内部,不能作为接口。在状态机定义中,通常推荐使用localparam以避免混淆。parameter可通过#(参数)重定义,但localparam不行。最后,文章强调了localparam在生成循环和扩展模块维数时的用途,并提到`define常用于跨模块定义。
摘要由CSDN通过智能技术生成

目录

1、语法(声明)

2、作用域

3、举例具体说明

3.1 `define与parameter(localparam)的区别

3.2 parameter与localparam的区别

4、总结

微信公众号


1、语法(声明)

`define data 8’d14

parameter data = 8‘d14;

localparam data = 8‘d14;

 

使用:

       define定义的变量用`引用,例如:`data;

    而parameter和localparam定义的变量直接调用就好,例如:data。

 

2、作用域

    `define(宏定义):对同时编译的多个文件起作用。从编译器读到这条指令开始到编译结束都有效,直至遇到重新定义为止;

    parameter:本module内有效的定义,可用于参数传递;

    localparam:本module内有效的定义,不可用于参数传递。

 

 

3、举例具体说明

3.1 `define与parameter(localparam)的区别

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

    一旦`define指令被编译,其在整个编译过程中都有效。例如,通过另一个文件中的`defin

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值