在Verilog中比较Packed和Unpacked数组

时间:2014-09-20 00:47:22

标签: 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;
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 

所以在上面的代码中,根据我的思考过程,当j = 0时,other_data(16&#39; haabb)将等于my_data [0:1]并导致temp = 1&#39; b1。

测试此设计会给出打包和解包类型之间的非法比较错误。

总而言之,目的是将2Bytes数据与2个1Bytes数据进行比较。任何建议/程序,这是赞赏。

1 个答案:

答案 0 :(得分:2)

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

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

edaplayground.com上的示例:http://www.edaplayground.com/x/CtZ