⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 send_packet.vri

📁 FEATURES &#8226 16 bit PIPE Spec PCI Express Testbench &#8226 Link training &#8226 Initial Flo
💻 VRI
字号:
// ===========================================================================// File    : send_packet.vri// Author  : cmagleby// Date    : Mon Dec 3 11:03:46 MST 2007// Project : TI PHY design//// Copyright (c) notice// This code adheres to the GNU public license//// ===========================================================================//// $Id: send_packet.vri,v 1.1.1.1 2007-12-05 18:37:07 cmagleby Exp $//// ===========================================================================//// $Log: not supported by cvs2svn $//// ===========================================================================// Function : This file sends all packets on the rx 16 bit data lines//// ===========================================================================// ===========================================================================#include <vera_defines.vrh>//#include "scramble8.vri"#define COM_s 8'hbc#define SKP_s 8'h1c#define IDLE_s 8'h7c#define FTS_s 8'h3c#define STP_s 8'hfb#define SDP_s 8'h5c#define EDB   8'hfe#define END_s 8'hfdtask send_packet () {  bit [7:0]  rx_data[];  bit        rx_datak[];    bit [17:0] rx_pkt;  bit [15:0] rx_data_out;  bit [1:0]  rx_datak_out;  integer    ret;  integer    i;    bit [15:0]  lfsr = 16'hFFFF;  bit [7:0]   scramble_data[];  bit         skp_detect = 1'b0;  bit         com_detect = 1'b0;  bit         scram_bypass = 1'b0;  bit [3:0]   bypass_count = 4'b0;      ti_phy_top.rxdatak16 = 2'b0;  ti_phy_top.rxdata16  = 16'b0;  while (1) {        @ (posedge CLOCK);    ti_phy_top.rxdatak16 = 2'b0;    ti_phy_top.rxdata16  = 16'b0;       ret = mailbox_get (WAIT,rx_data_mailbox,rx_pkt,CHECK);    if (ret <= 0)       error ("mailbox_get returned %0d\n",ret);        rx_datak[1] = rx_pkt[17];    rx_datak[0] = rx_pkt[16];    rx_data[1] = rx_pkt[15:8];    rx_data[0] = rx_pkt[7:0];            for (i=0; i<2; i++) {      if(com_detect == 1'b1){        scram_bypass = 1'b1;      }      else if(((bypass_count == 4'b0011) & rx_datak[i] == 1'b1) | (bypass_count == 4'b1111)){        scram_bypass = 1'b0;      }            if((com_detect == 1'b1) | scram_bypass){        bypass_count = bypass_count + 1'b1;      }      else if(((bypass_count == 4'b0011) & rx_datak[i] == 1'b1) | (bypass_count == 4'b1111)){        bypass_count = 4'b0000;      }                  if({rx_datak[i],rx_data[i]} == {1'b1,SKP_s}){        skp_detect = 1'b1;      }      else{        skp_detect = 1'b0;      }      if({rx_datak[i],rx_data[i]} == {1'b1,COM_s}){        com_detect = 1'b1;      }      else{        com_detect = 1'b0;      }            scramble8(rx_data[i],skp_detect,com_detect,(scram_bypass | rx_datak[i]),lfsr,scramble_data[i],lfsr);      //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);    }        //printf("RX MAILBOX OUT datak(%0h) data(%0h) to be sent\n",rx_pkt[17:16],rx_pkt[15:0]);    ti_phy_top.rxdatak16  = {rx_datak[1],rx_datak[0]};    ti_phy_top.rxdata16   = {scramble_data[1],scramble_data[0]};  }  }       

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -