2014-09-20 60 views
1

在下面的代碼段的目標比較是:緊縮和非緊縮陣列以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'haabb)將等於my_data [0:1],並導致溫度= 1'b1的。

測試這個設計給出了打包和非打包類型非法比較的錯誤。

總而言之,目標是將2億字節的數據與2億字節的數據進行比較。任何建議/程序來做到這一點表示讚賞。

回答

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

+0

謝謝你的答覆。您給出的例子完美適用於2字節。在我看來,更大的圖像涉及循環n個字節並將其與2個字節進行比較。所以我能夠使用{{my_data [j],my_data [j + 1]}}邏輯將其擴展爲n個字節。 – CDN 2014-09-20 03:45:23