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

Subversion Repositories esoc

[/] [esoc/] [trunk/] [Sources/] [altera/] [esoc_port_mac/] [testbench/] [model/] [ethgen32.vhd] - Blame information for rev 42

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 42 lmaarsen
-- -------------------------------------------------------------------------
2
-- -------------------------------------------------------------------------
3
--
4
-- Revision Control Information
5
--
6
-- $RCSfile: ethgen32.vhd,v $
7
-- $Source: /ipbu/cvs/sio/projects/TriSpeedEthernet/src/testbench/models/vhdl/ethernet_model/gen/ethgen32.vhd,v $
8
--
9
-- $Revision: #1 $
10
-- $Date: 2008/08/09 $
11
-- Check in by : $Author: sc-build $
12
-- Author      : SKNg/TTChong
13
--
14
-- Project     : Triple Speed Ethernet - 10/100/1000 MAC
15
--
16
-- Description : (Simulation only)
17
--
18
-- Ethernet Traffic Generator for 32 bit MAC Atlantic client interface
19
-- Instantiates VERILOG module: ETHGENERATOR (ethgen.vhd)
20
--
21
--  Output is presented in 32-bit words with 
22
--  a last word valid indication (tmod) which has the following meaning:
23
--  tmod = 1: dout( 7:0) are valid
24
--  tmod = 2: dout(15:0) are valid
25
--  tmod = 3: dout(24:0) are valid
26
--  tmod = 0: dout(31:0) are valid
27
-- 
28
-- ALTERA Confidential and Proprietary
29
-- Copyright 2006 (c) Altera Corporation
30
-- All rights reserved
31
--
32
-- -------------------------------------------------------------------------
33
-- -------------------------------------------------------------------------
34
 
35
 
36
 
37
library ieee ;
38
use     ieee.std_logic_1164.all ;
39
use     ieee.std_logic_unsigned.all ;
40
use     ieee.std_logic_arith.all;
41
 
42
entity ETHGENERATOR32 is
43
 
44
    generic (  THOLD           : time    := 1 ns;
45
               BIG_ENDIAN      : integer := 1;  --0 for false, 1 for true
46
               ENABLE_SHIFT16  : integer := 0;  --0 for false, 1 for true
47
               ZERO_LATENCY    : integer := 0   --0 for NON-ZERO read latency, etc.
48
 
49
            );
50
    port (
51
 
52
      reset    : in std_logic ;     -- active high
53
      clk      : in std_logic ;
54
      enable   : in std_logic;
55
 
56
      -- 32-bit data output
57
 
58
      dout     : out std_logic_vector(31 downto 0);
59
      dval     : out std_logic;
60
      derror   : out std_logic;
61
      sop      : out std_logic;   -- pulse with first word
62
      eop      : out std_logic;   -- pulse with last word (tmod valid)
63
      tmod     : out std_logic_vector(1 downto 0);  -- last word modulo
64
 
65
        -- Frame Contents definitions
66
 
67
      mac_reverse   : in std_logic;                     -- 1: dst/src are sent MSB first (non-standard)
68
      dst           : in std_logic_vector(47 downto 0); -- destination address
69
      src           : in std_logic_vector(47 downto 0); -- source address
70
      prmble_len    : in integer range 0 to 15;         -- length of preamble
71
      pquant        : in std_logic_vector(15 downto 0); -- Pause Quanta value
72
      vlan_ctl      : in std_logic_vector(15 downto 0); -- VLAN control info
73
      len           : in std_logic_vector(15 downto 0); -- Length of payload
74
      frmtype       : in std_logic_vector(15 downto 0); -- if non-null: type field instead length
75
 
76
      cntstart      : in integer range 0 to 255;  -- payload data counter start (first byte of payload)
77
      cntstep       : in integer range 0 to 255;  -- payload counter step (2nd byte in paylaod)
78
 
79
      ipg_len       : in integer range 0 to 32768;
80
      payload_err   : in std_logic;  -- generate payload pattern error (last payload byte is wrong)
81
      prmbl_err     : in std_logic;  -- Send corrupt SFD in otherwise correct preamble
82
      crc_err       : in std_logic;
83
      vlan_en       : in std_logic;
84
      stack_vlan    : in std_logic;
85
      pause_gen     : in std_logic;
86
      pad_en        : in std_logic;
87
      phy_err       : in std_logic;  -- Generate the well known ERROR control character
88
      end_err       : in std_logic;  -- Send corrupt TERMINATE character (wrong code)
89
 
90
      data_only     : in std_logic;  -- if set omits preamble, padding, CRC
91
      start         : in  std_logic;
92
      done          : out std_logic );
