[这个贴子最后由风再起在 2005/07/06 04:00pm 第 1 次编辑]
module HASH
#(parameter DW = 16,//data width
HW = 16)//hash width
(
input[DW-1:0]in_data , //input data
input[HW-1:0]in_hash , //input hash
input[HW-1:0]in_poly , //input polynomial
outputreg[HW-1:0]out_hash //output hash
);
//****************************************************************
//define internal signal
//****************************************************************
reghash_temp;
integeri, j;
//****************************************************************
//main code
//****************************************************************
always@(*) begin
out_hash = in_hash;
for(i=DW-1;i>=0;i=i-1) begin
hash_temp = out_hash[HW-1] ^ in_data;
for(j=HW-1;j>0;j=j-1)
out_hash[j] = out_hash[j-1] ^ (hash_temp & in_poly[j]);
out_hash[0] = hash_temp;
end
end
//****************************************************************
endmodule |