f函数的实现
f函数的实现module des_f(input clk,
input reset,
input des_mode,
input inter_num_i,
input R_i,
input L_i,
input Key_i,
output reg R_o,
output reg L_o,
output reg Key_o);
reg next_R;
//reg R_i_var;
wire expandedR;
reg pre_key;
reg new_key_tmp;
reg inter_num;
wire p;
reg address_s;
reg Soutput;
wire Soutput_wire;
wire new_key;
wire out_key;
key_getkey_get(.pre_key(pre_key), .des_mode(des_mode), .inter_num(inter_num), .new_key(new_key), .out_key(out_key));
s1sbox1(.stage1_input(address_s), .stage1_output(Soutput_wire));
s2sbox2(.stage1_input(address_s), .stage1_output(Soutput_wire));
s3sbox3(.stage1_input(address_s), .stage1_output(Soutput_wire));
s4sbox4(.stage1_input(address_s), .stage1_output(Soutput_wire));
s5sbox5(.stage1_input(address_s), .stage1_output(Soutput_wire));
s6sbox6(.stage1_input(address_s), .stage1_output(Soutput_wire));
s7sbox7(.stage1_input(address_s), .stage1_output(Soutput_wire));
s8sbox8(.stage1_input(address_s),.stage1_output(Soutput_wire));
always @(posedge clk or negedge reset)
begin
if(reset == 1'b0)
begin
R_o <= 32'd0;
L_o <= 32'd0;
Key_o <= 56'd0;
end
else
begin
Key_o <= out_key;
if(inter_num == 4'b1111)
begin
R_o <= R_i;
L_o <= next_R;
end
else
begin
R_o <= next_R;
L_o <= R_i; end
end
end
assignexpandedR =
{R_i,R_i,R_i,R_i,R_i,R_i,
R_i,R_i,R_i,R_i,R_i,R_i,
R_i,R_i,R_i,R_i,R_i,R_i,
R_i,R_i,R_i,R_i,R_i,R_i,
R_i,R_i,R_i,R_i,R_i,R_i,
R_i,R_i,R_i,R_i,R_i,R_i,
R_i,R_i,R_i,R_i,R_i,R_i,
R_i,R_i,R_i,R_i,R_i,R_i};
assignp = { Soutput,Soutput,Soutput,Soutput,
Soutput,Soutput,Soutput,Soutput,
Soutput,Soutput,Soutput,Soutput,
Soutput,Soutput,Soutput,Soutput,
Soutput,Soutput,Soutput,Soutput,
Soutput,Soutput,Soutput,Soutput,
Soutput,Soutput,Soutput,Soutput,
Soutput,Soutput,Soutput,Soutput};
always @(*)
begin
pre_key = Key_i;
inter_num = inter_num_i;
new_key_tmp = new_key;
address_s = new_key_tmp ^ expandedR;
Soutput = Soutput_wire;
//??????????
next_R = (L_i^p);
end
endmodule
页:
[1]