Verilog中压缩阵列与非压缩阵列的比较

Verilog中压缩阵列与非压缩阵列的比较,verilog,Verilog,以下代码片段的目标是: 将以压缩数组形式存储的2字节数据(2个位置,每个位置1字节)与以非压缩方式存储的2字节数据进行比较 module byte_design ( input wire clk, input wire [7:0] my_data [1:0], input wire [15:0] other_data, output reg temp ); integer j; assign my_data[0] = 8'haa; assign my_data[1] = 8'hbb;

以下代码片段的目标是:

将以压缩数组形式存储的2字节数据(2个位置,每个位置1字节)与以非压缩方式存储的2字节数据进行比较

module byte_design (
input wire clk,
input   wire [7:0] my_data [1:0],
input   wire [15:0] other_data,
output reg temp
);

integer j;

assign my_data[0] = 8'haa;
assign my_data[1] = 8'hbb;
assign other_data = 16'haabb;

always @ (posedge clk) begin 

for ( j = 0; j < 2 ; j = j+1 ) begin 
  if ( other_data == my_data [j+:1]) begin 
    temp <= 1'b1;
  end
  else begin 
    temp <= 1'b0;
  end 
end 
end 

endmodule 
模块字节\u设计(
输入线时钟,
输入导线[7:0]我的_数据[1:0],
输入线[15:0]其他_数据,
输出调节温度
);
整数j;
分配我的_数据[0]=8'haa;
分配我的_数据[1]=8'hbb;
分配其他_数据=16'haabb;
始终@(posedge clk)开始
对于(j=0;j<2;j=j+1)开始
如果(其他_数据==我的_数据[j+:1])开始

temp如果只想比较两个字节,则无需在压缩数组上循环。在我看来,这将起作用,而且更加清晰

module byte_design (
  input wire clk,
  input   wire [7:0] my_data [1:0],
  input   wire [15:0] other_data,
  output reg temp
);

  assign temp = ({my_data[1], my_data[0]} == other_data);

endmodule

EDAPlayde.com上的示例:

感谢您的回复。您给出的示例适用于2字节。在我这方面,更大的画面涉及循环n个字节,并将其与2个字节进行比较。因此,我能够使用{my_data[j],my_data[j+1]}逻辑将其扩展到n个字节。