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

Subversion Repositories ethernet_tri_mode

[/] [ethernet_tri_mode/] [tags/] [release-1-0/] [rtl/] [verilog/] [MAC_tx/] [MAC_tx_Ctrl.v] - Diff between revs 6 and 7

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 6 Rev 7
Line 37... Line 37...
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//                                                                    
//                                                                    
// CVS Revision History                                               
// CVS Revision History                                               
//                                                                    
//                                                                    
// $Log: not supported by cvs2svn $
// $Log: not supported by cvs2svn $
 
// Revision 1.3  2005/12/16 06:44:17  Administrator
 
// replaced tab with space.
 
// passed 9.6k length frame test.
 
//
 
// Revision 1.2  2005/12/13 12:15:38  Administrator
 
// no message
//
//
// Revision 1.1.1.1  2005/12/13 01:51:45  Administrator
// Revision 1.1.1.1  2005/12/13 01:51:45  Administrator
// no message
// no message
//                                           
//                                           
 
 
Line 199... Line 205...
reg[7:0]         pause_counter           ;
reg[7:0]         pause_counter           ;
reg                             pause_quanta_sub        ;
reg                             pause_quanta_sub        ;
reg                             pause_frame_send_en_dl1 ;
reg                             pause_frame_send_en_dl1 ;
reg[15:0]                pause_quanta_set_dl1    ;
reg[15:0]                pause_quanta_set_dl1    ;
reg     [4:0]            send_pause_frame_counter        ;
reg     [4:0]            send_pause_frame_counter        ;
reg                             xoff_gen_reg            ;
 
reg                             xon_gen_reg             ;
 
reg                             xoff_gen_complete       ;
reg                             xoff_gen_complete       ;
reg                             xon_gen_complete        ;
reg                             xon_gen_complete        ;
//******************************************************************************    
//******************************************************************************    
//boundery signal processing                                                             
//boundery signal processing                                                             
//****************************************************************************** 
//****************************************************************************** 
Line 217... Line 221...
        else
        else
                begin
                begin
                pause_frame_send_en_dl1                 <=pause_frame_send_en   ;
                pause_frame_send_en_dl1                 <=pause_frame_send_en   ;
                pause_quanta_set_dl1            <=pause_quanta_set              ;
                pause_quanta_set_dl1            <=pause_quanta_set              ;
                end
                end
 
 
//******************************************************************************    
//******************************************************************************    
//state machine                                                             
//state machine                                                             
//****************************************************************************** 
//****************************************************************************** 
assign Collision=TxEn&CRS;
assign Collision=TxEn&CRS;
 
 
Line 280... Line 283...
                        StateIdle:
                        StateIdle:
                                if (!FullDuplex&&CRS)
                                if (!FullDuplex&&CRS)
                                        Next_state=StateDefer;
                                        Next_state=StateDefer;
                                else if (pause_apply)
                                else if (pause_apply)
                                        Next_state=StatePause;
                                        Next_state=StatePause;
                                else if ((FullDuplex&&Fifo_ra)||(!FullDuplex&&!CRS&&Fifo_ra)||(pause_frame_send_en_dl1&&(xoff_gen_reg||xon_gen_reg)))
                else if ((FullDuplex&&Fifo_ra)||(!FullDuplex&&!CRS&&Fifo_ra)||(pause_frame_send_en_dl1&&(xoff_gen||xon_gen)))
                                        Next_state=StatePreamble;
                                        Next_state=StatePreamble;
                                else
                                else
                                        Next_state=Current_state;
                                        Next_state=Current_state;
                        StatePause:
                        StatePause:
                                if (pause_counter==512/8)
                                if (pause_counter==512/8)
Line 299... Line 302...
                                else
                                else
                                        Next_state=Current_state;
                                        Next_state=Current_state;
                        StateSFD:
                        StateSFD:
                                if (!FullDuplex&&Collision)
                                if (!FullDuplex&&Collision)
                                        Next_state=StateJam;
                                        Next_state=StateJam;
                                else if (pause_frame_send_en_dl1&&(xoff_gen_reg||xon_gen_reg))
                else if (pause_frame_send_en_dl1&&(xoff_gen||xon_gen))
                                        Next_state=StateSendPauseFrame;
                                        Next_state=StateSendPauseFrame;
                                else
                                else
                                        Next_state=StateData;
                                        Next_state=StateData;
                        StateSendPauseFrame:
                        StateSendPauseFrame:
                                if (send_pause_frame_counter==19)
                                if (send_pause_frame_counter==19)
Line 341... Line 344...
                                else
                                else
                                        Next_state      =Current_state;
                                        Next_state      =Current_state;
                        StateFCS:
                        StateFCS:
                                if (!FullDuplex&&Collision)
                                if (!FullDuplex&&Collision)
                                        Next_state      =StateJam;
                                        Next_state      =StateJam;
                                else if (pause_frame_send_en_dl1&&(xoff_gen_reg||xon_gen_reg))
                else if (pause_frame_send_en_dl1&&(xoff_gen||xon_gen))
                                        Next_state      =StateDefer;
                                        Next_state      =StateDefer;
                                else if (CRC_end)
                                else if (CRC_end)
                                        Next_state      =StateSwitchNext;
                                        Next_state      =StateSwitchNext;
                                else
                                else
                                        Next_state      =Current_state;
                                        Next_state      =Current_state;
