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

Subversion Repositories pcie_vera_tb

[/] [pcie_vera_tb/] [trunk/] [send_packet.vri] - Blame information for rev 8

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 cmagleby
// ===========================================================================
2
// File    : send_packet.vri
3
// Author  : cmagleby
4
// Date    : Mon Dec 3 11:03:46 MST 2007
5
// Project : TI PHY design
6
//
7
// Copyright (c) notice
8
// This code adheres to the GNU public license
9
//
10
// ===========================================================================
11
//
12
// $Id: send_packet.vri,v 1.1.1.1 2007-12-05 18:37:07 cmagleby Exp $
13
//
14
// ===========================================================================
15
//
16
// $Log: not supported by cvs2svn $
17
//
18
// ===========================================================================
19
// Function : This file sends all packets on the rx 16 bit data lines
20
//
21
// ===========================================================================
22
// ===========================================================================
23
#include 
24
//#include "scramble8.vri"
25
#define COM_s 8'hbc
26
#define SKP_s 8'h1c
27
#define IDLE_s 8'h7c
28
#define FTS_s 8'h3c
29
#define STP_s 8'hfb
30
#define SDP_s 8'h5c
31
#define EDB   8'hfe
32
#define END_s 8'hfd
33
 
34
task send_packet () {
35
  bit [7:0]  rx_data[];
36
  bit        rx_datak[];
37
 
38
  bit [17:0] rx_pkt;
39
  bit [15:0] rx_data_out;
40
  bit [1:0]  rx_datak_out;
41
  integer    ret;
42
  integer    i;
43
 
44
  bit [15:0]  lfsr = 16'hFFFF;
45
  bit [7:0]   scramble_data[];
46
  bit         skp_detect = 1'b0;
47
  bit         com_detect = 1'b0;
48
  bit         scram_bypass = 1'b0;
49
  bit [3:0]   bypass_count = 4'b0;
50
 
51
 
52
  ti_phy_top.rxdatak16 = 2'b0;
53
  ti_phy_top.rxdata16  = 16'b0;
54
  while (1) {
55
    @ (posedge CLOCK);
56
    ti_phy_top.rxdatak16 = 2'b0;
57
    ti_phy_top.rxdata16  = 16'b0;
58
 
59
    ret = mailbox_get (WAIT,rx_data_mailbox,rx_pkt,CHECK);
60
    if (ret <= 0)
61
      error ("mailbox_get returned %0d\n",ret);
62
 
63
    rx_datak[1] = rx_pkt[17];
64
    rx_datak[0] = rx_pkt[16];
65
    rx_data[1] = rx_pkt[15:8];
66
    rx_data[0] = rx_pkt[7:0];
67
 
68
 
69
    for (i=0; i<2; i++) {
70
 
71
      if(com_detect == 1'b1){
72
        scram_bypass = 1'b1;
73
      }
74
      else if(((bypass_count == 4'b0011) & rx_datak[i] == 1'b1) | (bypass_count == 4'b1111)){
75
        scram_bypass = 1'b0;
76
      }
77
 
78
      if((com_detect == 1'b1) | scram_bypass){
79
        bypass_count = bypass_count + 1'b1;
80
      }
81
      else if(((bypass_count == 4'b0011) & rx_datak[i] == 1'b1) | (bypass_count == 4'b1111)){
82
        bypass_count = 4'b0000;
83
      }
84
 
85
 
86
      if({rx_datak[i],rx_data[i]} == {1'b1,SKP_s}){
87
        skp_detect = 1'b1;
88
      }
89
      else{
90
        skp_detect = 1'b0;
91
      }
92
      if({rx_datak[i],rx_data[i]} == {1'b1,COM_s}){
93
        com_detect = 1'b1;
94
      }
95
      else{
96
        com_detect = 1'b0;
97
      }
98
 
99
      scramble8(rx_data[i],skp_detect,com_detect,(scram_bypass | rx_datak[i]),lfsr,scramble_data[i],lfsr);
100
      //printf("K-Code = %h COM = %h SKP = %h bypass = %h unscramble_data = %h scramble_data = %h lfsr = %h bypass_cnt = %d\n",rx_datak[i],com_detect,skp_detect,scram_bypass,rx_data[i],scramble_data[i],lfsr,bypass_count);
101
    }
102
 
103
 
104
    //printf("RX MAILBOX OUT datak(%0h) data(%0h) to be sent\n",rx_pkt[17:16],rx_pkt[15:0]);
105
    ti_phy_top.rxdatak16  = {rx_datak[1],rx_datak[0]};
106
    ti_phy_top.rxdata16   = {scramble_data[1],scramble_data[0]};
107
  }
108
 
109
}

powered by: WebSVN 2.1.0

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