⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 des_sbox.v

📁 xilinx公司三重DES加密代码
💻 V
📖 第 1 页 / 共 2 页
字号:
MUXF5 s12 ( .I0(d0[3]), .I1(d1[3]), .S(addr[6]), .O(da[3]) );MUXF5 s13 ( .I0(d0[4]), .I1(d1[4]), .S(addr[6]), .O(da[4]) );// mux the second two together in F5 muxesMUXF5 s20 ( .I0(d2[1]), .I1(d3[1]), .S(addr[6]), .O(db[1]) );MUXF5 s21 ( .I0(d2[2]), .I1(d3[2]), .S(addr[6]), .O(db[2]) );MUXF5 s22 ( .I0(d2[3]), .I1(d3[3]), .S(addr[6]), .O(db[3]) );MUXF5 s23 ( .I0(d2[4]), .I1(d3[4]), .S(addr[6]), .O(db[4]) );endmodule/* Sbox 5 */module SB5(addr,da,db);input [1:6] addr;output [1:4] da;output [1:4] db;reg [1:4] d0;reg [1:4] d1;reg [1:4] d2;reg [1:4] d3;always @(addr) begincase (addr[2:5])    0:  d0 = 2;    1:  d0 = 12;    2:  d0 = 4;    3:  d0 = 1;    4:  d0 = 7;    5:  d0 = 10;    6:  d0 = 11;    7:  d0 = 6;    8:  d0 = 8;    9:  d0 = 5;    10: d0 = 3;    11: d0 = 15;    12: d0 = 13;    13: d0 = 0;    14: d0 = 14;    15: d0 = 9;endcaseendalways @(addr) begincase (addr[2:5])    0:  d1 = 14;    1:  d1 = 11;    2:  d1 = 2;    3:  d1 = 12;    4:  d1 = 4;    5:  d1 = 7;    6:  d1 = 13;    7:  d1 = 1;    8:  d1 = 5;    9:  d1 = 0;    10: d1 = 15;    11: d1 = 10;    12: d1 = 3;    13: d1 = 9;    14: d1 = 8;    15: d1 = 6;endcaseendalways @(addr) begincase (addr[2:5])    0:  d2 = 4;    1:  d2 = 2;    2:  d2 = 1;    3:  d2 = 11;    4:  d2 = 10;    5:  d2 = 13;    6:  d2 = 7;    7:  d2 = 8;    8:  d2 = 15;    9:  d2 = 9;    10: d2 = 12;    11: d2 = 5;    12: d2 = 6;    13: d2 = 3;    14: d2 = 0;    15: d2 = 14;endcaseendalways @(addr) begincase (addr[2:5])    0:  d3 = 11;    1:  d3 = 8;    2:  d3 = 12;    3:  d3 = 7;    4:  d3 = 1;    5:  d3 = 14;    6:  d3 = 2;    7:  d3 = 13;    8:  d3 = 6;    9:  d3 = 15;    10: d3 = 0;    11: d3 = 9;    12: d3 = 10;    13: d3 = 4;    14: d3 = 5;    15: d3 = 3;endcaseend// mux the first two together in F5 muxesMUXF5 s10 ( .I0(d0[1]), .I1(d1[1]), .S(addr[6]), .O(da[1]) );MUXF5 s11 ( .I0(d0[2]), .I1(d1[2]), .S(addr[6]), .O(da[2]) );MUXF5 s12 ( .I0(d0[3]), .I1(d1[3]), .S(addr[6]), .O(da[3]) );MUXF5 s13 ( .I0(d0[4]), .I1(d1[4]), .S(addr[6]), .O(da[4]) );// mux the second two together in F5 muxesMUXF5 s20 ( .I0(d2[1]), .I1(d3[1]), .S(addr[6]), .O(db[1]) );MUXF5 s21 ( .I0(d2[2]), .I1(d3[2]), .S(addr[6]), .O(db[2]) );MUXF5 s22 ( .I0(d2[3]), .I1(d3[3]), .S(addr[6]), .O(db[3]) );MUXF5 s23 ( .I0(d2[4]), .I1(d3[4]), .S(addr[6]), .O(db[4]) );endmodule/* Sbox 6  */module SB6(addr,da,db);input [1:6] addr;output [1:4] da;output [1:4] db;reg [1:4] d0;reg [1:4] d1;reg [1:4] d2;reg [1:4] d3;always @(addr) begincase (addr[2:5])    0:  d0 = 12;    1:  d0 = 1;    2:  d0 = 10;    3:  d0 = 15;    4:  d0 = 9;    5:  d0 = 2;    6:  d0 = 6;    7:  d0 = 8;    8:  d0 = 0;    9:  d0 = 13;    10: d0 = 3;    11: d0 = 4;    12: d0 = 14;    13: d0 = 7;    14: d0 = 5;    15: d0 = 11;endcaseendalways @(addr) begincase (addr[2:5])    0:  d1 = 10;    1:  d1 = 15;    2:  d1 = 4;    3:  d1 = 2;    4:  d1 = 7;    5:  d1 = 12;    6:  d1 = 9;    7:  d1 = 5;    8:  d1 = 6;    9:  d1 = 1;    10: d1 = 13;    11: d1 = 14;    12: d1 = 0;    13: d1 = 11;    14: d1 = 3;    15: d1 = 8;endcaseendalways @(addr) begincase (addr[2:5])    0:  d2 = 9;    1:  d2 = 14;    2:  d2 = 15;    3:  d2 = 5;    4:  d2 = 2;    5:  d2 = 8;    6:  d2 = 12;    7:  d2 = 3;    8:  d2 = 7;    9:  d2 = 0;    10: d2 = 4;    11: d2 = 10;    12: d2 = 1;    13: d2 = 13;    14: d2 = 11;    15: d2 = 6;endcaseendalways @(addr) begincase (addr[2:5])    0:  d3 = 4;    1 : d3 = 3;    2 : d3 = 2;    3 : d3 = 12;    4 : d3 = 9;    5 : d3 = 5;    6 : d3 = 15;    7 : d3 = 10;    8 : d3 = 11;    9 : d3 = 14;    10: d3 = 1;    11: d3 = 7;    12: d3 = 6;    13: d3 = 0;    14: d3 = 8;    15: d3 = 13;endcaseend// mux the first two together in F5 muxesMUXF5 s10 ( .I0(d0[1]), .I1(d1[1]), .S(addr[6]), .O(da[1]) );MUXF5 s11 ( .I0(d0[2]), .I1(d1[2]), .S(addr[6]), .O(da[2]) );MUXF5 s12 ( .I0(d0[3]), .I1(d1[3]), .S(addr[6]), .O(da[3]) );MUXF5 s13 ( .I0(d0[4]), .I1(d1[4]), .S(addr[6]), .O(da[4]) );// mux the second two together in F5 muxesMUXF5 s20 ( .I0(d2[1]), .I1(d3[1]), .S(addr[6]), .O(db[1]) );MUXF5 s21 ( .I0(d2[2]), .I1(d3[2]), .S(addr[6]), .O(db[2]) );MUXF5 s22 ( .I0(d2[3]), .I1(d3[3]), .S(addr[6]), .O(db[3]) );MUXF5 s23 ( .I0(d2[4]), .I1(d3[4]), .S(addr[6]), .O(db[4]) );endmodule/* Sbox 7 */module SB7(addr,da,db);input [1:6] addr;output [1:4] da;output [1:4] db;reg [1:4] d0;reg [1:4] d1;reg [1:4] d2;reg [1:4] d3;always @(addr) begincase (addr[2:5])    0:  d0 = 4;    1:  d0 = 11;    2:  d0 = 2;    3:  d0 = 14;    4:  d0 = 15;    5:  d0 = 0;    6:  d0 = 8;    7:  d0 = 13;    8:  d0 = 3;    9:  d0 = 12;    10: d0 = 9;    11: d0 = 7;    12: d0 = 5;    13: d0 = 10;    14: d0 = 6;    15: d0 = 1;endcaseendalways @(addr) begincase (addr[2:5])    0:  d1 = 13;    1:  d1 = 0;    2:  d1 = 11;    3:  d1 = 7;    4:  d1 = 4;    5:  d1 = 9;    6:  d1 = 1;    7:  d1 = 10;    8:  d1 = 14;    9:  d1 = 3;    10: d1 = 5;    11: d1 = 12;    12: d1 = 2;    13: d1 = 15;    14: d1 = 8;    15: d1 = 6;endcaseendalways @(addr) begincase (addr[2:5])    0:  d2 = 1;    1:  d2 = 4;    2:  d2 = 11;    3:  d2 = 13;    4:  d2 = 12;    5:  d2 = 3;    6:  d2 = 7;    7:  d2 = 14;    8:  d2 = 10;    9:  d2 = 15;    10: d2 = 6;    11: d2 = 8;    12: d2 = 0;    13: d2 = 5;    14: d2 = 9;    15: d2 = 2;endcaseendalways @(addr) begincase (addr[2:5])    0:  d3 = 6;    1:  d3 = 11;    2:  d3 = 13;    3:  d3 = 8;    4:  d3 = 1;    5:  d3 = 4;    6:  d3 = 10;    7:  d3 = 7;    8:  d3 = 9;    9:  d3 = 5;    10: d3 = 0;    11: d3 = 15;    12: d3 = 14;    13: d3 = 2;    14: d3 = 3;    15: d3 = 12;endcaseend// mux the first two together in F5 muxesMUXF5 s10 ( .I0(d0[1]), .I1(d1[1]), .S(addr[6]), .O(da[1]) );MUXF5 s11 ( .I0(d0[2]), .I1(d1[2]), .S(addr[6]), .O(da[2]) );MUXF5 s12 ( .I0(d0[3]), .I1(d1[3]), .S(addr[6]), .O(da[3]) );MUXF5 s13 ( .I0(d0[4]), .I1(d1[4]), .S(addr[6]), .O(da[4]) );// mux the second two together in F5 muxesMUXF5 s20 ( .I0(d2[1]), .I1(d3[1]), .S(addr[6]), .O(db[1]) );MUXF5 s21 ( .I0(d2[2]), .I1(d3[2]), .S(addr[6]), .O(db[2]) );MUXF5 s22 ( .I0(d2[3]), .I1(d3[3]), .S(addr[6]), .O(db[3]) );MUXF5 s23 ( .I0(d2[4]), .I1(d3[4]), .S(addr[6]), .O(db[4]) );endmodule/* Sbox 8 */module SB8(addr,da,db);input [1:6] addr;output [1:4] da;output [1:4] db;reg [1:4] d0;reg [1:4] d1;reg [1:4] d2;reg [1:4] d3;always @(addr) begincase (addr[2:5])    0:  d0 = 13;    1:  d0 = 2;    2:  d0 = 8;    3:  d0 = 4;    4:  d0 = 6;    5:  d0 = 15;    6:  d0 = 11;    7:  d0 = 1;    8:  d0 = 10;    9:  d0 = 9;    10: d0 = 3;    11: d0 = 14;    12: d0 = 5;    13: d0 = 0;    14: d0 = 12;    15: d0 = 7;endcaseendalways @(addr) begincase (addr[2:5])    0:  d1 = 1;    1:  d1 = 15;    2:  d1 = 13;    3:  d1 = 8;    4:  d1 = 10;    5:  d1 = 3;    6:  d1 = 7;    7:  d1 = 4;    8:  d1 = 12;    9:  d1 = 5;    10: d1 = 6;    11: d1 = 11;    12: d1 = 0;    13: d1 = 14;    14: d1 = 9;    15: d1 = 2;endcaseendalways @(addr) begincase (addr[2:5])    0:  d2 = 7;    1:  d2 = 11;    2:  d2 = 4;    3:  d2 = 1;    4:  d2 = 9;    5:  d2 = 12;    6:  d2 = 14;    7:  d2 = 2;    8:  d2 = 0;    9:  d2 = 6;    10: d2 = 10;    11: d2 = 13;    12: d2 = 15;    13: d2 = 3;    14: d2 = 5;    15: d2 = 8;endcaseendalways @(addr) begincase (addr[2:5])    0:  d3 = 2;    1:  d3 = 1;    2:  d3 = 14;    3:  d3 = 7;    4:  d3 = 4;    5:  d3 = 10;    6:  d3 = 8;    7:  d3 = 13;    8:  d3 = 15;    9:  d3 = 12;    10: d3 = 9;    11: d3 = 0;    12: d3 = 3;    13: d3 = 5;    14: d3 = 6;    15: d3 = 11;endcaseend// mux the first two together in F5 muxesMUXF5 s10 ( .I0(d0[1]), .I1(d1[1]), .S(addr[6]), .O(da[1]) );MUXF5 s11 ( .I0(d0[2]), .I1(d1[2]), .S(addr[6]), .O(da[2]) );MUXF5 s12 ( .I0(d0[3]), .I1(d1[3]), .S(addr[6]), .O(da[3]) );MUXF5 s13 ( .I0(d0[4]), .I1(d1[4]), .S(addr[6]), .O(da[4]) );// mux the second two together in F5 muxesMUXF5 s20 ( .I0(d2[1]), .I1(d3[1]), .S(addr[6]), .O(db[1]) );MUXF5 s21 ( .I0(d2[2]), .I1(d3[2]), .S(addr[6]), .O(db[2]) );MUXF5 s22 ( .I0(d2[3]), .I1(d3[3]), .S(addr[6]), .O(db[3]) );MUXF5 s23 ( .I0(d2[4]), .I1(d3[4]), .S(addr[6]), .O(db[4]) );endmodule/* end of Sboxes */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -