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

Subversion Repositories gbiteth

[/] [gbiteth/] [trunk/] [rtl/] [rgmii/] [rgmii_top.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_top.vhd
6
-- Author     : liyi  <alxiuyain@foxmail.com>
7
-- Company    : OE@HUST
8
-- Created    : 2012-12-02
9
-- Last update: 2013-05-26
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-12-02  1.0      liyi    Created
20
-------------------------------------------------------------------------------
21
LIBRARY ieee;
22
USE ieee.std_logic_1164.ALL;
23
USE work.de2_pkg.ALL;
24
-------------------------------------------------------------------------------
25
ENTITY rgmii_top IS
26
  GENERIC(
27
    MY_MAC        : STD_LOGIC_VECTOR(47 DOWNTO 0) := X"10BF487A0FED";
28
    IN_SIMULATION : BOOLEAN                       := FALSE);
29
  PORT (
30
    iWbClk : IN STD_LOGIC;
31
    iRst_n : IN STD_LOGIC;
32
 
33
    ---------------------------------------------------------------------------
34
    -- wishbone slave
35
    ---------------------------------------------------------------------------
36
    iWbM2S      : IN  wbMasterToSlaveIF_t;
37
    oWbS2M      : OUT wbSlaveToMasterIF_t;
38
    -- synthesis translate_off
39
    iWbM2S_addr : IN  STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0');
40
    iWbM2S_dat  : IN  STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0');
41
    iWbM2S_sel  : IN  STD_LOGIC_VECTOR(3 DOWNTO 0)  := (OTHERS => '0');
42
    iWbM2S_stb  : IN  STD_LOGIC                     := '0';
43
    iWbM2S_cyc  : IN  STD_LOGIC                     := '0';
44
    iWbM2S_we   : IN  STD_LOGIC                     := '0';
45
    oWbS2M_dat  : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
46
    oWbS2M_ack  : OUT STD_LOGIC;
47
    -- synthesis translate_ON
48
 
49
    ---------------------------------------------------------------------------
50
    -- wishbone master for read
51
    ---------------------------------------------------------------------------
52
    oWb0M2S      : OUT wbMasterToSlaveIF_t;
53
    iWb0S2M      : IN  wbSlaveToMasterIF_t;
54
    -- synthesis translate_off
55
    oWb0M2S_dat  : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
56
    oWb0M2S_addr : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
57
    oWb0M2S_sel  : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
58
    oWb0M2S_cyc  : OUT STD_LOGIC;
59
    oWb0M2S_stb  : OUT STD_LOGIC;
60
    oWb0M2S_we   : OUT STD_LOGIC;
61
    oWb0M2S_cti  : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
62
    oWb0M2S_bte  : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
63
    iWb0S2M_ack  : IN  STD_LOGIC := '0';
64
    -- synthesis translate_on
65
 
66
    ---------------------------------------------------------------------------
67
    -- wishbone master for write
68
    ---------------------------------------------------------------------------
69
    oWb1M2S      : OUT wbMasterToSlaveIF_t;
70
    iWb1S2M      : IN  wbSlaveToMasterIF_t;
71
    -- synthesis translate_off
72
    oWb1M2S_addr : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
73
    oWb1M2S_sel  : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
74
    oWb1M2S_cyc  : OUT STD_LOGIC;
75
    oWb1M2S_stb  : OUT STD_LOGIC;
76
    oWb1M2S_we   : OUT STD_LOGIC;
77
    oWb1M2S_cti  : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
78
    oWb1M2S_bte  : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
79
    iWb1S2M_ack  : IN  STD_LOGIC                     := '0';
80
    iWb1S2M_dat  : IN  STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0');
81
    -- synthesis translate_on
82
 
83
    ---------------------------------------------------------------------------
84
    -- rgmii for enet0
85
    ---------------------------------------------------------------------------
86
    ENET1_MDC     : OUT   STD_LOGIC;
87
    ENET1_MDIO    : INOUT STD_LOGIC;
88
    ENET1_RX_CLK  : IN    STD_LOGIC;
89
    ENET1_RX_DV   : IN    STD_LOGIC;
90
    ENET1_RX_DATA : IN    STD_LOGIC_VECTOR(3 DOWNTO 0);
91
    ENET1_GTX_CLK : OUT   STD_LOGIC;
92
    ENET1_TX_EN   : OUT   STD_LOGIC;
93
    ENET1_TX_DATA : OUT   STD_LOGIC_VECTOR(3 DOWNTO 0);
94
 
95
    oTxInt : OUT STD_LOGIC;
96
    oRxInt : OUT STD_LOGIC
97
    );
98
 
99
END ENTITY rgmii_top;
100
-------------------------------------------------------------------------------
101
ARCHITECTURE rtl OF rgmii_top IS
102
 
103
  SIGNAL mdHz, mdi0, mdi1, mdi, mdc : STD_LOGIC;
104
  SIGNAL phyAddr, regAddr           : STD_LOGIC_VECTOR(4 DOWNTO 0);
105
  SIGNAL noPre                      : STD_LOGIC;
106
  SIGNAL rdOp, wrOp                 : STD_LOGIC;
107
  SIGNAL clkDiv                     : STD_LOGIC_VECTOR(7 DOWNTO 0);
108
  SIGNAL clrRdOp, clrWrOp           : STD_LOGIC;
109
  SIGNAL data2PHY, dataFromPhy      : STD_LOGIC_VECTOR(15 DOWNTO 0);
110
  SIGNAL dataFromPhyValid           : STD_LOGIC;
111
  SIGNAL mdioBusy                   : STD_LOGIC;
112
 
113
  SIGNAL cEnetTxData : STD_LOGIC_VECTOR(7 DOWNTO 0);
114
  SIGNAL cEnetTxEn   : STD_LOGIC;
115
  SIGNAL cEnetTxErr  : STD_LOGIC;
116
  SIGNAL cEnetRxData : STD_LOGIC_VECTOR(7 DOWNTO 0);
117
  SIGNAL cEnetRxDV   : STD_LOGIC;
118
  SIGNAL cEnetRxErr  : STD_LOGIC;
119
  SIGNAL cEthClk     : STD_LOGIC;
120
 
121
  SIGNAL cTxEn        : STD_LOGIC;
122
  SIGNAL cTxIntEn     : STD_LOGIC;
123
  SIGNAL cTxIntClr    : STD_LOGIC;
124
  SIGNAL cTxIntInfo   : STD_LOGIC_VECTOR(7 DOWNTO 0);
125
  SIGNAL cTxDescDataO : STD_LOGIC_VECTOR(31 DOWNTO 0);
126
  SIGNAL cTxDescDataI : STD_LOGIC_VECTOR(31 DOWNTO 0);
127
  SIGNAL cTxDescWr    : STD_LOGIC;
128
  SIGNAL cTxDescAddr  : STD_LOGIC_VECTOR(8 DOWNTO 2);
129
 
130
  SIGNAL cRxEn        : STD_LOGIC;
131
  SIGNAL cRxDescAddr  : STD_LOGIC_VECTOR(8 DOWNTO 2);
132
  SIGNAL cRxDescWr    : STD_LOGIC;
133
  SIGNAL cRxDescDataO : STD_LOGIC_VECTOR(31 DOWNTO 0);
134
  SIGNAL cRxDescDataI : STD_LOGIC_VECTOR(31 DOWNTO 0);
135
  SIGNAL cRxIntClr    : STD_LOGIC;
136
  SIGNAL cRxIntInfo   : STD_LOGIC_VECTOR(7 DOWNTO 0);
137
  SIGNAL cRxIntEn     : STD_LOGIC;
138
  SIGNAL cRxBufBegin  : STD_LOGIC_VECTOR(31 DOWNTO 2);
139
  SIGNAL cRxBufEnd    : STD_LOGIC_VECTOR(31 DOWNTO 2);
140
 
141
  SIGNAL cCheckSumIPCheck   : STD_LOGIC;
142
  SIGNAL cCheckSumTCPCheck  : STD_LOGIC;
143
  SIGNAL cCheckSumUDPCheck  : STD_LOGIC;
144
  SIGNAL cCheckSumICMPCheck : STD_LOGIC;
145
 
146
  SIGNAL cCheckSumIPGen   : STD_LOGIC;
147
  SIGNAL cCheckSumTCPGen  : STD_LOGIC;
148
  SIGNAL cCheckSumUDPGen  : STD_LOGIC;
149
  SIGNAL cCheckSumICMPGen : STD_LOGIC;
150
 
151
BEGIN  -- ARCHITECTURE rtl
152
 
153
  --ENET0_MDC  <= mdc;
154
  ENET1_MDC  <= mdc;
155
  --ENET0_MDIO <= 'Z' WHEN mdHz = '1' ELSE '0';
156
  ENET1_MDIO <= 'Z' WHEN mdHz = '1' ELSE '0';
157
  --mdi0       <= ENET0_MDIO;
158
  mdi1       <= ENET1_MDIO;
159
  mdi0       <= '1';
160
  mdi        <= mdi0 AND mdi1;
161
  rgmii_mdio_1 : ENTITY work.rgmii_mdio
162
    PORT MAP (
163
      iWbClk            => iWbClk,
164
      iRst_n            => iRst_n,
165
      iPHYAddr          => phyAddr,
166
      iRegAddr          => regAddr,
167
      iNoPre            => noPre,
168
      iData2PHY         => data2PHY,
169
      --iClkDiv           => clkDiv,
170
      iClkDiv           => X"FF",
171
      iRdOp             => rdOp,
172
      iWrOp             => wrOp,
173
      oDataFromPHY      => dataFromPhy,
174
      oDataFromPHYValid => dataFromPhyValid,
175
      oClrRdOp          => clrRdOp,
176
      oClrWrOp          => clrWrOp,
177
      oMDIOBusy         => mdioBusy,
178
      iMDI              => mdi,
179
      oMDHz             => mdHz,
180
      oMDC              => mdc);
181
 
182
  rgmii_wbs_1 : ENTITY work.rgmii_wbs
183
    GENERIC MAP (
184
      IN_SIMULATION => IN_SIMULATION)
185
    PORT MAP (
186
      iWbClk => iWbClk,
187
      iRst_n => iRst_n,
188
      iWbM2S => iWbM2S,
189
      oWbS2M => oWbS2M,
190
 
191
      -- synthesis translate_off
192
      iWbM2S_addr => iWbM2S_addr,
193
      iWbM2S_dat  => iWbM2S_dat,
194
      iWbM2S_sel  => iWbM2S_sel,
195
      iWbM2S_stb  => iWbM2S_stb,
196
      iWbM2S_cyc  => iWbM2S_cyc,
197
      iWbM2S_we   => iWbM2S_we,
198
      oWbS2M_dat  => oWbS2M_dat,
199
      oWbS2M_ack  => oWbS2M_ack,
200
      -- synthesis translate_on
201
 
202
      oTxEn       => cTxEn,
203
      oTxIntEn    => cTxIntEn,
204
      oTxIntClr   => cTxIntClr,
205
      iTxIntInfo  => cTxIntInfo,
206
      oTxDescData => cTxDescDataO,
207
      iTxDescData => cTxDescDataI,
208
      oTxDescWr   => cTxDescWr,
209
      oTxDescAddr => cTxDescAddr,
210
 
211
      oCheckSumIPGen   => cCheckSumIPGen,
212
      oCheckSumTCPGen  => cCheckSumTCPGen,
213
      oCheckSumUDPGen  => cCheckSumUDPGen,
214
      oCheckSumICMPGen => cCheckSumICMPGen,
215
 
216
      oRxEn       => cRxEn,
217
      oRxDescAddr => cRxDescAddr,
218
      oRxDescWr   => cRxDescWr,
219
      oRxDescData => cRxDescDataO,
220
      iRxDescData => cRxDescDataI,
221
      oRxIntClr   => cRxIntClr,
222
      iRxIntInfo  => cRxIntInfo,
223
      oRxIntEn    => cRxIntEn,
224
      oRxBufBegin => cRxBufBegin,
225
      oRxBufEnd   => cRxBufEnd,
226
 
227
      oCheckSumIPCheck   => cCheckSumIPCheck,
228
      oCheckSumTCPCheck  => cCheckSumTCPCheck,
229
      oCheckSumUDPCheck  => cCheckSumUDPCheck,
230
      oCheckSumICMPCheck => cCheckSumICMPCheck,
231
 
232
      oPHYAddr          => phyAddr,
233
      oRegAddr          => regAddr,
234
      oRdOp             => rdOp,
235
      oWrOp             => wrOp,
236
      oNoPre            => noPre,
237
      oClkDiv           => clkDiv,
238
      iClrRdOp          => clrRdOp,
239
      iClrWrOp          => clrWrOp,
240
      oDataToPHY        => data2PHY,
241
      iDataFromPHY      => dataFromPhy,
242
      iDataFromPHYValid => dataFromPhyValid,
243
      iMDIOBusy         => mdioBusy);
244
 
245
  rgmii_io_1 : ENTITY work.rgmii100_io
246
    PORT MAP (
247
      iRst_n  => iRst_n,
248
      TXC     => ENET1_GTX_CLK,
249
      TX_CTL  => ENET1_TX_EN,
250
      TD      => ENET1_TX_DATA,
251
      RXC     => ENET1_RX_CLK,
252
      RX_CTL  => ENET1_RX_DV,
253
      RD      => ENET1_RX_DATA,
254
      iTxData => cEnetTxData,
255
      iTxEn   => cEnetTxEn,
256
      iTxErr  => cEnetTxErr,
257
      oRxData => cEnetRxData,
258
      oRxDV   => cEnetRxDV,
259
      oRxErr  => cEnetRxErr,
260
      oEthClk => cEthClk);
261
 
262
  rgmii_rx_top_1 : ENTITY work.rgmii_rx_top
263
    GENERIC MAP (
264
      MY_MAC        => MY_MAC,
265
      IN_SIMULATION => IN_SIMULATION)
266
    PORT MAP (
267
      iWbClk        => iWbClk,
268
      iEthClk       => cEthClk,
269
      iRst_n        => iRst_n,
270
      iWbS2M        => iWb0S2M,
271
      oWbM2S        => oWb0M2S,
272
      -- synthesis translate_off
273
      oWbM2S_dat    => oWb0M2S_dat,
274
      oWbM2S_addr   => oWb0M2S_addr,
275
      oWbM2S_sel    => oWb0M2S_sel,
276
      oWbM2S_cyc    => oWb0M2S_cyc,
277
      oWbM2S_stb    => oWb0M2S_stb,
278
      oWbM2S_we     => oWb0M2S_we,
279
      oWbM2S_cti    => oWb0M2S_cti,
280
      oWbM2S_bte    => oWb0M2S_bte,
281
      iWbS2M_ack    => iWb0S2M_ack,
282
      -- synthesis translate_on
283
      iEnetRxData   => cEnetRxData,
284
      iEnetRxDv     => cEnetRxDv,
285
      iEnetRxErr    => cEnetRxErr,
286
      iWbRxEn       => cRxEn,
287
      iWbRxIntEn    => cRxIntEn,
288
      iWbRxIntClr   => cRxIntClr,
289
      oWbRxIntInfo  => cRxIntInfo,
290
      iWbRxDescData => cRxDescDataO,
291
      oWbRxDescData => cRxDescDataI,
292
      iWbRxDescWr   => cRxDescWr,
293
      iWbRxDescAddr => cRxDescAddr,
294
      iRxBufBegin   => cRxBufBegin,
295
      iRxBufEnd     => cRxBufEnd,
296
 
297
      iCheckSumIPCheck   => cCheckSumIPCheck,
298
      iCheckSumTCPCheck  => cCheckSumTCPCheck,
299
      iCheckSumUDPCheck  => cCheckSumUDPCheck,
300
      iCheckSumICMPCheck => cCheckSumICMPCheck,
301
 
302
      oWbRxInt => oRxInt);
303
 
304
  rgmii_tx_top_1 : ENTITY work.rgmii_tx_top
305
    GENERIC MAP (
306
      IN_SIMULATION => IN_SIMULATION)
307
    PORT MAP (
308
      iWbClk        => iWbClk,
309
      iEthClk       => cEthClk,
310
      iRst_n        => iRst_n,
311
      iWbS2M        => iWb1S2M,
312
      oWbM2S        => oWb1M2S,
313
      -- synthesis translate_off
314
      oWbM2S_addr   => oWb1M2S_addr,
315
      oWbM2S_sel    => oWb1M2S_sel,
316
      oWbM2S_cyc    => oWb1M2S_cyc,
317
      oWbM2S_stb    => oWb1M2S_stb,
318
      oWbM2S_we     => oWb1M2S_we,
319
      oWbM2S_cti    => oWb1M2S_cti,
320
      oWbM2S_bte    => oWb1M2S_bte,
321
      iWbS2M_ack    => iWb1S2M_ack,
322
      iWbS2M_dat    => iWb1S2M_dat,
323
      -- synthesis translate_on
324
      oEnetTxData   => cEnetTxData,
325
      oEnetTxEn     => cEnetTxEn,
326
      oEnetTxErr    => cEnetTxErr,
327
      iWbTxEn       => cTxEn,
328
      iWbTxIntEn    => cTxIntEn,
329
      iWbTxIntClr   => cTxIntClr,
330
      oWbTxIntInfo  => cTxIntInfo,
331
      iWbTxDescData => cTxDescDataO,
332
      oWbTxDescData => cTxDescDataI,
333
      iWbTxDescWr   => cTxDescWr,
334
      iWbTxDescAddr => cTxDescAddr,
335
 
336
      iCheckSumIPGen   => cCheckSumIPGen,
337
      iCheckSumTCPGen  => cCheckSumTCPGen,
338
      iCheckSumUDPGen  => cCheckSumUDPGen,
339
      iCheckSumICMPGen => cCheckSumICMPGen,
340
 
341
      oWbTxInt      => oTxInt);
342
 
343
END ARCHITECTURE rtl;

powered by: WebSVN 2.1.0

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