📄 des3_top.v
字号:
// *******************************************************//
//
// DES3_TOP
// 3-DES Top Level module
// Author:
// Date :2005/12/01
//
// *******************************************************//
module DES3_TOP (
des_clk ,
rst_n ,
des_in ,
load ,
key1 ,
key2 ,
key3 ,
mode ,
des_out ,
ready
);
input des_clk ;
input rst_n ;
input load ;
input [63:0] des_in ;
input [63:0] key1 ;
input [63:0] key2 ;
input [63:0] key3 ;
input mode ;
output [63:0] des_out ;
output ready ;
wire [63:0] key_a ;
wire [63:0] key_b ;
wire [63:0] key_c ;
wire [63:0] stage1_out ;
wire [63:0] stage2_out ;
wire ready1 ;
wire ready2 ;
reg [63:0] key_b_r [16:0];
reg [63:0] key_c_r [33:0];
integer i;
assign key_a = mode ? key3 : key1;
assign key_b = key2;
assign key_c = mode ? key1 : key3;
always @(posedge des_clk)
begin
key_b_r[0] <= #1 key_b;
end
always @(posedge des_clk)
begin
for(i=0;i<16;i=i+1)
key_b_r[i+1] <= #1 key_b_r[i];
end
always @(posedge des_clk)
begin
key_c_r[0] <= #1 key_c;
end
always @(posedge des_clk)
begin
for(i=0;i<33;i=i+1)
key_c_r[i+1] <= #1 key_c_r[i];
end
DES_TOP DES1(
.des_clk (des_clk ) ,
.rst_n (rst_n ) ,
.load (load ) ,
.des_in (des_in ) ,
.key (key_a ) ,
.mode (mode ) ,
.des_out (stage1_out ) ,
.ready (ready1 )
);
DES_TOP DES2(
.des_clk (des_clk ) ,
.rst_n (rst_n ) ,
.load (ready1 ) ,
.des_in (stage1_out ) ,
.key (key_b_r[16]) ,
.mode (~mode ) ,
.des_out (stage2_out ) ,
.ready (ready2 )
);
DES_TOP DES3(
.des_clk (des_clk ) ,
.rst_n (rst_n ) ,
.load (ready2 ) ,
.des_in (stage2_out ) ,
.key (key_c_r[33]) ,
.mode (mode ) ,
.des_out (des_out ) ,
.ready (ready )
);
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -