小编eav*_*een的帖子

将参数传递给Verilog模块

我正在为FPGA设计编写一些Verilog模块.我浏览了一下互联网,了解我如何最好地对我的模块进行参数化.我经常看到两种不同的方法.我在下面列举了两种不同方法的例子.哪些方法是参数化模块的最佳方法?有什么不同?它是依赖于供应商的吗(Altera vs Xilinx)?

第一种方法:模块定义:

module busSlave #(parameter DATA_WIDTH = 1) (
  input [DATA_WIDTH-1:0] bus_data,
  input                  bus_wr,
  ...
);
endmodule
Run Code Online (Sandbox Code Playgroud)

模块实例化:

module top;

  //DATA_WIDTH is 32 in this instance
  busSlave #(.DATA_WIDTH(32)) slave32(
    .bus_data(data_0),
    .bus_wr(wr_0),
    ...
    );

  //DATA_WIDTH is 64 in this instance
  busSlave #(.DATA_WIDTH(64)) slave64(
    .bus_data(data_1),
    .bus_wr(wr_1),
    ...
    );
endmodule
Run Code Online (Sandbox Code Playgroud)

第二种方法:模块定义:

module busSlave(
  parameter DATA_WIDTH = 1;
  input [DATA_WIDTH-1:0] bus_data,
  input                  bus_wr,
  ...
);
endmodule
Run Code Online (Sandbox Code Playgroud)

模块实例化:

module top;

  //DATA_WIDTH is 32 in this instance
  busSlave slave32(
    .bus_data(data_0),
    .bus_wr(wr_0),
    ...
    );
  defparam …
Run Code Online (Sandbox Code Playgroud)

verilog module fpga parameterization

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

标签 统计

fpga ×1

module ×1

parameterization ×1

verilog ×1