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

Subversion Repositories csa

[/] [csa/] [trunk/] [rtl/] [group_decrypt.v] - Blame information for rev 49

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 42 simon111
`include "../bench/timescale.v"
2
// this moduel do a decrypt group
3
 
4
module group_decrypt(
5 49 simon111
                          input                    clk          // clk 
6
                        , input                    rst          // rst, high active
7
                        , input                    en           // input enable
8
                        , input                    init         // the first packet
9
                        , input                    last         // the last packet
10
                        , input         [ 8*8-1:0] ck           // ck 
11
                        , input         [56*8-1:0] kk           // kk 
12
                        , input         [ 8*8-1:0] group        // packet
13
                        , output                   valid        // output vaild
14
                        , output        [ 8*8-1:0] ogroup       // output packet
15 42 simon111
                );
16 49 simon111
        wire [8*8-1:0] stream;
17
        wire [8*8-1:0] block;
18
        reg  [8*8-1:0] block_d;
19
        reg  [8*8-1:0] init_d;
20
        reg  [8*8-1:0] last_d;
21
        reg  [8*8-1:0] last_dd;
22
        reg  [8*8-1:0] en_d;
23
        reg  [8*8-1:0] en_dd;
24 42 simon111
 
25 49 simon111
        reg            busy;
26 42 simon111
        wire [8*8-1:0] ib;
27
 
28 44 simon111
        stream_cypher stream_cypher(
29
                            .clk   (clk)
30
                          , .rst   (rst)
31
                          , .en    (en)
32
                          , .init  (init)
33
                          , .ck    (ck)
34
                          , .sb    (group)
35
                          , .cb    (stream)
36 49 simon111
                        );
37 43 simon111
 
38 49 simon111
        block_decypher block_decypher (
39
                           .kk (kk)
40
                         , .ib (ib)
41
                         , .bd (block)
42
                        );
43
 
44
 
45
        always @(posedge clk)
46
                if(en_d)
47
                        block_d<=block;
48
 
49
        always @(posedge clk)
50
                if(en)
51
                        init_d<=init;
52
 
53
        always @(posedge clk)
54
                        last_dd<=last_d;
55
 
56
        always @(posedge clk)
57
                if(en)
58
                        last_d<=last;
59
 
60
        always @(posedge clk)
61
                        en_d<=en;
62
 
63
        always @(posedge clk)
64
                        en_dd<=en_d;
65
 
66
        assign ogroup=(en_dd&last_dd)?block_d:ib^block_d;
67
 
68
        assign valid=((busy)&en) | (en_dd&last_dd);
69
 
70
        assign ib=(init)?group:group^stream;
71
 
72
        always @(posedge clk )
73
                if(rst)
74
                        busy<=1'h0;
75
                else
76
                begin
77
                        if(init_d)
78
                                busy<=1'h1;
79
                        if(last_d)
80
                                busy<=1'h0;
81
                end
82
endmodule

powered by: WebSVN 2.1.0

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