Des Algorithm Verilog Code
Des Algorithm Verilog Code
// Company:
// Engineer:
//
// Create Date: 11:18:41 01/10/2012
// Design Name:
// Module Name: Des_Top
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module Des_Top(CLK, RST, CHIP_SELECT_BAR, PLAIN_TEXT, CIPHER_TEXT,KEY);
input CLK;
input RST;
input CHIP_SELECT_BAR;
//input ADDRESS;
input [64:1]KEY;
wire CLK;
wire RST;
wire CHIP_SELECT_BAR;
//wire ADDRESS;
wire [64:1]KEY;
wire [48 : 1]
KEY1,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8,KEY9,KEY10,KEY11,KEY12,KEY13,KEY14,KEY15,
KEY16;
wire [48 : 1]
SKEY2,SKEY3,SKEY4,SKEY5,SKEY6,SKEY7,SKEY8,SKEY9,SKEY10,SKEY11,SKEY12,SKEY13,SKEY14,SKEY15,
SKEY16;
wire [32 : 1]
RIGHT1,RIGHT2,RIGHT3,RIGHT4,RIGHT5,RIGHT6,RIGHT7,RIGHT8,RIGHT9,RIGHT10,RIGHT11,
RIGHT12,RIGHT13,RIGHT14,RIGHT15,RIGHT16;
Initial_Permutation ip (
.CHIP_SELECT_BAR(CHIP_SELECT_BAR),
.PLAIN_TEXT(PLAIN_TEXT),
.LEFT(LEFT),
.RIGHT(RIGHT)
);
Key_Top key
.CHIP_SELECT_BAR(CHIP_SELECT_BAR),
.KEY(KEY),
.KEY1(KEY1),
.KEY2(KEY2),
.KEY3(KEY3),
.KEY4(KEY4),
.KEY5(KEY5),
.KEY6(KEY6),
.KEY7(KEY7),
.KEY8(KEY8),
.KEY9(KEY9),
.KEY10(KEY10),
.KEY11(KEY11),
.KEY12(KEY12),
.KEY13(KEY13),
.KEY14(KEY14),
.KEY15(KEY15),
.KEY16(KEY16)
);
//SKEWING CONCEPT
skew_test
skew(CLK,RST,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8,KEY9,KEY10,KEY11,KEY12,KEY13,KEY14,KEY15,KEY1
6,
SKEY2,SKEY3,SKEY4,SKEY5,SKEY6,SKEY7,SKEY8,SKEY9,SKEY10,SKEY11,SKEY12,SKEY13,SKEY14,SKEY15,SKE
Y16);
Round1 round1
.CLK(CLK),
.RST(RST),
.LEFT(LEFT),
.RIGHT(RIGHT),
.KEY(KEY1),
.LEFT1(LEFT1),
.RIGHT1(RIGHT1)
);
Round1 round2
.CLK(CLK),
.RST(RST),
.LEFT(LEFT1),
.RIGHT(RIGHT1),
.KEY(SKEY2),
.LEFT1(LEFT2),
.RIGHT1(RIGHT2)
);
Round1 round3
.CLK(CLK),
.RST(RST),
.LEFT(LEFT2),
.RIGHT(RIGHT2),
.KEY(SKEY3),
.LEFT1(LEFT3),
.RIGHT1(RIGHT3)
);
Round1 round4
.CLK(CLK),
.RST(RST),
.LEFT(LEFT3),
.RIGHT(RIGHT3),
.KEY(SKEY4),
.LEFT1(LEFT4),
.RIGHT1(RIGHT4)
);
Round1 round5
.CLK(CLK),
.RST(RST),
.LEFT(LEFT4),
.RIGHT(RIGHT4),
.KEY(SKEY5),
.LEFT1(LEFT5),
.RIGHT1(RIGHT5)
);
Round1 round6
.CLK(CLK),
.RST(RST),
.LEFT(LEFT5),
.RIGHT(RIGHT5),
.KEY(SKEY6),
.LEFT1(LEFT6),
.RIGHT1(RIGHT6)
);
Round1 round7
.CLK(CLK),
.RST(RST),
.LEFT(LEFT6),
.RIGHT(RIGHT6),
.KEY(SKEY7),
.LEFT1(LEFT7),
.RIGHT1(RIGHT7)
);
Round1 round8
.CLK(CLK),
.RST(RST),
.LEFT(LEFT7),
.RIGHT(RIGHT7),
.KEY(SKEY8),
.LEFT1(LEFT8),
.RIGHT1(RIGHT8)
);
Round1 round9
.CLK(CLK),
.RST(RST),
.LEFT(LEFT8),
.RIGHT(RIGHT8),
.KEY(SKEY9),
.LEFT1(LEFT9),
.RIGHT1(RIGHT9)
);
Round1 round10
.CLK(CLK),
.RST(RST),
.LEFT(LEFT9),
.RIGHT(RIGHT9),
.KEY(SKEY10),
.LEFT1(LEFT10),
.RIGHT1(RIGHT10)
);
Round1 round11
.CLK(CLK),
.RST(RST),
.LEFT(LEFT10),
.RIGHT(RIGHT10),
.KEY(SKEY11),
.LEFT1(LEFT11),
.RIGHT1(RIGHT11)
);
Round1 round12
.CLK(CLK),
.RST(RST),
.LEFT(LEFT11),
.RIGHT(RIGHT11),
.KEY(SKEY12),
.LEFT1(LEFT12),
.RIGHT1(RIGHT12)
);
Round1 round13
.CLK(CLK),
.RST(RST),
.LEFT(LEFT12),
.RIGHT(RIGHT12),
.KEY(SKEY13),
.LEFT1(LEFT13),
.RIGHT1(RIGHT13)
);
Round1 round14
.CLK(CLK),
.RST(RST),
.LEFT(LEFT13),
.RIGHT(RIGHT13),
.KEY(SKEY14),
.LEFT1(LEFT14),
.RIGHT1(RIGHT14)
);
Round1 round15
.CLK(CLK),
.RST(RST),
.LEFT(LEFT14),
.RIGHT(RIGHT14),
.KEY(SKEY15),
.LEFT1(LEFT15),
.RIGHT1(RIGHT15)
);
Round1 round16
.CLK(CLK),
.RST(RST),
.LEFT(LEFT15),
.RIGHT(RIGHT15),
.KEY(SKEY16),
.LEFT1(LEFT16),
.RIGHT1(RIGHT16)
);
Swap swap
(
.LEFT16(LEFT16),
.RIGHT16(RIGHT16),
.LEFT_SWAP(LEFT_SWAP),
.RIGHT_SWAP(RIGHT_SWAP)
);
Inverse_Initial_Permutation iip (
.LEFT_SWAP(LEFT_SWAP),
.RIGHT_SWAP(RIGHT_SWAP),
.CIPHER_TEXT(CIPHER_TEXT)
);
endmodule
always @(RIGHT)
begin
end
endmodule
input CHIP_SELECT_BAR;
//select
wire
CHIP_SELECT_BAR;
wire
[64 : 1] PLAIN_TEXT;
wire
[32 : 1] LEFT;
wire
[32 : 1] RIGHT;
reg
[64 : 1] INITIAL_PERMUTATION_OUTPUT;
always @ (CHIP_SELECT_BAR)
begin
if(CHIP_SELECT_BAR == 0)
begin
end
else
begin
end
end
endmodule
reg
[64 : 1]CIPHER_TEXT;
always @(TEMP)
begin
end
endmodule
input CHIP_SELECT_BAR;
input [64:1]KEY;
//
input [2:1]ADDRESS;
wire CHIP_SELECT_BAR;
//
wire [2:1]ADDRESS;
//
//
begin
case (ADDRESS)
//
//
//
//
//
//
//
endcase
end
begin
if(CHIP_SELECT_BAR == 0)
begin
end
else
begin
end
end
endmodule
module Key_Top(CHIP_SELECT_BAR, KEY1, KEY2, KEY3, KEY4, KEY5, KEY6, KEY7, KEY8, KEY9, KEY10,
KEY11 ,KEY12,
KEY13, KEY14, KEY15, KEY16, KEY);
input CHIP_SELECT_BAR;
input [64:1]KEY;
wire [64:1]KEY;
wire [28 : 1]
LEFT_HALF0,LEFT_HALF1,LEFT_HALF2,LEFT_HALF3,LEFT_HALF4,LEFT_HALF5,LEFT_HALF6,LEFT_HALF7,
LEFT_HALF8,LEFT_HALF9,LEFT_HALF10,LEFT_HALF11,LEFT_HALF12,LEFT_HALF13,LEFT_HALF14,
LEFT_HALF15,LEFT_HALF16;
wire [28 : 1]
RIGHT_HALF0,RIGHT_HALF1,RIGHT_HALF2,RIGHT_HALF3,RIGHT_HALF4,RIGHT_HALF5,RIGHT_HALF6,RIG
HT_HALF7,
RIGHT_HALF8,RIGHT_HALF9,RIGHT_HALF10,RIGHT_HALF11,RIGHT_HALF12,RIGHT_HALF13,RIGHT_HALF
14,
RIGHT_HALF15,RIGHT_HALF16;
Key_Generation key_gen (
.CHIP_SELECT_BAR(CHIP_SELECT_BAR),
.LEFT_CIRCULAR_SHIFT1(LEFT_HALF0),
.RIGHT_CIRCULAR_SHIFT1(RIGHT_HALF0),.KEY(KEY)
);
Permuted_Choice2 u1 (
.LEFT_CIRCULAR_SHIFT1(LEFT_HALF1),
.RIGHT_CIRCULAR_SHIFT1(RIGHT_HALF1),
.SUBKEY(KEY1)
);
Permuted_Choice2 u2 (
.LEFT_CIRCULAR_SHIFT1(LEFT_HALF2),
.RIGHT_CIRCULAR_SHIFT1(RIGHT_HALF2),
.SUBKEY(KEY2)
);
Permuted_Choice2 u3 (
.LEFT_CIRCULAR_SHIFT1(LEFT_HALF3),
.RIGHT_CIRCULAR_SHIFT1(RIGHT_HALF3),
.SUBKEY(KEY3)
);
Permuted_Choice2 u4 (
.LEFT_CIRCULAR_SHIFT1(LEFT_HALF4),
.RIGHT_CIRCULAR_SHIFT1(RIGHT_HALF4),
.SUBKEY(KEY4)
);
Permuted_Choice2 u5 (
.LEFT_CIRCULAR_SHIFT1(LEFT_HALF5),
.RIGHT_CIRCULAR_SHIFT1(RIGHT_HALF5),
.SUBKEY(KEY5)
);
Permuted_Choice2 u6 (
.LEFT_CIRCULAR_SHIFT1(LEFT_HALF6),
.RIGHT_CIRCULAR_SHIFT1(RIGHT_HALF6),
.SUBKEY(KEY6)
);
Permuted_Choice2 u7 (
.LEFT_CIRCULAR_SHIFT1(LEFT_HALF7),
.RIGHT_CIRCULAR_SHIFT1(RIGHT_HALF7),
.SUBKEY(KEY7)
);
Permuted_Choice2 u8 (
.LEFT_CIRCULAR_SHIFT1(LEFT_HALF8),
.RIGHT_CIRCULAR_SHIFT1(RIGHT_HALF8),
.SUBKEY(KEY8)
);
Permuted_Choice2 u9 (
.LEFT_CIRCULAR_SHIFT1(LEFT_HALF9),
.RIGHT_CIRCULAR_SHIFT1(RIGHT_HALF9),
.SUBKEY(KEY9)
);
Permuted_Choice2 u10 (
.LEFT_CIRCULAR_SHIFT1(LEFT_HALF10),
.RIGHT_CIRCULAR_SHIFT1(RIGHT_HALF10),
.SUBKEY(KEY10)
);
Permuted_Choice2 u11 (
.LEFT_CIRCULAR_SHIFT1(LEFT_HALF11),
.RIGHT_CIRCULAR_SHIFT1(RIGHT_HALF11),
.SUBKEY(KEY11)
);
Permuted_Choice2 u12 (
.LEFT_CIRCULAR_SHIFT1(LEFT_HALF12),
.RIGHT_CIRCULAR_SHIFT1(RIGHT_HALF12),
.SUBKEY(KEY12)
);
Permuted_Choice2 u13 (
.LEFT_CIRCULAR_SHIFT1(LEFT_HALF13),
.RIGHT_CIRCULAR_SHIFT1(RIGHT_HALF13),
.SUBKEY(KEY13)
);
Permuted_Choice2 u14 (
.LEFT_CIRCULAR_SHIFT1(LEFT_HALF14),
.RIGHT_CIRCULAR_SHIFT1(RIGHT_HALF14),
.SUBKEY(KEY14)
);
Permuted_Choice2 u15 (
.LEFT_CIRCULAR_SHIFT1(LEFT_HALF15),
.RIGHT_CIRCULAR_SHIFT1(RIGHT_HALF15),
.SUBKEY(KEY15)
);
Permuted_Choice2 u16 (
.LEFT_CIRCULAR_SHIFT1(LEFT_HALF16),
.RIGHT_CIRCULAR_SHIFT1(RIGHT_HALF16),
.SUBKEY(KEY16)
);
endmodule
reg
[32 : 1] PERMUTATION_OUTPUT;
always @ (S_OUTPUT)
begin
end
endmodule
reg
[48 : 1] SUBKEY;
wire
[56 : 1] PERMUTATION2_INPUT;
assign
always @ (PERMUTATION2_INPUT)
begin
end
endmodule
input CLK;
input RST;
wire CLK;
wire RST;
reg
[32 : 1] LEFT_REG1;
reg
[32 : 1] RIGHT_REG1;
begin
if(RST)
begin
end
else
begin
end
end
endmodule
input CLK;
input RST;
wire CLK;
wire RST;
wire [6 : 1] S1_INPUT;
wire [6 : 1] S2_INPUT;
wire [6 : 1] S3_INPUT;
wire [6 : 1] S4_INPUT;
wire [6 : 1] S5_INPUT;
wire [6 : 1] S6_INPUT;
wire [6 : 1] S7_INPUT;
wire [6 : 1] S8_INPUT;
wire [3 : 0] S1_OUTPUT;
wire [3 : 0] S2_OUTPUT;
wire [3 : 0] S3_OUTPUT;
wire [3 : 0] S4_OUTPUT;
wire [3 : 0] S5_OUTPUT;
wire [3 : 0] S6_OUTPUT;
wire [3 : 0] S7_OUTPUT;
wire [3 : 0] S8_OUTPUT;
//wire [6 : 1] SBOX1_INPUT;
//wire [6 : 1] SBOX2_INPUT;
//wire [6 : 1] SBOX3_INPUT;
//wire [6 : 1] SBOX4_INPUT;
//wire [6 : 1] SBOX5_INPUT;
//wire [6 : 1] SBOX6_INPUT;
//wire [6 : 1] SBOX7_INPUT;
//wire [6 : 1] SBOX8_INPUT;
Expansion_Permutation expansion (
.RIGHT(RIGHT),
.EXPANSION_PERMUTATION(EXPANSION_PERMUTATION)
);
Xor_Operation expansion_to_xor1 (
.EXPANSION_PERMUTATION(EXPANSION_PERMUTATION),
.SUBKEY(KEY),
.SBOX1_INPUT(S1_INPUT),
.SBOX2_INPUT(S2_INPUT),
.SBOX3_INPUT(S3_INPUT),
.SBOX4_INPUT(S4_INPUT),
.SBOX5_INPUT(S5_INPUT),
.SBOX6_INPUT(S6_INPUT),
.SBOX7_INPUT(S7_INPUT),
.SBOX8_INPUT(S8_INPUT)
);
Sbox_Rom1 s1
(
.S1_INPUT(S1_INPUT),
.S1_OUTPUT(S1_OUTPUT)
);
Sbox_Rom2 s2
(
.S2_INPUT(S2_INPUT),
.S2_OUTPUT
(S2_OUTPUT)
);
Sbox_Rom3 s3
(
.S3_INPUT(S3_INPUT),
.S3_OUTPUT
(S3_OUTPUT)
);
Sbox_Rom4 s4
(
.S4_INPUT(S4_INPUT),
.S4_OUTPUT
(S4_OUTPUT)
);
Sbox_Rom5 s5
(
.S5_INPUT(S5_INPUT),
.S5_OUTPUT
(S5_OUTPUT)
);
Sbox_Rom6 s6
(
.S6_INPUT(S6_INPUT),
.S6_OUTPUT
(S6_OUTPUT)
);
Sbox_Rom7 s7
(
.S7_INPUT(S7_INPUT),
.S7_OUTPUT
(S7_OUTPUT)
);
Sbox_Rom8 s8
(
.S8_INPUT(S8_INPUT),
.S8_OUTPUT
(S8_OUTPUT)
);
Sbox_Output sout
(
.S1_OUTPUT(S1_OUTPUT),
.S2_OUTPUT(S2_OUTPUT),
.S3_OUTPUT(S3_OUTPUT),
.S4_OUTPUT(S4_OUTPUT),
.S5_OUTPUT(S5_OUTPUT),
.S6_OUTPUT(S6_OUTPUT),
.S7_OUTPUT(S7_OUTPUT),
.S8_OUTPUT(S8_OUTPUT),
.S_OUTPUT
(S_OUTPUT)
);
Permutation s_to_permutation (
.S_OUTPUT(S_OUTPUT),
.PERMUTATION_OUTPUT(PERMUTATION_OUTPUT)
);
Xor_Permutation permut_xor
.PERMUTATION_OUTPUT(PERMUTATION_OUTPUT),
.LEFT(LEFT),
.RIGHT_REG(RIGHT_REG)
);
Reg32 input_to_round2
.CLK(CLK),
.RST(RST),
.RIGHT(RIGHT),
.RIGHT_REG(RIGHT_REG),
.LEFT_REG1(LEFT1),
.RIGHT_REG1(RIGHT1)
);
endmodule
input [3 : 0] S1_OUTPUT;
input [3 : 0] S2_OUTPUT;
input [3 : 0] S3_OUTPUT;
input [3 : 0] S4_OUTPUT;
input [3 : 0] S5_OUTPUT;
input [3 : 0] S6_OUTPUT;
input [3 : 0] S7_OUTPUT;
input [3 : 0] S8_OUTPUT;
output [32 : 1]S_OUTPUT;
wire [3 : 0] S1_OUTPUT;
wire [3 : 0] S2_OUTPUT;
wire [3 : 0] S3_OUTPUT;
wire [3 : 0] S4_OUTPUT;
wire [3 : 0] S5_OUTPUT;
wire [3 : 0] S6_OUTPUT;
wire [3 : 0] S7_OUTPUT;
wire [3 : 0] S8_OUTPUT;
endmodule
input [6 : 1] S1_INPUT;
output [3 : 0] S1_OUTPUT;
wire [6 : 1] S1_INPUT;
reg [3 : 0] S1_OUTPUT;
wire [6 : 1] S1_SELECT;
always @(S1_SELECT)
begin
case (S1_SELECT)
6'b000000: S1_OUTPUT <= 4'hE;
6'b000001: S1_OUTPUT <= 4'h4;
6'b000010: S1_OUTPUT <= 4'hD;
6'b000011: S1_OUTPUT <= 4'h1;
6'b000100: S1_OUTPUT <= 4'h2;
6'b000101: S1_OUTPUT <= 4'hF;
6'b000110: S1_OUTPUT <= 4'hB;
6'b000111: S1_OUTPUT <= 4'h8;
6'b001000: S1_OUTPUT <= 4'h3;
6'b001001: S1_OUTPUT <= 4'hA;
6'b001010: S1_OUTPUT <= 4'h6;
6'b001011: S1_OUTPUT <= 4'hC;
6'b001100: S1_OUTPUT <= 4'h5;
6'b001101: S1_OUTPUT <= 4'h9;
6'b001110: S1_OUTPUT <= 4'h0;
6'b001111: S1_OUTPUT <= 4'h7;
6'b010000: S1_OUTPUT <= 4'h0;
6'b010001: S1_OUTPUT <= 4'hF;
6'b010010: S1_OUTPUT <= 4'h7;
6'b010011: S1_OUTPUT <= 4'h4;
endcase
end
endmodule
input [6 : 1] S2_INPUT;
output [3 : 0] S2_OUTPUT;
wire [6 : 1] S2_INPUT;
reg [3 : 0] S2_OUTPUT;
wire [6 : 1] S2_SELECT;
always @(S2_SELECT)
begin
case(S2_SELECT)
endcase
end
endmodule
input [6 : 1] S3_INPUT ;
output [3 : 0] S3_OUTPUT;
wire [6 : 1] S3_INPUT;
reg [3 : 0] S3_OUTPUT;
wire [6 : 1] S3_SELECT;
always @(S3_SELECT)
begin
case(S3_SELECT)
endcase
end
endmodule
input [6 : 1]S4_INPUT;
output [3 : 0 ]S4_OUTPUT;
wire [6 : 1] S4_INPUT;
reg
[3 : 0] S4_OUTPUT;
wire [6 : 1] S4_SELECT;
always @(S4_SELECT)
begin
case(S4_SELECT)
endcase
end
endmodule
input [6 : 1] S5_INPUT;
output [3 : 0 ] S5_OUTPUT;
wire [6 : 1] S5_INPUT;
reg [3 : 0] S5_OUTPUT;
wire [6 : 1] S5_SELECT;
always @(S5_SELECT)
begin
case(S5_SELECT)
endcase
end
endmodule
input [6 : 1] S6_INPUT;
output [3 : 0 ] S6_OUTPUT;
wire [6 : 1] S6_INPUT;
reg [3 : 0] S6_OUTPUT;
wire [6 : 1] S6_SELECT;
always @(S6_SELECT)
begin
case(S6_SELECT)
endcase
end
endmodule
input [6 : 1] S7_INPUT;
output [3 : 0 ] S7_OUTPUT;
wire [6 : 1] S7_INPUT;
reg [3 : 0] S7_OUTPUT;
wire [6 : 1] S7_SELECT;
always @(S7_SELECT)
begin
case(S7_SELECT)
endcase
end
endmodule
input [6 : 1] S8_INPUT;
output [3 : 0 ] S8_OUTPUT;
wire [6 : 1] S8_INPUT;
reg [3 : 0] S8_OUTPUT;
wire [6 : 1] S8_SELECT;
always @(S8_SELECT)
begin
case(S8_SELECT)
endcase
end
endmodule
endmodule
output [6 : 1] SBOX1_INPUT;
output [6 : 1] SBOX2_INPUT;
output [6 : 1] SBOX3_INPUT;
output [6 : 1] SBOX4_INPUT;
output [6 : 1] SBOX5_INPUT;
output [6 : 1] SBOX6_INPUT;
output [6 : 1] SBOX7_INPUT;
output [6 : 1] SBOX8_INPUT;
wire
[48 : 1] EXPANSION_PERMUTATION;
wire
[48 : 1] SUBKEY;
wire
[48 : 1] SBOX_INPUT;
endmodule
begin
//
end
endmodule