Line 438... Line 441...
 
 
//MAC_rx_FF
//MAC_rx_FF
//data have one cycle delay after fifo read signals  
//data have one cycle delay after fifo read signals  
always @ (*)
always @ (*)
        if (Current_state==StateData ||
        if (Current_state==StateData ||
                Current_state==StateSFD&&!(pause_frame_send_en_dl1&&(xoff_gen_reg||xon_gen_reg))  ||
        Current_state==StateSFD&&!(pause_frame_send_en_dl1&&(xoff_gen||xon_gen))  ||
                Current_state==StateJamDrop&&PktDrpEvenPtr||
                Current_state==StateJamDrop&&PktDrpEvenPtr||
                Current_state==StateFFEmptyDrop&&PktDrpEvenPtr )
                Current_state==StateFFEmptyDrop&&PktDrpEvenPtr )
                Fifo_rd         =1;
                Fifo_rd         =1;
        else
        else
                Fifo_rd         =0;
                Fifo_rd         =0;
Line 459... Line 462...
        else
        else
                Fifo_rd_retry   =0;
                Fifo_rd_retry   =0;
//RMII
//RMII
always @(Current_state)
always @(Current_state)
        if (Current_state==StatePreamble||Current_state==StateSFD||
        if (Current_state==StatePreamble||Current_state==StateSFD||
                Current_state==StateData||
        Current_state==StateData||Current_state==StateSendPauseFrame||
                Current_state==StateFCS||Current_state==StatePAD||Current_state==StateJam)
                Current_state==StateFCS||Current_state==StatePAD||Current_state==StateJam)
                TxEn_tmp        =1;
                TxEn_tmp        =1;
        else
        else
                TxEn_tmp        =0;
                TxEn_tmp        =0;
 
 
Line 572... Line 575...
        else if (Current_state==StateSendPauseFrame)
        else if (Current_state==StateSendPauseFrame)
                Tx_pkt_type_rmon        <=3'b100;
                Tx_pkt_type_rmon        <=3'b100;
        else if(MAC_header_slot)
        else if(MAC_header_slot)
                Tx_pkt_type_rmon        <={1'b0,TxD_tmp};
                Tx_pkt_type_rmon        <={1'b0,TxD_tmp};
 
 
 
 
always @(Tx_pkt_length_rmon)
always @(Tx_pkt_length_rmon)
        if (Tx_pkt_length_rmon>=6&&Tx_pkt_length_rmon<=11)
        if (Tx_pkt_length_rmon>=6&&Tx_pkt_length_rmon<=11)
                Src_MAC_ptr                     =1;
                Src_MAC_ptr                     =1;
        else
        else
                Src_MAC_ptr                     =0;
                Src_MAC_ptr                     =0;
 
 
//MAC_tx_addr_add  
//MAC_tx_addr_add  
always @ (Tx_pkt_length_rmon or Fifo_rd or Src_MAC_ptr)
always @ (posedge Clk or posedge Reset)
        if (Src_MAC_ptr&&(MAC_tx_add_en||Current_state==StateSendPauseFrame))
    if (Reset)
                MAC_tx_addr_rd  =1;
        MAC_tx_addr_rd  <=0;
 
    else if ((Tx_pkt_length_rmon>=4&&Tx_pkt_length_rmon<=9)&&(MAC_tx_add_en||Current_state==StateSendPauseFrame))
 
        MAC_tx_addr_rd  <=1;
        else
        else
                MAC_tx_addr_rd  =0;
        MAC_tx_addr_rd  <=0;
 
 
always @ (Tx_pkt_length_rmon or Fifo_rd)
always @ (Tx_pkt_length_rmon or Fifo_rd)
        if ((Tx_pkt_length_rmon==5)&&Fifo_rd)
    if ((Tx_pkt_length_rmon==3)&&Fifo_rd)
                MAC_tx_addr_init=1;
                MAC_tx_addr_init=1;
        else
        else
                MAC_tx_addr_init=0;
                MAC_tx_addr_init=0;
 
 
//flow control
//flow control
Line 603... Line 609...
                pause_quanta_sub        <=0;
                pause_quanta_sub        <=0;
 
 
 
 
always @ (posedge Clk or posedge Reset)
always @ (posedge Clk or posedge Reset)
        if (Reset)
        if (Reset)
                begin
 
                xoff_gen_reg            <=0;
 
                xon_gen_reg             <=0;
 
                end
 
        else if (Current_state==StateDefer)
 
                begin
 
                xoff_gen_reg         <=xoff_gen;
 
                xon_gen_reg              <=xon_gen;
 
                end
 
 
 
always @ (posedge Clk or posedge Reset)
 
        if (Reset)
 
                xoff_gen_complete       <=0;
                xoff_gen_complete       <=0;
        else if(Current_state==StateDefer&&xoff_gen_reg)
    else if(Current_state==StateDefer&&xoff_gen)
                xoff_gen_complete       <=1;
                xoff_gen_complete       <=1;
        else
        else
                xoff_gen_complete       <=0;
                xoff_gen_complete       <=0;
 
 
 
 
always @ (posedge Clk or posedge Reset)
always @ (posedge Clk or posedge Reset)
        if (Reset)
        if (Reset)
                xon_gen_complete        <=0;
                xon_gen_complete        <=0;
        else if(Current_state==StateDefer&&xon_gen_reg)
    else if(Current_state==StateDefer&&xon_gen)
                xon_gen_complete        <=1;
                xon_gen_complete        <=1;
        else
        else
                xon_gen_complete        <=0;
                xon_gen_complete        <=0;
 
 
endmodule
endmodule

powered by: WebSVN 2.1.0

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