93
 
94
end ETHGENERATOR32 ;
95
 
96
architecture behave of ETHGENERATOR32 is
97
 
98
        -- underlying GMII generator
99
 
100
        component ethgenerator
101
 
102
                generic (
103
 
104
 
105
                        THOLD  : time) ;
106
 
107
                port (
108
 
109
                        reset           : in std_logic ;                        -- active high
110
                        rx_clk          : in std_logic ;
111
                        enable          : in std_logic ;
112
                        rxd             : out std_logic_vector(7 downto 0);
113
                        rx_dv           : out std_logic;
114
                        rx_er           : out std_logic;
115
                        sop             : out std_logic;                        -- pulse with first character
116
                        eop             : out std_logic;                        -- pulse with last  character
117
                        mac_reverse     : in std_logic;                         -- 1: dst/src are sent MSB first
118
                        dst             : in std_logic_vector(47 downto 0);     -- destination address
119
                        src             : in std_logic_vector(47 downto 0);     -- source address     
120
                        prmble_len      : in integer range 0 to 15;             -- length of preamble
121
                        pquant          : in std_logic_vector(15 downto 0);     -- Pause Quanta value
122
                        vlan_ctl        : in std_logic_vector(15 downto 0);     -- VLAN control info
123
                        len             : in std_logic_vector(15 downto 0);     -- Length of payload
124
                        frmtype         : in std_logic_vector(15 downto 0);     -- if non-null: type field instead length      
125
                        cntstart        : in integer range 0 to 255;            -- payload data counter start (first byte of payload)
126
                        cntstep         : in integer range 0 to 255;            -- payload counter step (2nd byte in paylaod)
127
                        ipg_len         : in integer range 0 to 32768;          -- inter packet gap (delay after CRC)         
128
                        payload_err     : in std_logic;                         -- generate payload pattern error (last payload byte is wrong)
129
                        prmbl_err       : in std_logic;
130
                        crc_err         : in std_logic;
131
                        vlan_en         : in std_logic;
132
                        stack_vlan      : in std_logic;
133
                        pause_gen       : in std_logic;
134
                        wrong_pause_op  : in std_logic ;                        -- Generate Pause Frame with Wrong Opcode       
135
                        wrong_pause_lgth: in std_logic ;                        -- Generate Pause Frame with Wrong Opcode       
136
                        pad_en          : in std_logic;
137
                        phy_err         : in std_logic;
138
                        end_err         : in std_logic;                         -- keep rx_dv high one cycle after end of frame
139
                        magic           : in std_logic;
140
                        data_only       : in std_logic;                         -- if set omits preamble, padding, CRC            
141
                        start           : in  std_logic;
142
                        done            : out std_logic );
143
 
144
        end component ;
145
 
146
        component  timing_adapter_32
147
            port
148
            (
149
                -- Interface: clk
150
                clk                :   IN      STD_LOGIC;
151
                reset              :   IN      STD_LOGIC;
152
 
153
                -- Interface: in
154
                in_ready           :   OUT     STD_LOGIC;
155
                in_valid           :   IN      STD_LOGIC;
156
                in_data            :   IN      STD_LOGIC_VECTOR (31 DOWNTO 0);
157
                in_startofpacket   :   IN      STD_LOGIC;
158
                in_endofpacket     :   IN      STD_LOGIC;
159
                in_empty           :   IN      STD_LOGIC_VECTOR (1 DOWNTO 0);
160
                in_error           :   IN      STD_LOGIC;
161
                -- Interface: in
162
                out_ready          :   IN      STD_LOGIC;
163
                out_valid          :   OUT     STD_LOGIC;
164
                out_data           :   OUT     STD_LOGIC_VECTOR (31 DOWNTO 0);
165
                out_startofpacket  :   OUT     STD_LOGIC;
166
                out_endofpacket    :   OUT     STD_LOGIC;
167
                out_empty          :   OUT     STD_LOGIC_VECTOR (1 DOWNTO 0);
168
                out_error          :   OUT     STD_LOGIC
169
            );
170
        end component;
171
 
172
 
173
    -- internal GMII from generator
174
 
