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

Subversion Repositories csa

[/] [csa/] [trunk/] [rtl/] [ts_sync.v] - Rev 42

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

 
`include "../bench/timescale.v"
// this module probe the ts sync head,
 
module ts_sync(
               input                 clk
             , input                 rst
             , input                 en        
             , input         [8-1:0] datain
             , output  reg           valid
             , output  reg           head     // find ts packet head
             , output  reg           init     // the first dec ts packet
             , output  reg           dec      // this ts group need decrypt
             , output  reg           evenodd  // the current key type
             , output  reg [8*8-1:0] group 
             , output  reg     [3:0] bytes    // valid bytes in group
        );
        reg sync; 
        reg need_dec; // current packet need decrypt;
        reg [8*8-1:0] group_d;
        reg [7:0] ts_cnt; // 
 
        always @(posedge clk)
                if(rst)
                begin
                        valid<=1'h0;
                        head<=1'h0;
                        dec<=1'h0;
                        sync<=1'h0;
                        need_dec<=1'h0;
                        ts_cnt=8'h0; 
                        init<=1'h0;
                end
                else
                begin
                        head<=1'h0;
                        dec<=1'h0;
                        valid<=1'h0;
                        init<=1'h0;
 
                        if(en) 
                        begin
                                group_d <= {datain, group_d[8*8-1:1*8] };
                        end
                        if(sync)
                        begin
                                if(ts_cnt==8'h1&&en)
                                begin
                                        need_dec<=1'h0;
                                        sync<=1'h0; // ts packet end
 
                                end
                                if(ts_cnt[2:0]==3'h1&&en)
                                begin
                                        valid<=1'h1;
                                        dec<=need_dec;
                                        bytes<=4'h8;
                                        group   <={datain, group_d[8*8-1:1*8] } ;
 
                                end
                                if(ts_cnt==8'hb1&en)
                                        init<=1'h1;
                                if(en)
                                        ts_cnt <= ts_cnt - 8'h1;
                        end
                        if(en)
                        begin
                                if(group_d[6*8-1:5*8]==8'h47)
                                begin
                                        sync<=1'h1;
                                        valid<=1'h1;
                                        head<=1'h1;
                                        bytes=4'h4;
                                        group <= {32'h000,1'h0,datain[6:0],group_d[8*8-1:5*8]};
                                        evenodd <= datain[6];
                                        need_dec<=datain[7];
                                        ts_cnt <= 8'hb8;
                                end
                        end
                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.