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

Subversion Repositories csa

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

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 41 simon111
integer offset;
17 22 simon111
 
18 40 simon111
reg      [  8*8-1   : 0]  even_cw;
19
reg      [  8*8-1   : 0]  odd_cw;
20 41 simon111
reg      [    8-1   : 0]  encrypted_byte;
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 41 simon111
wire                  valid;
29 22 simon111
 
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 42 simon111
                               ,odd_cw
41 40 simon111
                  );
42
 
43 41 simon111
        encrypted_byte=8'h00; // or can not read data
44 22 simon111
        out_bytes = 1;
45 18 simon111
 
46 22 simon111
        en=0;
47
        key_en=0;
48
 
49 23 simon111
        repeat(14)@(posedge clk);
50 22 simon111
 
51
        // set even cw 
52
        @(posedge clk);
53
        ck=even_cw;
54
        en=0;
55
        even_odd=0;
56
        @(posedge clk);
57
        key_en=1;
58
        @(posedge clk);
59
        key_en=0;
60
        repeat (11) @(posedge clk);
61
 
62
        // set odd key
63
        @(posedge clk);
64
        ck=odd_cw;
65
        en=0;
66
        even_odd=1;
67
        @(posedge clk);
68 42 simon111
        key_en=1;
69
        @(posedge clk);
70 22 simon111
        key_en=0;
71
        repeat (11)@(posedge clk);
72 41 simon111
 
73 22 simon111
        repeat(4)@(posedge clk);
74
 
75
        // decrypt
76
        for(bytes=1;bytes<=188;bytes=bytes+1)
77
        begin
78 41 simon111
                offset=16+(bytes-1);
79
                $read_data(
80
                                   "../test_dat/decrypt.in"
81
                                ,  offset
82
                                ,  encrypted_byte
83
                        );
84
                enc=encrypted_byte;
85 22 simon111
                en=1;
86 41 simon111
              //  @(posedge clk);
87
              //  en=0;
88 22 simon111
                @(posedge clk);
89
        end
90
 
91
        repeat(44) @(posedge clk);
92
 
93 41 simon111
 
94
        $stop;
95
 
96
end
97
 
98
always @(posedge clk)
99
        if(valid)
100
        begin
101
                if(out_bytes==1)
102
                begin
103 18 simon111
        $write_data(
104 22 simon111
                                 "../test_dat/decrypt.out.v"
105 41 simon111
                                ,dec
106 18 simon111
                   );
107 41 simon111
                end
108
                else
109
                begin
110 22 simon111
        $write_data(
111
                                 "../test_dat/decrypt.out.v"
112
                                ,"a"
113 41 simon111
                                ,dec
114 22 simon111
                   );
115 41 simon111
                end
116 22 simon111
                out_bytes=out_bytes+1;
117
        end
118
 
119
 
120 20 simon111
decrypt b(
121 22 simon111
                  .clk        (clk)
122
                , .rst        (rst)
123
                , .ck         (ck)
124
                , .key_en     (key_en)
125
                , .even_odd   (even_odd)
126
                , .en         (en)
127
                , .encrypted  (enc)
128
                , .decrypted  (dec)
129 41 simon111
                , .valid      (valid)
130 18 simon111
                );
131 22 simon111
 
132
 
133
 
134
 
135
initial
136
begin
137
        clk<=1'b0;
138
        forever #5 clk=~clk;
139
end
140
 
141
initial
142
begin
143
        rst<=1'b1;
144
        @(posedge clk);
145
        @(posedge clk);
146
        rst=1'h0;
147
end
148 18 simon111
endmodule

powered by: WebSVN 2.1.0

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