圈子秘钥的生成
圈子秘钥的生成module key_get(input pre_key,
input des_mode,
input inter_num,
output wire new_key,
output reg out_key);
reg pre_key_0, pre_key_1;
reg pre_key_var;
always @(*)
begin
if(des_mode == 1'b0)
begin
case(inter_num)
4'd0, 4'd1, 4'd8, 4'd15:
begin
pre_key_var = pre_key;
pre_key_0 = pre_key_var;
pre_key_var =pre_key_var << 1;
pre_key_var = pre_key_0;
pre_key_0 = pre_key_var;
pre_key_var =pre_key_var << 1;
pre_key_var = pre_key_0;
end 4'd2, 4'd3, 4'd4, 4'd5, 4'd6, 4'd7, 4'd9, 4'd10, 4'd11,
4'd12,
4'd13, 4'd14:
begin
pre_key_var = pre_key;
{pre_key_1, pre_key_0} = pre_key_var;
pre_key_var =pre_key_var << 2;
pre_key_var = {pre_key_1, pre_key_0};
{pre_key_1, pre_key_0} = pre_key_var;
pre_key_var =pre_key_var << 2;
pre_key_var = {pre_key_1, pre_key_0};
end
endcase
end
else
begin
case(inter_num)
4'd0: pre_key_var = pre_key;
4'd1, 4'd8, 4'd15:
begin
pre_key_var = pre_key;
pre_key_0 = pre_key_var;
pre_key_var =pre_key_var >> 1;
pre_key_var = pre_key_0;
pre_key_0 = pre_key_var;
pre_key_var =pre_key_var >> 1;
pre_key_var = pre_key_0;
end
default:
begin
pre_key_var = pre_key;
{pre_key_1, pre_key_0} = pre_key_var;
pre_key_var =pre_key_var >> 2;
pre_key_var = {pre_key_1, pre_key_0};
{pre_key_1, pre_key_0} = pre_key_var;
pre_key_var =pre_key_var >> 2;
pre_key_var = {pre_key_1, pre_key_0};
end
endcase
end
out_key = pre_key_var;
end
assign new_key =
{pre_key_var,pre_key_var,pre_key_var,pre_key_var,pre_key_var,pre_key_var,
pre_key_var,pre_key_var,pre_key_var,pre_key_var,pre_key_var,pre_key_var,
pre_key_var,pre_key_var,pre_key_var,pre_key_var,pre_key_var,pre_key_var,
pre_key_var,pre_key_var,pre_key_var,pre_key_var,pre_key_var,pre_key_var,
pre_key_var,pre_key_var,pre_key_var,pre_key_var,pre_key_var,pre_key_var,
pre_key_var,pre_key_var,pre_key_var,pre_key_var,pre_key_var,pre_key_var,
pre_key_var,pre_key_var,pre_key_var,pre_key_var,pre_key_var,pre_key_var,
pre_key_var,pre_key_var,pre_key_var,pre_key_var,pre_key_var,pre_key_var};
endmodule
页:
[1]