小编McK*_*igo的帖子

在 Verilog 模块之间传递参数

我对 Verilog 还很陌生,正在学习入门知识。我有一些代码生成一个 8 位向上计数器(模块counter.v ),然后由顶部模块( top_module.v )调用。有一个模拟测试夹具(test_fixture.v)调用顶层模块进行测试。

我试图使用参数(参数COUNTER_WIDTH)定义计数器的宽度,但遇到困难。一位同事为我修复了代码,现在它确实可以工作,但我想了解一些事情,以便我能够了解实际发生的情况。

这是计数器模块的代码:

module counter
#(parameter COUNTER_WIDTH = 8)
(
    input wire CLK,
    input wire RST,
    input wire CE,
    output reg[COUNTER_WIDTH-1:0] out = {COUNTER_WIDTH{1'b0}}
    );


   always @(posedge CLK) begin
      if (RST == 1) begin
         out <= {COUNTER_WIDTH{1'b0}};
      end else begin
      if (CE == 1) begin
         out <= out + 1'b1;
      end
    end
  end
endmodule
Run Code Online (Sandbox Code Playgroud)

顶层模块:

module top_module
#(parameter COUNTER_WIDTH = 8)
(
    input wire CLK,
    input wire CE, …
Run Code Online (Sandbox Code Playgroud)

verilog parameter-passing vivado

3
推荐指数
1
解决办法
6783
查看次数

标签 统计

parameter-passing ×1

verilog ×1

vivado ×1