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

Subversion Repositories csa

[/] [csa/] [trunk/] [rtl/] [decrypt.v] - Diff between revs 42 and 49

Only display areas with differences | Details | Blame | View Log

Rev 42 Rev 49
 
 
`include "../bench/timescale.v"
`include "../bench/timescale.v"
// this module will do csa decrypt work
// this module will do csa decrypt work
 
 
module decrypt(clk,rst,ck,key_en,even_odd,en,encrypted,decrypted,valid);
module decrypt(clk,rst,ck,key_en,even_odd,en,encrypted,decrypted,valid);
input             clk;
input             clk;
input             rst;
input             rst;
input             key_en;    // signal high valid,
input             key_en;    // signal high valid,
input             even_odd;  // indiate the input ck is even or odd, 0 --- even odd ---odd
input             even_odd;  // indiate the input ck is even or odd, 0 --- even odd ---odd
input             en;        // decrypted
input             en;        // decrypted
input  [8*8-1:0]  ck;        // input ck
input  [8*8-1:0]  ck;        // input ck
input  [  8-1:0]  encrypted; // input ts stream
input  [  8-1:0]  encrypted; // input ts stream
output [  8-1:0]  decrypted; // decrypt ts stream
output [  8-1:0]  decrypted; // decrypt ts stream
output            valid;     // output data is valid
output            valid;     // output data is valid
 
 
wire [ 8*8-1:0] odd_ck;
wire [ 8*8-1:0] odd_ck;
wire [ 8*8-1:0] even_ck;
wire [ 8*8-1:0] even_ck;
wire [56*8-1:0] odd_kk;
wire [56*8-1:0] odd_kk;
wire [56*8-1:0] even_kk;
wire [56*8-1:0] even_kk;
 
 
 
 
// key register 
// key register 
key_cnt key_cnt(
key_cnt key_cnt(
                  .clk        (clk)
                  .clk        (clk)
                , .rst        (rst)
                , .rst        (rst)
                , .en         (key_en)
                , .en         (key_en)
                , .evenodd    (even_odd)
                , .evenodd    (even_odd)
                , .ck_in      (ck)
                , .ck_in      (ck)
                , .busy       ()
                , .busy       ()
                , .odd_ck     (odd_ck)
                , .odd_ck     (odd_ck)
                , .odd_kk     (odd_kk)
                , .odd_kk     (odd_kk)
                , .even_ck    (even_ck)
                , .even_ck    (even_ck)
                , .even_kk    (even_kk)
                , .even_kk    (even_kk)
                );
                );
 
 
wire  ts_valid;
wire  ts_valid;
wire  ts_init;
wire  ts_init;
wire  ts_head;
wire  ts_head;
wire  ts_dec;
wire  ts_dec;
wire  ts_evenodd;
wire  ts_evenodd;
wire [8*8-1:0]group;
wire [8*8-1:0]group;
wire [3:0] bytes;
wire [3:0] bytes;
 
 
 
 
ts_sync ts_sync(
ts_sync ts_sync(
               . clk      (clk)
               . clk      (clk)
             , . rst      (rst)
             , . rst      (rst)
             , . en       (en)
             , . en       (en)
             , . datain   (encrypted)
             , . datain   (encrypted)
             , . valid    (ts_valid)
             , . valid    (ts_valid)
             , . head     (ts_head)
             , . head     (ts_head)
             , . dec      (ts_dec)
             , . dec      (ts_dec)
             , . init     (ts_init)
             , . init     (ts_init)
             , . evenodd  (ts_evenodd)
             , . evenodd  (ts_evenodd)
             , . group    (group)
             , . group    (group)
             , . bytes    (bytes)
             , . bytes    (bytes)
        );
        );
 
 
