首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wire声明后的localparam

wire声明后的localparam
EN

Stack Overflow用户
提问于 2014-02-12 18:17:06
回答 2查看 13.8K关注 0票数 0

出于一个非常奇怪的原因(我们使用的脚本),我需要能够在模块中声明wire和regs之后声明一个localparam:

代码语言:javascript
复制
module blah (clk, rst, in, out);

  input        clk;
  input        rst;
  input  [2:0] in;
  output [3:0] out;

  wire         res;

  localparam NUMBER=5;


...

这是合法的verilog代码吗?如果能链接到文档中的相关章节,我也将不胜感激。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-12 20:41:02

这是有效的Verilog (2001)。Verilog2001看到了localparam的引入,对于所有版本,在此上下文中使用参数在语法上仍然有效。localparam表示它不能被重写。

用法可以在23.10覆盖SystemVerilog IEEE Std 1800-2012的模块参数一节中看到。

来自IEEE 1800-2012:

例如:

代码语言:javascript
复制
module generic_fifo
    #(MSB=3, LSB=0)        // parameter port list parameters
    (input  wire  [MSB:LSB] in,
     input  wire            clk, read, write, reset,
     output logic [MSB:LSB] out,
     output logic           full, empty );

  parameter   DEPTH=4; // module item parameter

  localparam FIFO_MSB = DEPTH*MSB;
  localparam FIFO_LSB = LSB;
    // These constants are local, and cannot be overridden.
    // They can be affected by altering the value parameters above

  logic [FIFO_MSB:FIFO_LSB] fifo;
  logic [LOG2(DEPTH):0] depth;

  always @(posedge clk or posedge reset) begin
    casez ({read,write,reset})
      // implementation of fifo
    endcase
  end
endmodule
票数 4
EN

Stack Overflow用户

发布于 2014-02-13 12:41:27

一点儿没错。根据Verilog IEEE Std 1364-2001,您可以在Verilog代码中使用localparam。它可以在wire声明之后声明,这没有问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21724904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档