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

Subversion Repositories gbiteth

[/] [gbiteth/] [trunk/] [rtl/] [rgmii/] [rgmii1000_io.vhd] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 axuan25268
-------------------------------------------------------------------------------
2
-- Title      : 
3
-- Project    : 
4
-------------------------------------------------------------------------------
5
-- File       : rgmii_io.vhd
6
-- Author     : liyi  <alxiuyain@foxmail.com>
7
-- Company    : OE@HUST
8
-- Created    : 2012-10-26
9
-- Last update: 2013-05-15
10
-- Platform   : 
11
-- Standard   : VHDL'93/02
12
-------------------------------------------------------------------------------
13
-- Description: 
14
-------------------------------------------------------------------------------
15
-- Copyright (c) 2012 OE@HUST
16
-------------------------------------------------------------------------------
17
-- Revisions  :
18
-- Date        Version  Author  Description
19
-- 2012-10-26  1.0      liyi    Created
20
-------------------------------------------------------------------------------
21
LIBRARY ieee;
22
USE ieee.std_logic_1164.ALL;
23
USE ieee.numeric_std.ALL;
24
-------------------------------------------------------------------------------
25
ENTITY rgmii1000_io IS
26
 
27
  PORT (
28
    iRst_n : IN  STD_LOGIC;
29
 
30
    ---------------------------------------------------------------------------
31
    -- RGMII Interface
32
    ---------------------------------------------------------------------------
33
    TXC    : OUT STD_LOGIC;
34
    TX_CTL : OUT STD_LOGIC;
35
    TD     : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
36
    RXC    : IN  STD_LOGIC;
37
    RX_CTL : IN  STD_LOGIC;
38
    RD     : IN  STD_LOGIC_VECTOR(3 DOWNTO 0);
39
 
40
    ---------------------------------------------------------------------------
41
    -- data to PHY 
42
    ---------------------------------------------------------------------------
43
    iTxData : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
44
    iTxEn   : IN STD_LOGIC;
45
    iTxErr  : IN STD_LOGIC;
46
 
47
    ---------------------------------------------------------------------------
48
    -- data from PHY
49
    ---------------------------------------------------------------------------
50
    oRxData : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
51
    oRxDV   : OUT STD_LOGIC;
52
    oRxErr  : OUT STD_LOGIC;
53
 
54
    ---------------------------------------------------------------------------
55
    -- clock for MAC controller
56
    ---------------------------------------------------------------------------
57
    oEthClk      : OUT STD_LOGIC
58
    );
59
 
60
END ENTITY rgmii1000_io;
61
-------------------------------------------------------------------------------
62
ARCHITECTURE rtl OF rgmii1000_io IS
63
 
64
  SIGNAL ethIOClk : STD_LOGIC;
65
 
66
  SIGNAL outDataH, outDataL, outData : STD_LOGIC_VECTOR(4 DOWNTO 0);
67
  SIGNAL inDataH, inDataL, inData    : STD_LOGIC_VECTOR(4 DOWNTO 0);
68
 
69
  SIGNAL pllLock : STD_LOGIC;
70
  SIGNAL rstSync : STD_LOGIC_VECTOR(1 DOWNTO 0);
71
  SIGNAL rst_n   : STD_LOGIC;
72
 
73
  SIGNAL bufClk : STD_LOGIC;
74
 
75
  SIGNAL ripple      : BOOLEAN;
76
  TYPE rxState_t IS (IDLE, RECEIVE);
77
  SIGNAL rxState     : rxState_t;
78
  SIGNAL rxData      : STD_LOGIC_VECTOR(7 DOWNTO 0);
79
  SIGNAL rxErr, rxDV : STD_LOGIC;
80
  SIGNAL tmp         : STD_LOGIC;
81
 
82
  SIGNAL rxData2       : STD_LOGIC_VECTOR(7 DOWNTO 0);
83
  SIGNAL rxErr2, rxDV2 : STD_LOGIC;
84
 
85
  SIGNAL rdreq,wrreq : STD_LOGIC;
86
  SIGNAL rdempty : STD_LOGIC;
87
  SIGNAL din,dout : STD_LOGIC_VECTOR(9 DOWNTO 0);
88
 
89
BEGIN  -- ARCHITECTURE rtl
90
 
91
  oEthClk <= ethIOClk;
92
  --oEthClk <= RXC;
93
  TXC     <= RXC;
94
 
95
  pll: entity work.rgmii1000_pll
96
        PORT map
97
        (
98
                inclk0 => RXC,
99
                c0              => ethIOClk
100
        );
101
 
102
 
103
  TD       <= outData(3 DOWNTO 0);
104
  TX_CTL   <= outData(4);
105
  outDataH <= iTxEn & iTxData(3 DOWNTO 0);
106
  outDataL <= (iTxEn XOR iTxErr) & iTxData(7 DOWNTO 4);
107
  eth_ddr_out_1 : ENTITY work.eth_ddr_out
108
    PORT MAP (
109
      datain_h => outDataH,
110
      datain_l => outDataL,
111
      outclock => ethIOClk,
112
      dataout  => outData);
113
 
114
  inData  <= RX_CTL & RD;
115
  oRxDV   <= inDataL(4);
116
  oRxErr  <= inDataH(4) XOR inDataL(4);
117
  oRxData <= inDataH(3 DOWNTO 0) & inDataL(3 DOWNTO 0);
118
  eth_ddr_in_1 : ENTITY work.eth_ddr_in
119
    PORT MAP (
120
      datain    => inData,
121
      inclock   => ethIOClk,            -- shift 180~360 degree compared to RXC
122
      dataout_h => inDataH,
123
      dataout_l => inDataL);
124
 
125
END ARCHITECTURE rtl;

powered by: WebSVN 2.1.0

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