Develop and Download Open Source Software

Browse Subversion Repository

Contents of /trunk/Toriya/des_pipeline.v

Parent Directory Parent Directory | Revision Log Revision Log


Revision 118 - (show annotations) (download)
Wed Apr 11 04:55:06 2007 UTC (17 years, 1 month ago) by chapuni
File size: 3698 byte(s)
「本物の鳥屋」ついに公開です。
たぶん 2005/09 頃のものです。
もしかするとあと一度ほど、改良するかもね。
1 /**********************************************************-*-verilog-*-
2 *
3 * DES Pipeline(x16)
4 * シーケンシャルキー専用のDESパイプライン
5 *
6 * $Id$
7 *
8 */
9
10 module des_pipeline(clk5,
11 i_l, i_r, i_k, k_0,
12 o_l, o_r, o_k,
13 salt,
14 kp,
15 clk, s_we, s_a, s_d);
16
17 input clk5;
18
19 // 入力
20 input [1:32] i_l;
21 input [1:32] i_r;
22 input [55:0] i_k;
23 input [55:0] k_0;
24
25 // 出力
26 output [1:32] o_l;
27 output [1:32] o_r;
28 output [55:0] o_k;
29
30 // 調味料
31 input [11:0] salt;
32
33 // phase cache 参照用
34 input [55:0] kp;
35
36 // S5-8への書き込みインタフェイス
37 input clk;
38 input s_we;
39 input [10:0] s_a;
40 input [15:0] s_d;
41
42 // パイプライン化キーマスク
43 parameter kmsk = 56'b0000_0000_1111_1111_111_111_111_111_000_000_000_000_000_000_000_000_0000;
44
45 /*
46 * S1-S4のセットアップ
47 * a[9:6] が、各ステージ(0-f)へのweとなる。
48 * a[5:0] は、RAMへのアドレス(すなわち入力ビットパターン)
49 * d は、合成済みデータである。
50 */
51 wire [6:0] a;
52 wire we0, we1, we2, we3, we4, we5, we6, we7;
53 wire we8, we9, wea, web, wec, wed, wee, wef;
54
55 assign a = s_a[10:4];
56 assign we0 = bk_we(s_we, s_a, 4'h0);
57 assign we1 = bk_we(s_we, s_a, 4'h1);
58 assign we2 = bk_we(s_we, s_a, 4'h2);
59 assign we3 = bk_we(s_we, s_a, 4'h3);
60 assign we4 = bk_we(s_we, s_a, 4'h4);
61 assign we5 = bk_we(s_we, s_a, 4'h5);
62 assign we6 = bk_we(s_we, s_a, 4'h6);
63 assign we7 = bk_we(s_we, s_a, 4'h7);
64 assign we8 = bk_we(s_we, s_a, 4'h8);
65 assign we9 = bk_we(s_we, s_a, 4'h9);
66 assign wea = bk_we(s_we, s_a, 4'ha);
67 assign web = bk_we(s_we, s_a, 4'hb);
68 assign wec = bk_we(s_we, s_a, 4'hc);
69 assign wed = bk_we(s_we, s_a, 4'hd);
70 assign wee = bk_we(s_we, s_a, 4'he);
71 assign wef = bk_we(s_we, s_a, 4'hf);
72
73 /*
74 * 各パイプラインに必要な配線
75 * このうち、KLはパイプライン伝播しないのでダミー
76 */
77 wire [1:32] l01, l12, l23, l34, l45, l56, l67, l78;
78 wire [1:32] l89, l9a, lab, lbc, lcd, lde, lef;
79 wire [1:32] r01, r12, r23, r34, r45, r56, r67, r78;
80 wire [1:32] r89, r9a, rab, rbc, rcd, rde, ref;
81 wire [55:0] k01, k12, k23, k34, k45, k56, k67, k78;
82 wire [55:0] k89, k9a, kab, kbc, kcd, kde, kef;
83
84 /*
85 * 各ステージのレイテンシは2である。
86 * 各ステージの入力段および出力段はラッチされていない。
87 * 最終段(i_*, o_*)の扱いには注意せよ。
88 */
89 des12 #(kmsk, 8'b0000_0000, 1) stage_0(i_l, i_r, i_k, k_0, l01, r01, k01, clk5, salt, kp);
90 des12 #(kmsk, 8'b0100_1001, 2) stage_1(l01, r01, i_k, k01, l12, r12, k12, clk5, salt, kp);
91 des12 #(kmsk, 8'b1111_1111, 4) stage_2(l12, r12, i_k, k12, l23, r23, k23, clk5, salt, kp);
92 des12 #(kmsk, 8'b1111_1111, 6) stage_3(l23, r23, i_k, k23, l34, r34, k34, clk5, salt, kp);
93 des24 #(kmsk, 8'b0000_0001, 8) stage45(l34, r34, i_k, k34, l56, r56, k56, clk5, salt, kp);
94 des24 #(kmsk, 8'b0000_0000, 12) stage67(l56, r56, i_k, k56, l78, r78, k78, clk5, salt, kp);
95 des24 #(kmsk, 8'b0000_0000, 15) stage89(l78, r78, i_k, k78, l9a, r9a, k9a, clk5, salt, kp);
96 des24 #(kmsk, 8'b0000_1000, 19) stageab(l9a, r9a, i_k, k9a, lbc, rbc, kbc, clk5, salt, kp);
97 des12 #(kmsk, 8'b1111_1111, 23) stage_c(lbc, rbc, i_k, kbc, lcd, rcd, kcd, clk5, salt, kp);
98 des12 #(kmsk, 8'b1111_1111, 25) stage_d(lcd, rcd, i_k, kcd, lde, rde, kde, clk5, salt, kp);
99 des12 #(kmsk, 8'b1111_1111, 27) stage_e(lde, rde, i_k, kde, lef, ref, kef, clk5, salt, kp);
100 des12 #(kmsk, 8'b0000_0000, 28) stage_f(lef, ref, i_k, kef, o_r, o_l, o_k, clk5, salt, kp);
101 /*** 最終段では LR が入れ替わる ***/
102
103 /**************************************************************/
104
105 // 特定バンクへのwe
106 function bk_we;
107 input we;
108 input [10:0] a;
109 input [3:0] b;
110 bk_we = we && (a[3:0] == b);
111 endfunction
112
113 endmodule
114
115 /*
116 * Local variables:
117 * tab-width: 4
118 * End:
119 */

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Rev URL

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26