《des加密算法verilog实现源代码资料》由会员分享,可在线阅读,更多相关《des加密算法verilog实现源代码资料(39页珍藏版)》请在金锄头文库上搜索。
1、module des_top(input clk, input des_enable, input reset, input des_mode, input 1:64 data_i, input 1:64 key_i, output wire 1:64 data_o,output ready_o);wire 3:0 inter_num_curr;wire 1:32 R_i_var, L_i_var;wire 1:56 Key_i_var_out;wire 1:64 data_o_var_t;wire 1:32 R_i, L_i;wire 1:32 R_o, L_o;wire 1:56 Key_
2、o;wire 1:28 C0, D0;IP IP1(.in(data_i), .L_i_var(L_i_var), .R_i_var(R_i_var);IP_niIP_ni(.in(data_o_var_t), .out(data_o);pc_1 pc_1(.key_i(key_i), .C0(C0), .D0(D0);/F(R,K)des_f des_f1(.clk(clk), .reset(reset), .des_mode(des_mode), .inter_num_i(inter_num_curr), .R_i(R_i), .L_i(L_i), .Key_i(Key_i_var_out
3、), .R_o(R_o), .L_o(L_o), .Key_o(Key_o); /contral 16 F(R,K)contrl contrl1(.data_o_var_t(data_o_var_t), .inter_num_curr(inter_num_curr), .Key_i_var_out(Key_i_var_out), .R_i(R_i), .L_i(L_i), .ready_o(ready_o), .L_o(L_o), .R_o(R_o), .R_i_var(R_i_var), .L_i_var(L_i_var), .Key_o(Key_o), .C0(C0), .D0(D0),
4、.clk(clk), .reset(reset), .des_enable(des_enable);endmodulemodule contrl(output 1:64 data_o_var_t, output reg 3:0 inter_num_curr, output reg 1:56 Key_i_var_out, output reg 1:32 R_i, L_i, output reg ready_o, input 1:32 L_o, input 1:32 R_o, input 1:32 R_i_var, L_i_var, input 1:56 Key_o, input 1:28 C0,
5、 D0, input clk, reset, des_enable); reg 3:0 inter_num_next;assign data_o_var_t = (ready_o = 1b1)?L_o,R_o:64hzzzzzzzzzzzzzzzz;always (posedge clk or negedge reset)if(reset = 1b0)begin inter_num_next = 4d0; inter_num_curr = 4d0; ready_o = 1b0; endelse if(des_enable)beginif(ready_o = 1b0)inter_num_curr
6、 = inter_num_next;endalways (posedge clk or negedge reset)beginif(reset = 1b0)ready_o = 1b0;else if(inter_num_curr = 4d15) ready_o = 1b1; else ready_o = 1b0;end always (*)begincase(inter_num_curr)4d0:begin/ready_o = 1b0; R_i = R_i_var; L_i = L_i_var; Key_i_var_out = C0, D0; inter_num_next = 4d1; end
7、4d1: begin/ready_o = 1b0; R_i = R_o;L_i = L_o;Key_i_var_out = Key_o;inter_num_next = 4d2;end4d2: begin/ready_o = 1b0; R_i = R_o;L_i = L_o;Key_i_var_out = Key_o;inter_num_next = 4d3;end4d3: begin/ready_o = 1b0; R_i = R_o;L_i = L_o;Key_i_var_out = Key_o;inter_num_next = 4d4;end4d4: begin/ready_o = 1b0
8、; R_i = R_o;L_i = L_o;Key_i_var_out = Key_o;inter_num_next = 4d5;end4d5: begin/ready_o = 1b0; R_i = R_o;L_i = L_o;Key_i_var_out = Key_o;inter_num_next = 4d6;end4d6: begin/ready_o = 1b0; R_i = R_o;L_i = L_o;Key_i_var_out = Key_o;inter_num_next = 4d7;end4d7: begin/ready_o = 1b0; R_i = R_o;L_i = L_o;Ke
9、y_i_var_out = Key_o;inter_num_next = 4d8;end4d8: begin/ready_o = 1b0; R_i = R_o;L_i = L_o;Key_i_var_out = Key_o;inter_num_next = 4d9;end4d9: begin/ready_o = 1b0; R_i = R_o;L_i = L_o;Key_i_var_out = Key_o;inter_num_next = 4d10;end4d10: begin/ready_o = 1b0; R_i = R_o;L_i = L_o;Key_i_var_out = Key_o;in
10、ter_num_next = 4d11;end4d11: begin/ready_o = 1b0; R_i = R_o;L_i = L_o;Key_i_var_out = Key_o;inter_num_next = 4d12;end4d12: begin/ready_o = 1b0; R_i = R_o;L_i = L_o;Key_i_var_out = Key_o;inter_num_next = 4d13;end4d13: begin/ready_o = 1b0; R_i = R_o;L_i = L_o;Key_i_var_out = Key_o;inter_num_next = 4d14;end4d14: begin/ready_o = 1b0; R_i = R_o;L_i = L_o;Key_i_var_out = Key_o;inter_num_next = 4d15;end4d15:if(ready_o = 1b0) begin R_i = R_o; L_i = L_o; Key_i_var_out = Key_o;