175
    signal rxd            : std_logic_vector(7 downto 0);
176
    signal rx_dv          : std_logic;
177
    signal rx_er          : std_logic;
178
 
179
    signal sop_gen        : std_logic;
180
    signal eop_gen        : std_logic;
181
 
182
    signal start_gen      : std_logic;
183
    signal done_gen       : std_logic;
184
 
185
    -- captured signals from generator (lasting 1 word clock cycle)
186
 
187
    signal sop_int        : std_logic := '0';  -- captured sop_gen
188
    signal sop_int_d      : std_logic := '0';  -- captured sop_gen
189
    signal eop_int        : std_logic := '0';  -- captured eop_gen
190
    signal eop_i          : std_logic := '0';  -- captured eop_gen
191
    signal rx_er_int      : std_logic;  -- captured rx_er
192
 
193
    -- external signals
194
 
195
    signal sop_ex         : std_logic;
196
    signal eop_ex         : std_logic;
197
 
198
    -- captured command signals 
199
 
200
    signal ipg_len_i      : integer range 0 to 32768;
201
 
202
    -- internal
203
 
204
    signal data32         : std_logic_vector(31 downto 0);
205
 
206
    signal clkcnt         : integer range 0 to 7 ;
207
    signal bytecnt_eop    : integer range 0 to 3 ;   -- captured count for last word
208
 
209
    signal count          : integer;
210
 
211
    type  stm_typ is (S_IDLE, S_DATA, S_IPG, S_IPG0);
212
 
213
    signal state          : stm_typ;
214
    signal last_state     : stm_typ;
215
 
216
    signal clk_d          : std_logic;
217
    signal fast_clk       : std_logic;
218
    signal fast_clk_gate  : std_logic;
219
    signal fast_clk_cnt   : integer;
220
    signal bytecnt        : integer range 0 to 3 ;
221
    signal tx_clk         : std_logic;
222
 
223
    signal dout_reg       : std_logic_vector(31 downto 0);
224
    signal dval_reg       : std_logic;
225
    signal derror_reg     : std_logic;
226
    signal tmod_reg       : std_logic_vector(1 downto 0);  -- last word modulo
227
    signal done_reg       : std_logic;
228
 
229
    signal dout_temp      : std_logic_vector(31 downto 0);
230
    signal dval_temp      : std_logic;
231
    signal derror_temp    : std_logic;
232
    signal sop_temp       : std_logic;   -- pulse with first word
233
    signal eop_temp       : std_logic;   -- pulse with last word (tmod valid)
234
    signal tmod_temp      : std_logic_vector(1 downto 0);  -- last word modulo
235
    signal done_temp      : std_logic;
236
 
237
        signal enable_int     : std_logic;
238
 
239
begin
240
 
241
 
242
 -- ---------------------------------------
243
 -- Generate internal fast clock synchronized to external input clock
244
 -- ---------------------------------------
245
 
246
   process
247
   begin
248
        fast_clk <= '0' after 0.1 ns;
249
        wait for 0.4 ns;
250
        fast_clk <= '1' after 0.1 ns;
251
        wait for 0.4 ns;
252
   end process;
253
 
254
   process( fast_clk, reset )
255
   begin
256
 
257
        if( reset='1' ) then
258
 
259
                fast_clk_gate <= '0';
260
                clk_d         <= '0';
261
 
