Verilog:如何用本地参数、$bits 或其他东西替换 8'b?

问题描述 投票:0回答:1

示例代码中'localparam CMD_MSB = 7;'在单独的项目文件中创建。其他三行在我的设计文件中。 CMD_MSB 可以在我不知情的情况下更改值。有没有办法在我的设计文件中使用 localparam、$bits 或其他内容作为最后一行的 8'b 来处理 CMD_MSB 值的更改?

localparam CMD_MSB = 7; // Project file

logic [CMD_MSB:0] cmd;  // My design file
logic wr_cmd, cmd_vld; // My design file
assign cmd_vld = wr_cmd & (cmd == 8'b0_01_???_01); // My design file
                                  ^^^
verilog system-verilog
1个回答
0
投票

您可以使用串联来构建解码值,如下所示:

module tb();
  
  localparam CMD_MSB = 7; // Project file
  localparam OTHER_BITS_1 = 4'hf;  
  localparam OTHER_BITS_2 = 4'hf;  
  localparam USED_AS_DECODE = {CMD_MSB,OTHER_BITS_1,OTHER_BITS_2};  

  logic [CMD_MSB:0] cmd;  // My design file
  logic wr_cmd, cmd_vld; // My design file
  
  assign cmd_vld = wr_cmd & (cmd == USED_AS_DECODE); // My design file
  
endmodule
© www.soinside.com 2019 - 2024. All rights reserved.