OpenCores
URL https://opencores.org/ocsvn/csa/csa/trunk

Subversion Repositories csa

[/] [csa/] [trunk/] [rtl/] [decrypt.v] - Blame information for rev 41

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 18 simon111
 
2 40 simon111
`include "../bench/timescale.v"
3 18 simon111
// this module will do csa decrypt work
4
 
5 41 simon111
module decrypt(clk,rst,ck,key_en,even_odd,en,encrypted,decrypted,valid);
6 21 simon111
input             clk;
7
input             rst;
8
input             key_en;    // signal high valid,
9
input             even_odd;  // indiate the input ck is even or odd, 0 --- even odd ---odd
10
input             en;        // decrypted
11
input  [8*8-1:0]  ck;        // input ck
12
input  [  8-1:0]  encrypted; // input ts stream
13
output [  8-1:0]  decrypted; // decrypt ts stream
14 41 simon111
output            valid;     // output data is valid
15 20 simon111
 
16 41 simon111
wire [ 8*8-1:0] odd_ck;
17
wire [ 8*8-1:0] even_ck;
18
wire [56*8-1:0] odd_kk;
19
wire [56*8-1:0] even_kk;
20 20 simon111
 
21 41 simon111
 
22 21 simon111
// key register 
23 41 simon111
key_cnt key_cnt(
24
                  .clk        (clk)
25
                , .rst        (rst)
26
                , .en         (key_en)
27
                , .evenodd    (even_odd)
28
                , .ck_in      (ck)
29
                , .busy       ()
30
                , .odd_ck     (odd_ck)
31
                , .odd_kk     (odd_kk)
32
                , .even_ck    (even_ck)
33
                , .even_kk    (even_kk)
34
                );
35 20 simon111
 
36 41 simon111
wire  ts_valid;
37
wire [8*8-1:0]group;
38
wire [3:0] bytes;
39 20 simon111
 
40 41 simon111
ts_sync ts_sync(
41
               . clk      (clk)
42
             , . rst      (rst)
43
             , . en       (en)
44
             , . datain   (encrypted)
45
             , . valid    (ts_valid)
46
             , . head     ()
47
             , . dec      ()
48
             , . evenodd  ()
49
             , . group    (group)
50
             , . bytes    (bytes)
51
        );
52 20 simon111
 
53 41 simon111
//// word grouper
54
//reg  [8*8-1:0] group;    // 64bits
55
//reg            sync;     // find sync
56
//reg  [8-1:0]   ts_cnt;   // ts packet count
57
//reg            using_even_odd_key; // 0 --- using even key; 1 --- using odd key
58
//reg            need_dec;
59
//reg            group_valid;
60
//reg            group_valid_d;
61
//reg            head;
62
//reg   [5:0]    group_id;
63
//reg [4*8-1:0]  group_d;
64
//
65
//
66
//always @(posedge clk)
67
//        if (rst)
68
//        begin
69
//                group  <= 64'h00000000;
70
//                sync   <= 1'h0;
71
//                ts_cnt <= 8'h00;
72
//                using_even_odd_key <= 1'h0;
73
//                need_dec <= 1'h0;
74
//                group_valid_d <=1'h0; 
75
//                head <= 1'h0;
76
//        end
77
//        else
78
//        begin
79
//                group_valid <=1'h0;
80
//                group_valid_d <= group_valid;
81
//                head <= 1'h0;
82
//                group_d <= group;
83
//                if(en)
84
//                begin
85
//                        group  <= {  encrypted, group [8*8-1:1*8] };
86
//                        if(sync)
87
//                        begin
88
//                                ts_cnt <= ts_cnt + 8'h01;
89
//                                if(ts_cnt[2:0]==3'h7)
90
//                                begin
91
//                                        group_valid<=1'h1;
92
//                                        group_id<=ts_cnt[7:3];
93
//                                end
94
//                                if(ts_cnt == 8'hb7 ) // 0xb8=188-4
95
//                                begin
96
//                                        sync <= 1'h0;
97
//                                        ts_cnt<=8'h0;
98
//                                end
99
//                        end
100
//                        else
101
//                        begin
102
//                                if(group[5*8-1:4*8]==8'h47)
103
//                                begin
104
//                                        sync   <= 1;
105
//                                        ts_cnt <= 8'h00;
106
//                                        using_even_odd_key <= group[62];
107
//                                        head  <= 1'h1;
108
//                                        group_d <= {1'h0,group[62:32]};
109
//                                end
110
//                        end
111
//                end
112
//        end
113
//
114
//// decrypt
115
//reg  [8*8-1:0] db;
116
//reg            db_valid;
117
//
118
//wire [56*8-1:0]kk_decrypt;
119
//wire [ 8*8-1:0]ck_decrypt;
120
//
121
//assign   kk_decrypt = (using_even_odd_key) ? odd_kk : even_kk ; 
122
//assign   ck_decrypt = (using_even_odd_key) ? odd_ck : even_ck ; 
123
//
124
//wire [8*8-1:0] sc_sb;
125
//wire [8*8-1:0] sc_cb;
126
//wire           init;
127
//wire           sc_en;
128
//wire           last;
129
//
130
//assign sc_sb = group;
131
//assign init  = group_id == 5'h00;
132
//assign last  = group_id == 5'd22;
133
//reg     [2:0] last_cnt;
134
//reg     last_run;
135
//assign sc_en = group_valid;
136
//
137
//stream_cypher sc(  
138
//                    .clk   (clk)
139
//                  , .rst   (rst)
140
//                  , .en    (sc_en)
141
//                  , .init  (init)
142
//                  , .ck    (ck_decrypt)
143
//                  , .sb    (sc_sb)
144
//                  , .cb    (sc_cb)
145
//                  );
146
//
147
//wire [ 8*8-1:0]   bco;
148
//reg  [ 8*8-1:0]   bc;
149
//reg  [ 8*8-1:0]   ib;
150
//block_decypher bcm(
151
//                          .kk (kk_decrypt)
152
//                        , .ib (ib[8*8-1:0])
153
//                        , .bd (bco)
154
//                        );
155
//
156
//
157
//always @(posedge clk)
158
//if(rst)
159
//begin
160
//        db <= 64'h00;
161
//        ib <= 128'h00000000000000000000000000000000;
162
//        bc <= 64'hffffffffffffffff;
163
//        last_cnt<=3'h0;
164
//        last_run<=1'h0;
165
//end
166
//else
167
//begin
168
//        db_valid<=1'h0;                        
169
//        if(group_valid_d)
170
//        begin
171
//                bc<=bco;
172
//                if(init)
173
//                begin
174
//                        ib<={ ib[8*8-1:0],sc_cb };
175
//                        db<=bco^sc_cb;
176
//                end
177
//                else
178
//                begin
179
//                        ib<={ ib[8*8-1:0],sc_cb^sc_sb };
180
//                        db<=bco^sc_cb^sc_sb;
181
//                end
182
//                if(group_id>1'h0)
183
//                begin
184
//                        db_valid<=1'h1;                        
185
//                end
186
//
187
//                if(last)
188
//                        last_run<=1'h1;
189
//
190
//        end
191
//        if(last_run)
192
//        begin
193
//                last_cnt<=last_cnt+3'h1;
194
//                if(last_cnt==3'h7)
195
//                begin
196
//                        db_valid<=1'h1;                        
197
//                        db<=bco;
198
//                        last_run<=1'h0;
199
//                end
200
//
201
//        end
202
//end
203
//
204
//// degrouper
205
//reg [2:0]     cnt;
206
//reg           valid;
207
//reg [7:0]     decrypted;
208
//reg [7*8-1:0] dec_group_ouput;
209
//
210
//always @(posedge clk)
211
//        if(rst)
212
//        begin
213
//                dec_group_ouput <= 32'h00000000;
214
//                cnt <= 2'h0;
215
//        end
216
//        else
217
//        begin
218
//                valid <= 1'h0;
219
//                if(db_valid)
220
//                begin
221
//                        dec_group_ouput <= db[8*8-1:1*8];
222
//                        decrypted <= db[7:0];
223
//                        cnt <= 3'h7;
224
//                        valid <= 1'h1;
225
//                end
226
//                if(cnt)
227
//                begin
228
//                        valid <= 1'h1;
229
//                        dec_group_ouput <= {dec_group_ouput [7:0],dec_group_ouput[7*8-1:1*8]};
230
//                        decrypted <= dec_group_ouput [ 7:0 ];
231
//                        cnt <= cnt - 2'h1;
232
//                end
233
//                if(head)
234
//                begin
235
//                        dec_group_ouput <= group_d[4*8-1:1*8];
236
//                        decrypted <= group_d[7:0];
237
//                        cnt <= 2'h3;
238
//                        valid <= 1'h1;
239
//                end
240
//        end
241
//
242 20 simon111
 
243
 
244 41 simon111
ts_serial_out ts_serial_out(
245
                          .clk      (clk)
246
                        , .rst      (rst)
247
                        , .group    (group)
248
                        , .bytes    (bytes)
249
                        , .en       (ts_valid)
250
                        , .dec      (decrypted)
251
                        , .valid    (valid)
252 21 simon111
                        );
253
 
254
 
255 18 simon111
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.