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

Subversion Repositories csa

[/] [csa/] [trunk/] [rtl/] [ts_sync.v] - Blame information for rev 44

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 41 simon111
 
2
`include "../bench/timescale.v"
3
// this module probe the ts sync head,
4
 
5
module ts_sync(
6
               input                 clk
7
             , input                 rst
8
             , input                 en
9
             , input         [8-1:0] datain
10
             , output  reg           valid
11
             , output  reg           head     // find ts packet head
12 42 simon111
             , output  reg           init     // the first dec ts packet
13 41 simon111
             , output  reg           dec      // this ts group need decrypt
14
             , output  reg           evenodd  // the current key type
15
             , output  reg [8*8-1:0] group
16
             , output  reg     [3:0] bytes    // valid bytes in group
17
        );
18
        reg sync;
19
        reg need_dec; // current packet need decrypt;
20
        reg [8*8-1:0] group_d;
21
        reg [7:0] ts_cnt; // 
22 42 simon111
 
23 41 simon111
        always @(posedge clk)
24
                if(rst)
25
                begin
26
                        valid<=1'h0;
27
                        head<=1'h0;
28
                        dec<=1'h0;
29
                        sync<=1'h0;
30
                        need_dec<=1'h0;
31 44 simon111
                        ts_cnt<=8'h0;
32 42 simon111
                        init<=1'h0;
33 41 simon111
                end
34
                else
35
                begin
36
                        head<=1'h0;
37
                        dec<=1'h0;
38 42 simon111
                        valid<=1'h0;
39
                        init<=1'h0;
40 41 simon111
 
41
                        if(en)
42
                        begin
43
                                group_d <= {datain, group_d[8*8-1:1*8] };
44
                        end
45
                        if(sync)
46
                        begin
47
                                if(ts_cnt==8'h1&&en)
48
                                begin
49
                                        need_dec<=1'h0;
50
                                        sync<=1'h0; // ts packet end
51 42 simon111
 
52 41 simon111
                                end
53
                                if(ts_cnt[2:0]==3'h1&&en)
54
                                begin
55 42 simon111
                                        valid<=1'h1;
56 41 simon111
                                        dec<=need_dec;
57
                                        bytes<=4'h8;
58 42 simon111
                                        group   <={datain, group_d[8*8-1:1*8] } ;
59
 
60 41 simon111
                                end
61 42 simon111
                                if(ts_cnt==8'hb1&en)
62
                                        init<=1'h1;
63 41 simon111
                                if(en)
64
                                        ts_cnt <= ts_cnt - 8'h1;
65
                        end
66
                        if(en)
67
                        begin
68
                                if(group_d[6*8-1:5*8]==8'h47)
69
                                begin
70
                                        sync<=1'h1;
71
                                        valid<=1'h1;
72
                                        head<=1'h1;
73 44 simon111
                                        bytes<=4'h4;
74 41 simon111
                                        group <= {32'h000,1'h0,datain[6:0],group_d[8*8-1:5*8]};
75
                                        evenodd <= datain[6];
76
                                        need_dec<=datain[7];
77
                                        ts_cnt <= 8'hb8;
78
                                end
79
                        end
80
                end
81
endmodule

powered by: WebSVN 2.1.0

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