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

Subversion Repositories csa

[/] [csa/] [trunk/] [bench/] [decrypt_tb.v] - Rev 40

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

 
// this is the test bench for decrypt module
 
 
`include "../bench/timescale.v"
 
module decrypt_tb;
 
reg clk;
reg rst;
 
 
 
integer bytes;
integer out_bytes;
 
reg      [  8*8-1   : 0]  even_cw;
reg      [  8*8-1   : 0]  odd_cw;
reg      [188*8-1   : 0]  encrypted;
reg      [188*8-1   : 0]  decrypted;
 
reg      [8*8-1:0]    ck;
reg                   even_odd;
reg                   en;
reg                   key_en;
reg      [  8-1:0]    enc;
wire     [  8-1:0]    dec;
wire                  invalid;
 
initial
begin
        $read_data(
                                "../test_dat/decrypt.in"
                               ,even_cw
                  );
 
        $read_data(
                                "../test_dat/decrypt.in"
                               ,8
                               ,even_cw
                  );
 
        $read_data(
                                "../test_dat/decrypt.in"
                               ,16
                               ,encrypted
                  );
 
        out_bytes = 1;
 
        en=0;
        key_en=0;
 
        repeat(14)@(posedge clk);
 
        // set even cw 
        @(posedge clk);
        ck=even_cw;
        en=0;
        even_odd=0;
        @(posedge clk);
        key_en=1;
        @(posedge clk);
        key_en=0;
        repeat (11) @(posedge clk);
 
        // set odd key
        @(posedge clk);
        ck=odd_cw;
        key_en=1;
        en=0;
        even_odd=1;
        @(posedge clk);
        key_en=0;
        repeat (11)@(posedge clk);
        repeat(4)@(posedge clk);
 
        // decrypt
        for(bytes=1;bytes<=188;bytes=bytes+1)
        begin
                en=1;
                enc=encrypted[bytes];
                @(posedge clk);
                en=0;
                @(posedge clk);
        end
 
        repeat(44) @(posedge clk);
 
        // output result
        $write_data(
                                 "../test_dat/decrypt.out.v"
                                ,decrypted[1]
                   );
        for(out_bytes=2;out_bytes<=188;out_bytes=out_bytes+1)
        begin
        $write_data(
                                 "../test_dat/decrypt.out.v"
                                ,"a"
                                ,decrypted[out_bytes]
                   );
        end
 
 
        $stop;
 
end
 
always @(posedge clk)
        if(invalid)
        begin
                decrypted[out_bytes]=dec;
                out_bytes=out_bytes+1;
        end
 
 
decrypt b(
                  .clk        (clk)
                , .rst        (rst)
                , .ck         (ck)
                , .key_en     (key_en)
                , .even_odd   (even_odd)
                , .en         (en)
                , .encrypted  (enc)
                , .decrypted  (dec)
                , .invalid    (invalid)
                );
 
 
 
 
initial
begin
        clk<=1'b0;        
        forever #5 clk=~clk;
end
 
initial
begin
        rst<=1'b1;        
        @(posedge clk);
        @(posedge clk);
        rst=1'h0;
end
endmodule
 

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

powered by: WebSVN 2.1.0

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