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

Subversion Repositories srdydrdy_lib

[/] [srdydrdy_lib/] [trunk/] [examples/] [bridge/] [env/] [gmii_monitor.v] - Blame information for rev 18

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

Line No. Rev Author Line
1 11 ghutchis
module gmii_monitor
2
  (/*AUTOARG*/
3
  // Inputs
4
  clk, gmii_tx_en, gmii_txd
5
  );
6
 
7
  input             clk;
8
  input             gmii_tx_en;
9
  input [7:0]       gmii_txd;
10
 
11
  parameter          depth = 2048;
12
 
13
  reg [7:0]           rxbuf [0:depth-1];
14
  integer            rxptr;
15
  event              pkt_rcvd;
16
  integer            state,rxpkt_num;
17
  integer            err_cnt;
18
  integer            i;
19
 
20
  parameter          st_idle = 4, st_norm = 0, st_pre = 1;
21
 
22
  initial
23
    begin
24
      rxptr = 0;
25
      state = st_idle;
26
      rxpkt_num = 0;
27
      err_cnt = 0;
28
    end
29
 
30
  always @(posedge clk)
31
    begin
32
      case (state)
33
        st_idle :
34
          begin
35
            if (gmii_tx_en)
36
              begin
37
                if (gmii_txd == `GMII_SFD)
38
                  state = st_norm;
39
                else
40
                  state = st_pre;
41
              end
42
          end
43
 
44
        st_pre :
45
          begin
46
            if (gmii_txd == `GMII_SFD)
47
              state = st_norm;
48
            else if (!gmii_tx_en)
49
              begin
50
                $display ("%t: ERROR %m: Detected packet with no SFD", $time);
51
                state = st_idle;
52
              end
53
          end
54
 
55
        st_norm :
56
          begin
57
            if (gmii_tx_en)
58
              begin
59
                rxbuf[rxptr  ] <= #1 gmii_txd;
60
                rxptr = rxptr + 1;
61
              end
62
            else
63
              begin
64
                ->pkt_rcvd;
65
                state = st_idle;
66
              end
67
          end // case: st_norm
68
      endcase
69
    end // always @ (posedge clk)
70
 
71
  always @(pkt_rcvd)
72
    begin
73
      #2;
74
      rxpkt_num = rxpkt_num + 1;
75
      //pid = {rxbuf[rxptr-2], rxbuf[rxptr-1]};
76
 
77
      $display ("%t: INFO    : %m: Received packet %0d length %0d", $time,rxpkt_num,rxptr);
78
 
79
      for (i=0; i<rxptr; i=i+1)
80
        begin
81
          if (i % 16 == 0) $write ("%x: ", i[15:0]);
82
          $write ("%x ", rxbuf[i]);
83
          if (i % 16 == 7) $write ("| ");
84
          if (i % 16 == 15) $write ("\n");
85
        end
86
      if (i % 16 != 0) $write ("\n");
87
      rxptr = 0;
88
    end
89
 
90
endmodule // it_monitor

powered by: WebSVN 2.1.0

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