262
        elsif( fast_clk'event and fast_clk='0' ) then   -- work on neg edge
263
 
264
                clk_d <= clk;
265
 
266
                if( (rx_dv='0' or done_gen='1') and enable_int='1') then -- generator not running, enable it permanently
267
 
268
                        fast_clk_gate <= '1';
269
 
270
                elsif((clk_d='0' and clk='1') and enable_int='1') then  -- wait for rising edge
271
 
272
                        fast_clk_gate <= '1';
273
 
274
                elsif( bytecnt<3 ) then                -- after 4 octets have been processed, wait for next clk rising edge
275
 
276
                        fast_clk_gate <= '1';
277
 
278
                else
279
 
280
                        fast_clk_gate <= '0';
281
 
282
                end if;
283
 
284
        end if;
285
 
286
   end process;
287
 
288
   -- DDR process to generate gated clock
289
 
290
   process( fast_clk, reset )
291
   begin
292
 
293
        if( reset='1' ) then
294
 
295
                tx_clk <= '0';
296
 
297
        elsif( fast_clk'event and fast_clk='1' ) then
298
 
299
                if( fast_clk_gate = '1' ) then
300
 
301
                        tx_clk <= '1';
302
 
303
                end if;
304
 
305
        elsif( fast_clk'event and fast_clk='0' ) then
306
 
307
                tx_clk <= '0';
308
 
309
        end if;
310
 
311
    end process;
312
 
313
   --tx_clk <= fast_clk and fast_clk_gate;        
314
 
315
    -- capture generator signals with word clock domain handshake
316
    -- ----------------------------------------------------------
317
 
318
    process( tx_clk, reset )
319
    begin
320
        if( reset='1' ) then
321
 
322
                eop_int  <= '0';
323
                sop_int  <= '0';
324
              rx_er_int  <= '0';
325
 
326
        elsif( tx_clk'event and tx_clk='1' ) then
327
 
328
                if( sop_gen = '1' ) then
329
 
330
                        sop_int <= '1';
331
 
332
                elsif( sop_ex='1' ) then
333
 
334
                        sop_int <= '0';
335
 
336
                end if;
337
 
338
                if( eop_gen = '1' ) then
339
 
340
                        eop_int <= '1';
341
 
342
                elsif( eop_ex='1') then
343
 
344
                        eop_int <= '0';
345
 
346
                end if;
347
 
348
                if( rx_er='1' ) then
349
 
350
                        rx_er_int <= '1' ;
351
 
352
                elsif( eop_ex='1') then
353
 
354
                        rx_er_int <= '0';
355
 
356
                end if;
357
 
358
        end if;
359
    end process;
360
 
361
    -- word clock, external signal generation
362
    -- --------------------------------------
363
 
364
    --sop <= sop_ex after THOLD;
365
    --eop <= eop_ex after THOLD;
366
 
367
    process( clk, reset )
368
    begin
369
        if( reset='1' ) then
370
 
371
                eop_ex      <= '0';
372
                sop_ex      <= '0';
373
                dval_reg    <= '0';
374
                dout_reg    <= (others => '0');
375
                tmod_reg    <= (others => '0');
376
                derror_reg  <= '0';
377
                start_gen   <= '0';
378
                ipg_len_i   <= 0;
379
                done_reg    <= '0';
380
 
381
        elsif( clk'event and clk='1' ) then
382
 
383
                eop_ex      <= eop_int;
384
                sop_ex      <= sop_int;
385
                dout_reg    <= data32 after THOLD;
386
                derror_reg  <= rx_er_int after THOLD;
387
 
388
                if( done_gen='1' and ((state=S_IDLE or state=S_IPG0) or
389
                                      (state=S_DATA and eop_int='1' and ipg_len_i<4 and start='1')) ) then  -- nextstate=S_IPG0
390
 
391
                        start_gen <= start;
392
                else
393
                        start_gen <= '0';
394
                end if;
395
 
396
                if( (state = S_DATA or state=S_IPG0 or sop_int='1') and enable_int='1') then
397
 
398
                        dval_reg <= '1' after THOLD;
399
                else
400
                        dval_reg <= '0' after THOLD;
401
                end if;
402
 
403
                -- store input variables that could change until end of frame
404
 
405
                if( sop_int='1' ) then
406
 
407
                        ipg_len_i   <= ipg_len;
408
 
409
                end if;
410
 
411
                -- output last word modulo during eop
412
 
413
                if( eop_int='1' ) then
414
 
415
                        tmod_reg <= conv_std_logic_vector(bytecnt_eop,2) after THOLD;
416
 
417
                elsif( eop_ex='0' ) then
418
 
419
                        tmod_reg <= (others => '0') after THOLD;
420
 
421
                end if;
422
 
423
                done_reg <= done_gen;
424
 
425
        end if;
426
    end process;
427
 
428
 
429
   -- ------------------------
430
   -- capture GMII data bytes
431
   -- ------------------------
432
 
433
    process( tx_clk, reset )
434
    begin
435
        if( reset='1' ) then
436
 
437
            data32      <= (others => '0');
438
            bytecnt_eop <= 0;
439
            bytecnt     <= 0;
440
 
441
        elsif(tx_clk='1' and tx_clk'event) then
442
 
443
            if(eop_gen = '1' ) then
444
 
445
                bytecnt_eop <= (bytecnt+2) mod 4;     -- remember where the last byte was
446
 
447
            end if;
448
 
449
            if( sop_gen='1' and rx_dv='1') then                 -- first byte
450
 
451
                if(ENABLE_SHIFT16 = 1 ) then
452
 
453
                        data32  <= rxd(7 downto 0) & X"000000";
454
                        bytecnt <= 2;
455
 
456
                elsif(ENABLE_SHIFT16 = 0) then
457
 
458
                    data32  <= rxd(7 downto 0) & X"000000";
459
                    bytecnt <= 0;
460
 
461
                end if;
462
 
463
            elsif( rx_dv='1' ) then                             -- during frame
464
 
465
                    data32(31 downto 0) <= rxd(7 downto 0) & data32(31 downto 8);
466
 
467
                    bytecnt <= (bytecnt+1) mod 4;
468
 
469
            elsif( rx_dv='0' and bytecnt < 3 and eop_int='1') then     -- shift last bytes to LSBs as necessary
470
 
471
                    data32(31 downto 0) <= X"00" & data32(31 downto 8);
472
                    bytecnt <= (bytecnt+1) mod 4;
473
 
474
            elsif( rx_dv='0' and eop_int='0') then  -- stopped and after eop => reset
475
 
476
                    bytecnt <= 0;
477
 
478
            end if;
479
 
480
 
481
        end if;
482
    end process;
483
 
484
 
485
   -- ------------------------
486
   -- state machine
487
   -- ------------------------
488
 
489
    process( clk, reset )   -- synchronize external to xgmii
490
    begin
491
        if( reset='1' ) then
492
 
493
            state          <= S_IDLE;
494
            count          <= 8;
495
 
496
        elsif( clk'event and clk='1' ) then
497
 
498
                if(state = S_IPG ) then
499
 
500
                        count <= count +4;
501
 
502
                else
503
 
504
                        count <= 8;
505
 
506
                end if;
507
 
508
            case state is
509
 
510
                when S_IDLE  => if( done_gen = '0' ) then       -- has the generator been triggered ?
511
 
512
                                        state <= S_DATA;
513
 
514
                                else
515
 
516
                                        state <= S_IDLE;
517
 
518
                                end if;
519
 
520
                when S_DATA  => if( eop_int='0' ) then
521
 
522
                                        state <= S_DATA;
523
 
524
                                else
525
 
526
                                        if( ipg_len_i < 4 and start='1') then
527
 
528
                                                state <= S_IPG0;        -- no IPG
529
                                                --state <= S_IDLE;   
530
 
531
                                        elsif( ipg_len_i < 8 ) then
532
 
533
                                                state <= S_IDLE;
534
 
535
                                        else
536
 
537
                                                state <= S_IPG;
538
 
539
                                        end if;
540
 
541
                                end if;
542
 
543
                when S_IPG   => if( count < ipg_len_i ) then
544
 
545
                                        state <= S_IPG;
546
 
547
                                else
548
 
549
                                        state <= S_IDLE;
550
 
551
                                end if;
552
 
553
                when S_IPG0  => state <= S_DATA;
554
 
555
 
556
                when others => state <= S_IDLE;
557
 
558
            end case;
559
 
560
        end if;
561
    end process;
562
 
563
 
564
 
565
-- endian adapter from Little endian to Big endian
566
-- 
567
--       dout     : out std_logic_vector(31 downto 0);
568
--       dval     : out std_logic;
569
--       derror   : out std_logic;
570
--       sop      : out std_logic;   -- pulse with first word
571
--       eop      : out std_logic;   -- pulse with last word (tmod valid)
572
--       tmod     : out std_logic_vector(1 downto 0);  -- last word modulo
573
 
574
 process (clk, reset)
575
  begin
576
   if( reset = '1' ) then
577
       dout_temp  <= (others => '0');
578
       dval_temp  <= '0';
579
       derror_temp<= '0';
580
       sop_temp   <= '0';
581
       eop_temp   <= '0';
582
       tmod_temp  <= (others => '0');
583
       done_temp  <= '0';
584
   elsif( clk'event and clk='1' ) then
585
     if (BIG_ENDIAN = 1) then
586
 
587
          dout_temp  <= (dout_reg(7 downto 0) & dout_reg(15 downto 8) & dout_reg(23 downto 16) & dout_reg(31 downto 24)) after THOLD;
588
          dval_temp  <= dval_reg after THOLD ;
589
          derror_temp<= derror_reg after THOLD;
590
          sop_temp   <= sop_ex after THOLD;
591
          eop_temp   <= eop_ex after THOLD;
592
          done_temp  <= done_reg after THOLD;
593
 
594
          case (tmod_reg) is
595
            when "00"   => tmod_temp <= "00";
596
            when "01"   => tmod_temp <= "11";
597
            when "10"   => tmod_temp <= "10";
598
            when "11"   => tmod_temp <= "01";
599
            when others => tmod_temp <= "00";
600
          end case;
601
     else
602
          dout_temp           <= dout_reg after THOLD;
603
          dval_temp           <= dval_reg after THOLD;
604
          derror_temp         <= derror_reg after THOLD;
605
          sop_temp            <= sop_ex after THOLD;
606
          eop_temp            <= eop_ex after THOLD;
607
          tmod_temp           <= tmod_reg after THOLD;
608
          done_temp           <= done_reg after THOLD;
609
     end if;
610
   end if;
611
 
612
  end process;
613
 
614
 
615
   -- timing adapter
616
   GMII_ADAPTER_BLOCK: if ( ZERO_LATENCY=1) generate
617
   timing_adapter: timing_adapter_32
618
 
619
       port map
620
       (
621
           -- Interface: clk
622
           clk               => clk,
623
           reset             => reset,
624
 
625
           -- Interface: in
626
           in_ready          => enable_int,
627
           in_valid          => dval_temp,
628
           in_data           => dout_temp,
629
           in_startofpacket  => sop_temp,
630
           in_endofpacket    => eop_temp,
631
           in_empty          => tmod_temp,
632
           in_error          => derror_temp,
633
           -- Interface: in
634
           out_ready         => enable,
635
           out_valid         => dval,
636
           out_data          => dout,
637
           out_startofpacket => sop,
638
           out_endofpacket   => eop,
639
           out_empty         => tmod,
640
           out_error         => derror
641
       );
642
 
643
       done <= done_temp;
644
   end generate;
645
 
646
 
647
   NO_ADAPTER_BLOCK: if ( ZERO_LATENCY /= 1) generate
648
       enable_int <= enable;
649
       dval       <= dval_temp;
650
       dout       <= dout_temp;
651
       sop        <= sop_temp;
652
       eop        <= eop_temp;
653
       tmod       <= tmod_temp;
654
       derror     <= derror_temp;
655
       done       <= done_temp;
656
 
657
   end generate;
658
 
659
 
660
 
661
   -- Generator
662
   -- ---------
663
 
664
   GEN1G: ETHGENERATOR
665
 
666
   generic map (  THOLD => 0.1 ns )
667
 
668
   port map (
669
 
670
      reset   => reset,         -- active high
671
 
672
        -- GMII receive interface: To be connected to MAC RX
673
 
674
      rx_clk  =>   tx_clk,
675
      enable  =>   '1',
676
      rxd     =>   rxd,
677
      rx_dv   =>   rx_dv,
678
      rx_er   =>   rx_er,
679
 
680
        -- FIFO testing 
681
 
682
      sop    => sop_gen,
683
      eop    => eop_gen,
684
 
685
        -- Frame Contents definitions
686
 
687
      mac_reverse  => mac_reverse,
688
      dst          => dst,
689
      src          => src,
690
 
691
      prmble_len   => prmble_len,
692
      pquant       => pquant,
693
      vlan_ctl     => vlan_ctl,
694
      len          => len,
695
      frmtype         => frmtype,
696
 
697
      cntstart      =>cntstart,
698
      cntstep       =>cntstep,
699
      ipg_len       => 4,
700
 
701
       -- Control   
702
 
703
      wrong_pause_op => '0' ,
704
      wrong_pause_lgth => '0' ,
705
      payload_err  =>  payload_err,
706
      prmbl_err    =>  prmbl_err,
707
      crc_err      =>  crc_err,
708
      vlan_en      =>  vlan_en,
709
      stack_vlan   =>  stack_vlan,
710
      pause_gen    =>  pause_gen,
711
      pad_en       =>  pad_en,
712
      phy_err      =>  phy_err,
713
      end_err      =>  end_err,
714
      magic        => '0' ,
715
 
716
      data_only    =>  data_only,
717
 
718
      start        =>  start_gen,
719
      done         =>  done_gen  );
720
 
721
end behave;
722
 
723
 

powered by: WebSVN 2.1.0

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