wire dec_valid;
wire dec_valid;
wire [8*8-1:0]ogroup;
wire [8*8-1:0]ogroup;
wire [  4-1:0]obytes;
wire [  4-1:0]obytes;
group_decrypt group_decrypt(
group_decrypt group_decrypt(
                          .clk     (clk)
                          .clk     (clk)
                        , .rst     (rst)
                        , .rst     (rst)
                        , .en      (ts_valid)
                        , .en      (ts_valid)
                        , .dec     (ts_dec)
                        , .dec     (ts_dec)
                        , .init    (ts_init)
                        , .init    (ts_init)
                        , .ck      (ts_evenodd?even_ck:odd_ck)
                        , .ck      (ts_evenodd?even_ck:odd_ck)
                        , .kk      (ts_evenodd?even_kk:odd_kk)
                        , .kk      (ts_evenodd?even_kk:odd_kk)
                        , .group   (group)
                        , .group   (group)
                        , .bytes   (bytes)
                        , .bytes   (bytes)
                        , .valid   (dec_valid)
                        , .valid   (dec_valid)
                        , .ogroup  (ogroup)
                        , .ogroup  (ogroup)
                        , .obytes  (obytes)
                        , .obytes  (obytes)
                );
                );
 
 
//
 
//// decrypt
 
//reg  [8*8-1:0] db;
 
//reg            db_valid;
 
//
 
//wire [56*8-1:0]kk_decrypt;
 
//wire [ 8*8-1:0]ck_decrypt;
 
//
 
//assign   kk_decrypt = (using_even_odd_key) ? odd_kk : even_kk ; 
 
//assign   ck_decrypt = (using_even_odd_key) ? odd_ck : even_ck ; 
 
//
 
//wire [8*8-1:0] sc_sb;
 
//wire [8*8-1:0] sc_cb;
 
//wire           init;
 
//wire           sc_en;
 
//wire           last;
 
//
 
//assign sc_sb = group;
 
//assign init  = group_id == 5'h00;
 
//assign last  = group_id == 5'd22;
 
//reg     [2:0] last_cnt;
 
//reg     last_run;
 
//assign sc_en = group_valid;
 
//
 
//stream_cypher sc(  
 
//                    .clk   (clk)
 
//                  , .rst   (rst)
 
//                  , .en    (sc_en)
 
//                  , .init  (init)
 
//                  , .ck    (ck_decrypt)
 
//                  , .sb    (sc_sb)
 
//                  , .cb    (sc_cb)
 
//                  );
 
//
 
//wire [ 8*8-1:0]   bco;
 
//reg  [ 8*8-1:0]   bc;
 
//reg  [ 8*8-1:0]   ib;
 
//block_decypher bcm(
 
//                          .kk (kk_decrypt)
 
//                        , .ib (ib[8*8-1:0])
 
//                        , .bd (bco)
 
//                        );
 
//
 
//
 
//always @(posedge clk)
 
//if(rst)
 
//begin
 
//        db <= 64'h00;
 
//        ib <= 128'h00000000000000000000000000000000;
 
//        bc <= 64'hffffffffffffffff;
 
//        last_cnt<=3'h0;
 
//        last_run<=1'h0;
 
//end
 
//else
 
//begin
 
//        db_valid<=1'h0;                        
 
//        if(group_valid_d)
 
//        begin
 
//                bc<=bco;
 
//                if(init)
 
//                begin
 
//                        ib<={ ib[8*8-1:0],sc_cb };
 
//                        db<=bco^sc_cb;
 
//                end
 
//                else
 
//                begin
 
//                        ib<={ ib[8*8-1:0],sc_cb^sc_sb };
 
//                        db<=bco^sc_cb^sc_sb;
 
//                end
 
//                if(group_id>1'h0)
 
//                begin
 
//                        db_valid<=1'h1;                        
 
//                end
 
//
 
//                if(last)
 
//                        last_run<=1'h1;
 
//
 
//        end
 
//        if(last_run)
 
//        begin
 
//                last_cnt<=last_cnt+3'h1;
 
//                if(last_cnt==3'h7)
 
//                begin
 
//                        db_valid<=1'h1;                        
 
//                        db<=bco;
 
//                        last_run<=1'h0;
 
//                end
 
//
 
//        end
 
//end
 
//
 
 
 
 
 
ts_serial_out ts_serial_out(
ts_serial_out ts_serial_out(
                          .clk      (clk)
                          .clk      (clk)
                        , .rst      (rst)
                        , .rst      (rst)
                        , .group    (ogroup)
                        , .group    (ogroup)
                        , .bytes    (obytes)
                        , .bytes    (obytes)
                        , .en       (dec_valid)
                        , .en       (dec_valid)
                        , .dec      (decrypted)
                        , .dec      (decrypted)
                        , .valid    (valid)
                        , .valid    (valid)
                        );
                        );
 
 
 
 
endmodule
endmodule
 
 

powered by: WebSVN 2.1.0

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