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

Subversion Repositories csa

[/] [csa/] [trunk/] [bench/] [decrypt_tb.v] - Blame information for rev 40

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

Line No. Rev Author Line
1 18 simon111
 
2
// this is the test bench for decrypt module
3
 
4 22 simon111
 
5 40 simon111
`include "../bench/timescale.v"
6 22 simon111
 
7 20 simon111
module decrypt_tb;
8 18 simon111
 
9 22 simon111
reg clk;
10
reg rst;
11
 
12
 
13
 
14
integer bytes;
15
integer out_bytes;
16
 
17 40 simon111
reg      [  8*8-1   : 0]  even_cw;
18
reg      [  8*8-1   : 0]  odd_cw;
19
reg      [188*8-1   : 0]  encrypted;
20
reg      [188*8-1   : 0]  decrypted;
21 22 simon111
 
22
reg      [8*8-1:0]    ck;
23
reg                   even_odd;
24
reg                   en;
25
reg                   key_en;
26
reg      [  8-1:0]    enc;
27
wire     [  8-1:0]    dec;
28
wire                  invalid;
29
 
30 18 simon111
initial
31
begin
32
        $read_data(
33 22 simon111
                                "../test_dat/decrypt.in"
34 40 simon111
                               ,even_cw
35 18 simon111
                  );
36
 
37 40 simon111
        $read_data(
38
                                "../test_dat/decrypt.in"
39
                               ,8
40
                               ,even_cw
41
                  );
42
 
43
        $read_data(
44
                                "../test_dat/decrypt.in"
45
                               ,16
46
                               ,encrypted
47
                  );
48
 
49 22 simon111
        out_bytes = 1;
50 18 simon111
 
51 22 simon111
        en=0;
52
        key_en=0;
53
 
54 23 simon111
        repeat(14)@(posedge clk);
55 22 simon111
 
56
        // set even cw 
57
        @(posedge clk);
58
        ck=even_cw;
59
        en=0;
60
        even_odd=0;
61
        @(posedge clk);
62
        key_en=1;
63
        @(posedge clk);
64
        key_en=0;
65
        repeat (11) @(posedge clk);
66
 
67
        // set odd key
68
        @(posedge clk);
69
        ck=odd_cw;
70
        key_en=1;
71
        en=0;
72
        even_odd=1;
73
        @(posedge clk);
74
        key_en=0;
75
        repeat (11)@(posedge clk);
76
        repeat(4)@(posedge clk);
77
 
78
        // decrypt
79
        for(bytes=1;bytes<=188;bytes=bytes+1)
80
        begin
81
                en=1;
82
                enc=encrypted[bytes];
83
                @(posedge clk);
84
                en=0;
85
                @(posedge clk);
86
        end
87
 
88
        repeat(44) @(posedge clk);
89
 
90
        // output result
91 18 simon111
        $write_data(
92 22 simon111
                                 "../test_dat/decrypt.out.v"
93
                                ,decrypted[1]
94 18 simon111
                   );
95 22 simon111
        for(out_bytes=2;out_bytes<=188;out_bytes=out_bytes+1)
96
        begin
97
        $write_data(
98
                                 "../test_dat/decrypt.out.v"
99
                                ,"a"
100
                                ,decrypted[out_bytes]
101
                   );
102
        end
103
 
104
 
105
        $stop;
106 18 simon111
 
107
end
108
 
109 22 simon111
always @(posedge clk)
110
        if(invalid)
111
        begin
112
                decrypted[out_bytes]=dec;
113
                out_bytes=out_bytes+1;
114
        end
115
 
116
 
117 20 simon111
decrypt b(
118 22 simon111
                  .clk        (clk)
119
                , .rst        (rst)
120
                , .ck         (ck)
121
                , .key_en     (key_en)
122
                , .even_odd   (even_odd)
123
                , .en         (en)
124
                , .encrypted  (enc)
125
                , .decrypted  (dec)
126
                , .invalid    (invalid)
127 18 simon111
                );
128 22 simon111
 
129
 
130
 
131
 
132
initial
133
begin
134
        clk<=1'b0;
135
        forever #5 clk=~clk;
136
end
137
 
138
initial
139
begin
140
        rst<=1'b1;
141
        @(posedge clk);
142
        @(posedge clk);
143
        rst=1'h0;
144
end
145 18 simon111
endmodule

powered by: WebSVN 2.1.0

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