commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r5258 - in gnuradio/branches/developers/matt/u2f/openc


From: matt
Subject: [Commit-gnuradio] r5258 - in gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode: bench/verilog rtl/verilog rtl/verilog/CVS rtl/verilog/MAC_rx rtl/verilog/MAC_tx rtl/verilog/MAC_tx/CVS rtl/verilog/RMON rtl/verilog/TECH rtl/verilog/TECH/CVS rtl/verilog/miim
Date: Tue, 8 May 2007 21:32:55 -0600 (MDT)

Author: matt
Date: 2007-05-08 21:32:54 -0600 (Tue, 08 May 2007)
New Revision: 5258

Added:
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_ctrl.v
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/random_gen.v
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/TECH/clkdiv2.v
Removed:
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_Ctrl.v
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/Ramdon_gen.v
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/TECH/CLK_DIV2.v
Modified:
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/verilog/Phy_sim.v
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/verilog/User_int_sim.v
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/verilog/host_sim.v
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/verilog/reg_int_sim.v
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/verilog/tb_top.v
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/CVS/Entries
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/Clk_ctrl.v
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx.v
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx/MAC_rx_FF.v
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_top.v
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx.v
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CVS/Entries
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_FF.v
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/RMON.v
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/RMON/RMON_ctrl.v
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/RMON/RMON_dpram.v
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Entries
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/TECH/duram.v
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/miim/eth_clockgen.v
   
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/reg_int.v
Log:
changes to get this crap to compile


Modified: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/verilog/Phy_sim.v
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/verilog/Phy_sim.v
   2007-05-08 18:19:08 UTC (rev 5257)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/verilog/Phy_sim.v
   2007-05-09 03:32:54 UTC (rev 5258)
@@ -51,52 +51,52 @@
 
 `timescale 1ns/100ps 
 
-module Phy_sim (
-input                  Gtx_clk                                 ,//used only in 
GMII mode
-output                 Rx_clk                                  ,
-output                 Tx_clk                                  ,//used only in 
MII mode
-input                  Tx_er                                   ,
-input                  Tx_en                                   ,
-input  [7:0]   Txd                                             ,
-output                 Rx_er                                   ,
-output                 Rx_dv                                   ,
-output         [7:0]   Rxd                                             ,
-output                 Crs                                             ,
-output                 Col                                             ,
-input  [2:0]   Speed                           
-);
-//////////////////////////////////////////////////////////////////////
-// this file used to simulate Phy.
-// generate clk and loop the Tx data to Rx data
-// full duplex mode can be verified on loop mode.
-//////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////
-// internal signals
-//////////////////////////////////////////////////////////////////////
-reg                            Clk_25m                 ;//used for 100 Mbps 
mode
-reg                            Clk_2_5m                ;//used for 10 Mbps mode
-//wire                 Rx_clk                  ;
-//wire                 Tx_clk                  ;//used only in MII mode
-//////////////////////////////////////////////////////////////////////
-always 
-       begin
+module Phy_sim (input                  Gtx_clk                                 
,//used only in GMII mode
+               output                  Rx_clk                                  
,
+               output                  Tx_clk                                  
,//used only in MII mode
+               input                   Tx_er                                   
,
+               input                   Tx_en                                   
,
+               input   [7:0]   Txd                                             
,
+               output                  Rx_er                                   
,
+               output                  Rx_dv                                   
,
+               output  [7:0]   Rxd                                             
,
+               output                  Crs                                     
        ,
+               output                  Col                                     
        ,
+               input   [2:0]   Speed                           
+               );
+   
+   // ////////////////////////////////////////////////////////////////////
+   // this file used to simulate Phy.
+   // generate clk and loop the Tx data to Rx data
+   // full duplex mode can be verified on loop mode.
+   // ////////////////////////////////////////////////////////////////////
+   // ////////////////////////////////////////////////////////////////////
+   // internal signals
+   // ////////////////////////////////////////////////////////////////////
+   reg                         Clk_25m                 ;//used for 100 Mbps 
mode
+   reg                         Clk_2_5m                ;//used for 10 Mbps mode
+   //wire                      Rx_clk                  ;
+   //wire                      Tx_clk                  ;//used only in MII mode
+   // ////////////////////////////////////////////////////////////////////
+   always 
+     begin
        #20             Clk_25m=0;
        #20             Clk_25m=1;
-       end
-       
-always  
-       begin
+     end
+   
+   always  
+     begin
        #200    Clk_2_5m=0;
        #200    Clk_2_5m=1;
-       end   
-
-assign         Rx_clk=Speed[2]?Gtx_clk:Speed[1]?Clk_25m:Speed[0]?Clk_2_5m:0;   
     
-assign         Tx_clk=Speed[2]?Gtx_clk:Speed[1]?Clk_25m:Speed[0]?Clk_2_5m:0;
-       
-assign Rx_dv   =Tx_en  ;
-assign Rxd             =Txd    ;
-assign Rx_er   =0              ;
-assign Crs     =Tx_en  ;
-assign  Col            =0              ;
-
-endmodule
\ No newline at end of file
+     end   
+   
+   assign      Rx_clk=Speed[2]?Gtx_clk:Speed[1]?Clk_25m:Speed[0]?Clk_2_5m:0;   
     
+   assign      Tx_clk=Speed[2]?Gtx_clk:Speed[1]?Clk_25m:Speed[0]?Clk_2_5m:0;
+   
+   assign      Rx_dv   =Tx_en  ;
+   assign      Rxd             =Txd    ;
+   assign      Rx_er   =0              ;
+   assign      Crs     =Tx_en  ;
+   assign      Col             =0              ;
+   
+endmodule // Phy_sim

Modified: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/verilog/User_int_sim.v
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/verilog/User_int_sim.v
      2007-05-08 18:19:08 UTC (rev 5257)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/verilog/User_int_sim.v
      2007-05-09 03:32:54 UTC (rev 5258)
@@ -51,101 +51,98 @@
 // Revision 1.1.1.1  2005/12/13 01:51:44  Administrator
 // no message
 // 
-module User_int_sim (
-Reset                          ,               
-Clk_user                               ,
-CPU_init_end            ,
-//user inputerface      ,
-Rx_mac_ra                              ,
-Rx_mac_rd                              ,
-Rx_mac_data                            ,
-Rx_mac_BE                              ,
-Rx_mac_pa                              ,
-Rx_mac_sop                             ,
-Rx_mac_eop                             ,
-//user inputerface      ,
-Tx_mac_wa                      ,
-Tx_mac_wr                      ,
-Tx_mac_data                    ,
-Tx_mac_BE                              ,
-Tx_mac_sop                     ,
-Tx_mac_eop                             
 
-);
-input                  Reset                                   ;
-input                  Clk_user                                ;
-input           CPU_init_end            ;
-                               //user inputerface 
-input                  Rx_mac_ra                               ;
-output                 Rx_mac_rd                               ;
-input  [31:0]  Rx_mac_data                             ;
-input  [1:0]   Rx_mac_BE                               ;
-input                  Rx_mac_pa                               ;
-input                  Rx_mac_sop                              ;
-input                  Rx_mac_eop                              ;
-                               //user inputerface 
-input                  Tx_mac_wa                       ;
-output                 Tx_mac_wr                       ;
-output [31:0]  Tx_mac_data                     ;
-output         [1:0]   Tx_mac_BE                               ;//big endian
-output                 Tx_mac_sop                      ;
-output                 Tx_mac_eop                              ;
+module User_int_sim (Reset                             ,               
+                    Clk_user                           ,
+                    CPU_init_end            ,
+                    //user inputerface      ,
+                    Rx_mac_ra                          ,
+                    Rx_mac_rd                          ,
+                    Rx_mac_data                                ,
+                    Rx_mac_BE                          ,
+                    Rx_mac_pa                          ,
+                    Rx_mac_sop                         ,
+                    Rx_mac_eop                         ,
+                    //user inputerface      ,
+                    Tx_mac_wa                  ,
+                    Tx_mac_wr                  ,
+                    Tx_mac_data                        ,
+                    Tx_mac_BE                          ,
+                    Tx_mac_sop                 ,
+                    Tx_mac_eop                         
+                    );
 
-//////////////////////////////////////////////////////////////////////
-// inputernal signals
-//////////////////////////////////////////////////////////////////////
-reg[4:0]               operation;
-reg[31:0]              data;
-reg                            Rx_mac_rd;
-reg                            Start_tran;
-//////////////////////////////////////////////////////////////////////
-//generate Tx user data
-//////////////////////////////////////////////////////////////////////
-initial 
-       begin
+   input                       Reset                                   ;
+   input                       Clk_user                                ;
+   input                       CPU_init_end            ;
+   //user inputerface 
+   input                       Rx_mac_ra                               ;
+   output                      Rx_mac_rd                               ;
+   input [31:0]                Rx_mac_data                             ;
+   input [1:0]                         Rx_mac_BE                               
;
+   input                       Rx_mac_pa                               ;
+   input                       Rx_mac_sop                              ;
+   input                       Rx_mac_eop                              ;
+   //user inputerface 
+   input                       Tx_mac_wa                       ;
+   output                      Tx_mac_wr                       ;
+   output [31:0]               Tx_mac_data                     ;
+   output [1:0]                Tx_mac_BE                               ;//big 
endian
+   output                      Tx_mac_sop                      ;
+   output                      Tx_mac_eop                              ;
+   
+   // ////////////////////////////////////////////////////////////////////
+   // inputernal signals
+   // ////////////////////////////////////////////////////////////////////
+   reg [4:0]                   operation;
+   reg [31:0]                  data;
+   reg                         Rx_mac_rd;
+   reg                         Start_tran;
+   // ////////////////////////////////////////////////////////////////////
+   //generate Tx user data
+   // ////////////////////////////////////////////////////////////////////
+   initial 
+     begin
        operation       =0;
        data            =0;
-       end    
-
-always @ (posedge Clk_user or posedge Reset)
-       if (Reset)
-               Start_tran      <=0;
-       else if (Tx_mac_eop&&!Tx_mac_wa)  
-               Start_tran      <=0;     
-       else if (Tx_mac_wa)
-               Start_tran      <=1;     
-               
-       
-always @ (posedge Clk_user)
-       if (Tx_mac_wa&&CPU_init_end)
-               $ip_32W_gen("../data/config.ini",operation,data);
-       else
-               begin
-               operation       <=0;
-               data            <=0;
-               end
-
-assign Tx_mac_data     =data;
-assign Tx_mac_wr       =operation[4];
-assign Tx_mac_sop      =operation[3];
-assign Tx_mac_eop   =operation[2];
-assign Tx_mac_BE    =operation[1:0];
-//////////////////////////////////////////////////////////////////////
-//verify Rx user data
-//////////////////////////////////////////////////////////////////////
-always @ (posedge Clk_user or posedge Reset)
-       if (Reset)
-               Rx_mac_rd       <=0;
-       else if(Rx_mac_ra)
-               Rx_mac_rd       <=1;
-       else
-               Rx_mac_rd       <=0;
-               
-
-always @ (posedge Clk_user )
-       if (Rx_mac_pa)    
-               $ip_32W_check(  Rx_mac_data,
-                                               
{Rx_mac_sop,Rx_mac_eop,Rx_mac_eop?Rx_mac_BE:2'b0});
-                               
-endmodule
-                                               
\ No newline at end of file
+     end    
+   
+   always @ (posedge Clk_user or posedge Reset)
+     if (Reset)
+       Start_tran      <=0;
+     else if (Tx_mac_eop&&!Tx_mac_wa)  
+       Start_tran      <=0;     
+     else if (Tx_mac_wa)
+       Start_tran      <=1;     
+   
+   always @ (posedge Clk_user)
+     if (Tx_mac_wa&&CPU_init_end)
+       $ip_32W_gen("../data/config.ini",operation,data);
+     else
+       begin
+         operation     <=0;
+         data          <=0;
+       end
+   
+   assign Tx_mac_data  =data;
+   assign Tx_mac_wr    =operation[4];
+   assign Tx_mac_sop   =operation[3];
+   assign Tx_mac_eop   =operation[2];
+   assign Tx_mac_BE    =operation[1:0];
+   //////////////////////////////////////////////////////////////////////
+   //verify Rx user data
+   //////////////////////////////////////////////////////////////////////
+   always @ (posedge Clk_user or posedge Reset)
+     if (Reset)
+       Rx_mac_rd       <=0;
+     else if(Rx_mac_ra)
+       Rx_mac_rd       <=1;
+     else
+       Rx_mac_rd       <=0;
+   
+   always @ (posedge Clk_user )
+     if (Rx_mac_pa)    
+       $ip_32W_check(  Rx_mac_data,
+                       {Rx_mac_sop,Rx_mac_eop,Rx_mac_eop?Rx_mac_BE:2'b0});
+   
+endmodule // User_int_sim

Modified: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/verilog/host_sim.v
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/verilog/host_sim.v
  2007-05-08 18:19:08 UTC (rev 5257)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/verilog/host_sim.v
  2007-05-09 03:32:54 UTC (rev 5258)
@@ -1,83 +1,77 @@
-module host_sim (
-input                          Reset                                   ,
-input                      Clk_reg                                     ,
-output  reg             CSB                     ,
-output  reg             WRB                     ,
-output  reg             CPU_init_end            ,
-output  reg    [15:0]   CD_in                   ,
-input          [15:0]   CD_out                  ,
-output  reg    [7:0]    CA                      
-);
 
-////////////////////////////////////////
-task    CPU_init;
-begin
-        CA      =0;
-        CD_in   =0;
-        WRB     =1;
-        CSB     =1; 
-end
-endtask
+module host_sim 
+  (input                               Reset                                   
,
+   input                           Clk_reg                                     
,
+   output  reg             CSB                     ,
+   output  reg             WRB                     ,
+   output  reg             CPU_init_end            ,
+   output  reg    [15:0]   CD_in                   ,
+   input          [15:0]   CD_out                  ,
+   output  reg    [7:0]    CA                      
+   );
 
-////////////////////////////////////////
-task    CPU_wr;
-input[6:0]      Addr;
-input[15:0]     Data;
-begin
-        CA      ={Addr,1'b0};
-        CD_in   =Data;
-        WRB     =0;
-        CSB     =0; 
-#20;
-        CA      =0;
-        CD_in   =0;
-        WRB     =1;
-        CSB     =1;
-#20;
-end
-endtask
-/////////////////////////////////////////
-task    CPU_rd;
-input[6:0]      Addr;
-begin
-        CA      ={Addr,1'b0};
-        WRB     =1;
-        CSB     =0; 
-#20;
-        CA      =0;
-        WRB     =1;
-        CSB     =1;
-#20; 
-end
-endtask
-/////////////////////////////////////////
+   ////////////////////////////////////////
+   task    CPU_init;
+      begin
+         CA      =0;
+         CD_in   =0;
+         WRB     =1;
+         CSB     =1; 
+      end
+   endtask
 
-integer         i;
-
-reg     [31:0]  CPU_data [255:0];
-reg     [7:0]   write_times;
-reg     [7:0]   write_add;
-reg     [15:0]  write_data;
-
-
-initial
-    begin
-    
-    end
-    
-
-initial
-    begin
+   ////////////////////////////////////////
+   task    CPU_wr;
+      input[6:0]      Addr;
+      input[15:0]     Data;
+      begin
+         CA      ={Addr,1'b0};
+         CD_in   =Data;
+         WRB     =0;
+         CSB     =0; 
+        #20;
+         CA      =0;
+         CD_in   =0;
+         WRB     =1;
+         CSB     =1;
+        #20;
+      end
+   endtask
+   /////////////////////////////////////////
+   task    CPU_rd;
+      input[6:0]      Addr;
+      begin
+         CA      ={Addr,1'b0};
+         WRB     =1;
+         CSB     =0; 
+        #20;
+         CA      =0;
+         WRB     =1;
+         CSB     =1;
+        #20; 
+      end
+   endtask
+   /////////////////////////////////////////
+   
+   integer         i;
+   
+   reg [31:0]     CPU_data [255:0];
+   reg [7:0]      write_times;
+   reg [7:0]      write_add;
+   reg [15:0]     write_data;
+   
+   initial
+     begin
         CPU_init;
         CPU_init_end=0;  
         $readmemh("../data/CPU.vec",CPU_data);
         {write_times,write_add,write_data}=CPU_data[0];
-    #90 ;
+       #90 ;
         for (i=0;i<write_times;i=i+1)
-            begin
-            {write_times,write_add,write_data}=CPU_data[i];
-            CPU_wr(write_add[6:0],write_data);
-            end
+          begin
+             {write_times,write_add,write_data}=CPU_data[i];
+             CPU_wr(write_add[6:0],write_data);
+          end
         CPU_init_end=1;
-    end
-endmodule              
\ No newline at end of file
+     end
+endmodule // host_sim

Modified: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/verilog/reg_int_sim.v
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/verilog/reg_int_sim.v
       2007-05-08 18:19:08 UTC (rev 5257)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/verilog/reg_int_sim.v
       2007-05-09 03:32:54 UTC (rev 5258)
@@ -99,37 +99,37 @@
 input          UpdateMIIRX_DATAReg             ,// Updates MII RX_DATA 
register with read data
 );
 
-assign Tx_Hwmark                                       =5'h1e;
-assign Tx_Lwmark                                       =5'h19;
-assign pause_frame_send_en                     =0;
-assign pause_quanta_set                            =0;
-assign MAC_tx_add_en                           =0;
-assign FullDuplex                              =1;
-assign MaxRetry                                    =2;
-assign IFGset                                          =10;
-assign MAC_tx_add_prom_data                =0;
-assign MAC_tx_add_prom_add                     =0;
-assign MAC_tx_add_prom_wr                      =0;
-assign tx_pause_en                                     =0;
-assign xoff_cpu                                    =0;
-assign xon_cpu                         =0;
- 
-assign MAC_rx_add_chk_en                               =0;
-assign MAC_rx_add_prom_data             =0;
-assign MAC_rx_add_prom_add                 =0;
-assign MAC_rx_add_prom_wr                  =0;
-assign broadcast_filter_en                 =0;
-assign broadcast_MAX                   =10;
-assign RX_APPEND_CRC                       =0;
-assign CRC_chk_en                                  =1;
-assign RX_IFG_SET                                  =10;
-assign RX_MAX_LENGTH                       =1518;
-assign RX_MIN_LENGTH                       =64;
-
-assign CPU_rd_addr                                             =0;
-assign CPU_rd_apply                        =0;
-  
-assign Line_loop_en                                            =0;             
-assign Speed                                           =3'b001;
-  
-endmodule              
\ No newline at end of file
+   assign      Tx_Hwmark                                       =5'h1e;
+   assign      Tx_Lwmark                                       =5'h19;
+   assign      pause_frame_send_en                     =0;
+   assign      pause_quanta_set                            =0;
+   assign      MAC_tx_add_en                           =0;
+   assign      FullDuplex                              =1;
+   assign      MaxRetry                                    =2;
+   assign      IFGset                                          =10;
+   assign      MAC_tx_add_prom_data                =0;
+   assign      MAC_tx_add_prom_add                     =0;
+   assign      MAC_tx_add_prom_wr                      =0;
+   assign      tx_pause_en                                     =0;
+   assign      xoff_cpu                                    =0;
+   assign      xon_cpu                         =0;
+   
+   assign      MAC_rx_add_chk_en                               =0;
+   assign      MAC_rx_add_prom_data             =0;
+   assign      MAC_rx_add_prom_add                 =0;
+   assign      MAC_rx_add_prom_wr                  =0;
+   assign      broadcast_filter_en                 =0;
+   assign      broadcast_MAX                   =10;
+   assign      RX_APPEND_CRC                       =0;
+   assign      CRC_chk_en                                  =1;
+   assign      RX_IFG_SET                                  =10;
+   assign      RX_MAX_LENGTH                       =1518;
+   assign      RX_MIN_LENGTH                       =64;
+   
+   assign      CPU_rd_addr                                             =0;
+   assign      CPU_rd_apply                        =0;
+   
+   assign      Line_loop_en                                            =0;     
        
+   assign      Speed                                           =3'b001;
+   
+endmodule // reg_int_sim

Modified: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/verilog/tb_top.v
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/verilog/tb_top.v
    2007-05-08 18:19:08 UTC (rev 5257)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/verilog/tb_top.v
    2007-05-09 03:32:54 UTC (rev 5258)
@@ -51,182 +51,180 @@
 // no message
 // 
 
-module tb_top (
-);
-//******************************************************************************
-//internal signals                                                             
 
-//******************************************************************************
-                               //system signals
-reg                            Reset                                   ;
-reg                            Clk_125M                                ;
-reg                            Clk_user                                ;
-reg                            Clk_reg                                 ;
-                               //user interface 
-wire                   Rx_mac_ra                               ;
-wire                   Rx_mac_rd                               ;
-wire   [31:0]  Rx_mac_data                             ;
-wire   [1:0]   Rx_mac_BE                               ;
-wire                   Rx_mac_pa                               ;
-wire                   Rx_mac_sop                              ;
-wire                   Rx_mac_eop                              ;
-                               //user interface 
-wire                   Tx_mac_wa                       ;
-wire                   Tx_mac_wr                       ;
-wire   [31:0]  Tx_mac_data                     ;
-wire   [1:0]   Tx_mac_BE                               ;//big endian
-wire                   Tx_mac_sop                      ;
-wire                   Tx_mac_eop                              ;
-                               //Phy interface          
-                               //Phy interface                 
-wire                   Gtx_clk                                 ;//used only in 
GMII mode
-wire                   Rx_clk                                  ;
-wire                   Tx_clk                                  ;//used only in 
MII mode
-wire                   Tx_er                                   ;
-wire                   Tx_en                                   ;
-wire   [7:0]   Txd                                             ;
-wire                   Rx_er                                   ;
-wire                   Rx_dv                                   ;
-wire   [7:0]   Rxd                                             ;
-wire                   Crs                                             ;
-wire                   Col                                             ;
-wire            CSB                     ;
-wire            WRB                     ;
-wire    [15:0]  CD_in                   ;
-wire    [15:0]  CD_out                  ;
-wire    [7:0]   CA                      ;                              
-                               //Phy int host interface     
-wire                   Line_loop_en                    ;
-wire   [2:0]   Speed                                   ;
-                               //mii
-wire           Mdio                    ;// MII Management Data In
-wire           Mdc                             ;// MII Management Data Clock   
-wire            CPU_init_end            ;
-//******************************************************************************
-//internal signals                                                             
 
-//******************************************************************************
+module tb_top ();
+   // 
******************************************************************************
+   //internal signals                                                          
    
+   // 
******************************************************************************
+   //system signals
 
-initial 
-       begin
-                       Reset   =1;
+   reg                         Reset                                   ;
+   reg                         Clk_125M                                ;
+   reg                         Clk_user                                ;
+   reg                         Clk_reg                                 ;
+   //user interface 
+   wire                        Rx_mac_ra                               ;
+   wire                        Rx_mac_rd                               ;
+   wire [31:0]                         Rx_mac_data                             
;
+   wire [1:0]                  Rx_mac_BE                               ;
+   wire                        Rx_mac_pa                               ;
+   wire                        Rx_mac_sop                              ;
+   wire                        Rx_mac_eop                              ;
+   //user interface 
+   wire                        Tx_mac_wa                       ;
+   wire                        Tx_mac_wr                       ;
+   wire [31:0]                         Tx_mac_data                     ;
+   wire [1:0]                  Tx_mac_BE                               ;//big 
endian
+   wire                        Tx_mac_sop                      ;
+   wire                        Tx_mac_eop                              ;
+   //Phy interface              
+   //Phy interface                     
+   wire                        Gtx_clk                                 ;//used 
only in GMII mode
+   wire                        Rx_clk                                  ;
+   wire                        Tx_clk                                  ;//used 
only in MII mode
+   wire                        Tx_er                                   ;
+   wire                        Tx_en                                   ;
+   wire [7:0]                  Txd                                             
;
+   wire                        Rx_er                                   ;
+   wire                        Rx_dv                                   ;
+   wire [7:0]                  Rxd                                             
;
+   wire                        Crs                                             
;
+   wire                        Col                                             
;
+   wire                        CSB                     ;
+   wire                        WRB                     ;
+   wire [15:0]                         CD_in                   ;
+   wire [15:0]                         CD_out                  ;
+   wire [7:0]                  CA                      ;                       
        
+   //Phy int host interface     
+   wire                        Line_loop_en                    ;
+   wire [2:0]                  Speed                                   ;
+   //mii
+   wire                        Mdio                    ;// MII Management Data 
In
+   wire                        Mdc                             ;// MII 
Management Data Clock   
+   wire                        CPU_init_end            ;
+   // 
******************************************************************************
+   //internal signals                                                          
    
+   // 
******************************************************************************
+   
+   initial 
+     begin
+       Reset   =1;
        #20             Reset   =0;
-       end
-always 
-       begin
+     end
+   always 
+     begin
        #4              Clk_125M=0;
        #4              Clk_125M=1;
-       end
-
-always 
-       begin
+     end
+   
+   always 
+     begin
        #5              Clk_user=0;
        #5              Clk_user=1;
-       end
-       
-always 
-       begin
+     end
+   
+   always 
+     begin
        #10             Clk_reg=0;
        #10             Clk_reg=1;
-       end
+     end
+   
+//   initial   
+  //   begin
+       //$shm_open("tb_top.shm",,900000000,);
+//     $shm_probe("AS");
+ //    end
 
+   MAC_top 
+     U_MAC_top(//system signals                        (//system signals       
    ),
+              .Reset                                           (Reset          
                            ),
+              .Clk_125M                                        (Clk_125M       
                            ),
+              .Clk_user                                        (Clk_user       
                            ),
+              .Clk_reg                                     (Clk_reg            
                        ),
+              .Speed                          (Speed                      ),
+              //user interface               (//user interface           ),
+              .Rx_mac_ra                                       (Rx_mac_ra      
                            ),
+              .Rx_mac_rd                                       (Rx_mac_rd      
                            ),
+              .Rx_mac_data                                 (Rx_mac_data        
                        ),
+              .Rx_mac_BE                                       (Rx_mac_BE      
                            ),
+              .Rx_mac_pa                                       (Rx_mac_pa      
                            ),
+              .Rx_mac_sop                                      (Rx_mac_sop     
                            ),
+              .Rx_mac_eop                                      (Rx_mac_eop     
                            ),
+              //user interface               (//user interface           ),
+              .Tx_mac_wa                               (Tx_mac_wa              
            ),
+              .Tx_mac_wr                               (Tx_mac_wr              
            ),
+              .Tx_mac_data                         (Tx_mac_data                
        ),
+              .Tx_mac_BE                                       (Tx_mac_BE      
                            ),
+              .Tx_mac_sop                              (Tx_mac_sop             
            ),
+              .Tx_mac_eop                                      (Tx_mac_eop     
                            ),
+              //Phy interface                  (//Phy interface            ),
+              //Phy interface                      (//Phy interface            
        ),
+              .Gtx_clk                                     (Gtx_clk            
                        ),
+              .Rx_clk                                          (Rx_clk         
                            ),
+              .Tx_clk                                          (Tx_clk         
                            ),
+              .Tx_er                                           (Tx_er          
                            ),
+              .Tx_en                                           (Tx_en          
                            ),
+              .Txd                                                 (Txd        
                ),
+              .Rx_er                                           (Rx_er          
                            ),
+              .Rx_dv                                           (Rx_dv          
            ),
+              .Rxd                                             (Rxd            
                ),
+              .Crs                                             (Crs            
                ),
+              .Col                                             (Col            
                ),
+              //host interface
+              .CSB                            (CSB                        ),
+              .WRB                            (WRB                        ),
+              .CD_in                          (CD_in                      ),
+              .CD_out                         (CD_out                     ),
+              .CA                             (CA                         ),
+              //MII interface signals        (//MII interface signals    ),
+              .Mdio                            (Mdio                       ),
+              .Mdc                                 (Mdc                        
        )
+              );
+   
+   Phy_sim 
+     U_Phy_sim (.Gtx_clk                                               
(Gtx_clk                ),
+               .Rx_clk                             (Rx_clk                     
        ),
+               .Tx_clk                             (Tx_clk                     
        ),
+               .Tx_er                              (Tx_er                      
        ),
+               .Tx_en                              (Tx_en                      
        ),
+               .Txd                                    (Txd                    
            ),
+               .Rx_er                              (Rx_er                      
        ),
+               .Rx_dv                              (Rx_dv                      
        ),
+               .Rxd                                    (Rxd                    
            ),
+               .Crs                                    (Crs                    
            ),
+               .Col                                    (Col                    
            ),
+               .Speed                              (Speed                      
        )
+               );
+   
+   User_int_sim 
+     U_User_int_sim(.Reset                                                     
(Reset                  ),
+                   .Clk_user                               (Clk_user           
               ),
+                   .CPU_init_end                   (CPU_init_end               
),
+                   //user inputerface             (//user inputerface         
),
+                   .Rx_mac_ra                              (Rx_mac_ra          
                ),
+                   .Rx_mac_rd                              (Rx_mac_rd          
                ),
+                   .Rx_mac_data                                (Rx_mac_data    
                    ),
+                   .Rx_mac_BE                              (Rx_mac_BE          
                ),
+                   .Rx_mac_pa                              (Rx_mac_pa          
                ),
+                   .Rx_mac_sop                             (Rx_mac_sop         
                ),
+                   .Rx_mac_eop                             (Rx_mac_eop         
                ),
+                   //user inputerface             (//user inputerface         
),
+                   .Tx_mac_wa                      (Tx_mac_wa                  
),
+                   .Tx_mac_wr                      (Tx_mac_wr                  
),
+                   .Tx_mac_data                        (Tx_mac_data            
    ),
+                   .Tx_mac_BE                              (Tx_mac_BE          
                ),
+                   .Tx_mac_sop                     (Tx_mac_sop                 
),
+                   .Tx_mac_eop                             (Tx_mac_eop         
                )
+                   );
+   
+   host_sim 
+     U_host_sim(.Reset                                 (Reset                  
        ),    
+               .Clk_reg                                (Clk_reg                
        ), 
+               .CSB                            (CSB                        ),
+               .WRB                            (WRB                        ),
+               .CD_in                          (CD_in                      ),
+               .CD_out                         (CD_out                     ),
+               .CPU_init_end                   (CPU_init_end               ),
+               .CA                             (CA                         )
+               );
 
-initial        
-       begin
-       $shm_open("tb_top.shm",,900000000,);
-       $shm_probe("AS");
-       end
-
-
-MAC_top U_MAC_top(
- //system signals                      (//system signals           ),
-.Reset                                         (Reset                          
            ),
-.Clk_125M                                      (Clk_125M                       
            ),
-.Clk_user                                      (Clk_user                       
            ),
-.Clk_reg                                           (Clk_reg                    
                ),
-.Speed                          (Speed                      ),
- //user interface               (//user interface           ),
-.Rx_mac_ra                                     (Rx_mac_ra                      
            ),
-.Rx_mac_rd                                     (Rx_mac_rd                      
            ),
-.Rx_mac_data                               (Rx_mac_data                        
        ),
-.Rx_mac_BE                                     (Rx_mac_BE                      
            ),
-.Rx_mac_pa                                     (Rx_mac_pa                      
            ),
-.Rx_mac_sop                                    (Rx_mac_sop                     
            ),
-.Rx_mac_eop                                    (Rx_mac_eop                     
            ),
- //user interface               (//user interface           ),
-.Tx_mac_wa                             (Tx_mac_wa                          ),
-.Tx_mac_wr                             (Tx_mac_wr                          ),
-.Tx_mac_data                       (Tx_mac_data                        ),
-.Tx_mac_BE                                     (Tx_mac_BE                      
            ),
-.Tx_mac_sop                            (Tx_mac_sop                         ),
-.Tx_mac_eop                                    (Tx_mac_eop                     
            ),
- //Phy interface               (//Phy interface            ),
- //Phy interface                           (//Phy interface                    
),
-.Gtx_clk                                           (Gtx_clk                    
                ),
-.Rx_clk                                                (Rx_clk                 
                    ),
-.Tx_clk                                                (Tx_clk                 
                    ),
-.Tx_er                                         (Tx_er                          
            ),
-.Tx_en                                         (Tx_en                          
            ),
-.Txd                                               (Txd                        
                        ),
-.Rx_er                                         (Rx_er                          
            ),
-.Rx_dv                                         (Rx_dv                          
            ),
-.Rxd                                               (Rxd                        
                        ),
-.Crs                                               (Crs                        
                        ),
-.Col                                               (Col                        
                        ),
-//host interface
-.CSB                            (CSB                        ),
-.WRB                            (WRB                        ),
-.CD_in                          (CD_in                      ),
-.CD_out                         (CD_out                     ),
-.CA                             (CA                         ),
- //MII interface signals        (//MII interface signals    ),
-.Mdio                          (Mdio                       ),
-.Mdc                               (Mdc                                )
-);
-
-Phy_sim U_Phy_sim (
-.Gtx_clk                                               (Gtx_clk                
                ),
-.Rx_clk                                    (Rx_clk                             
),
-.Tx_clk                                    (Tx_clk                             
),
-.Tx_er                             (Tx_er                              ),
-.Tx_en                             (Tx_en                              ),
-.Txd                                   (Txd                                ),
-.Rx_er                             (Rx_er                              ),
-.Rx_dv                             (Rx_dv                              ),
-.Rxd                                   (Rxd                                ),
-.Crs                                   (Crs                                ),
-.Col                                   (Col                                ),
-.Speed                             (Speed                              )
-);
-
-User_int_sim U_User_int_sim( 
-.Reset                                                 (Reset                  
                        ),
-.Clk_user                                  (Clk_user                           
),
-.CPU_init_end                   (CPU_init_end               ),
- //user inputerface             (//user inputerface         ),
-.Rx_mac_ra                                 (Rx_mac_ra                          
),
-.Rx_mac_rd                                 (Rx_mac_rd                          
),
-.Rx_mac_data                           (Rx_mac_data                        ),
-.Rx_mac_BE                                 (Rx_mac_BE                          
),
-.Rx_mac_pa                                 (Rx_mac_pa                          
),
-.Rx_mac_sop                                (Rx_mac_sop                         
),
-.Rx_mac_eop                                (Rx_mac_eop                         
),
- //user inputerface             (//user inputerface         ),
-.Tx_mac_wa                         (Tx_mac_wa                  ),
-.Tx_mac_wr                         (Tx_mac_wr                  ),
-.Tx_mac_data                   (Tx_mac_data                ),
-.Tx_mac_BE                                 (Tx_mac_BE                          
),
-.Tx_mac_sop                        (Tx_mac_sop                 ),
-.Tx_mac_eop                                (Tx_mac_eop                         
)
-);
-
-host_sim U_host_sim(
-.Reset                                 (Reset                          ),    
-.Clk_reg                               (Clk_reg                        ), 
-.CSB                            (CSB                        ),
-.WRB                            (WRB                        ),
-.CD_in                          (CD_in                      ),
-.CD_out                         (CD_out                     ),
-.CPU_init_end                   (CPU_init_end               ),
-.CA                             (CA                         )
- 
-);
-endmodule
+endmodule // tb_top

Modified: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/CVS/Entries
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/CVS/Entries
   2007-05-08 18:19:08 UTC (rev 5257)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/CVS/Entries
   2007-05-09 03:32:54 UTC (rev 5258)
@@ -1,14 +1,14 @@
 /Clk_ctrl.v/1.3/Thu Jan 19 14:07:52 2006//
 /MAC_rx.v/1.4/Fri Nov 17 17:53:07 2006//
-/MAC_top.v/1.3/Thu Jan 19 14:07:52 2006//
 /MAC_tx.v/1.4/Fri Nov 17 17:53:07 2006//
 /Phy_int.v/1.3/Thu Jan 19 14:07:53 2006//
 /RMON.v/1.4/Sun Jun 25 04:58:56 2006//
 /eth_miim.v/1.3/Thu Jan 19 14:07:53 2006//
-/header.v/1.1/Thu Jan 19 14:07:53 2006//
 /reg_int.v/1.4/Fri Nov 17 17:53:07 2006//
 D/MAC_rx////
 D/MAC_tx////
 D/RMON////
 D/TECH////
 D/miim////
+/MAC_top.v/1.3/Tue May  1 07:30:08 2007//
+/header.v/1.1/Tue May  1 07:35:45 2007//

Modified: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/Clk_ctrl.v
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/Clk_ctrl.v
    2007-05-08 18:19:08 UTC (rev 5257)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/Clk_ctrl.v
    2007-05-09 03:32:54 UTC (rev 5258)
@@ -91,13 +91,13 @@
 assign Gtx_clk      =Clk_125M                   ;
 assign MAC_rx_clk   =Rx_clk                     ;
 
-CLK_DIV2 U_0_CLK_DIV2(
+clkdiv2 U_0_CLK_DIV2(
 .Reset          (Reset          ),
 .IN             (Rx_clk         ),
 .OUT            (Rx_clk_div2    )
 );
 
-CLK_DIV2 U_1_CLK_DIV2(
+clkdiv2 U_1_CLK_DIV2(
 .Reset          (Reset          ),
 .IN             (Tx_clk         ),
 .OUT            (Tx_clk_div2    )
@@ -124,4 +124,4 @@
 .SW             (Speed[2]       ),
 .OUT            (MAC_tx_clk_div )
 );
-endmodule
\ No newline at end of file
+endmodule

Modified: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx/MAC_rx_FF.v
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx/MAC_rx_FF.v
    2007-05-08 18:19:08 UTC (rev 5257)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx/MAC_rx_FF.v
    2007-05-09 03:32:54 UTC (rev 5258)
@@ -59,659 +59,601 @@
 // no message
 //                                           
 
-module MAC_rx_FF (
-Reset       ,                                                                  
                                                                           
-Clk_MAC     ,                                                                  
                                                                           
-Clk_SYS     ,                                                                  
                                                                           
-//MAC_rx_ctrl interface                                                        
                                                                                
  
-Fifo_data       ,                                                              
                                                                           
-Fifo_data_en    ,                                                              
                                                                           
-Fifo_full       ,                                                              
                                                                           
-Fifo_data_err   ,                                                              
                                                                           
-Fifo_data_end   ,   
-//CPU
-Rx_Hwmark,
-Rx_Lwmark,
-RX_APPEND_CRC,                                                                 
                                                                     
-//user interface                                                               
                                                                                
-Rx_mac_ra   ,                                                                  
                                                     
-Rx_mac_rd   ,                                                                  
                                                                           
-Rx_mac_data ,                                                                  
                                                                           
-Rx_mac_BE   ,
-Rx_mac_sop  ,  
-Rx_mac_pa,                                                                     
                                                                      
-Rx_mac_eop                                                                     
                                                                        
-);
-input           Reset       ;
-input           Clk_MAC     ;
-input           Clk_SYS     ;
-                //MAC_rx_ctrl interface 
-input   [7:0]   Fifo_data       ;
-input           Fifo_data_en    ;
-output          Fifo_full       ;
-input           Fifo_data_err   ;
-input           Fifo_data_end   ;
-                //CPU
-input           RX_APPEND_CRC       ;
-input   [4:0]   Rx_Hwmark           ;
-input   [4:0]   Rx_Lwmark           ;
-                //user interface 
-output          Rx_mac_ra   ;//
-input           Rx_mac_rd   ;
-output  [31:0]  Rx_mac_data ;
-output  [1:0]   Rx_mac_BE   ;
-output          Rx_mac_pa   ;
-output          Rx_mac_sop  ;
-output          Rx_mac_eop  ;
+module MAC_rx_FF 
+  #(parameter MAC_RX_FF_DEPTH = 9)
+    (Reset,Clk_MAC,Clk_SYS,
+     //MAC_rx_ctrl interface
+     Fifo_data,Fifo_data_en,Fifo_full,Fifo_data_err,Fifo_data_end,
+     //CPU
+     Rx_Hwmark,Rx_Lwmark,RX_APPEND_CRC,
+     //user interface
+     
Rx_mac_ra,Rx_mac_rd,Rx_mac_data,Rx_mac_BE,Rx_mac_sop,Rx_mac_pa,Rx_mac_eop);
 
-//******************************************************************************
-//internal signals                                                             
 
-//******************************************************************************
-parameter       State_byte3     =4'd0;      
-parameter       State_byte2     =4'd1;
-parameter       State_byte1     =4'd2;      
-parameter       State_byte0     =4'd3;
-parameter       State_be0       =4'd4;
-parameter       State_be3       =4'd5;
-parameter       State_be2       =4'd6;
-parameter       State_be1       =4'd7;
-parameter       State_err_end   =4'd8;
-parameter       State_idle      =4'd9;
+   input Reset;
+   input Clk_MAC     ;
+   input Clk_SYS     ;
+   //MAC_rx_ctrl interface 
+   input [7:0] Fifo_data       ;
+   input       Fifo_data_en    ;
+   output      Fifo_full       ;
+   input       Fifo_data_err   ;
+   input       Fifo_data_end   ;
+   //CPU
+   input       RX_APPEND_CRC       ;
+   input [4:0] Rx_Hwmark           ;
+   input [4:0] Rx_Lwmark           ;
+   //user interface 
+   output      Rx_mac_ra   ;//
+   input       Rx_mac_rd   ;
+   output [31:0] Rx_mac_data ;
+   output [1:0]  Rx_mac_BE   ;
+   output       Rx_mac_pa   ;
+   output       Rx_mac_sop  ;
+   output       Rx_mac_eop  ;
+   
+   // 
******************************************************************************
+   //internal signals
+   // 
******************************************************************************
+   parameter    State_byte3     =4'd0;      
+   parameter    State_byte2     =4'd1;
+   parameter    State_byte1     =4'd2;      
+   parameter    State_byte0     =4'd3;
+   parameter    State_be0       =4'd4;
+   parameter    State_be3       =4'd5;
+   parameter    State_be2       =4'd6;
+   parameter    State_be1       =4'd7;
+   parameter    State_err_end   =4'd8;
+   parameter    State_idle      =4'd9;
+   
+   parameter    SYS_read        =3'd0;
+   parameter    SYS_pause       =3'd1;
+   parameter    SYS_wait_end    =3'd2;
+   parameter    SYS_idle        =3'd3;
+   parameter    FF_emtpy_err    =3'd4;
+   
+   reg [MAC_RX_FF_DEPTH-1:0] Add_wr;
+   reg [MAC_RX_FF_DEPTH-1:0] Add_wr_ungray;
+   reg [MAC_RX_FF_DEPTH-1:0] Add_wr_gray;
+   reg [MAC_RX_FF_DEPTH-1:0] Add_wr_gray_dl1;
+   reg [MAC_RX_FF_DEPTH-1:0] Add_wr_reg;
+   
+   reg [MAC_RX_FF_DEPTH-1:0] Add_rd;
+   reg [MAC_RX_FF_DEPTH-1:0] Add_rd_gray;
+   reg [MAC_RX_FF_DEPTH-1:0] Add_rd_gray_dl1;
+   reg [MAC_RX_FF_DEPTH-1:0] Add_rd_ungray;
+   reg [35:0]               Din;
+   reg [35:0]               Din_tmp;
+   reg [35:0]               Din_tmp_reg;
+   wire [35:0]                      Dout;
+   reg                              Wr_en;
+   reg                              Wr_en_tmp;
+   reg                              Wr_en_ptr;
+   wire [MAC_RX_FF_DEPTH-1:0] Add_wr_pluse;
+   wire [MAC_RX_FF_DEPTH-1:0] Add_wr_pluse4;
+   wire [MAC_RX_FF_DEPTH-1:0] Add_wr_pluse3;
+   wire [MAC_RX_FF_DEPTH-1:0] Add_wr_pluse2;
+   reg                               Full;
+   reg                               Almost_full;
+   reg                               Empty /* synthesis syn_keep=1 */;
+   reg [3:0]                 Current_state /* synthesis syn_keep=1 */;
+   reg [3:0]                 Next_state;
+   reg [7:0]                 Fifo_data_byte0;
+   reg [7:0]                 Fifo_data_byte1;
+   reg [7:0]                 Fifo_data_byte2;
+   reg [7:0]                 Fifo_data_byte3;
+   reg                               Fifo_data_en_dl1;
+   reg [7:0]                 Fifo_data_dl1;
+   reg                               Rx_mac_sop_tmp  ;
+   reg                               Rx_mac_sop  ;
+   reg                               Rx_mac_ra   ;
+   reg                               Rx_mac_pa   ;
+   
+   
+   
+   reg [2:0]                 Current_state_SYS /* synthesis syn_keep=1 */;
+   reg [2:0]                 Next_state_SYS ;
+   reg [5:0]                 Packet_number_inFF /* synthesis syn_keep=1 */;
+   reg                               Packet_number_sub ;
+   wire                      Packet_number_add_edge;
+   reg                               Packet_number_add_dl1;
+   reg                               Packet_number_add_dl2;
+   reg                               Packet_number_add ;
+   reg                               Packet_number_add_tmp    ;
+   reg                               Packet_number_add_tmp_dl1;
+   reg                               Packet_number_add_tmp_dl2;
+   
+   reg                               Rx_mac_sop_tmp_dl1;
+   reg [35:0]                Dout_dl1;
+   reg [4:0]                 Fifo_data_count;
+   reg                               Rx_mac_pa_tmp       ;
+   reg                               Add_wr_jump_tmp     ;
+   reg                               Add_wr_jump_tmp_pl1 ;
+   reg                               Add_wr_jump         ;
+   reg                               Add_wr_jump_rd_pl1  ;
+   reg [4:0]                 Rx_Hwmark_pl        ;
+   reg [4:0]                 Rx_Lwmark_pl        ;
+   integer                   i                   ;
+   
+   // 
******************************************************************************
+   //domain Clk_MAC,write data to dprom.a-port for write
+   // 
******************************************************************************  
  
 
-parameter       SYS_read        =3'd0;
-parameter       SYS_pause       =3'd1;
-parameter       SYS_wait_end    =3'd2;
-parameter       SYS_idle        =3'd3;
-parameter       FF_emtpy_err    =3'd4;
-
-reg [`MAC_TX_FF_DEPTH-1:0]       Add_wr;
-reg [`MAC_TX_FF_DEPTH-1:0]       Add_wr_ungray;
-reg [`MAC_TX_FF_DEPTH-1:0]       Add_wr_gray;
-reg [`MAC_TX_FF_DEPTH-1:0]       Add_wr_gray_dl1;
-reg [`MAC_TX_FF_DEPTH-1:0]       Add_wr_reg;
-
-reg [`MAC_TX_FF_DEPTH-1:0]       Add_rd;
-reg [`MAC_TX_FF_DEPTH-1:0]       Add_rd_gray;
-reg [`MAC_TX_FF_DEPTH-1:0]       Add_rd_gray_dl1;
-reg [`MAC_TX_FF_DEPTH-1:0]       Add_rd_ungray;
-reg [35:0]      Din;
-reg [35:0]      Din_tmp;
-reg [35:0]      Din_tmp_reg;
-wire[35:0]      Dout;
-reg             Wr_en;
-reg             Wr_en_tmp;
-reg             Wr_en_ptr;
-wire[`MAC_TX_FF_DEPTH-1:0]       Add_wr_pluse;
-wire[`MAC_TX_FF_DEPTH-1:0]       Add_wr_pluse4;
-wire[`MAC_TX_FF_DEPTH-1:0]       Add_wr_pluse3;
-wire[`MAC_TX_FF_DEPTH-1:0]       Add_wr_pluse2;
-reg             Full;
-reg             Almost_full;
-reg             Empty /* synthesis syn_keep=1 */;
-reg [3:0]       Current_state /* synthesis syn_keep=1 */;
-reg [3:0]       Next_state;
-reg [7:0]       Fifo_data_byte0;
-reg [7:0]       Fifo_data_byte1;
-reg [7:0]       Fifo_data_byte2;
-reg [7:0]       Fifo_data_byte3;
-reg             Fifo_data_en_dl1;
-reg [7:0]       Fifo_data_dl1;
-reg             Rx_mac_sop_tmp  ;
-reg             Rx_mac_sop  ;
-reg             Rx_mac_ra   ;
-reg             Rx_mac_pa   ;
-
-
-
-reg [2:0]       Current_state_SYS /* synthesis syn_keep=1 */;
-reg [2:0]       Next_state_SYS ;
-reg [5:0]       Packet_number_inFF /* synthesis syn_keep=1 */;
-reg             Packet_number_sub ;
-wire            Packet_number_add_edge;
-reg             Packet_number_add_dl1;
-reg             Packet_number_add_dl2;
-reg             Packet_number_add ;
-reg             Packet_number_add_tmp    ;
-reg             Packet_number_add_tmp_dl1;
-reg             Packet_number_add_tmp_dl2;
-
-reg             Rx_mac_sop_tmp_dl1;
-reg [35:0]      Dout_dl1;
-reg [4:0]       Fifo_data_count;
-reg             Rx_mac_pa_tmp       ;
-reg             Add_wr_jump_tmp     ;
-reg             Add_wr_jump_tmp_pl1 ;
-reg             Add_wr_jump         ;
-reg             Add_wr_jump_rd_pl1  ;
-reg [4:0]       Rx_Hwmark_pl        ;
-reg [4:0]       Rx_Lwmark_pl        ;
-integer         i                   ;
-//******************************************************************************
-//domain Clk_MAC,write data to dprom.a-port for write
-//******************************************************************************
    
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Current_state   <=State_idle;
-    else
-        Current_state   <=Next_state;
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Current_state   <=State_idle;
+     else
+       Current_state   <=Next_state;
+   
+   always @(Current_state or Fifo_data_en or Fifo_data_err or Fifo_data_end)
+     case (Current_state)
+       State_idle:
+         if (Fifo_data_en)
+           Next_state  =State_byte3;
+         else
+           Next_state  =Current_state;                 
+       State_byte3:
+         if (Fifo_data_en)
+           Next_state  =State_byte2;
+         else if (Fifo_data_err)
+           Next_state  =State_err_end;
+         else if (Fifo_data_end)
+           Next_state  =State_be1; 
+         else
+           Next_state  =Current_state;                 
+       State_byte2:
+         if (Fifo_data_en)
+           Next_state  =State_byte1;
+         else if (Fifo_data_err)
+           Next_state  =State_err_end;
+         else if (Fifo_data_end)
+           Next_state  =State_be2; 
+         else
+           Next_state  =Current_state;         
+       State_byte1:
+         if (Fifo_data_en)
+           Next_state  =State_byte0;
+         else if (Fifo_data_err)
+           Next_state  =State_err_end;
+         else if (Fifo_data_end)
+           Next_state  =State_be3; 
+         else
+           Next_state  =Current_state;         
+       State_byte0:
+         if (Fifo_data_en)
+           Next_state  =State_byte3;
+         else if (Fifo_data_err)
+           Next_state  =State_err_end;
+         else if (Fifo_data_end)
+           Next_state  =State_be0; 
+         else
+           Next_state  =Current_state; 
+       State_be1:
+         Next_state      =State_idle;
+       State_be2:
+         Next_state      =State_idle;
+       State_be3:
+         Next_state      =State_idle;
+       State_be0:
+         Next_state      =State_idle;
+       State_err_end:
+         Next_state      =State_idle;
+       default:
+         Next_state      =State_idle;                
+     endcase
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Add_wr_reg      <=0;
+     else if (Current_state==State_idle)                 
+       Add_wr_reg      <=Add_wr;
         
-always @(Current_state or Fifo_data_en or Fifo_data_err or Fifo_data_end)
-    case (Current_state)
-        State_idle:
-                if (Fifo_data_en)
-                    Next_state  =State_byte3;
-                else
-                    Next_state  =Current_state;                 
-        State_byte3:
-                if (Fifo_data_en)
-                    Next_state  =State_byte2;
-                else if (Fifo_data_err)
-                    Next_state  =State_err_end;
-                else if (Fifo_data_end)
-                    Next_state  =State_be1; 
-                else
-                    Next_state  =Current_state;                 
-        State_byte2:
-                if (Fifo_data_en)
-                    Next_state  =State_byte1;
-                else if (Fifo_data_err)
-                    Next_state  =State_err_end;
-                else if (Fifo_data_end)
-                    Next_state  =State_be2; 
-                else
-                    Next_state  =Current_state;         
-        State_byte1:
-                if (Fifo_data_en)
-                    Next_state  =State_byte0;
-                else if (Fifo_data_err)
-                    Next_state  =State_err_end;
-                else if (Fifo_data_end)
-                    Next_state  =State_be3; 
-                else
-                    Next_state  =Current_state;         
-        State_byte0:
-                if (Fifo_data_en)
-                    Next_state  =State_byte3;
-                else if (Fifo_data_err)
-                    Next_state  =State_err_end;
-                else if (Fifo_data_end)
-                    Next_state  =State_be0; 
-                else
-                    Next_state  =Current_state; 
-        State_be1:
-                Next_state      =State_idle;
-        State_be2:
-                Next_state      =State_idle;
-        State_be3:
-                Next_state      =State_idle;
-        State_be0:
-                Next_state      =State_idle;
-        State_err_end:
-                Next_state      =State_idle;
-        default:
-                Next_state      =State_idle;                
-    endcase
-
-//
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Add_wr_reg      <=0;
-    else if (Current_state==State_idle)                 
-        Add_wr_reg      <=Add_wr;
-        
-//
-
-    
-always @ (posedge Reset or posedge Clk_MAC)
-    if (Reset)
-        Add_wr_gray         <=0;
-    else 
-               begin
-               Add_wr_gray[`MAC_RX_FF_DEPTH-1] <=Add_wr[`MAC_RX_FF_DEPTH-1];
-               for (i=`MAC_RX_FF_DEPTH-2;i>=0;i=i-1)
-               Add_wr_gray[i]                  <=Add_wr[i+1]^Add_wr[i];
-               end
-
-//
-
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Add_rd_gray_dl1         <=0;
-    else
-        Add_rd_gray_dl1         <=Add_rd_gray;
-                    
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Add_rd_ungray       =0;
-    else        
-               begin
-               Add_rd_ungray[`MAC_RX_FF_DEPTH-1]       
=Add_rd_gray_dl1[`MAC_RX_FF_DEPTH-1];   
-               for (i=`MAC_RX_FF_DEPTH-2;i>=0;i=i-1)
-                       Add_rd_ungray[i]        
=Add_rd_ungray[i+1]^Add_rd_gray_dl1[i]; 
-               end        
-assign          Add_wr_pluse=Add_wr+1;
-assign         Add_wr_pluse4=Add_wr+4;
-assign         Add_wr_pluse3=Add_wr+3;
-assign         Add_wr_pluse2=Add_wr+2;
-
-                                     
-
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Full    <=0;
-    else if (Add_wr_pluse==Add_rd_ungray)
-        Full    <=1;
-    else
-        Full    <=0;
-
-always @ (posedge Clk_MAC or posedge Reset)
-       if (Reset)
-               Almost_full     <=0;
-       else if (Add_wr_pluse4==Add_rd_ungray||
-                Add_wr_pluse3==Add_rd_ungray||
-                Add_wr_pluse2==Add_rd_ungray||
-                Add_wr_pluse==Add_rd_ungray
-                )
-               Almost_full     <=1;
-       else
-               Almost_full     <=0;            
-
-assign         Fifo_full =Almost_full;
-
-//
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Add_wr  <=0;
-    else if (Current_state==State_err_end)
-        Add_wr  <=Add_wr_reg;
-    else if (Wr_en&&!Full)
-        Add_wr  <=Add_wr +1;
-        
-always @ (posedge Clk_MAC or posedge Reset)
-       if (Reset)
-           Add_wr_jump_tmp <=0;
-       else if (Current_state==State_err_end)
-           Add_wr_jump_tmp <=1;
-       else
-           Add_wr_jump_tmp <=0;
-
-always @ (posedge Clk_MAC or posedge Reset)
-       if (Reset)
-           Add_wr_jump_tmp_pl1 <=0;
-       else
-           Add_wr_jump_tmp_pl1 <=Add_wr_jump_tmp;       
-           
-always @ (posedge Clk_MAC or posedge Reset)
-       if (Reset)
-           Add_wr_jump <=0;
-       else if (Current_state==State_err_end)
-           Add_wr_jump <=1;
-       else if (Add_wr_jump_tmp_pl1)
-           Add_wr_jump <=0;                    
-               
-//
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Fifo_data_en_dl1    <=0;
-    else 
-        Fifo_data_en_dl1    <=Fifo_data_en;
-        
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Fifo_data_dl1   <=0;
-    else 
-        Fifo_data_dl1   <=Fifo_data;
-        
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Fifo_data_byte3     <=0;
-    else if (Current_state==State_byte3&&Fifo_data_en_dl1)
-        Fifo_data_byte3     <=Fifo_data_dl1;
-
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Fifo_data_byte2     <=0;
-    else if (Current_state==State_byte2&&Fifo_data_en_dl1)
-        Fifo_data_byte2     <=Fifo_data_dl1;
-        
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Fifo_data_byte1     <=0;
-    else if (Current_state==State_byte1&&Fifo_data_en_dl1)
-        Fifo_data_byte1     <=Fifo_data_dl1;
-
-always @ (* )
-    case (Current_state)
-        State_be0:
-            Din_tmp 
={4'b1000,Fifo_data_byte3,Fifo_data_byte2,Fifo_data_byte1,Fifo_data_dl1};       
-        State_be1:
-            Din_tmp ={4'b1001,Fifo_data_byte3,24'h0};
-        State_be2:
-            Din_tmp ={4'b1010,Fifo_data_byte3,Fifo_data_byte2,16'h0};
-        State_be3:
-            Din_tmp 
={4'b1011,Fifo_data_byte3,Fifo_data_byte2,Fifo_data_byte1,8'h0};
-        default:
-            Din_tmp 
={4'b0000,Fifo_data_byte3,Fifo_data_byte2,Fifo_data_byte1,Fifo_data_dl1};
-    endcase
-    
-always @ (*)
-    if (Current_state==State_be0||Current_state==State_be1||
-       Current_state==State_be2||Current_state==State_be3||
-      (Current_state==State_byte0&&Fifo_data_en))
-        Wr_en_tmp   =1;
-    else 
-        Wr_en_tmp   =0; 
-
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Din_tmp_reg <=0;
-    else if(Wr_en_tmp)
-        Din_tmp_reg <=Din_tmp;  
-        
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Wr_en_ptr   <=0;
-    else if(Current_state==State_idle)
-        Wr_en_ptr   <=0;    
-    else if(Wr_en_tmp)
-        Wr_en_ptr   <=1;
-
-//if not append FCS,delay one cycle write data and Wr_en signal to drop FCS
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        begin
-        Wr_en           <=0;
-        Din             <=0;
-        end
-    else if(RX_APPEND_CRC)
-        begin
-        Wr_en           <=Wr_en_tmp;
-        Din             <=Din_tmp;
-        end         
-    else
-        begin
-        Wr_en           <=Wr_en_tmp&&Wr_en_ptr;
-        Din             <={Din_tmp[35:32],Din_tmp_reg[31:0]};
-        end                                 
-        
-//this signal for read side to handle the packet number in fifo
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Packet_number_add_tmp   <=0;
-    else if (Current_state==State_be0||Current_state==State_be1||
-             Current_state==State_be2||Current_state==State_be3)
-        Packet_number_add_tmp   <=1;
-    else 
-        Packet_number_add_tmp   <=0;
-        
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        begin
-        Packet_number_add_tmp_dl1   <=0;
-        Packet_number_add_tmp_dl2   <=0;
-        end
-    else
-        begin
-        Packet_number_add_tmp_dl1   <=Packet_number_add_tmp;
-        Packet_number_add_tmp_dl2   <=Packet_number_add_tmp_dl1;
-        end     
-        
-//Packet_number_add delay to Din[35] is needed to make sure the data have been 
wroten to ram.       
-//expand to two cycles long almost=16 ns
-//if the Clk_SYS period less than 16 ns ,this signal need to expand to 3 or 
more clock cycles       
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Packet_number_add   <=0;
-    else if (Packet_number_add_tmp_dl1||Packet_number_add_tmp_dl2)
-        Packet_number_add   <=1;
-    else 
-        Packet_number_add   <=0;
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-//******************************************************************************
-//domain Clk_SYS,read data from dprom.b-port for read
-//******************************************************************************
-
-
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        Current_state_SYS   <=SYS_idle;
-    else 
-        Current_state_SYS   <=Next_state_SYS;
-        
-always @ (Current_state_SYS or Rx_mac_rd or Rx_mac_ra or Dout or Empty)
-    case (Current_state_SYS)
-        SYS_idle:
-                       if (Rx_mac_rd&&Rx_mac_ra&&!Empty)
-                Next_state_SYS  =SYS_read;
-                   else if(Rx_mac_rd&&Rx_mac_ra&&Empty)
-                       Next_state_SYS  =FF_emtpy_err;
-            else
-                Next_state_SYS  =Current_state_SYS;
-        SYS_read:
-            if (!Rx_mac_rd)
-                Next_state_SYS  =SYS_pause;
-            else if (Dout[35])                
-                Next_state_SYS  =SYS_wait_end;
-            else if (Empty)
-                Next_state_SYS  =FF_emtpy_err;
-            else
-                Next_state_SYS  =Current_state_SYS;
-        SYS_pause:
-            if (Rx_mac_rd)                            
-                Next_state_SYS  =SYS_read;         
-            else                                   
-                Next_state_SYS  =Current_state_SYS;
-        FF_emtpy_err:
-            if (!Empty)
-                Next_state_SYS  =SYS_read;
-            else
-                Next_state_SYS  =Current_state_SYS;
-        SYS_wait_end:
-            if (!Rx_mac_rd)
-                Next_state_SYS  =SYS_idle;
-            else
-                Next_state_SYS  =Current_state_SYS;
-        default:
-                Next_state_SYS  =SYS_idle;
-    endcase
-    
-        
-//gen Rx_mac_ra 
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        begin
-        Packet_number_add_dl1   <=0;
-        Packet_number_add_dl2   <=0;
-        end
-    else 
-        begin
-        Packet_number_add_dl1   <=Packet_number_add;
-        Packet_number_add_dl2   <=Packet_number_add_dl1;
-        end
-assign  Packet_number_add_edge=Packet_number_add_dl1&!Packet_number_add_dl2;
-
-always @ (Current_state_SYS or Next_state_SYS)
-    if (Current_state_SYS==SYS_read&&Next_state_SYS==SYS_wait_end)
-        Packet_number_sub       =1;
-    else
-        Packet_number_sub       =0;
-        
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        Packet_number_inFF      <=0;
-    else if (Packet_number_add_edge&&!Packet_number_sub)
-        Packet_number_inFF      <=Packet_number_inFF + 1;
-       else if 
(!Packet_number_add_edge&&Packet_number_sub&&Packet_number_inFF!=0)
-        Packet_number_inFF      <=Packet_number_inFF - 1;
-
-always @ (posedge Clk_SYS or posedge Reset)                                    
                     
-    if (Reset)                                                                 
                     
-        Fifo_data_count     <=0;                                               
                     
-    else                                                                       
                     
-        Fifo_data_count     
<=Add_wr_ungray[`MAC_RX_FF_DEPTH-1:`MAC_RX_FF_DEPTH-5]-Add_rd[`MAC_RX_FF_DEPTH-1:`MAC_RX_FF_DEPTH-5];
 
-
-always @ (posedge Clk_SYS or posedge Reset)                                    
                     
-    if (Reset) 
-        begin
-        Rx_Hwmark_pl        <=0;
-        Rx_Lwmark_pl        <=0;
-        end
-    else
-        begin
-        Rx_Hwmark_pl        <=Rx_Hwmark;
-        Rx_Lwmark_pl        <=Rx_Lwmark;
-        end   
-        
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)  
-        Rx_mac_ra   <=0;
-    else if (Packet_number_inFF==0&&Fifo_data_count<=Rx_Lwmark_pl)
-        Rx_mac_ra   <=0;
-    else if (Packet_number_inFF>=1||Fifo_data_count>=Rx_Hwmark_pl)
-        Rx_mac_ra   <=1;
-
-        
-//control Add_rd signal;
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        Add_rd      <=0;
-    else if (Current_state_SYS==SYS_read&&!Dout[35])  
-        Add_rd      <=Add_rd + 1;
-
-//
-always @ (posedge Reset or posedge Clk_SYS)
-    if (Reset)
-        Add_rd_gray         <=0;
-    else 
-               begin
-               Add_rd_gray[`MAC_RX_FF_DEPTH-1] <=Add_rd[`MAC_RX_FF_DEPTH-1];
-               for (i=`MAC_RX_FF_DEPTH-2;i>=0;i=i-1)
-               Add_rd_gray[i]                  <=Add_rd[i+1]^Add_rd[i];
-               end
-//
-
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        Add_wr_gray_dl1     <=0;
-    else
-        Add_wr_gray_dl1     <=Add_wr_gray;
-            
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        Add_wr_jump_rd_pl1  <=0;
-    else        
-        Add_wr_jump_rd_pl1  <=Add_wr_jump;     
-            
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        Add_wr_ungray       =0;
-    else if (!Add_wr_jump_rd_pl1)       
-               begin
-               Add_wr_ungray[`MAC_RX_FF_DEPTH-1]       
=Add_wr_gray_dl1[`MAC_RX_FF_DEPTH-1];   
-               for (i=`MAC_RX_FF_DEPTH-2;i>=0;i=i-1)
-                       Add_wr_ungray[i]        
=Add_wr_ungray[i+1]^Add_wr_gray_dl1[i]; 
-               end                    
-//empty signal gen  
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)      
-        Empty   <=1;
-    else if (Add_rd==Add_wr_ungray)
-        Empty   <=1;
-    else
-        Empty   <=0;
-
-
-
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        Dout_dl1    <=0;
-    else
-        Dout_dl1    <=Dout; 
-
-assign  Rx_mac_data     =Dout_dl1[31:0];
-assign  Rx_mac_BE       =Dout_dl1[33:32];
-assign  Rx_mac_eop      =Dout_dl1[35];
-
-//aligned to Addr_rd 
-always @ (posedge Clk_SYS or posedge Reset) 
-    if (Reset)
-        Rx_mac_pa_tmp   <=0;    
-    else if (Current_state_SYS==SYS_read&&!Dout[35])         
-        Rx_mac_pa_tmp   <=1;
-    else
-        Rx_mac_pa_tmp   <=0;
-
-
-
-always @ (posedge Clk_SYS or posedge Reset) 
-    if (Reset)
-        Rx_mac_pa   <=0;
-    else 
-        Rx_mac_pa   <=Rx_mac_pa_tmp;
-    
-
-    
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        Rx_mac_sop_tmp      <=0;
-    else if (Current_state_SYS==SYS_idle&&Next_state_SYS==SYS_read)
-        Rx_mac_sop_tmp      <=1;
-    else
-        Rx_mac_sop_tmp      <=0;
-        
-
-        
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        begin
-        Rx_mac_sop_tmp_dl1  <=0;
-        Rx_mac_sop          <=0;
-        end
-    else 
-        begin
-        Rx_mac_sop_tmp_dl1  <=Rx_mac_sop_tmp;
-        Rx_mac_sop          <=Rx_mac_sop_tmp_dl1;
-        end
-
-
-
-//******************************************************************************
-
-duram #(36,`MAC_RX_FF_DEPTH,"M4K") U_duram(          
-.data_a         (Din        ), 
-.wren_a         (Wr_en      ), 
-.address_a      (Add_wr     ), 
-.address_b      (Add_rd     ), 
-.clock_a        (Clk_MAC    ), 
-.clock_b        (Clk_SYS    ), 
-.q_b            (Dout       ));
-
-endmodule
-
-
-
-
-
+   always @ (posedge Reset or posedge Clk_MAC)
+     if (Reset)
+       Add_wr_gray         <=0;
+     else 
+       begin
+         Add_wr_gray[MAC_RX_FF_DEPTH-1]        <=Add_wr[MAC_RX_FF_DEPTH-1];
+         for (i=MAC_RX_FF_DEPTH-2;i>=0;i=i-1)
+           Add_wr_gray[i]                      <=Add_wr[i+1]^Add_wr[i];
+       end
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Add_rd_gray_dl1         <=0;
+     else
+       Add_rd_gray_dl1         <=Add_rd_gray;
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Add_rd_ungray       =0;
+     else        
+       begin
+         Add_rd_ungray[MAC_RX_FF_DEPTH-1]      
=Add_rd_gray_dl1[MAC_RX_FF_DEPTH-1];    
+         for (i=MAC_RX_FF_DEPTH-2;i>=0;i=i-1)
+           Add_rd_ungray[i]    =Add_rd_ungray[i+1]^Add_rd_gray_dl1[i]; 
+       end        
+   assign          Add_wr_pluse=Add_wr+1;
+   assign         Add_wr_pluse4=Add_wr+4;
+   assign         Add_wr_pluse3=Add_wr+3;
+   assign         Add_wr_pluse2=Add_wr+2;
+   
+   
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Full    <=0;
+     else if (Add_wr_pluse==Add_rd_ungray)
+       Full    <=1;
+     else
+       Full    <=0;
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Almost_full     <=0;
+     else if (Add_wr_pluse4==Add_rd_ungray||
+             Add_wr_pluse3==Add_rd_ungray||
+             Add_wr_pluse2==Add_rd_ungray||
+             Add_wr_pluse==Add_rd_ungray
+             )
+       Almost_full     <=1;
+     else
+       Almost_full     <=0;            
+   
+   assign         Fifo_full =Almost_full;
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Add_wr  <=0;
+     else if (Current_state==State_err_end)
+       Add_wr  <=Add_wr_reg;
+     else if (Wr_en&&!Full)
+       Add_wr  <=Add_wr +1;
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Add_wr_jump_tmp <=0;
+     else if (Current_state==State_err_end)
+       Add_wr_jump_tmp <=1;
+     else
+       Add_wr_jump_tmp <=0;
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Add_wr_jump_tmp_pl1 <=0;
+     else
+       Add_wr_jump_tmp_pl1 <=Add_wr_jump_tmp;   
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Add_wr_jump <=0;
+     else if (Current_state==State_err_end)
+       Add_wr_jump <=1;
+     else if (Add_wr_jump_tmp_pl1)
+       Add_wr_jump <=0;                        
+   
+   //
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Fifo_data_en_dl1    <=0;
+     else 
+       Fifo_data_en_dl1    <=Fifo_data_en;
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Fifo_data_dl1   <=0;
+     else 
+       Fifo_data_dl1   <=Fifo_data;
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Fifo_data_byte3     <=0;
+     else if (Current_state==State_byte3&&Fifo_data_en_dl1)
+       Fifo_data_byte3     <=Fifo_data_dl1;
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Fifo_data_byte2     <=0;
+     else if (Current_state==State_byte2&&Fifo_data_en_dl1)
+       Fifo_data_byte2     <=Fifo_data_dl1;
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Fifo_data_byte1     <=0;
+     else if (Current_state==State_byte1&&Fifo_data_en_dl1)
+       Fifo_data_byte1     <=Fifo_data_dl1;
+   
+   always @ (* )
+     case (Current_state)
+       State_be0:
+         Din_tmp 
={4'b1000,Fifo_data_byte3,Fifo_data_byte2,Fifo_data_byte1,Fifo_data_dl1};       
+       State_be1:
+         Din_tmp ={4'b1001,Fifo_data_byte3,24'h0};
+       State_be2:
+         Din_tmp ={4'b1010,Fifo_data_byte3,Fifo_data_byte2,16'h0};
+       State_be3:
+         Din_tmp 
={4'b1011,Fifo_data_byte3,Fifo_data_byte2,Fifo_data_byte1,8'h0};
+       default:
+         Din_tmp 
={4'b0000,Fifo_data_byte3,Fifo_data_byte2,Fifo_data_byte1,Fifo_data_dl1};
+     endcase
+   
+   always @ (*)
+     if (Current_state==State_be0||Current_state==State_be1||
+        Current_state==State_be2||Current_state==State_be3||
+        (Current_state==State_byte0&&Fifo_data_en))
+       Wr_en_tmp   =1;
+     else 
+       Wr_en_tmp   =0; 
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Din_tmp_reg <=0;
+     else if(Wr_en_tmp)
+       Din_tmp_reg <=Din_tmp;  
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Wr_en_ptr   <=0;
+     else if(Current_state==State_idle)
+       Wr_en_ptr   <=0;    
+     else if(Wr_en_tmp)
+       Wr_en_ptr   <=1;
+   
+   //if not append FCS,delay one cycle write data and Wr_en signal to drop FCS
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       begin
+          Wr_en           <=0;
+          Din             <=0;
+       end
+     else if(RX_APPEND_CRC)
+       begin
+          Wr_en           <=Wr_en_tmp;
+          Din             <=Din_tmp;
+       end         
+     else
+       begin
+          Wr_en           <=Wr_en_tmp&&Wr_en_ptr;
+          Din             <={Din_tmp[35:32],Din_tmp_reg[31:0]};
+       end                                 
+   
+   //this signal for read side to handle the packet number in fifo
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Packet_number_add_tmp   <=0;
+     else if (Current_state==State_be0||Current_state==State_be1||
+              Current_state==State_be2||Current_state==State_be3)
+       Packet_number_add_tmp   <=1;
+     else 
+       Packet_number_add_tmp   <=0;
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       begin
+          Packet_number_add_tmp_dl1   <=0;
+          Packet_number_add_tmp_dl2   <=0;
+       end
+     else
+       begin
+          Packet_number_add_tmp_dl1   <=Packet_number_add_tmp;
+          Packet_number_add_tmp_dl2   <=Packet_number_add_tmp_dl1;
+       end     
+   
+   //Packet_number_add delay to Din[35] is needed to make sure the data have 
been wroten to ram.       
+   //expand to two cycles long almost=16 ns
+   //if the Clk_SYS period less than 16 ns ,this signal need to expand to 3 or 
more clock cycles       
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Packet_number_add   <=0;
+     else if (Packet_number_add_tmp_dl1||Packet_number_add_tmp_dl2)
+       Packet_number_add   <=1;
+     else 
+       Packet_number_add   <=0;
+  
+   // 
******************************************************************************
+   // domain Clk_SYS,read data from dprom.b-port for read
+   // 
******************************************************************************
+   
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       Current_state_SYS   <=SYS_idle;
+     else 
+       Current_state_SYS   <=Next_state_SYS;
+   
+   always @ (Current_state_SYS or Rx_mac_rd or Rx_mac_ra or Dout or Empty)
+     case (Current_state_SYS)
+       SYS_idle:
+        if (Rx_mac_rd&&Rx_mac_ra&&!Empty)
+           Next_state_SYS  =SYS_read;
+        else if(Rx_mac_rd&&Rx_mac_ra&&Empty)
+          Next_state_SYS       =FF_emtpy_err;
+         else
+           Next_state_SYS  =Current_state_SYS;
+       SYS_read:
+         if (!Rx_mac_rd)
+           Next_state_SYS  =SYS_pause;
+         else if (Dout[35])                
+           Next_state_SYS  =SYS_wait_end;
+         else if (Empty)
+           Next_state_SYS  =FF_emtpy_err;
+         else
+           Next_state_SYS  =Current_state_SYS;
+       SYS_pause:
+         if (Rx_mac_rd)                            
+           Next_state_SYS  =SYS_read;         
+         else                                   
+           Next_state_SYS  =Current_state_SYS;
+       FF_emtpy_err:
+         if (!Empty)
+           Next_state_SYS  =SYS_read;
+         else
+           Next_state_SYS  =Current_state_SYS;
+       SYS_wait_end:
+         if (!Rx_mac_rd)
+           Next_state_SYS  =SYS_idle;
+         else
+           Next_state_SYS  =Current_state_SYS;
+       default:
+         Next_state_SYS  =SYS_idle;
+     endcase // case(Current_state_SYS)
+   
+   //gen Rx_mac_ra 
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       begin
+          Packet_number_add_dl1   <=0;
+          Packet_number_add_dl2   <=0;
+       end
+     else 
+       begin
+          Packet_number_add_dl1   <=Packet_number_add;
+          Packet_number_add_dl2   <=Packet_number_add_dl1;
+       end
+   assign  Packet_number_add_edge=Packet_number_add_dl1&!Packet_number_add_dl2;
+   
+   always @ (Current_state_SYS or Next_state_SYS)
+     if (Current_state_SYS==SYS_read&&Next_state_SYS==SYS_wait_end)
+       Packet_number_sub       =1;
+     else
+       Packet_number_sub       =0;
+   
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       Packet_number_inFF      <=0;
+     else if (Packet_number_add_edge&&!Packet_number_sub)
+       Packet_number_inFF      <=Packet_number_inFF + 1;
+     else if 
(!Packet_number_add_edge&&Packet_number_sub&&Packet_number_inFF!=0)
+       Packet_number_inFF      <=Packet_number_inFF - 1;
+   
+   always @ (posedge Clk_SYS or posedge Reset)                                 
                        
+     if (Reset)                                                                
                      
+       Fifo_data_count     <=0;                                                
                    
+     else                                                                      
                      
+       Fifo_data_count     
<=Add_wr_ungray[MAC_RX_FF_DEPTH-1:MAC_RX_FF_DEPTH-5]-Add_rd[MAC_RX_FF_DEPTH-1:MAC_RX_FF_DEPTH-5];
 
+   
+   always @ (posedge Clk_SYS or posedge Reset)                                 
                        
+     if (Reset) 
+       begin
+          Rx_Hwmark_pl        <=0;
+          Rx_Lwmark_pl        <=0;
+       end
+     else
+       begin
+          Rx_Hwmark_pl        <=Rx_Hwmark;
+          Rx_Lwmark_pl        <=Rx_Lwmark;
+       end   
+   
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)  
+       Rx_mac_ra   <=0;
+     else if (Packet_number_inFF==0&&Fifo_data_count<=Rx_Lwmark_pl)
+       Rx_mac_ra   <=0;
+     else if (Packet_number_inFF>=1||Fifo_data_count>=Rx_Hwmark_pl)
+       Rx_mac_ra   <=1;
+   
+   
+   //control Add_rd signal;
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       Add_rd      <=0;
+     else if (Current_state_SYS==SYS_read&&!Dout[35])  
+       Add_rd      <=Add_rd + 1;
+   
+   //
+   always @ (posedge Reset or posedge Clk_SYS)
+     if (Reset)
+       Add_rd_gray         <=0;
+     else 
+       begin
+         Add_rd_gray[MAC_RX_FF_DEPTH-1]        <=Add_rd[MAC_RX_FF_DEPTH-1];
+         for (i=MAC_RX_FF_DEPTH-2;i>=0;i=i-1)
+           Add_rd_gray[i]                      <=Add_rd[i+1]^Add_rd[i];
+       end
+   //
+   
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       Add_wr_gray_dl1     <=0;
+     else
+       Add_wr_gray_dl1     <=Add_wr_gray;
+   
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       Add_wr_jump_rd_pl1  <=0;
+     else        
+       Add_wr_jump_rd_pl1  <=Add_wr_jump;      
+   
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       Add_wr_ungray       =0;
+     else if (!Add_wr_jump_rd_pl1)       
+       begin
+         Add_wr_ungray[MAC_RX_FF_DEPTH-1]      
=Add_wr_gray_dl1[MAC_RX_FF_DEPTH-1];    
+         for (i=MAC_RX_FF_DEPTH-2;i>=0;i=i-1)
+           Add_wr_ungray[i]    =Add_wr_ungray[i+1]^Add_wr_gray_dl1[i]; 
+       end                    
+   //empty signal gen  
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)      
+       Empty   <=1;
+     else if (Add_rd==Add_wr_ungray)
+       Empty   <=1;
+     else
+       Empty   <=0;
+      
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       Dout_dl1    <=0;
+     else
+       Dout_dl1    <=Dout; 
+   
+   assign  Rx_mac_data     =Dout_dl1[31:0];
+   assign  Rx_mac_BE       =Dout_dl1[33:32];
+   assign  Rx_mac_eop      =Dout_dl1[35];
+   
+   //aligned to Addr_rd 
+   always @ (posedge Clk_SYS or posedge Reset) 
+     if (Reset)
+       Rx_mac_pa_tmp   <=0;    
+     else if (Current_state_SYS==SYS_read&&!Dout[35])         
+       Rx_mac_pa_tmp   <=1;
+     else
+       Rx_mac_pa_tmp   <=0;
+   
+   always @ (posedge Clk_SYS or posedge Reset) 
+     if (Reset)
+       Rx_mac_pa   <=0;
+     else 
+       Rx_mac_pa   <=Rx_mac_pa_tmp;
+      
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       Rx_mac_sop_tmp      <=0;
+     else if (Current_state_SYS==SYS_idle&&Next_state_SYS==SYS_read)
+       Rx_mac_sop_tmp      <=1;
+     else
+       Rx_mac_sop_tmp      <=0;
+      
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       begin
+          Rx_mac_sop_tmp_dl1  <=0;
+          Rx_mac_sop          <=0;
+       end
+     else 
+       begin
+          Rx_mac_sop_tmp_dl1  <=Rx_mac_sop_tmp;
+          Rx_mac_sop          <=Rx_mac_sop_tmp_dl1;
+       end
+   
+   
//******************************************************************************
+   
+   duram #(36,MAC_RX_FF_DEPTH)
+     U_duram(.data_a         (Din        ), 
+            .wren_a         (Wr_en      ), 
+            .address_a      (Add_wr     ), 
+            .address_b      (Add_rd     ), 
+            .clock_a        (Clk_MAC    ), 
+            .clock_b        (Clk_SYS    ), 
+            .q_b            (Dout       ));
+   
+endmodule // MAC_rx_FF

Modified: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx.v
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx.v
      2007-05-08 18:19:08 UTC (rev 5257)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx.v
      2007-05-09 03:32:54 UTC (rev 5258)
@@ -156,30 +156,30 @@
 .RX_MIN_LENGTH               (RX_MIN_LENGTH             )                      
     
 );
 
-MAC_rx_FF  U_MAC_rx_FF (
-.Reset                       (Reset                     ),
-.Clk_MAC                     (Clk                       ), 
-.Clk_SYS                     (Clk_user                  ), 
- //MAC_rx_ctrl interface     (//MAC_rx_ctrl interface   ),
-.Fifo_data                   (Fifo_data                 ),
-.Fifo_data_en                (Fifo_data_en              ),
-.Fifo_full                   (Fifo_full                 ),
-.Fifo_data_err               (Fifo_data_err             ),
-.Fifo_data_end               (Fifo_data_end             ),
- //CPU                       (//CPU                     ),
-.Rx_Hwmark                   (Rx_Hwmark                 ),
-.Rx_Lwmark                   (Rx_Lwmark                 ),
-.RX_APPEND_CRC               (RX_APPEND_CRC             ),
- //user interface            (//user interface          ),
-.Rx_mac_ra                   (Rx_mac_ra                 ),
-.Rx_mac_rd                   (Rx_mac_rd                 ),
-.Rx_mac_data                 (Rx_mac_data               ), 
-.Rx_mac_BE                   (Rx_mac_BE                 ),
-.Rx_mac_sop                  (Rx_mac_sop                ), 
-.Rx_mac_pa                   (Rx_mac_pa                 ),
-.Rx_mac_eop                  (Rx_mac_eop                ) 
-); 
-
+MAC_rx_FF #(.MAC_RX_FF_DEPTH(9))
+  U_MAC_rx_FF (.Reset                       (Reset                     ),
+              .Clk_MAC                     (Clk                       ), 
+              .Clk_SYS                     (Clk_user                  ), 
+              //MAC_rx_ctrl interface     (//MAC_rx_ctrl interface   ),
+              .Fifo_data                   (Fifo_data                 ),
+              .Fifo_data_en                (Fifo_data_en              ),
+              .Fifo_full                   (Fifo_full                 ),
+              .Fifo_data_err               (Fifo_data_err             ),
+              .Fifo_data_end               (Fifo_data_end             ),
+              //CPU                       (//CPU                     ),
+              .Rx_Hwmark                   (Rx_Hwmark                 ),
+              .Rx_Lwmark                   (Rx_Lwmark                 ),
+              .RX_APPEND_CRC               (RX_APPEND_CRC             ),
+              //user interface            (//user interface          ),
+              .Rx_mac_ra                   (Rx_mac_ra                 ),
+              .Rx_mac_rd                   (Rx_mac_rd                 ),
+              .Rx_mac_data                 (Rx_mac_data               ), 
+              .Rx_mac_BE                   (Rx_mac_BE                 ),
+              .Rx_mac_sop                  (Rx_mac_sop                ), 
+              .Rx_mac_pa                   (Rx_mac_pa                 ),
+              .Rx_mac_eop                  (Rx_mac_eop                ) 
+              );
+   
 `ifdef MAC_BROADCAST_FILTER_EN
 Broadcast_filter U_Broadcast_filter(
 .Reset                      (Reset                      ),
@@ -227,4 +227,4 @@
 
 
 
-endmodule
\ No newline at end of file
+endmodule

Modified: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_top.v
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_top.v
     2007-05-08 18:19:08 UTC (rev 5257)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_top.v
     2007-05-09 03:32:54 UTC (rev 5258)
@@ -346,7 +346,7 @@
 .RStatStart                 (RStatStart                 ),  
 .UpdateMIIRX_DATAReg        (UpdateMIIRX_DATAReg        )); 
 
-Reg_int U_Reg_int(
+reg_int U_reg_int(
 .Reset                         (Reset                          ),    
 .Clk_reg                       (Clk_reg                        ), 
 .CSB                        (CSB                        ),

Modified: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CVS/Entries
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CVS/Entries
    2007-05-08 18:19:08 UTC (rev 5257)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CVS/Entries
    2007-05-09 03:32:54 UTC (rev 5258)
@@ -1,7 +1,7 @@
 /CRC_gen.v/1.3/Thu Jan 19 14:07:54 2006//
-/MAC_tx_Ctrl.v/1.4/Sun Jun 25 04:58:56 2006//
-/MAC_tx_FF.v/1.5/Sun Jun 25 04:58:56 2006//
 /MAC_tx_addr_add.v/1.3/Thu Jan 19 14:07:54 2006//
-/Ramdon_gen.v/1.3/Thu Jan 19 14:07:54 2006//
 /flow_ctrl.v/1.3/Thu Jan 19 14:07:54 2006//
+/MAC_tx_FF.v/1.5/Tue May  1 07:35:17 2007//
+/MAC_tx_Ctrl.v/1.4/Wed May  2 06:49:15 2007//
+/Ramdon_gen.v/1.3/Wed May  2 06:49:15 2007//
 D

Deleted: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_Ctrl.v

Modified: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_FF.v
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_FF.v
    2007-05-08 18:19:08 UTC (rev 5257)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_FF.v
    2007-05-09 03:32:54 UTC (rev 5258)
@@ -59,735 +59,687 @@
 // no message
 //                                           
 
-module MAC_tx_FF ( 
-Reset               ,      
-Clk_MAC             ,            
-Clk_SYS             ,            
-//MAC_rx_ctrl interface    
-Fifo_data           ,
-Fifo_rd             ,
-Fifo_rd_finish      ,
-Fifo_rd_retry       ,
-Fifo_eop            ,
-Fifo_da             ,
-Fifo_ra             ,
-Fifo_data_err_empty ,
-Fifo_data_err_full  ,
-//user interface          
-Tx_mac_wa           ,
-Tx_mac_wr           ,
-Tx_mac_data         ,
-Tx_mac_BE           ,
-Tx_mac_sop          ,
-Tx_mac_eop          ,
-//host interface   
-FullDuplex          ,
-Tx_Hwmark           ,         
-Tx_Lwmark           
+module MAC_tx_FF 
+  #(parameter MAC_TX_FF_DEPTH = 9)
+    (Reset               ,      
+     Clk_MAC             ,            
+     Clk_SYS             ,            
+     //MAC_rx_ctrl interface    
+     Fifo_data           ,
+     Fifo_rd             ,
+     Fifo_rd_finish      ,
+     Fifo_rd_retry       ,
+     Fifo_eop            ,
+     Fifo_da             ,
+     Fifo_ra             ,
+     Fifo_data_err_empty ,
+     Fifo_data_err_full  ,
+     //user interface          
+     Tx_mac_wa           ,
+     Tx_mac_wr           ,
+     Tx_mac_data         ,
+     Tx_mac_BE           ,
+     Tx_mac_sop          ,
+     Tx_mac_eop          ,
+     //host interface   
+     FullDuplex          ,
+     Tx_Hwmark           ,         
+     Tx_Lwmark);
+   
+   input           Reset               ;
+   input           Clk_MAC             ;
+   input           Clk_SYS             ;
+   //MAC_tx_ctrl
+   output [7:0]    Fifo_data           ;
+   input           Fifo_rd             ;
+   input           Fifo_rd_finish      ;
+   input           Fifo_rd_retry       ;
+   output          Fifo_eop            ;
+   output          Fifo_da             ;
+   output          Fifo_ra             ;
+   output          Fifo_data_err_empty ;
+   output          Fifo_data_err_full  ;
+   //user interface 
+   output          Tx_mac_wa           ;
+   input           Tx_mac_wr           ;
+   input [31:0]    Tx_mac_data         ;
+   input [1:0]            Tx_mac_BE           ;//big endian
+   input           Tx_mac_sop          ;
+   input           Tx_mac_eop          ;
+   //host interface 
+   input           FullDuplex          ;
+   input [4:0]            Tx_Hwmark           ;
+   input [4:0]            Tx_Lwmark           ;
+   // 
******************************************************************************
+   //internal signals                                                          
    
+   // 
******************************************************************************
+   parameter       MAC_byte3               =4'd00;     
+   parameter       MAC_byte2               =4'd01;
+   parameter       MAC_byte1               =4'd02; 
+   parameter       MAC_byte0               =4'd03; 
+   parameter       MAC_wait_finish         =4'd04;
+   parameter       MAC_retry               =4'd08;
+   parameter       MAC_idle                =4'd09;
+   parameter       MAC_FFEmpty             =4'd10;
+   parameter       MAC_FFEmpty_drop        =4'd11;
+   parameter       MAC_pkt_sub             =4'd12;
+   parameter       MAC_FF_Err              =4'd13;
+   
+   reg [3:0]      Current_state_MAC           /* synthesis syn_preserve =1 */ 
;   
+   reg [3:0]      Current_state_MAC_reg       /* synthesis syn_preserve =1 */ 
;     
+   reg [3:0]      Next_state_MAC              ;
+   
+   parameter       SYS_idle                =4'd0;
+   parameter       SYS_WaitSop             =4'd1;
+   parameter       SYS_SOP                 =4'd2;
+   parameter       SYS_MOP                 =4'd3;
+   parameter       SYS_DROP                =4'd4;
+   parameter       SYS_EOP_ok              =4'd5;  
+   parameter       SYS_FFEmpty             =4'd6;         
+   parameter       SYS_EOP_err             =4'd7;
+   parameter       SYS_SOP_err             =4'd8;
+   
+   reg [3:0]      Current_state_SYS   /* synthesis syn_preserve =1 */;
+   reg [3:0]      Next_state_SYS;
+   
+   reg [MAC_TX_FF_DEPTH-1:0] Add_wr          ;
+   reg [MAC_TX_FF_DEPTH-1:0] Add_wr_ungray   ;
+   reg [MAC_TX_FF_DEPTH-1:0] Add_wr_gray     ;
+   reg [MAC_TX_FF_DEPTH-1:0] Add_wr_gray_dl1 ;
+   wire [MAC_TX_FF_DEPTH-1:0] Add_wr_gray_tmp ;
+   
+   reg [MAC_TX_FF_DEPTH-1:0]  Add_rd          ;
+   reg [MAC_TX_FF_DEPTH-1:0]  Add_rd_reg      ;
+   reg [MAC_TX_FF_DEPTH-1:0]  Add_rd_gray     ;
+   reg [MAC_TX_FF_DEPTH-1:0]  Add_rd_gray_dl1 ;
+   wire [MAC_TX_FF_DEPTH-1:0] Add_rd_gray_tmp ;
+   reg [MAC_TX_FF_DEPTH-1:0]  Add_rd_ungray   ;
+   wire [35:0]                       Din             ;
+   wire [35:0]                       Dout            ;
+   reg                               Wr_en           ;
+   wire [MAC_TX_FF_DEPTH-1:0] Add_wr_pluse    ;
+   wire [MAC_TX_FF_DEPTH-1:0] Add_wr_pluse_pluse;
+   wire [MAC_TX_FF_DEPTH-1:0] Add_rd_pluse    ;
+   reg [MAC_TX_FF_DEPTH-1:0]  Add_rd_reg_dl1  ;
+   reg                               Full            /* synthesis syn_keep=1 
*/;
+   reg                               AlmostFull      /* synthesis syn_keep=1 
*/;
+   reg                               Empty           /* synthesis syn_keep=1 
*/;
+   
+   reg                               Tx_mac_wa           ;
+   reg                               Tx_mac_wr_dl1           ;
+   reg [31:0]                Tx_mac_data_dl1         ;
+   reg [1:0]                 Tx_mac_BE_dl1           ;
+   reg                               Tx_mac_sop_dl1          ;
+   reg                               Tx_mac_eop_dl1          ;
+   reg                               FF_FullErr              ;
+   wire [1:0]                Dout_BE                 ;
+   wire                      Dout_eop                ;
+   wire                      Dout_err                ;
+   wire [31:0]                       Dout_data               ;     
+   reg [35:0]                Dout_reg                /* synthesis 
syn_preserve=1 */;
+   reg                               Packet_number_sub_dl1   ;
+   reg                               Packet_number_sub_dl2   ;
+   reg                               Packet_number_sub_edge  /* synthesis 
syn_preserve=1 */;
+   reg                               Packet_number_add       /* synthesis 
syn_preserve=1 */;
+   reg [4:0]                 Fifo_data_count         ;
+   reg                               Fifo_ra                 /* synthesis 
syn_keep=1 */;
+   reg [7:0]                 Fifo_data               ;
+   reg                               Fifo_da                 ;
+   reg                               Fifo_data_err_empty     /* synthesis 
syn_preserve=1 */;
+   reg                               Fifo_eop                ;
+   reg                               Fifo_rd_dl1             ;
+   reg                               Fifo_ra_tmp             ;      
+   reg [5:0]                 Packet_number_inFF      /* synthesis syn_keep=1 
*/;   
+   reg [5:0]                 Packet_number_inFF_reg  /* synthesis 
syn_preserve=1 */;
+   reg                               Pkt_sub_apply_tmp       ;
+   reg                               Pkt_sub_apply           ;
+   reg                               Add_rd_reg_rdy_tmp      ;
+   reg                               Add_rd_reg_rdy          ;   
+   reg                               Add_rd_reg_rdy_dl1      ;   
+   reg                               Add_rd_reg_rdy_dl2      ;
+   reg [4:0]                 Tx_Hwmark_pl            ;
+   reg [4:0]                 Tx_Lwmark_pl            ;
+   reg                               Add_rd_jump_tmp         ;
+   reg                               Add_rd_jump_tmp_pl1     ;
+   reg                               Add_rd_jump             ;
+   reg                               Add_rd_jump_wr_pl1      ;
+   
+   integer                   i                       ;
 
-);
-input           Reset               ;
-input           Clk_MAC             ;
-input           Clk_SYS             ;
-                //MAC_tx_ctrl
-output  [7:0]   Fifo_data           ;
-input           Fifo_rd             ;
-input           Fifo_rd_finish      ;
-input           Fifo_rd_retry       ;
-output          Fifo_eop            ;
-output          Fifo_da             ;
-output          Fifo_ra             ;
-output          Fifo_data_err_empty ;
-output          Fifo_data_err_full  ;
-                //user interface 
-output          Tx_mac_wa           ;
-input           Tx_mac_wr           ;
-input   [31:0]  Tx_mac_data         ;
-input   [1:0]   Tx_mac_BE           ;//big endian
-input           Tx_mac_sop          ;
-input           Tx_mac_eop          ;
-                //host interface 
-input           FullDuplex          ;
-input   [4:0]   Tx_Hwmark           ;
-input   [4:0]   Tx_Lwmark           ;
-//******************************************************************************
-//internal signals                                                             
 
-//******************************************************************************
-parameter       MAC_byte3               =4'd00;     
-parameter       MAC_byte2               =4'd01;
-parameter       MAC_byte1               =4'd02; 
-parameter       MAC_byte0               =4'd03; 
-parameter       MAC_wait_finish         =4'd04;
-parameter       MAC_retry               =4'd08;
-parameter       MAC_idle                =4'd09;
-parameter       MAC_FFEmpty             =4'd10;
-parameter       MAC_FFEmpty_drop        =4'd11;
-parameter       MAC_pkt_sub             =4'd12;
-parameter       MAC_FF_Err              =4'd13;
+   // 
******************************************************************************
+   //write data to from FF .
+   //domain Clk_SYS
+   // 
******************************************************************************
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       Current_state_SYS   <=SYS_idle;
+     else
+       Current_state_SYS   <=Next_state_SYS;
+   
+   always @ (Current_state_SYS or Tx_mac_wr or Tx_mac_sop or Full or 
AlmostFull 
+             or Tx_mac_eop )
+     case (Current_state_SYS)
+       SYS_idle:
+         if (Tx_mac_wr&&Tx_mac_sop&&!Full)
+           Next_state_SYS      =SYS_SOP;
+         else
+           Next_state_SYS      =Current_state_SYS ;
+       SYS_SOP:
+         Next_state_SYS      =SYS_MOP;
+       SYS_MOP:
+         if (AlmostFull)
+           Next_state_SYS      =SYS_DROP;
+         else if (Tx_mac_wr&&Tx_mac_sop)
+           Next_state_SYS      =SYS_SOP_err;
+         else if (Tx_mac_wr&&Tx_mac_eop)
+           Next_state_SYS      =SYS_EOP_ok;
+         else
+           Next_state_SYS      =Current_state_SYS ;
+       SYS_EOP_ok:
+         if (Tx_mac_wr&&Tx_mac_sop)
+           Next_state_SYS      =SYS_SOP;
+         else
+           Next_state_SYS      =SYS_idle;
+       SYS_EOP_err:
+         if (Tx_mac_wr&&Tx_mac_sop)
+           Next_state_SYS      =SYS_SOP;
+         else
+           Next_state_SYS      =SYS_idle;
+       SYS_SOP_err:
+         Next_state_SYS      =SYS_DROP;
+       SYS_DROP: //FIFO overflow           
+         if (Tx_mac_wr&&Tx_mac_eop)
+           Next_state_SYS      =SYS_EOP_err;
+         else 
+           Next_state_SYS      =Current_state_SYS ;
+       default:
+         Next_state_SYS      =SYS_idle;
+     endcase
+   
+   //delay signals 
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       begin       
+          Tx_mac_wr_dl1           <=0;
+          Tx_mac_data_dl1         <=0;
+          Tx_mac_BE_dl1           <=0;
+          Tx_mac_sop_dl1          <=0;
+          Tx_mac_eop_dl1          <=0;
+       end  
+     else
+       begin       
+          Tx_mac_wr_dl1           <=Tx_mac_wr     ;
+          Tx_mac_data_dl1         <=Tx_mac_data   ;
+          Tx_mac_BE_dl1           <=Tx_mac_BE     ;
+          Tx_mac_sop_dl1          <=Tx_mac_sop    ;
+          Tx_mac_eop_dl1          <=Tx_mac_eop    ;
+       end 
+   
+   always @(Current_state_SYS) 
+     if (Current_state_SYS==SYS_EOP_err)
+       FF_FullErr      =1;
+     else
+       FF_FullErr      =0; 
+   
+   reg     Tx_mac_eop_gen;
+   
+   always @(Current_state_SYS) 
+     if (Current_state_SYS==SYS_EOP_err||Current_state_SYS==SYS_EOP_ok)
+       Tx_mac_eop_gen      =1;
+     else
+       Tx_mac_eop_gen      =0; 
+   
+   assign  Din={Tx_mac_eop_gen,FF_FullErr,Tx_mac_BE_dl1,Tx_mac_data_dl1};
+   
+   always @(Current_state_SYS or Tx_mac_wr_dl1)
+     if ((Current_state_SYS==SYS_SOP||Current_state_SYS==SYS_EOP_ok||
+          
Current_state_SYS==SYS_MOP||Current_state_SYS==SYS_EOP_err)&&Tx_mac_wr_dl1)
+       Wr_en   = 1;
+     else
+       Wr_en   = 0;
+   
+   
+   always @ (posedge Reset or posedge Clk_SYS)
+     if (Reset)
+       Add_wr_gray         <=0;
+     else 
+       begin
+         Add_wr_gray[MAC_TX_FF_DEPTH-1]        <=Add_wr[MAC_TX_FF_DEPTH-1];
+         for (i=MAC_TX_FF_DEPTH-2;i>=0;i=i-1)
+           Add_wr_gray[i]                      <=Add_wr[i+1]^Add_wr[i];
+       end                             
+   
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       Add_rd_gray_dl1         <=0;
+     else
+       Add_rd_gray_dl1         <=Add_rd_gray;
+   
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       Add_rd_jump_wr_pl1  <=0;
+     else        
+       Add_rd_jump_wr_pl1  <=Add_rd_jump;
+   
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       Add_rd_ungray       =0;
+     else if (!Add_rd_jump_wr_pl1)       
+       begin
+         Add_rd_ungray[MAC_TX_FF_DEPTH-1]      
=Add_rd_gray_dl1[MAC_TX_FF_DEPTH-1];    
+         for (i=MAC_TX_FF_DEPTH-2;i>=0;i=i-1)
+           Add_rd_ungray[i]        =Add_rd_ungray[i+1]^Add_rd_gray_dl1[i];     
+       end    
+   assign          Add_wr_pluse        =Add_wr+1;
+   assign          Add_wr_pluse_pluse  =Add_wr+4;
+   
+   always @ (Add_wr_pluse or Add_rd_ungray)
+     if (Add_wr_pluse==Add_rd_ungray)
+       Full    =1;
+     else
+       Full    =0;
+   
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       AlmostFull  <=0;
+     else if (Add_wr_pluse_pluse==Add_rd_ungray)
+       AlmostFull  <=1;
+     else
+       AlmostFull  <=0;
+   
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       Add_wr  <= 0;
+     else if (Wr_en&&!Full)
+       Add_wr  <= Add_wr +1;
+   
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       begin
+          Packet_number_sub_dl1   <=0;
+          Packet_number_sub_dl2   <=0;
+       end
+     else 
+       begin
+          Packet_number_sub_dl1   <=Pkt_sub_apply;
+          Packet_number_sub_dl2   <=Packet_number_sub_dl1;
+       end
+   
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       Packet_number_sub_edge  <=0;
+     else if (Packet_number_sub_dl1&!Packet_number_sub_dl2)
+       Packet_number_sub_edge  <=1;
+     else
+       Packet_number_sub_edge  <=0;
+   
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       Packet_number_add       <=0;    
+     else if (Current_state_SYS==SYS_EOP_ok||Current_state_SYS==SYS_EOP_err)
+       Packet_number_add       <=1;
+     else
+       Packet_number_add       <=0;    
+      
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       Packet_number_inFF      <=0;
+     else if (Packet_number_add&&!Packet_number_sub_edge)
+       Packet_number_inFF      <=Packet_number_inFF + 1'b1;
+     else if (!Packet_number_add&&Packet_number_sub_edge)
+       Packet_number_inFF      <=Packet_number_inFF - 1'b1;
+   
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       Packet_number_inFF_reg      <=0;
+     else
+       Packet_number_inFF_reg      <=Packet_number_inFF;
+   
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       begin
+          Add_rd_reg_rdy_dl1          <=0;
+          Add_rd_reg_rdy_dl2          <=0;
+       end
+     else
+       begin
+          Add_rd_reg_rdy_dl1          <=Add_rd_reg_rdy;
+          Add_rd_reg_rdy_dl2          <=Add_rd_reg_rdy_dl1;
+       end     
+   
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       Add_rd_reg_dl1              <=0;
+     else if (Add_rd_reg_rdy_dl1&!Add_rd_reg_rdy_dl2)
+       Add_rd_reg_dl1              <=Add_rd_reg;
+   
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       Fifo_data_count     <=0;
+     else if (FullDuplex)
+       Fifo_data_count     
<=Add_wr[MAC_TX_FF_DEPTH-1:MAC_TX_FF_DEPTH-5]-Add_rd_ungray[MAC_TX_FF_DEPTH-1:MAC_TX_FF_DEPTH-5];
+     else
+       Fifo_data_count     
<=Add_wr[MAC_TX_FF_DEPTH-1:MAC_TX_FF_DEPTH-5]-Add_rd_reg_dl1[MAC_TX_FF_DEPTH-1:MAC_TX_FF_DEPTH-5];
 //for half duplex backoff requirement
+   
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       Fifo_ra_tmp <=0;    
+     else if (Packet_number_inFF_reg>=1||Fifo_data_count>=Tx_Lwmark)
+       Fifo_ra_tmp <=1;        
+     else 
+       Fifo_ra_tmp <=0;
+   
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       begin 
+          Tx_Hwmark_pl        <=0;
+          Tx_Lwmark_pl        <=0;    
+       end
+     else
+       begin 
+          Tx_Hwmark_pl        <=Tx_Hwmark;
+          Tx_Lwmark_pl        <=Tx_Lwmark;    
+       end    
+   
+   always @ (posedge Clk_SYS or posedge Reset)
+     if (Reset)
+       Tx_mac_wa   <=0;  
+     else if (Fifo_data_count>=Tx_Hwmark_pl)
+       Tx_mac_wa   <=0;
+     else if (Fifo_data_count<Tx_Lwmark_pl)
+       Tx_mac_wa   <=1;
+   
+   // 
******************************************************************************
+   // rd data to from FF .
+   // domain Clk_MAC
+   // 
******************************************************************************
 
+   reg[35:0]   Dout_dl1;
+   reg         Dout_reg_en /* synthesis syn_keep=1 */;
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Dout_dl1    <=0;
+     else
+       Dout_dl1    <=Dout;
+   
+   always @ (Current_state_MAC or Next_state_MAC)
+     if 
((Current_state_MAC==MAC_idle||Current_state_MAC==MAC_byte0)&&Next_state_MAC==MAC_byte3)
+       Dout_reg_en     =1;
+     else
+       Dout_reg_en     =0; 
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Dout_reg        <=0;
+     else if (Dout_reg_en)
+       Dout_reg    <=Dout_dl1;     
+   
+   assign      {Dout_eop,Dout_err,Dout_BE,Dout_data}=Dout_reg;
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Current_state_MAC   <=MAC_idle;
+     else
+       Current_state_MAC   <=Next_state_MAC;       
+   
+   always @ (Current_state_MAC or Fifo_rd or Dout_BE or Dout_eop or 
Fifo_rd_retry
+             or Fifo_rd_finish or Empty or Fifo_rd or Fifo_eop)
+     case (Current_state_MAC)
+       MAC_idle:
+         if (Empty&&Fifo_rd)
+           Next_state_MAC=MAC_FF_Err;
+         else if (Fifo_rd)
+           Next_state_MAC=MAC_byte3;
+         else
+           Next_state_MAC=Current_state_MAC;
+       MAC_byte3:
+         if (Fifo_rd_retry)
+           Next_state_MAC=MAC_retry;           
+         else if (Fifo_eop)
+           Next_state_MAC=MAC_wait_finish;
+         else if (Fifo_rd&&!Fifo_eop)
+           Next_state_MAC=MAC_byte2;
+         else
+           Next_state_MAC=Current_state_MAC;
+       MAC_byte2:
+         if (Fifo_rd_retry)
+           Next_state_MAC=MAC_retry;
+         else if (Fifo_eop)
+           Next_state_MAC=MAC_wait_finish;
+         else if (Fifo_rd&&!Fifo_eop)
+           Next_state_MAC=MAC_byte1;
+         else
+           Next_state_MAC=Current_state_MAC;       
+       MAC_byte1:
+         if (Fifo_rd_retry)
+           Next_state_MAC=MAC_retry;
+         else if (Fifo_eop)
+           Next_state_MAC=MAC_wait_finish;
+         else if (Fifo_rd&&!Fifo_eop)
+           Next_state_MAC=MAC_byte0;
+         else
+           Next_state_MAC=Current_state_MAC;   
+       MAC_byte0:
+         if (Empty&&Fifo_rd&&!Fifo_eop)
+           Next_state_MAC=MAC_FFEmpty;
+         else if (Fifo_rd_retry)
+           Next_state_MAC=MAC_retry;
+         else if (Fifo_eop)
+           Next_state_MAC=MAC_wait_finish;     
+         else if (Fifo_rd&&!Fifo_eop)
+           Next_state_MAC=MAC_byte3;
+         else
+           Next_state_MAC=Current_state_MAC;   
+       MAC_retry:
+         Next_state_MAC=MAC_idle;
+       MAC_wait_finish:
+         if (Fifo_rd_finish)
+           Next_state_MAC=MAC_pkt_sub;
+         else
+           Next_state_MAC=Current_state_MAC;
+       MAC_pkt_sub:
+         Next_state_MAC=MAC_idle;
+       MAC_FFEmpty:
+         if (!Empty)
+           Next_state_MAC=MAC_byte3;
+         else
+           Next_state_MAC=Current_state_MAC;
+       MAC_FF_Err:  //stopped state-machine need change                        
 
+         Next_state_MAC=Current_state_MAC;
+       default
+         Next_state_MAC=MAC_idle;    
+     endcase
 
-reg [3:0]       Current_state_MAC           /* synthesis syn_preserve =1 */ ;  
 
-reg [3:0]       Current_state_MAC_reg       /* synthesis syn_preserve =1 */ ;  
   
-reg [3:0]       Next_state_MAC              ;
+   always @ (posedge Reset or posedge Clk_MAC)
+     if (Reset)
+       Add_rd_gray         <=0;
+     else 
+       begin
+         Add_rd_gray[MAC_TX_FF_DEPTH-1]        <=Add_rd[MAC_TX_FF_DEPTH-1];
+         for (i=MAC_TX_FF_DEPTH-2;i>=0;i=i-1)
+           Add_rd_gray[i]                      <=Add_rd[i+1]^Add_rd[i];
+       end
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Add_wr_gray_dl1     <=0;
+     else
+       Add_wr_gray_dl1     <=Add_wr_gray;
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Add_wr_ungray       =0;
+     else        
+       begin
+         Add_wr_ungray[MAC_TX_FF_DEPTH-1]      
=Add_wr_gray_dl1[MAC_TX_FF_DEPTH-1];    
+         for (i=MAC_TX_FF_DEPTH-2;i>=0;i=i-1)
+           Add_wr_ungray[i]    =Add_wr_ungray[i+1]^Add_wr_gray_dl1[i]; 
+       end                   
 
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)      
+       Empty   <=1;
+     else if (Add_rd==Add_wr_ungray)
+       Empty   <=1;
+     else
+       Empty   <=0;    
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Fifo_ra <=0;
+     else
+       Fifo_ra <=Fifo_ra_tmp;
+   
+   always @ (posedge Clk_MAC or posedge Reset)     
+     if (Reset)  
+       Pkt_sub_apply_tmp   <=0;
+     else if (Current_state_MAC==MAC_pkt_sub)
+       Pkt_sub_apply_tmp   <=1;
+     else
+       Pkt_sub_apply_tmp   <=0;
+   
+   always @ (posedge Clk_MAC or posedge Reset) 
+     if (Reset)
+       Pkt_sub_apply   <=0;
+     else if ((Current_state_MAC==MAC_pkt_sub)||Pkt_sub_apply_tmp)
+       Pkt_sub_apply   <=1;
+     else                
+       Pkt_sub_apply   <=0;
+   
+   //reg Add_rd for collison retry
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Add_rd_reg      <=0;
+     else if (Fifo_rd_finish)
+       Add_rd_reg      <=Add_rd;
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Add_rd_reg_rdy_tmp      <=0;
+     else if (Fifo_rd_finish)
+       Add_rd_reg_rdy_tmp      <=1;
+     else
+       Add_rd_reg_rdy_tmp      <=0;
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Add_rd_reg_rdy      <=0;
+     else if (Fifo_rd_finish||Add_rd_reg_rdy_tmp)
+       Add_rd_reg_rdy      <=1;
+     else
+       Add_rd_reg_rdy      <=0;         
+   
+   reg Add_rd_add /* synthesis syn_keep=1 */;
+   
+   always @ (Current_state_MAC or Next_state_MAC)
+     if 
((Current_state_MAC==MAC_idle||Current_state_MAC==MAC_byte0)&&Next_state_MAC==MAC_byte3)
+       Add_rd_add  =1;
+     else
+       Add_rd_add  =0;
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Add_rd          <=0;
+     else if (Current_state_MAC==MAC_retry)
+       Add_rd          <= Add_rd_reg;
+     else if (Add_rd_add)
+       Add_rd          <= Add_rd + 1;  
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Add_rd_jump_tmp <=0;
+     else if (Current_state_MAC==MAC_retry)
+       Add_rd_jump_tmp <=1;
+     else
+       Add_rd_jump_tmp <=0;
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Add_rd_jump_tmp_pl1 <=0;
+     else
+       Add_rd_jump_tmp_pl1 <=Add_rd_jump_tmp;   
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Add_rd_jump <=0;
+     else if (Current_state_MAC==MAC_retry)
+       Add_rd_jump <=1;
+     else if (Add_rd_jump_tmp_pl1)
+       Add_rd_jump <=0;        
+   
+   //gen Fifo_data 
+   always @ (Dout_data or Current_state_MAC)
+     case (Current_state_MAC)
+       MAC_byte3:
+         Fifo_data   =Dout_data[31:24];
+       MAC_byte2:
+         Fifo_data   =Dout_data[23:16];
+       MAC_byte1:
+         Fifo_data   =Dout_data[15:8];
+       MAC_byte0:
+         Fifo_data   =Dout_data[7:0];
+       default:
+         Fifo_data   =0;     
+     endcase
 
-parameter       SYS_idle                =4'd0;
-parameter       SYS_WaitSop             =4'd1;
-parameter       SYS_SOP                 =4'd2;
-parameter       SYS_MOP                 =4'd3;
-parameter       SYS_DROP                =4'd4;
-parameter       SYS_EOP_ok              =4'd5;  
-parameter       SYS_FFEmpty             =4'd6;         
-parameter       SYS_EOP_err             =4'd7;
-parameter       SYS_SOP_err             =4'd8;
-
-reg [3:0]       Current_state_SYS   /* synthesis syn_preserve =1 */;
-reg [3:0]       Next_state_SYS;
-
-reg [`MAC_RX_FF_DEPTH-1:0]       Add_wr          ;
-reg [`MAC_RX_FF_DEPTH-1:0]       Add_wr_ungray   ;
-reg [`MAC_RX_FF_DEPTH-1:0]       Add_wr_gray     ;
-reg [`MAC_RX_FF_DEPTH-1:0]       Add_wr_gray_dl1 ;
-wire[`MAC_RX_FF_DEPTH-1:0]       Add_wr_gray_tmp ;
-
-reg [`MAC_RX_FF_DEPTH-1:0]       Add_rd          ;
-reg [`MAC_RX_FF_DEPTH-1:0]       Add_rd_reg      ;
-reg [`MAC_RX_FF_DEPTH-1:0]       Add_rd_gray     ;
-reg [`MAC_RX_FF_DEPTH-1:0]       Add_rd_gray_dl1 ;
-wire[`MAC_RX_FF_DEPTH-1:0]       Add_rd_gray_tmp ;
-reg [`MAC_RX_FF_DEPTH-1:0]       Add_rd_ungray   ;
-wire[35:0]      Din             ;
-wire[35:0]      Dout            ;
-reg             Wr_en           ;
-wire[`MAC_RX_FF_DEPTH-1:0]       Add_wr_pluse    ;
-wire[`MAC_RX_FF_DEPTH-1:0]       Add_wr_pluse_pluse;
-wire[`MAC_RX_FF_DEPTH-1:0]       Add_rd_pluse    ;
-reg [`MAC_RX_FF_DEPTH-1:0]       Add_rd_reg_dl1  ;
-reg             Full            /* synthesis syn_keep=1 */;
-reg             AlmostFull      /* synthesis syn_keep=1 */;
-reg             Empty           /* synthesis syn_keep=1 */;
-
-reg             Tx_mac_wa           ;
-reg             Tx_mac_wr_dl1           ;
-reg [31:0]      Tx_mac_data_dl1         ;
-reg [1:0]       Tx_mac_BE_dl1           ;
-reg             Tx_mac_sop_dl1          ;
-reg             Tx_mac_eop_dl1          ;
-reg             FF_FullErr              ;
-wire[1:0]       Dout_BE                 ;
-wire            Dout_eop                ;
-wire            Dout_err                ;
-wire[31:0]      Dout_data               ;     
-reg [35:0]      Dout_reg                /* synthesis syn_preserve=1 */;
-reg             Packet_number_sub_dl1   ;
-reg             Packet_number_sub_dl2   ;
-reg             Packet_number_sub_edge  /* synthesis syn_preserve=1 */;
-reg             Packet_number_add       /* synthesis syn_preserve=1 */;
-reg [4:0]       Fifo_data_count         ;
-reg             Fifo_ra                 /* synthesis syn_keep=1 */;
-reg [7:0]       Fifo_data               ;
-reg             Fifo_da                 ;
-reg             Fifo_data_err_empty     /* synthesis syn_preserve=1 */;
-reg             Fifo_eop                ;
-reg             Fifo_rd_dl1             ;
-reg             Fifo_ra_tmp             ;      
-reg [5:0]       Packet_number_inFF      /* synthesis syn_keep=1 */;   
-reg [5:0]       Packet_number_inFF_reg  /* synthesis syn_preserve=1 */;
-reg             Pkt_sub_apply_tmp       ;
-reg             Pkt_sub_apply           ;
-reg             Add_rd_reg_rdy_tmp      ;
-reg             Add_rd_reg_rdy          ;   
-reg             Add_rd_reg_rdy_dl1      ;   
-reg             Add_rd_reg_rdy_dl2      ;
-reg [4:0]       Tx_Hwmark_pl            ;
-reg [4:0]       Tx_Lwmark_pl            ;
-reg             Add_rd_jump_tmp         ;
-reg             Add_rd_jump_tmp_pl1     ;
-reg             Add_rd_jump             ;
-reg             Add_rd_jump_wr_pl1      ;
-
-integer         i                       ;
-//******************************************************************************
-//write data to from FF .
-//domain Clk_SYS
-//******************************************************************************
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        Current_state_SYS   <=SYS_idle;
-    else
-        Current_state_SYS   <=Next_state_SYS;
-        
-always @ (Current_state_SYS or Tx_mac_wr or Tx_mac_sop or Full or AlmostFull 
-            or Tx_mac_eop )
-    case (Current_state_SYS)
-        SYS_idle:
-            if (Tx_mac_wr&&Tx_mac_sop&&!Full)
-                Next_state_SYS      =SYS_SOP;
-            else
-                Next_state_SYS      =Current_state_SYS ;
-        SYS_SOP:
-                Next_state_SYS      =SYS_MOP;
-        SYS_MOP:
-            if (AlmostFull)
-                Next_state_SYS      =SYS_DROP;
-            else if (Tx_mac_wr&&Tx_mac_sop)
-                Next_state_SYS      =SYS_SOP_err;
-            else if (Tx_mac_wr&&Tx_mac_eop)
-                Next_state_SYS      =SYS_EOP_ok;
-            else
-                Next_state_SYS      =Current_state_SYS ;
-        SYS_EOP_ok:
-            if (Tx_mac_wr&&Tx_mac_sop)
-                Next_state_SYS      =SYS_SOP;
-            else
-                Next_state_SYS      =SYS_idle;
-        SYS_EOP_err:
-            if (Tx_mac_wr&&Tx_mac_sop)
-                Next_state_SYS      =SYS_SOP;
-            else
-                Next_state_SYS      =SYS_idle;
-        SYS_SOP_err:
-                Next_state_SYS      =SYS_DROP;
-        SYS_DROP: //FIFO overflow           
-            if (Tx_mac_wr&&Tx_mac_eop)
-                Next_state_SYS      =SYS_EOP_err;
-            else 
-                Next_state_SYS      =Current_state_SYS ;
-        default:
-                Next_state_SYS      =SYS_idle;
-    endcase
-    
-//delay signals 
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        begin       
-        Tx_mac_wr_dl1           <=0;
-        Tx_mac_data_dl1         <=0;
-        Tx_mac_BE_dl1           <=0;
-        Tx_mac_sop_dl1          <=0;
-        Tx_mac_eop_dl1          <=0;
-        end  
-    else
-        begin       
-        Tx_mac_wr_dl1           <=Tx_mac_wr     ;
-        Tx_mac_data_dl1         <=Tx_mac_data   ;
-        Tx_mac_BE_dl1           <=Tx_mac_BE     ;
-        Tx_mac_sop_dl1          <=Tx_mac_sop    ;
-        Tx_mac_eop_dl1          <=Tx_mac_eop    ;
-        end 
-
-always @(Current_state_SYS) 
-    if (Current_state_SYS==SYS_EOP_err)
-        FF_FullErr      =1;
-    else
-        FF_FullErr      =0; 
-
-reg     Tx_mac_eop_gen;
-
-always @(Current_state_SYS) 
-    if (Current_state_SYS==SYS_EOP_err||Current_state_SYS==SYS_EOP_ok)
-        Tx_mac_eop_gen      =1;
-    else
-        Tx_mac_eop_gen      =0; 
-                
-assign  Din={Tx_mac_eop_gen,FF_FullErr,Tx_mac_BE_dl1,Tx_mac_data_dl1};
-
-always @(Current_state_SYS or Tx_mac_wr_dl1)
-    if ((Current_state_SYS==SYS_SOP||Current_state_SYS==SYS_EOP_ok||
-        
Current_state_SYS==SYS_MOP||Current_state_SYS==SYS_EOP_err)&&Tx_mac_wr_dl1)
-        Wr_en   = 1;
-    else
-        Wr_en   = 0;
-        
-        
-//
-        
-        
-always @ (posedge Reset or posedge Clk_SYS)
-    if (Reset)
-        Add_wr_gray         <=0;
-    else 
-               begin
-               Add_wr_gray[`MAC_RX_FF_DEPTH-1] <=Add_wr[`MAC_RX_FF_DEPTH-1];
-               for (i=`MAC_RX_FF_DEPTH-2;i>=0;i=i-1)
-               Add_wr_gray[i]                  <=Add_wr[i+1]^Add_wr[i];
-               end                             
-
-//
-
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        Add_rd_gray_dl1         <=0;
-    else
-        Add_rd_gray_dl1         <=Add_rd_gray;
-                    
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        Add_rd_jump_wr_pl1  <=0;
-    else        
-        Add_rd_jump_wr_pl1  <=Add_rd_jump;
-                    
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        Add_rd_ungray       =0;
-    else if (!Add_rd_jump_wr_pl1)       
-               begin
-               Add_rd_ungray[`MAC_RX_FF_DEPTH-1]       
=Add_rd_gray_dl1[`MAC_RX_FF_DEPTH-1];   
-               for (i=`MAC_RX_FF_DEPTH-2;i>=0;i=i-1)
-                       Add_rd_ungray[i]            
=Add_rd_ungray[i+1]^Add_rd_gray_dl1[i];     
-               end    
-assign          Add_wr_pluse        =Add_wr+1;
-assign          Add_wr_pluse_pluse  =Add_wr+4;
-
-always @ (Add_wr_pluse or Add_rd_ungray)
-    if (Add_wr_pluse==Add_rd_ungray)
-        Full    =1;
-    else
-        Full    =0;
-
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        AlmostFull  <=0;
-    else if (Add_wr_pluse_pluse==Add_rd_ungray)
-        AlmostFull  <=1;
-    else
-        AlmostFull  <=0;
-        
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        Add_wr  <= 0;
-    else if (Wr_en&&!Full)
-        Add_wr  <= Add_wr +1;
-        
-        
-//
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        begin
-        Packet_number_sub_dl1   <=0;
-        Packet_number_sub_dl2   <=0;
-        end
-    else 
-        begin
-        Packet_number_sub_dl1   <=Pkt_sub_apply;
-        Packet_number_sub_dl2   <=Packet_number_sub_dl1;
-        end
-        
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        Packet_number_sub_edge  <=0;
-    else if (Packet_number_sub_dl1&!Packet_number_sub_dl2)
-        Packet_number_sub_edge  <=1;
-    else
-        Packet_number_sub_edge  <=0;
-
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        Packet_number_add       <=0;    
-    else if (Current_state_SYS==SYS_EOP_ok||Current_state_SYS==SYS_EOP_err)
-        Packet_number_add       <=1;
-    else
-        Packet_number_add       <=0;    
-        
-
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        Packet_number_inFF      <=0;
-    else if (Packet_number_add&&!Packet_number_sub_edge)
-        Packet_number_inFF      <=Packet_number_inFF + 1'b1;
-    else if (!Packet_number_add&&Packet_number_sub_edge)
-        Packet_number_inFF      <=Packet_number_inFF - 1'b1;
-
-
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        Packet_number_inFF_reg      <=0;
-    else
-        Packet_number_inFF_reg      <=Packet_number_inFF;
-
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        begin
-        Add_rd_reg_rdy_dl1          <=0;
-        Add_rd_reg_rdy_dl2          <=0;
-        end
-    else
-        begin
-        Add_rd_reg_rdy_dl1          <=Add_rd_reg_rdy;
-        Add_rd_reg_rdy_dl2          <=Add_rd_reg_rdy_dl1;
-        end     
-
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        Add_rd_reg_dl1              <=0;
-    else if (Add_rd_reg_rdy_dl1&!Add_rd_reg_rdy_dl2)
-        Add_rd_reg_dl1              <=Add_rd_reg;
-
-
-
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        Fifo_data_count     <=0;
-    else if (FullDuplex)
-        Fifo_data_count     
<=Add_wr[`MAC_RX_FF_DEPTH-1:`MAC_RX_FF_DEPTH-5]-Add_rd_ungray[`MAC_RX_FF_DEPTH-1:`MAC_RX_FF_DEPTH-5];
-    else
-        Fifo_data_count     
<=Add_wr[`MAC_RX_FF_DEPTH-1:`MAC_RX_FF_DEPTH-5]-Add_rd_reg_dl1[`MAC_RX_FF_DEPTH-1:`MAC_RX_FF_DEPTH-5];
 //for half duplex backoff requirement
-        
-
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        Fifo_ra_tmp <=0;    
-    else if (Packet_number_inFF_reg>=1||Fifo_data_count>=Tx_Lwmark)
-        Fifo_ra_tmp <=1;        
-    else 
-        Fifo_ra_tmp <=0;
-
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        begin 
-        Tx_Hwmark_pl        <=0;
-        Tx_Lwmark_pl        <=0;    
-        end
-    else
-        begin 
-        Tx_Hwmark_pl        <=Tx_Hwmark;
-        Tx_Lwmark_pl        <=Tx_Lwmark;    
-        end    
-    
-always @ (posedge Clk_SYS or posedge Reset)
-    if (Reset)
-        Tx_mac_wa   <=0;  
-    else if (Fifo_data_count>=Tx_Hwmark_pl)
-        Tx_mac_wa   <=0;
-    else if (Fifo_data_count<Tx_Lwmark_pl)
-        Tx_mac_wa   <=1;
-
-//******************************************************************************
-
-    
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    
-//******************************************************************************
-//rd data to from FF .
-//domain Clk_MAC
-//******************************************************************************
-reg[35:0]   Dout_dl1;
-reg         Dout_reg_en /* synthesis syn_keep=1 */;
-
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Dout_dl1    <=0;
-    else
-        Dout_dl1    <=Dout;
-
-always @ (Current_state_MAC or Next_state_MAC)
-    if 
((Current_state_MAC==MAC_idle||Current_state_MAC==MAC_byte0)&&Next_state_MAC==MAC_byte3)
-        Dout_reg_en     =1;
-    else
-        Dout_reg_en     =0; 
-            
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Dout_reg        <=0;
-    else if (Dout_reg_en)
-        Dout_reg    <=Dout_dl1;     
-        
-assign {Dout_eop,Dout_err,Dout_BE,Dout_data}=Dout_reg;
-
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Current_state_MAC   <=MAC_idle;
-    else
-        Current_state_MAC   <=Next_state_MAC;       
-        
-always @ (Current_state_MAC or Fifo_rd or Dout_BE or Dout_eop or Fifo_rd_retry
-            or Fifo_rd_finish or Empty or Fifo_rd or Fifo_eop)
-        case (Current_state_MAC)
-            MAC_idle:
-                if (Empty&&Fifo_rd)
-                    Next_state_MAC=MAC_FF_Err;
-                else if (Fifo_rd)
-                    Next_state_MAC=MAC_byte3;
-                else
-                    Next_state_MAC=Current_state_MAC;
-            MAC_byte3:
-                if (Fifo_rd_retry)
-                    Next_state_MAC=MAC_retry;           
-                else if (Fifo_eop)
-                    Next_state_MAC=MAC_wait_finish;
-                else if (Fifo_rd&&!Fifo_eop)
-                    Next_state_MAC=MAC_byte2;
-                else
-                    Next_state_MAC=Current_state_MAC;
-            MAC_byte2:
-                if (Fifo_rd_retry)
-                    Next_state_MAC=MAC_retry;
-                else if (Fifo_eop)
-                    Next_state_MAC=MAC_wait_finish;
-                else if (Fifo_rd&&!Fifo_eop)
-                    Next_state_MAC=MAC_byte1;
-                else
-                    Next_state_MAC=Current_state_MAC;       
-            MAC_byte1:
-                if (Fifo_rd_retry)
-                    Next_state_MAC=MAC_retry;
-                else if (Fifo_eop)
-                    Next_state_MAC=MAC_wait_finish;
-                else if (Fifo_rd&&!Fifo_eop)
-                    Next_state_MAC=MAC_byte0;
-                else
-                    Next_state_MAC=Current_state_MAC;   
-            MAC_byte0:
-                if (Empty&&Fifo_rd&&!Fifo_eop)
-                    Next_state_MAC=MAC_FFEmpty;
-                else if (Fifo_rd_retry)
-                    Next_state_MAC=MAC_retry;
-                else if (Fifo_eop)
-                    Next_state_MAC=MAC_wait_finish;     
-                else if (Fifo_rd&&!Fifo_eop)
-                    Next_state_MAC=MAC_byte3;
-                else
-                    Next_state_MAC=Current_state_MAC;   
-            MAC_retry:
-                    Next_state_MAC=MAC_idle;
-            MAC_wait_finish:
-                if (Fifo_rd_finish)
-                    Next_state_MAC=MAC_pkt_sub;
-                else
-                    Next_state_MAC=Current_state_MAC;
-            MAC_pkt_sub:
-                    Next_state_MAC=MAC_idle;
-            MAC_FFEmpty:
-                if (!Empty)
-                    Next_state_MAC=MAC_byte3;
-                else
-                    Next_state_MAC=Current_state_MAC;
-            MAC_FF_Err:  //stopped state-machine need change                   
      
-                    Next_state_MAC=Current_state_MAC;
-            default
-                    Next_state_MAC=MAC_idle;    
-        endcase
-//
-always @ (posedge Reset or posedge Clk_MAC)
-    if (Reset)
-        Add_rd_gray         <=0;
-    else 
-               begin
-               Add_rd_gray[`MAC_RX_FF_DEPTH-1] <=Add_rd[`MAC_RX_FF_DEPTH-1];
-               for (i=`MAC_RX_FF_DEPTH-2;i>=0;i=i-1)
-               Add_rd_gray[i]                  <=Add_rd[i+1]^Add_rd[i];
-               end
-//
-
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Add_wr_gray_dl1     <=0;
-    else
-        Add_wr_gray_dl1     <=Add_wr_gray;
-            
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Add_wr_ungray       =0;
-    else        
-               begin
-               Add_wr_ungray[`MAC_RX_FF_DEPTH-1]       
=Add_wr_gray_dl1[`MAC_RX_FF_DEPTH-1];   
-               for (i=`MAC_RX_FF_DEPTH-2;i>=0;i=i-1)
-                       Add_wr_ungray[i]        
=Add_wr_ungray[i+1]^Add_wr_gray_dl1[i]; 
-               end                   
-//empty     
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)      
-        Empty   <=1;
-    else if (Add_rd==Add_wr_ungray)
-        Empty   <=1;
-    else
-        Empty   <=0;    
-        
-//ra
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Fifo_ra <=0;
-    else
-        Fifo_ra <=Fifo_ra_tmp;
-
-
-
-always @ (posedge Clk_MAC or posedge Reset)     
-    if (Reset)  
-        Pkt_sub_apply_tmp   <=0;
-    else if (Current_state_MAC==MAC_pkt_sub)
-        Pkt_sub_apply_tmp   <=1;
-    else
-        Pkt_sub_apply_tmp   <=0;
-        
-always @ (posedge Clk_MAC or posedge Reset) 
-    if (Reset)
-        Pkt_sub_apply   <=0;
-    else if ((Current_state_MAC==MAC_pkt_sub)||Pkt_sub_apply_tmp)
-        Pkt_sub_apply   <=1;
-    else                
-        Pkt_sub_apply   <=0;
-
-//reg Add_rd for collison retry
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Add_rd_reg      <=0;
-    else if (Fifo_rd_finish)
-        Add_rd_reg      <=Add_rd;
-
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Add_rd_reg_rdy_tmp      <=0;
-    else if (Fifo_rd_finish)
-        Add_rd_reg_rdy_tmp      <=1;
-    else
-        Add_rd_reg_rdy_tmp      <=0;
-        
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Add_rd_reg_rdy      <=0;
-    else if (Fifo_rd_finish||Add_rd_reg_rdy_tmp)
-        Add_rd_reg_rdy      <=1;
-    else
-        Add_rd_reg_rdy      <=0;         
- 
-reg Add_rd_add /* synthesis syn_keep=1 */;
-
-always @ (Current_state_MAC or Next_state_MAC)
-    if 
((Current_state_MAC==MAC_idle||Current_state_MAC==MAC_byte0)&&Next_state_MAC==MAC_byte3)
-        Add_rd_add  =1;
-    else
-        Add_rd_add  =0;
-        
-        
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Add_rd          <=0;
-    else if (Current_state_MAC==MAC_retry)
-        Add_rd          <= Add_rd_reg;
-    else if (Add_rd_add)
-        Add_rd          <= Add_rd + 1;  
-                    
-always @ (posedge Clk_MAC or posedge Reset)
-       if (Reset)
-           Add_rd_jump_tmp <=0;
-       else if (Current_state_MAC==MAC_retry)
-           Add_rd_jump_tmp <=1;
-       else
-           Add_rd_jump_tmp <=0;
-
-always @ (posedge Clk_MAC or posedge Reset)
-       if (Reset)
-           Add_rd_jump_tmp_pl1 <=0;
-       else
-           Add_rd_jump_tmp_pl1 <=Add_rd_jump_tmp;       
-           
-always @ (posedge Clk_MAC or posedge Reset)
-       if (Reset)
-           Add_rd_jump <=0;
-       else if (Current_state_MAC==MAC_retry)
-           Add_rd_jump <=1;
-       else if (Add_rd_jump_tmp_pl1)
-           Add_rd_jump <=0;    
-                                               
-//gen Fifo_data 
-
-        
-always @ (Dout_data or Current_state_MAC)
-    case (Current_state_MAC)
-        MAC_byte3:
-            Fifo_data   =Dout_data[31:24];
-        MAC_byte2:
-            Fifo_data   =Dout_data[23:16];
-        MAC_byte1:
-            Fifo_data   =Dout_data[15:8];
-        MAC_byte0:
-            Fifo_data   =Dout_data[7:0];
-        default:
-            Fifo_data   =0;     
-    endcase
-//gen Fifo_da           
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Fifo_rd_dl1     <=0;
-    else
-        Fifo_rd_dl1     <=Fifo_rd;
-        
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Fifo_da         <=0;
-    else if ((Current_state_MAC==MAC_byte0||Current_state_MAC==MAC_byte1||
-              
Current_state_MAC==MAC_byte2||Current_state_MAC==MAC_byte3)&&Fifo_rd&&!Fifo_eop)
-        Fifo_da         <=1;
-    else
-        Fifo_da         <=0;
-
-//gen Fifo_data_err_empty
-assign  Fifo_data_err_full=Dout_err;
-//gen Fifo_data_err_empty
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Current_state_MAC_reg   <=0;
-    else
-        Current_state_MAC_reg   <=Current_state_MAC;
-        
-always @ (posedge Clk_MAC or posedge Reset)
-    if (Reset)
-        Fifo_data_err_empty     <=0;
-    else if (Current_state_MAC_reg==MAC_FFEmpty)
-        Fifo_data_err_empty     <=1;
-    else
-        Fifo_data_err_empty     <=0;
-    
-always @ (posedge Clk_MAC)
-    if (Current_state_MAC_reg==MAC_FF_Err)  
-        begin
-        $finish(2); 
-        $display("mac_tx_FF meet error status at time :%t",$time);
-        end
-
-//gen Fifo_eop aligned to last valid data byte��            
-always @ (Current_state_MAC or Dout_eop)
-    if (((Current_state_MAC==MAC_byte0&&Dout_BE==2'b00||
-        Current_state_MAC==MAC_byte1&&Dout_BE==2'b11||
-        Current_state_MAC==MAC_byte2&&Dout_BE==2'b10||
-        Current_state_MAC==MAC_byte3&&Dout_BE==2'b01)&&Dout_eop))
-        Fifo_eop        =1; 
-    else
-        Fifo_eop        =0;         
-//******************************************************************************
-//******************************************************************************
-
-duram #(36,`MAC_TX_FF_DEPTH,"M4K") U_duram(           
-.data_a         (Din        ), 
-.wren_a         (Wr_en      ), 
-.address_a      (Add_wr     ), 
-.address_b      (Add_rd     ), 
-.clock_a        (Clk_SYS    ), 
-.clock_b        (Clk_MAC    ), 
-.q_b            (Dout       ));
-
-endmodule
\ No newline at end of file
+   //gen Fifo_da           
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Fifo_rd_dl1     <=0;
+     else
+       Fifo_rd_dl1     <=Fifo_rd;
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Fifo_da         <=0;
+     else if ((Current_state_MAC==MAC_byte0||Current_state_MAC==MAC_byte1||
+               
Current_state_MAC==MAC_byte2||Current_state_MAC==MAC_byte3)&&Fifo_rd&&!Fifo_eop)
+       Fifo_da         <=1;
+     else
+       Fifo_da         <=0;
+   
+   //gen Fifo_data_err_empty
+   assign Fifo_data_err_full=Dout_err;
+   //gen Fifo_data_err_empty
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Current_state_MAC_reg   <=0;
+     else
+       Current_state_MAC_reg   <=Current_state_MAC;
+   
+   always @ (posedge Clk_MAC or posedge Reset)
+     if (Reset)
+       Fifo_data_err_empty     <=0;
+     else if (Current_state_MAC_reg==MAC_FFEmpty)
+       Fifo_data_err_empty     <=1;
+     else
+       Fifo_data_err_empty     <=0;
+   
+   always @ (posedge Clk_MAC)
+     if (Current_state_MAC_reg==MAC_FF_Err)  
+       begin
+          $finish(2); 
+          $display("mac_tx_FF meet error status at time :%t",$time);
+       end
+   
+   //gen Fifo_eop aligned to last valid data byte��            
+   always @ (Current_state_MAC or Dout_eop)
+     if (((Current_state_MAC==MAC_byte0&&Dout_BE==2'b00||
+           Current_state_MAC==MAC_byte1&&Dout_BE==2'b11||
+           Current_state_MAC==MAC_byte2&&Dout_BE==2'b10||
+           Current_state_MAC==MAC_byte3&&Dout_BE==2'b01)&&Dout_eop))
+       Fifo_eop        =1; 
+     else
+       Fifo_eop        =0;         
+   
//******************************************************************************
+   duram #(36,MAC_TX_FF_DEPTH) 
+     U_duram(.data_a         (Din        ), 
+            .wren_a         (Wr_en      ), 
+            .address_a      (Add_wr     ), 
+            .address_b      (Add_rd     ), 
+            .clock_a        (Clk_SYS    ), 
+            .clock_b        (Clk_MAC    ), 
+            .q_b            (Dout       ));
+   
+endmodule // MAC_tx_FF

Copied: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_ctrl.v
 (from rev 5191, 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_Ctrl.v)
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_ctrl.v
                          (rev 0)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_ctrl.v
  2007-05-09 03:32:54 UTC (rev 5258)
@@ -0,0 +1,646 @@
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+////  MAC_tx_ctrl.v                                               ////
+////                                                              ////
+////  This file is part of the Ethernet IP core project           ////
+////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////
+////                                                              ////
+////  Author(s):                                                  ////
+////      - Jon Gao (address@hidden)                            ////
+////                                                              ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+//// Copyright (C) 2001 Authors                                   ////
+////                                                              ////
+//// This source file may be used and distributed without         ////
+//// restriction provided that this copyright statement is not    ////
+//// removed from the file and that any derivative work contains  ////
+//// the original copyright notice and the associated disclaimer. ////
+////                                                              ////
+//// This source file is free software; you can redistribute it   ////
+//// and/or modify it under the terms of the GNU Lesser General   ////
+//// Public License as published by the Free Software Foundation; ////
+//// either version 2.1 of the License, or (at your option) any   ////
+//// later version.                                               ////
+////                                                              ////
+//// This source is distributed in the hope that it will be       ////
+//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
+//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
+//// PURPOSE.  See the GNU Lesser General Public License for more ////
+//// details.                                                     ////
+////                                                              ////
+//// You should have received a copy of the GNU Lesser General    ////
+//// Public License along with this source; if not, download it   ////
+//// from http://www.opencores.org/lgpl.shtml                     ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+//                                                                    
+// CVS Revision History                                               
+//                                                                    
+// $Log: MAC_tx_Ctrl.v,v $
+// Revision 1.4  2006/06/25 04:58:56  maverickist
+// no message
+//
+// Revision 1.3  2006/01/19 14:07:54  maverickist
+// verification is complete.
+//
+// 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
+// no message
+//                                           
+
+module MAC_tx_ctrl (  
+Reset               ,
+Clk                 ,
+//CRC_gen Interface  
+CRC_init            ,
+Frame_data          ,
+Data_en             ,
+CRC_rd              ,
+CRC_end             ,
+CRC_out             ,
+//Ramdon_gen interfac
+Random_init         ,
+RetryCnt            ,
+Random_time_meet    ,
+//flow control      
+pause_apply         ,
+pause_quanta_sub    ,
+xoff_gen            ,
+xoff_gen_complete   ,
+xon_gen             ,
+xon_gen_complete    ,
+//MAC_tx_FF          
+Fifo_data           ,
+Fifo_rd             ,
+Fifo_eop            ,
+Fifo_da             ,
+Fifo_rd_finish      ,
+Fifo_rd_retry       ,
+Fifo_ra             ,
+Fifo_data_err_empty ,
+Fifo_data_err_full  ,
+//RMII               
+TxD                 ,
+TxEn                ,
+CRS                 , 
+//MAC_tx_addr_add   
+MAC_tx_addr_rd      ,
+MAC_tx_addr_data    ,
+MAC_tx_addr_init    ,
+//RMON               
+Tx_pkt_type_rmon    ,
+Tx_pkt_length_rmon  ,
+Tx_apply_rmon       ,
+Tx_pkt_err_type_rmon,
+//CPU  
+pause_frame_send_en ,
+pause_quanta_set    ,              
+MAC_tx_add_en       ,  
+FullDuplex          ,
+MaxRetry            ,
+IFGset          
+);
+
+input           Reset               ;
+input           Clk                 ;
+                //CRC_gen Interface 
+output          CRC_init            ;
+output  [7:0]   Frame_data          ;
+output          Data_en             ;
+output          CRC_rd              ;
+input           CRC_end             ;
+input   [7:0]   CRC_out             ;
+                //Ramdon_gen interface
+output          Random_init         ;
+output  [3:0]   RetryCnt            ;
+input           Random_time_meet    ;//levle hight indicate random time passed 
away
+                //flow control
+input           pause_apply         ;
+output          pause_quanta_sub    ;
+input           xoff_gen            ;
+output          xoff_gen_complete   ;
+input           xon_gen             ;
+output          xon_gen_complete    ;               
+                //MAC_rx_FF
+input   [7:0]   Fifo_data           ;
+output          Fifo_rd             ;
+input           Fifo_eop            ;
+input           Fifo_da             ;
+output          Fifo_rd_finish      ;
+output          Fifo_rd_retry       ;
+input           Fifo_ra             ;
+input           Fifo_data_err_empty ;
+input           Fifo_data_err_full  ;
+                //RMII
+output  [7:0]   TxD                 ;
+output          TxEn                ;   
+input           CRS                 ;
+                //MAC_tx_addr_add
+output          MAC_tx_addr_init    ;
+output          MAC_tx_addr_rd      ;
+input   [7:0]   MAC_tx_addr_data    ;
+                //RMON
+output  [2:0]   Tx_pkt_type_rmon    ;
+output  [15:0]  Tx_pkt_length_rmon  ;
+output          Tx_apply_rmon       ;
+output  [2:0]   Tx_pkt_err_type_rmon;   
+                //CPU
+input           pause_frame_send_en ;               
+input   [15:0]  pause_quanta_set    ;
+input           MAC_tx_add_en       ;               
+input           FullDuplex          ;
+input   [3:0]   MaxRetry            ;
+input   [5:0]   IFGset              ;
+//******************************************************************************
        
+//internal signals                                                             
 
+//******************************************************************************
   
+parameter       StateIdle           =4'd00;
+parameter       StatePreamble       =4'd01;
+parameter       StateSFD            =4'd02;
+parameter       StateData           =4'd03;
+parameter       StatePause          =4'd04;
+parameter       StatePAD            =4'd05;
+parameter       StateFCS            =4'd06;
+parameter       StateIFG            =4'd07;
+parameter       StateJam            =4'd08;
+parameter       StateBackOff        =4'd09;
+parameter       StateJamDrop        =4'd10;
+parameter       StateFFEmptyDrop    =4'd11;
+parameter       StateSwitchNext     =4'd12;
+parameter       StateDefer          =4'd13;
+parameter       StateSendPauseFrame =4'd14;
+
+reg [3:0]       Current_state   /*synthesis syn_keep=1 */;
+reg [3:0]       Next_state;
+reg [5:0]       IFG_counter;
+reg [4:0]       Preamble_counter;//
+reg [7:0]       TxD_tmp             ;   
+reg             TxEn_tmp            ;   
+reg [15:0]      Tx_pkt_length_rmon  ;
+reg             Tx_apply_rmon       ;
+reg             Tx_apply_rmon_tmp   ;
+reg             Tx_apply_rmon_tmp_pl1;
+reg [2:0]       Tx_pkt_err_type_rmon;   
+reg [3:0]       RetryCnt            ;
+reg             Random_init         ;
+reg             Fifo_rd_finish      ;
+reg             Fifo_rd_retry       ;
+reg [7:0]       TxD                 ;   
+reg             TxEn                ;   
+reg             CRC_init            ;
+reg             Data_en             ;
+reg             CRC_rd              ;
+reg             Fifo_rd             ;
+reg             MAC_tx_addr_rd      ;
+reg             MAC_header_slot     ;
+reg             MAC_header_slot_tmp ;
+reg [2:0]       Tx_pkt_type_rmon    ;
+wire            Collision           ; 
+reg             MAC_tx_addr_init    ;
+reg             Src_MAC_ptr         ;
+reg [7:0]       IPLengthCounter     ;//for pad append
+reg [1:0]       PADCounter          ;
+reg [7:0]       JamCounter          ;
+reg             PktDrpEvenPtr       ;
+reg [7:0]       pause_counter       ;
+reg             pause_quanta_sub    ;
+reg             pause_frame_send_en_dl1 ;               
+reg [15:0]      pause_quanta_set_dl1    ;
+reg             xoff_gen_complete   ;
+reg             xon_gen_complete    ;
+//******************************************************************************
    
+//boundery signal processing                                                   
          
+//******************************************************************************
 
+always @(posedge Clk or posedge Reset)
+    if (Reset)
+        begin  
+        pause_frame_send_en_dl1         <=0;
+        pause_quanta_set_dl1            <=0;
+        end
+    else
+        begin  
+        pause_frame_send_en_dl1         <=pause_frame_send_en   ;
+        pause_quanta_set_dl1            <=pause_quanta_set      ;
+        end     
+//******************************************************************************
    
+//state machine                                                             
+//******************************************************************************
 
+assign Collision=TxEn&CRS;
+
+always @(posedge Clk or posedge Reset)
+    if (Reset)
+        pause_counter   <=0;
+    else if (Current_state!=StatePause)
+        pause_counter   <=0;
+    else 
+        pause_counter   <=pause_counter+1;
+        
+always @(posedge Clk or posedge Reset)
+    if (Reset)
+        IPLengthCounter     <=0;
+    else if (Current_state==StateDefer)
+        IPLengthCounter     <=0;    
+    else if 
(IPLengthCounter!=8'hff&&(Current_state==StateData||Current_state==StateSendPauseFrame||Current_state==StatePAD))
+        IPLengthCounter     <=IPLengthCounter+1;
+
+always @(posedge Clk or posedge Reset)
+    if (Reset)
+        PADCounter      <=0;
+    else if (Current_state!=StatePAD)
+        PADCounter      <=0;
+    else
+        PADCounter      <=PADCounter+1;
+
+always @(posedge Clk or posedge Reset)
+    if (Reset)
+        Current_state       <=StateDefer;
+    else 
+        Current_state       <=Next_state;    
+        
+always @ (*)
+        case (Current_state)   
+            StateDefer:
+                if ((FullDuplex)||(!FullDuplex&&!CRS))
+                    Next_state=StateIFG;
+                else
+                    Next_state=Current_state;   
+            StateIFG:
+                if (!FullDuplex&&CRS)
+                    Next_state=StateDefer;
+                else if 
((FullDuplex&&IFG_counter==IFGset-4)||(!FullDuplex&&!CRS&&IFG_counter==IFGset-4))//remove
 some additional time
+                    Next_state=StateIdle;
+                else
+                    Next_state=Current_state;           
+            StateIdle:
+                if (!FullDuplex&&CRS)
+                    Next_state=StateDefer;
+                else if (pause_apply)
+                    Next_state=StatePause;          
+                else if 
((FullDuplex&&Fifo_ra)||(!FullDuplex&&!CRS&&Fifo_ra)||(pause_frame_send_en_dl1&&(xoff_gen||xon_gen)))
+                    Next_state=StatePreamble;
+                else
+                    Next_state=Current_state;   
+            StatePause:
+                if (pause_counter==512/8)
+                    Next_state=StateDefer;
+                else
+                    Next_state=Current_state;               
+            StatePreamble:
+                if (!FullDuplex&&Collision)
+                    Next_state=StateJam;
+                else if 
((FullDuplex&&Preamble_counter==6)||(!FullDuplex&&!Collision&&Preamble_counter==6))
+                    Next_state=StateSFD;
+                else
+                    Next_state=Current_state;
+            StateSFD:
+                if (!FullDuplex&&Collision)
+                    Next_state=StateJam;
+                else if (pause_frame_send_en_dl1&&(xoff_gen||xon_gen))
+                    Next_state=StateSendPauseFrame;
+                else 
+                    Next_state=StateData;
+            StateSendPauseFrame:
+                if (IPLengthCounter==17)
+                    Next_state=StatePAD;
+                else
+                    Next_state=Current_state;
+            StateData:
+                if (!FullDuplex&&Collision)
+                    Next_state=StateJam;
+                else if (Fifo_data_err_empty)
+                    Next_state=StateFFEmptyDrop;                
+                else if (Fifo_eop&&IPLengthCounter>=59)//IP+MAC+TYPE=60 ,start 
from 0
+                    Next_state=StateFCS;
+                else if (Fifo_eop)
+                    Next_state=StatePAD;
+                else 
+                    Next_state=StateData;       
+            StatePAD:
+                if (!FullDuplex&&Collision)
+                    Next_state=StateJam; 
+                else if (IPLengthCounter>=59)
+                    Next_state=StateFCS;        
+                else 
+                    Next_state=Current_state;
+            StateJam:
+                if (RetryCnt<=MaxRetry&&JamCounter==16) 
+                    Next_state=StateBackOff;
+                else if (RetryCnt>MaxRetry)
+                    Next_state=StateJamDrop;
+                else
+                    Next_state=Current_state;
+            StateBackOff:
+                if (Random_time_meet)
+                    Next_state  =StateDefer;
+                else 
+                    Next_state  =Current_state;
+            StateFCS:
+                if (!FullDuplex&&Collision)
+                    Next_state  =StateJam;
+                else if (CRC_end)
+                    Next_state  =StateSwitchNext;
+                else
+                    Next_state  =Current_state;
+            StateFFEmptyDrop:
+                if (Fifo_eop)
+                    Next_state  =StateSwitchNext;
+                else
+                    Next_state  =Current_state;             
+            StateJamDrop:
+                if (Fifo_eop)
+                    Next_state  =StateSwitchNext;
+                else
+                    Next_state  =Current_state;
+            StateSwitchNext:
+                    Next_state  =StateDefer;            
+            default:
+                Next_state  =StateDefer;
+        endcase
+
+ 
+        
+always @ (posedge Clk or posedge Reset)
+    if (Reset)
+        JamCounter      <=0;
+    else if (Current_state!=StateJam)
+        JamCounter      <=0;
+    else if (Current_state==StateJam)
+        JamCounter      <=JamCounter+1;
+        
+             
+always @ (posedge Clk or posedge Reset)
+    if (Reset)
+        RetryCnt        <=0;
+    else if (Current_state==StateSwitchNext)
+        RetryCnt        <=0;
+    else if (Current_state==StateJam&&Next_state==StateBackOff)
+        RetryCnt        <=RetryCnt + 1;
+            
+always @ (posedge Clk or posedge Reset)
+    if (Reset)
+        IFG_counter     <=0;
+    else if (Current_state!=StateIFG)
+        IFG_counter     <=0;
+    else 
+        IFG_counter     <=IFG_counter + 1;
+
+always @ (posedge Clk or posedge Reset)
+    if (Reset)
+        Preamble_counter    <=0;
+    else if (Current_state!=StatePreamble)
+        Preamble_counter    <=0;
+    else
+        Preamble_counter    <=Preamble_counter+ 1;
+        
+always @ (posedge Clk or posedge Reset)
+    if (Reset)      
+        PktDrpEvenPtr       <=0;
+    else if(Current_state==StateJamDrop||Current_state==StateFFEmptyDrop)
+        PktDrpEvenPtr       <=~PktDrpEvenPtr;
+//******************************************************************************
    
+//generate output signals                                                      
     
+//******************************************************************************
 
+//CRC related
+always @(Current_state)
+    if (Current_state==StateSFD)
+        CRC_init    =1;
+    else
+        CRC_init    =0;
+        
+assign Frame_data=TxD_tmp;
+
+always @(Current_state)
+    if 
(Current_state==StateData||Current_state==StateSendPauseFrame||Current_state==StatePAD)
+        Data_en     =1;
+    else
+        Data_en     =0;
+        
+always @(Current_state)
+    if (Current_state==StateFCS)
+        CRC_rd      =1;
+    else
+        CRC_rd      =0;     
+    
+//Ramdon_gen interface
+always @(Current_state or Next_state)
+    if (Current_state==StateJam&&Next_state==StateBackOff)
+        Random_init =1;
+    else
+        Random_init =0; 
+
+//MAC_rx_FF
+//data have one cycle delay after fifo read signals  
+always @ (*)
+    if (Current_state==StateData ||
+        
Current_state==StateSFD&&!(pause_frame_send_en_dl1&&(xoff_gen||xon_gen))  ||
+        Current_state==StateJamDrop&&PktDrpEvenPtr||
+        Current_state==StateFFEmptyDrop&&PktDrpEvenPtr )
+        Fifo_rd     =1;
+    else
+        Fifo_rd     =0; 
+        
+always @ (Current_state)
+    if (Current_state==StateSwitchNext)     
+        Fifo_rd_finish  =1;
+    else
+        Fifo_rd_finish  =0;
+        
+always @ (Current_state)
+    if (Current_state==StateJam)        
+        Fifo_rd_retry   =1;
+    else
+        Fifo_rd_retry   =0;     
+//RMII
+always @(Current_state)
+    if (Current_state==StatePreamble||Current_state==StateSFD||
+        Current_state==StateData||Current_state==StateSendPauseFrame||
+        
Current_state==StateFCS||Current_state==StatePAD||Current_state==StateJam)
+        TxEn_tmp    =1;
+    else
+        TxEn_tmp    =0;
+
+//gen txd data      
+always @(*)
+    case (Current_state)
+        StatePreamble:
+            TxD_tmp =8'h55;
+        StateSFD:
+            TxD_tmp =8'hd5;
+        StateData:
+            if (Src_MAC_ptr&&MAC_tx_add_en)       
+                TxD_tmp =MAC_tx_addr_data;
+            else
+                TxD_tmp =Fifo_data;
+        StateSendPauseFrame:
+            if (Src_MAC_ptr&&MAC_tx_add_en)       
+                TxD_tmp =MAC_tx_addr_data;
+            else 
+                case (IPLengthCounter)
+                    7'd0:   TxD_tmp =8'h01;
+                    7'd1:   TxD_tmp =8'h80;
+                    7'd2:   TxD_tmp =8'hc2;
+                    7'd3:   TxD_tmp =8'h00;
+                    7'd4:   TxD_tmp =8'h00;
+                    7'd5:   TxD_tmp =8'h01;
+                    7'd12:  TxD_tmp =8'h88;//type
+                    7'd13:  TxD_tmp =8'h08;//
+                    7'd14:  TxD_tmp =8'h00;//opcode
+                    7'd15:  TxD_tmp =8'h01;
+                    7'd16:  TxD_tmp =xon_gen?8'b0:pause_quanta_set_dl1[15:8];
+                    7'd17:  TxD_tmp =xon_gen?8'b0:pause_quanta_set_dl1[7:0];
+//                    7'd60:  TxD_tmp =8'h26;
+//                    7'd61:  TxD_tmp =8'h6b;
+//                    7'd62:  TxD_tmp =8'hae;
+//                    7'd63:  TxD_tmp =8'h0a;
+                    default:TxD_tmp =0;
+                endcase
+        
+        StatePAD:
+                TxD_tmp =8'h00; 
+        StateJam:
+                TxD_tmp =8'h01; //jam sequence
+        StateFCS:
+            TxD_tmp =CRC_out;
+        default:
+            TxD_tmp =2'b0;
+    endcase
+always @ (posedge Clk or posedge Reset)
+    if (Reset)
+        begin
+        TxD     <=0;
+        TxEn    <=0;
+        end
+    else
+        begin
+        TxD     <=TxD_tmp;
+        TxEn    <=TxEn_tmp;
+        end     
+//RMON
+
+
+always @ (posedge Clk or posedge Reset)
+    if (Reset)
+        Tx_pkt_length_rmon      <=0;
+    else if (Current_state==StateSFD)
+        Tx_pkt_length_rmon      <=0;
+    else if 
(Current_state==StateData||Current_state==StateSendPauseFrame||Current_state==StatePAD||Current_state==StateFCS)
+        Tx_pkt_length_rmon      <=Tx_pkt_length_rmon+1;
+        
+always @ (posedge Clk or posedge Reset)
+    if (Reset)
+        Tx_apply_rmon_tmp       <=0;
+    else if ((Fifo_eop&&Current_state==StateJamDrop)||
+             (Fifo_eop&&Current_state==StateFFEmptyDrop)||
+             CRC_end)
+        Tx_apply_rmon_tmp       <=1;
+    else
+        Tx_apply_rmon_tmp       <=0; 
+
+always @ (posedge Clk or posedge Reset)
+    if (Reset)
+        Tx_apply_rmon_tmp_pl1   <=0;
+    else
+        Tx_apply_rmon_tmp_pl1   <=Tx_apply_rmon_tmp;
+        
+always @ (posedge Clk or posedge Reset)
+    if (Reset)
+        Tx_apply_rmon       <=0;
+    else if ((Fifo_eop&&Current_state==StateJamDrop)||
+             (Fifo_eop&&Current_state==StateFFEmptyDrop)||
+             CRC_end)
+        Tx_apply_rmon       <=1;
+    else if (Tx_apply_rmon_tmp_pl1)
+        Tx_apply_rmon       <=0;
+        
+always @ (posedge Clk or posedge Reset)
+    if (Reset)
+        Tx_pkt_err_type_rmon    <=0;    
+    else if(Fifo_eop&&Current_state==StateJamDrop)
+        Tx_pkt_err_type_rmon    <=3'b001;//
+    else if(Fifo_eop&&Current_state==StateFFEmptyDrop)
+        Tx_pkt_err_type_rmon    <=3'b010;//underflow
+    else if(Fifo_eop&&Fifo_data_err_full)
+        Tx_pkt_err_type_rmon    <=3'b011;//overflow
+    else if(CRC_end)
+        Tx_pkt_err_type_rmon    <=3'b100;//normal
+        
+always @ (posedge Clk or posedge Reset)
+    if (Reset)
+        MAC_header_slot_tmp <=0;
+    else if(Current_state==StateSFD&&Next_state==StateData)
+        MAC_header_slot_tmp <=1;    
+    else
+        MAC_header_slot_tmp <=0;
+        
+always @ (posedge Clk or posedge Reset)
+    if (Reset)
+        MAC_header_slot     <=0;
+    else 
+        MAC_header_slot     <=MAC_header_slot_tmp;
+
+always @ (posedge Clk or posedge Reset)
+    if (Reset)
+        Tx_pkt_type_rmon    <=0;
+    else if (Current_state==StateSendPauseFrame)
+        Tx_pkt_type_rmon    <=3'b100;
+    else if(MAC_header_slot)
+        Tx_pkt_type_rmon    <={1'b0,TxD[7:6]};
+
+       
+always @(Tx_pkt_length_rmon)
+    if (Tx_pkt_length_rmon>=6&&Tx_pkt_length_rmon<=11)
+        Src_MAC_ptr         =1;
+    else
+        Src_MAC_ptr         =0;        
+
+//MAC_tx_addr_add  
+always @ (posedge Clk or posedge Reset)
+    if (Reset)
+        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
+        MAC_tx_addr_rd  <=0;
+
+always @ (Tx_pkt_length_rmon or Fifo_rd)
+    if ((Tx_pkt_length_rmon==3)&&Fifo_rd)
+        MAC_tx_addr_init=1;
+    else
+        MAC_tx_addr_init=0;
+
+//flow control
+always @ (posedge Clk or posedge Reset)
+    if (Reset)
+        pause_quanta_sub    <=0;
+    else if(pause_counter==512/8)
+        pause_quanta_sub    <=1;
+    else
+        pause_quanta_sub    <=0;
+
+ 
+always @ (posedge Clk or posedge Reset)
+    if (Reset) 
+        xoff_gen_complete   <=0;
+    else if(Current_state==StateDefer&&xoff_gen)
+        xoff_gen_complete   <=1;
+    else
+        xoff_gen_complete   <=0;
+    
+    
+always @ (posedge Clk or posedge Reset)
+    if (Reset) 
+        xon_gen_complete    <=0;
+    else if(Current_state==StateDefer&&xon_gen)
+        xon_gen_complete    <=1;
+    else
+        xon_gen_complete    <=0;
+
+endmodule

Deleted: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/Ramdon_gen.v

Copied: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/random_gen.v
 (from rev 5191, 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/Ramdon_gen.v)
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/random_gen.v
                           (rev 0)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/random_gen.v
   2007-05-09 03:32:54 UTC (rev 5258)
@@ -0,0 +1,123 @@
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+////  random_gen.v                                                ////
+////                                                              ////
+////  This file is part of the Ethernet IP core project           ////
+////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////
+////                                                              ////
+////  Author(s):                                                  ////
+////      - Jon Gao (address@hidden)                            ////
+////                                                              ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+//// Copyright (C) 2001 Authors                                   ////
+////                                                              ////
+//// This source file may be used and distributed without         ////
+//// restriction provided that this copyright statement is not    ////
+//// removed from the file and that any derivative work contains  ////
+//// the original copyright notice and the associated disclaimer. ////
+////                                                              ////
+//// This source file is free software; you can redistribute it   ////
+//// and/or modify it under the terms of the GNU Lesser General   ////
+//// Public License as published by the Free Software Foundation; ////
+//// either version 2.1 of the License, or (at your option) any   ////
+//// later version.                                               ////
+////                                                              ////
+//// This source is distributed in the hope that it will be       ////
+//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
+//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
+//// PURPOSE.  See the GNU Lesser General Public License for more ////
+//// details.                                                     ////
+////                                                              ////
+//// You should have received a copy of the GNU Lesser General    ////
+//// Public License along with this source; if not, download it   ////
+//// from http://www.opencores.org/lgpl.shtml                     ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+//                                                                    
+// CVS Revision History                                               
+//                                                                    
+// $Log: Ramdon_gen.v,v $
+// Revision 1.3  2006/01/19 14:07:54  maverickist
+// verification is complete.
+//
+// Revision 1.2  2005/12/16 06:44:19  Administrator
+// replaced tab with space.
+// passed 9.6k length frame test.
+//
+// Revision 1.1.1.1  2005/12/13 01:51:45  Administrator
+// no message
+//                                           
+
+module random_gen( 
+Reset           ,
+Clk             ,
+Init            ,
+RetryCnt        ,
+Random_time_meet
+);
+input           Reset           ;
+input           Clk             ;
+input           Init            ;
+input   [3:0]   RetryCnt        ;
+output          Random_time_meet;   
+
+//******************************************************************************
+//internal signals                                                             
 
+//******************************************************************************
+reg [9:0]       Random_sequence ;
+reg [9:0]       Random          ;
+reg [9:0]       Random_counter  ;
+reg [7:0]       Slot_time_counter; //256*2=512bit=1 slot time
+reg             Random_time_meet;
+
+//******************************************************************************
+always @ (posedge Clk or posedge Reset)
+    if (Reset)
+        Random_sequence     <=0;
+    else
+        Random_sequence     
<={Random_sequence[8:0],~(Random_sequence[2]^Random_sequence[9])};
+        
+always @ (RetryCnt or Random_sequence)
+    case (RetryCnt)
+        4'h0    :   Random={9'b0,Random_sequence[0]};
+        4'h1    :   Random={8'b0,Random_sequence[1:0]};     
+        4'h2    :   Random={7'b0,Random_sequence[2:0]};
+        4'h3    :   Random={6'b0,Random_sequence[3:0]};
+        4'h4    :   Random={5'b0,Random_sequence[4:0]};
+        4'h5    :   Random={4'b0,Random_sequence[5:0]};
+        4'h6    :   Random={3'b0,Random_sequence[6:0]};
+        4'h7    :   Random={2'b0,Random_sequence[7:0]};
+        4'h8    :   Random={1'b0,Random_sequence[8:0]};
+        4'h9    :   Random={     Random_sequence[9:0]};  
+        default :   Random={     Random_sequence[9:0]};
+    endcase
+
+always @ (posedge Clk or posedge Reset)
+    if (Reset)
+        Slot_time_counter       <=0;
+    else if(Init)
+        Slot_time_counter       <=0;
+    else if(!Random_time_meet)
+        Slot_time_counter       <=Slot_time_counter+1;
+    
+always @ (posedge Clk or posedge Reset)
+    if (Reset)
+        Random_counter      <=0;
+    else if (Init)
+        Random_counter      <=Random;
+    else if (Random_counter!=0&&Slot_time_counter==255)
+        Random_counter      <=Random_counter -1 ;
+        
+always @ (posedge Clk or posedge Reset)
+    if (Reset)
+        Random_time_meet    <=1;
+    else if (Init)
+        Random_time_meet    <=0;
+    else if (Random_counter==0)
+        Random_time_meet    <=1;
+        
+endmodule
+
+

Modified: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx.v
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx.v
      2007-05-08 18:19:08 UTC (rev 5257)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx.v
      2007-05-09 03:32:54 UTC (rev 5258)
@@ -140,7 +140,7 @@
 .CRC_rd                   (CRC_rd                 ),            
 .CRC_end                  (CRC_end                ),            
 .CRC_out                  (CRC_out                ),            
- //Ramdon_gen interfac    (//Ramdon_gen interfac  ),           
+ //Random_gen interfac    (//Random_gen interfac  ),           
 .Random_init              (Random_init            ),            
 .RetryCnt                 (RetryCnt               ),        
 .Random_time_meet         (Random_time_meet       ),        
@@ -228,34 +228,34 @@
 `else
 assign MAC_tx_addr_data=0;
 `endif
-MAC_tx_FF U_MAC_tx_FF(
-.Reset                    (Reset                  ),
-.Clk_MAC                  (Clk                    ),
-.Clk_SYS                  (Clk_user               ),
- //MAC_rx_ctrl interf     (//MAC_rx_ctrl interf   ),
-.Fifo_data                (Fifo_data              ),
-.Fifo_rd                  (Fifo_rd                ),
-.Fifo_rd_finish           (Fifo_rd_finish         ),
-.Fifo_rd_retry            (Fifo_rd_retry          ),
-.Fifo_eop                 (Fifo_eop               ),
-.Fifo_da                  (Fifo_da                ),
-.Fifo_ra                  (Fifo_ra                ),
-.Fifo_data_err_empty      (Fifo_data_err_empty    ),
-.Fifo_data_err_full       (Fifo_data_err_full     ),
- //user interface         (//user interface       ),
-.Tx_mac_wa                (Tx_mac_wa              ),
-.Tx_mac_wr                (Tx_mac_wr              ),
-.Tx_mac_data              (Tx_mac_data            ),
-.Tx_mac_BE                (Tx_mac_BE              ),
-.Tx_mac_sop               (Tx_mac_sop             ),
-.Tx_mac_eop               (Tx_mac_eop             ),
- //host interface         (//host interface       ),
-.FullDuplex               (FullDuplex             ),
-.Tx_Hwmark                (Tx_Hwmark              ),
-.Tx_Lwmark                (Tx_Lwmark              )
-);
+MAC_tx_FF #(.MAC_TX_FF_DEPTH(9))
+  U_MAC_tx_FF(.Reset                    (Reset                  ),
+             .Clk_MAC                  (Clk                    ),
+             .Clk_SYS                  (Clk_user               ),
+             //MAC_rx_ctrl interf     (//MAC_rx_ctrl interf   ),
+             .Fifo_data                (Fifo_data              ),
+             .Fifo_rd                  (Fifo_rd                ),
+             .Fifo_rd_finish           (Fifo_rd_finish         ),
+             .Fifo_rd_retry            (Fifo_rd_retry          ),
+             .Fifo_eop                 (Fifo_eop               ),
+             .Fifo_da                  (Fifo_da                ),
+             .Fifo_ra                  (Fifo_ra                ),
+             .Fifo_data_err_empty      (Fifo_data_err_empty    ),
+             .Fifo_data_err_full       (Fifo_data_err_full     ),
+             //user interface         (//user interface       ),
+             .Tx_mac_wa                (Tx_mac_wa              ),
+             .Tx_mac_wr                (Tx_mac_wr              ),
+             .Tx_mac_data              (Tx_mac_data            ),
+             .Tx_mac_BE                (Tx_mac_BE              ),
+             .Tx_mac_sop               (Tx_mac_sop             ),
+             .Tx_mac_eop               (Tx_mac_eop             ),
+             //host interface         (//host interface       ),
+             .FullDuplex               (FullDuplex             ),
+             .Tx_Hwmark                (Tx_Hwmark              ),
+             .Tx_Lwmark                (Tx_Lwmark              )
+             );
 
-Ramdon_gen U_Ramdon_gen(
+random_gen U_random_gen(
 .Reset                    (Reset                  ),
 .Clk                      (Clk                    ),
 .Init                     (Random_init            ),
@@ -263,4 +263,4 @@
 .Random_time_meet         (Random_time_meet       ) 
 );
 
-endmodule
\ No newline at end of file
+endmodule

Modified: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/RMON/RMON_ctrl.v
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/RMON/RMON_ctrl.v
      2007-05-08 18:19:08 UTC (rev 5257)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/RMON/RMON_ctrl.v
      2007-05-09 03:32:54 UTC (rev 5258)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////
 ////                                                              ////
-////  RMON_CTRL.v                                             ////
+////  RMON_ctrl.v                                             ////
 ////                                                              ////
 ////  This file is part of the Ethernet IP core project           ////
 ////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////
@@ -52,7 +52,7 @@
 // Revision 1.1.1.1  2005/12/13 01:51:45  Administrator
 // no message
 //  
-module RMON_CTRL (
+module RMON_ctrl (
 Clk             ,      
 Reset           ,      
 //RMON_CTRL        
@@ -287,4 +287,4 @@
     else if (Pipeline&&CurrentState==StateCPU)
         CPU_rd_dout     <=Douta;        
 
-endmodule           
\ No newline at end of file
+endmodule           

Modified: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/RMON/RMON_dpram.v
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/RMON/RMON_dpram.v
     2007-05-08 18:19:08 UTC (rev 5257)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/RMON/RMON_dpram.v
     2007-05-09 03:32:54 UTC (rev 5258)
@@ -1,46 +1,46 @@
-module RMON_dpram(
-Reset   ,         
-Clk     ,         
-//port-a for Rmon 
-Addra,            
-Dina,            
-Douta,           
-Wea,             
-//port-b for CPU  
-Addrb,            
-Doutb   
-);
+module RMON_dpram
+  (Reset   ,         
+   Clk     ,         
+   //port-a for Rmon 
+   Addra,            
+   Dina,            
+   Douta,           
+   Wea,             
+   //port-b for CPU  
+   Addrb,            
+   Doutb   
+   );
 
-input           Reset   ;
-input           Clk     ; 
-                //port-a for Rmon  
-input   [5:0]   Addra;
-input   [31:0]  Dina;
-output  [31:0]  Douta;
-input           Wea;
-                //port-b for CPU
-input   [5:0]   Addrb;
-output  [31:0]  Doutb;
-//******************************************************************************
-//internal signals                                                             
 
-//******************************************************************************
+   input           Reset   ;
+   input           Clk     ; 
+   //port-a for Rmon  
+   input [5:0]            Addra;
+   input [31:0]    Dina;
+   output [31:0]   Douta;
+   input           Wea;
+   //port-b for CPU
+   input [5:0]            Addrb;
+   output [31:0]   Doutb;
+   // 
******************************************************************************
+   //internal signals                                                          
    
+   // 
******************************************************************************
 
-wire            Clka;
-wire            Clkb;
-assign          Clka=Clk;
-assign  #2      Clkb=Clk;
-//******************************************************************************
-
-duram #(32,6,"M4K") U_duram(    
-.data_a         (Dina           ),  
-.data_b         (32'b0          ),  
-.wren_a         (Wea            ),  
-.wren_b         (1'b0           ),  
-.address_a      (Addra          ),  
-.address_b      (Addrb          ),  
-.clock_a        (Clka           ),  
-.clock_b        (Clkb           ),  
-.q_a            (Douta          ),  
-.q_b            (Doutb          )); 
-
-endmodule
\ No newline at end of file
+   wire            Clka;
+   wire            Clkb;
+   assign          Clka=Clk;
+   assign #2      Clkb=Clk;
+   // 
******************************************************************************
+   
+   duram #(32,6) 
+     U_duram(.data_a         (Dina           ),  
+            .data_b         (32'b0          ),  
+            .wren_a         (Wea            ),  
+            .wren_b         (1'b0           ),  
+            .address_a      (Addra          ),  
+            .address_b      (Addrb          ),  
+            .clock_a        (Clka           ),  
+            .clock_b        (Clkb           ),  
+            .q_a            (Douta          ),  
+            .q_b            (Doutb          )); 
+   
+endmodule // RMON_dpram

Modified: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/RMON.v
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/RMON.v
        2007-05-08 18:19:08 UTC (rev 5257)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/RMON.v
        2007-05-09 03:32:54 UTC (rev 5258)
@@ -53,131 +53,128 @@
 // no message
 // 
 
-module RMON ( 
-Clk                 ,
-Reset               ,
-//Tx_RMON            
-Tx_pkt_type_rmon    ,
-Tx_pkt_length_rmon  ,
-Tx_apply_rmon       ,
-Tx_pkt_err_type_rmon,
-//Tx_RMON            
-Rx_pkt_type_rmon    ,
-Rx_pkt_length_rmon  ,
-Rx_apply_rmon       ,
-Rx_pkt_err_type_rmon,
-//CPU                
-CPU_rd_addr         ,
-CPU_rd_apply        ,
-CPU_rd_grant        ,
-CPU_rd_dout         
+module RMON 
+  (Clk                 ,
+   Reset               ,
+   //Tx_RMON            
+   Tx_pkt_type_rmon    ,
+   Tx_pkt_length_rmon  ,
+   Tx_apply_rmon       ,
+   Tx_pkt_err_type_rmon,
+   //Tx_RMON            
+   Rx_pkt_type_rmon    ,
+   Rx_pkt_length_rmon  ,
+   Rx_apply_rmon       ,
+   Rx_pkt_err_type_rmon,
+   //CPU                
+   CPU_rd_addr         ,
+   CPU_rd_apply        ,
+   CPU_rd_grant        ,
+   CPU_rd_dout         
+   );
+   
+   input               Clk                 ;
+   input               Reset               ;
+   //Tx_RMON
+   input [2:0]                Tx_pkt_type_rmon    ;
+   input [15:0]        Tx_pkt_length_rmon  ;
+   input               Tx_apply_rmon       ;
+   input [2:0]                Tx_pkt_err_type_rmon;
+   //Tx_RMON
+   input [2:0]                Rx_pkt_type_rmon    ;
+   input [15:0]        Rx_pkt_length_rmon  ;
+   input               Rx_apply_rmon       ;
+   input [2:0]                Rx_pkt_err_type_rmon;
+   //CPU
+   input [5:0]                CPU_rd_addr         ;
+   input               CPU_rd_apply        ;
+   output              CPU_rd_grant        ;
+   output [31:0]       CPU_rd_dout         ;
+   
+   // 
******************************************************************************  
+   //interface signals
+   // 
******************************************************************************  
+   wire                Reg_apply_0     ;
+   wire [4:0]         Reg_addr_0      ;
+   wire [15:0]                Reg_data_0      ;
+   wire                Reg_next_0      ;
+   wire                Reg_apply_1     ;
+   wire [4:0]         Reg_addr_1      ;
+   wire [15:0]                Reg_data_1      ;
+   wire                Reg_next_1      ;
+   wire [5:0]         Addra           ;
+   wire [31:0]                Dina            ;
+   wire [31:0]                Douta           ;
+   wire                Wea             ;
+   
+   // 
******************************************************************************  
+   
+   RMON_addr_gen 
+     U_0_Rx_RMON_addr_gen(.Clk                    (Clk                        
),
+                         .Reset                  (Reset                      ),
+                         //RMON                 (//RMON                     ),
+                         // .Pkt_type_rmon          (Rx_pkt_type_rmon          
 ),
+                         .Pkt_length_rmon        (Rx_pkt_length_rmon         
),     
+                         .Apply_rmon             (Rx_apply_rmon              ),
+                         .Pkt_err_type_rmon      (Rx_pkt_err_type_rmon       ),
+                         //Rmon_ctrl            (//Rmon_ctrl                ),
+                         .Reg_apply              (Reg_apply_0                ),
+                         .Reg_addr               (Reg_addr_0                 ),
+                          .Reg_data               (Reg_data_0                 
),
+                         .Reg_next               (Reg_next_0                 ),
+                          //CPU                  (//CPU                       
),
+                         .Reg_drop_apply         (                           
));
+   
+   RMON_addr_gen 
+     U_0_Tx_RMON_addr_gen(.Clk                    (Clk                        
),
+                          .Reset                  (Reset                      
),
+                          //RMON                 (//RMON                     ),
+                         .Pkt_type_rmon          (Tx_pkt_type_rmon           
),              
+                         .Pkt_length_rmon        (Tx_pkt_length_rmon         
),                       
+                         .Apply_rmon             (Tx_apply_rmon              ),
+                         .Pkt_err_type_rmon      (Tx_pkt_err_type_rmon       ),
+                         //Rmon_ctrl            (//Rmon_ctrl                ), 
                        
+                         .Reg_apply              (Reg_apply_1                
),                  
+                         .Reg_addr               (Reg_addr_1                 
),                   
+                         .Reg_data               (Reg_data_1                 
),                  
+                         .Reg_next               (Reg_next_1                 
),                 
+                         //CPU                  (//CPU                       
),                     
+                         .Reg_drop_apply         (                           
));
+   
+   RMON_ctrl 
+     U_RMON_ctrl(.Clk                    (Clk                        ),        
+                .Reset                  (Reset                      ), 
+                //RMON_CTRL            (//RMON_CTRL                ),  
+                .Reg_apply_0            (Reg_apply_0                ),         
+                .Reg_addr_0             (Reg_addr_0                 ), 
+                .Reg_data_0             (Reg_data_0                 ), 
+                .Reg_next_0             (Reg_next_0                 ), 
+                .Reg_apply_1            (Reg_apply_1                ),         
+                .Reg_addr_1             (Reg_addr_1                 ), 
+                .Reg_data_1             (Reg_data_1                 ), 
+                .Reg_next_1             (Reg_next_1                 ), 
+                //dual-port ram        (//dual-port ram            ),  
+                .Addra                  (Addra                      ), 
+                .Dina                   (Dina                       ), 
+                .Douta                  (Douta                      ), 
+                .Wea                    (Wea                        ),       
+                //CPU                  (//CPU                      ),    
+                .CPU_rd_addr            (CPU_rd_addr                ),     
+                .CPU_rd_apply           (CPU_rd_apply               ), 
+                .CPU_rd_grant           (CPU_rd_grant               ), 
+                .CPU_rd_dout            (CPU_rd_dout                ) 
+                );
 
-);
-input               Clk                 ;
-input               Reset               ;
-                    //Tx_RMON
-input   [2:0]       Tx_pkt_type_rmon    ;
-input   [15:0]      Tx_pkt_length_rmon  ;
-input               Tx_apply_rmon       ;
-input   [2:0]       Tx_pkt_err_type_rmon;
-                    //Tx_RMON
-input   [2:0]       Rx_pkt_type_rmon    ;
-input   [15:0]      Rx_pkt_length_rmon  ;
-input               Rx_apply_rmon       ;
-input   [2:0]       Rx_pkt_err_type_rmon;
-                    //CPU
-input   [5:0]       CPU_rd_addr         ;
-input               CPU_rd_apply        ;
-output              CPU_rd_grant        ;
-output  [31:0]      CPU_rd_dout         ;
-
-//******************************************************************************
  
-//interface signals
-//******************************************************************************
  
-wire                Reg_apply_0     ;
-wire    [4:0]       Reg_addr_0      ;
-wire    [15:0]      Reg_data_0      ;
-wire                Reg_next_0      ;
-wire                Reg_apply_1     ;
-wire    [4:0]       Reg_addr_1      ;
-wire    [15:0]      Reg_data_1      ;
-wire                Reg_next_1      ;
-wire    [5:0]       Addra           ;
-wire    [31:0]      Dina            ;
-wire    [31:0]      Douta           ;
-wire                Wea             ;
-
-//******************************************************************************
  
-
-assign      RxAddrb=0;
-assign      TxAddrb=0;
-
-RMON_addr_gen U_0_Rx_RMON_addr_gen(
-.Clk                    (Clk                        ),                         
                   
-.Reset                  (Reset                      ),                         
     
- //RMON                 (//RMON                     ),                         
        
-.Pkt_type_rmon          (Rx_pkt_type_rmon           ),                         
 
-.Pkt_length_rmon        (Rx_pkt_length_rmon         ),                         
         
-.Apply_rmon             (Rx_apply_rmon              ),
-.Pkt_err_type_rmon      (Rx_pkt_err_type_rmon       ),                         
    
- //Rmon_ctrl            (//Rron_ctrl                ),                         
                 
-.Reg_apply              (Reg_apply_0                ),                         
 
-.Reg_addr               (Reg_addr_0                 ),                         
     
-.Reg_data               (Reg_data_0                 ),                         
     
-.Reg_next               (Reg_next_0                 ),                         
     
- //CPU                  (//CPU                       ),                        
         
-.Reg_drop_apply         (                           ));
-
-RMON_addr_gen U_0_Tx_RMON_addr_gen(
-.Clk                    (Clk                        ),                         
                   
-.Reset                  (Reset                      ),                         
     
- //RMON                 (//RMON                     ),                         
        
-.Pkt_type_rmon          (Tx_pkt_type_rmon           ),                         
 
-.Pkt_length_rmon        (Tx_pkt_length_rmon         ),                         
         
-.Apply_rmon             (Tx_apply_rmon              ),
-.Pkt_err_type_rmon      (Tx_pkt_err_type_rmon       ),                         
    
- //Rmon_ctrl            (//Rron_ctrl                ),                         
                     
-.Reg_apply              (Reg_apply_1                ),                         
 
-.Reg_addr               (Reg_addr_1                 ),                         
     
-.Reg_data               (Reg_data_1                 ),                         
     
-.Reg_next               (Reg_next_1                 ),                         
     
- //CPU                  (//CPU                       ),                        
         
-.Reg_drop_apply         (                           ));
-
-RMON_CTRL U_RMON_CTRL(
-.Clk                    (Clk                        ),        
-.Reset                  (Reset                      ), 
- //RMON_CTRL            (//RMON_CTRL                ),  
-.Reg_apply_0            (Reg_apply_0                ),         
-.Reg_addr_0             (Reg_addr_0                 ), 
-.Reg_data_0             (Reg_data_0                 ), 
-.Reg_next_0             (Reg_next_0                 ), 
-.Reg_apply_1            (Reg_apply_1                ),         
-.Reg_addr_1             (Reg_addr_1                 ), 
-.Reg_data_1             (Reg_data_1                 ), 
-.Reg_next_1             (Reg_next_1                 ), 
- //dual-port ram        (//dual-port ram            ),  
-.Addra                  (Addra                      ), 
-.Dina                   (Dina                       ), 
-.Douta                  (Douta                      ), 
-.Wea                    (Wea                        ),       
- //CPU                  (//CPU                      ),    
-.CPU_rd_addr            (CPU_rd_addr                ),     
-.CPU_rd_apply           (CPU_rd_apply               ), 
-.CPU_rd_grant           (CPU_rd_grant               ), 
-.CPU_rd_dout            (CPU_rd_dout                ) 
-);
-
-RMON_dpram U_Rx_RMON_dpram(
-.Reset                  (Reset                      ),       
-.Clk                    (Clk                        ), 
-//port-a for Rmon       (//port-a for Rmon          ),
-.Addra                  (Addra                      ),
-.Dina                   (Dina                       ),
-.Douta                  (                           ),
-.Wea                    (Wea                        ),
-//port-b for CPU        (//port-b for CPU           ),
-.Addrb                  (Addra                      ),
-.Doutb                  (Douta                      ));
-
-endmodule
\ No newline at end of file
+   RMON_dpram 
+     U_Rx_RMON_dpram(.Reset                  (Reset                      ),    
   
+                    .Clk                    (Clk                        ), 
+                    //port-a for Rmon       (//port-a for Rmon          ),
+                    .Addra                  (Addra                      ),
+                    .Dina                   (Dina                       ),
+                    .Douta                  (                           ),
+                    .Wea                    (Wea                        ),
+                    //port-b for CPU        (//port-b for CPU           ),
+                    .Addrb                  (Addra                      ),
+                    .Doutb                  (Douta                      ));
+   
+endmodule // RMON

Deleted: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/TECH/CLK_DIV2.v

Modified: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Entries
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Entries
      2007-05-08 18:19:08 UTC (rev 5257)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Entries
      2007-05-09 03:32:54 UTC (rev 5258)
@@ -1,5 +1,5 @@
-/CLK_DIV2.v/1.3/Thu Jan 19 14:07:56 2006//
 /CLK_SWITCH.v/1.3/Thu Jan 19 14:07:56 2006//
-/duram.v/1.2/Thu Jan 19 14:07:56 2006//
 D/altera////
 D/xilinx////
+/duram.v/1.2/Wed May  2 02:54:45 2007//
+/CLK_DIV2.v/1.3/Wed May  2 06:49:15 2007//

Copied: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/TECH/clkdiv2.v
 (from rev 5191, 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/TECH/CLK_DIV2.v)
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/TECH/clkdiv2.v
                                (rev 0)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/TECH/clkdiv2.v
        2007-05-09 03:32:54 UTC (rev 5258)
@@ -0,0 +1,71 @@
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+////  CLK_DIV2.v                                                  ////
+////                                                              ////
+////  This file is part of the Ethernet IP core project           ////
+////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////
+////                                                              ////
+////  Author(s):                                                  ////
+////      - Jon Gao (address@hidden)                            ////
+////                                                              ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+//// Copyright (C) 2001 Authors                                   ////
+////                                                              ////
+//// This source file may be used and distributed without         ////
+//// restriction provided that this copyright statement is not    ////
+//// removed from the file and that any derivative work contains  ////
+//// the original copyright notice and the associated disclaimer. ////
+////                                                              ////
+//// This source file is free software; you can redistribute it   ////
+//// and/or modify it under the terms of the GNU Lesser General   ////
+//// Public License as published by the Free Software Foundation; ////
+//// either version 2.1 of the License, or (at your option) any   ////
+//// later version.                                               ////
+////                                                              ////
+//// This source is distributed in the hope that it will be       ////
+//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
+//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
+//// PURPOSE.  See the GNU Lesser General Public License for more ////
+//// details.                                                     ////
+////                                                              ////
+//// You should have received a copy of the GNU Lesser General    ////
+//// Public License along with this source; if not, download it   ////
+//// from http://www.opencores.org/lgpl.shtml                     ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+//                                                                    
+// CVS Revision History                                               
+//                                                                    
+// $Log: CLK_DIV2.v,v $
+// Revision 1.3  2006/01/19 14:07:56  maverickist
+// verification is complete.
+//
+// Revision 1.2  2005/12/16 06:44:20  Administrator
+// replaced tab with space.
+// passed 9.6k length frame test.
+//
+// Revision 1.1.1.1  2005/12/13 01:51:44  Administrator
+// no message
+// 
+
+
+//////////////////////////////////////////////////////////////////////
+// This file can only used for simulation .
+// You need to replace it with your own element according to technology
+//////////////////////////////////////////////////////////////////////
+
+module clkdiv2 (
+input       Reset,
+input       IN,
+output  reg OUT
+);
+
+always @ (posedge IN or posedge Reset)
+    if (Reset)
+        OUT     <=0;  
+    else
+        OUT     <=!OUT;    
+    
+endmodule

Modified: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/TECH/duram.v
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/TECH/duram.v
  2007-05-08 18:19:08 UTC (rev 5257)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/TECH/duram.v
  2007-05-09 03:32:54 UTC (rev 5258)
@@ -1,87 +1,103 @@
-module duram(
-data_a,
-data_b,
-wren_a,
-wren_b,
-address_a,
-address_b,
-clock_a,
-clock_b,
-q_a,
-q_b);   //synthesis syn_black_box
 
-parameter DATA_WIDTH    = 32; 
-parameter ADDR_WIDTH    = 5;  
-parameter BLK_RAM_TYPE  = "AUTO";
-parameter DURAM_MODE    = "BIDIR_DUAL_PORT";
-parameter ADDR_DEPTH    = 2**ADDR_WIDTH;
 
+module duram
+  (data_a,
+   data_b,
+   wren_a,
+   wren_b,
+   address_a,
+   address_b,
+   clock_a,
+   clock_b,
+   q_a,
+   q_b);
 
+   parameter DATA_WIDTH = 32; 
+   parameter ADDR_WIDTH = 5;  
+   parameter ADDR_DEPTH = 1<<ADDR_WIDTH;
+   
+   input [DATA_WIDTH-1:0] data_a;
+   input                 wren_a;
+   input [ADDR_WIDTH-1:0] address_a;
+   input                 clock_a;
+   output                reg [DATA_WIDTH-1:0] q_a;
+   
+   input [DATA_WIDTH-1:0] data_b;
+   input                 wren_b;
+   input [ADDR_WIDTH-1:0] address_b;
+   input                 clock_b;
+   output                reg [DATA_WIDTH-1:0] q_b;
+   
+   reg [DATA_WIDTH-1:0]   ram  [0:ADDR_DEPTH-1];
+   
+   always @(posedge clock_a)
+     begin
+       if(wren_a)
+         ram[address_a] <= data_a;
+       q_a <= ram[address_a];
+     end
+   
+   always @(posedge clock_b)
+     begin
+       if(wren_b)
+         ram[address_b] <= data_b;
+       q_b <= ram[address_b];
+     end
+   
+endmodule // duram
 
-input   [DATA_WIDTH -1:0]   data_a;
-input                       wren_a;
-input   [ADDR_WIDTH -1:0]   address_a;
-input                       clock_a;
-output  [DATA_WIDTH -1:0]   q_a;
-input   [DATA_WIDTH -1:0]   data_b;
-input                       wren_b;
-input   [ADDR_WIDTH -1:0]   address_b;
-input                       clock_b;
-output  [DATA_WIDTH -1:0]   q_b;
+/*   
+   altsyncram 
+     U_altsyncram (.wren_a         (wren_a),
+                  .wren_b         (wren_b),
+                  .data_a         (data_a),
+                  .data_b         (data_b),
+                  .address_a      (address_a),
+                  .address_b      (address_b),
+                  .clock0         (clock_a),
+                  .clock1         (clock_b),
+                  .q_a            (q_a),
+                  .q_b            (q_b),
+                  // synopsys translate_off
+                  .aclr0 (),
+                  .aclr1 (),
+                  .addressstall_a (),
+                  .addressstall_b (),
+                  .byteena_a (),
+                  .byteena_b (),
+                  .clocken0 (),
+                  .clocken1 (),
+                  .rden_b ()
+                  // synopsys translate_on
+                  );
  
- 
+ //parameter  BLK_RAM_TYPE = "AUTO";
+ //parameter DURAM_MODE = "BIDIR_DUAL_PORT";
+   
+ defparam                  
+ U_altsyncram.intended_device_family = "Stratix",
+ U_altsyncram.ram_block_type = BLK_RAM_TYPE,
+ U_altsyncram.operation_mode = DURAM_MODE,
+ U_altsyncram.width_a = DATA_WIDTH,
+ U_altsyncram.widthad_a = ADDR_WIDTH,
+ U_altsyncram.width_b = DATA_WIDTH,
+ U_altsyncram.widthad_b = ADDR_WIDTH,
+ U_altsyncram.lpm_type = "altsyncram",
+ U_altsyncram.width_byteena_a = 1,
+ U_altsyncram.width_byteena_b = 1,
+ U_altsyncram.outdata_reg_a = "UNREGISTERED",
+ U_altsyncram.outdata_aclr_a = "NONE",
+ U_altsyncram.outdata_reg_b = "UNREGISTERED",
+ U_altsyncram.indata_aclr_a = "NONE",
+ U_altsyncram.wrcontrol_aclr_a = "NONE",
+ U_altsyncram.address_aclr_a = "NONE",
+ U_altsyncram.indata_reg_b = "CLOCK1",
+ U_altsyncram.address_reg_b = "CLOCK1",
+ U_altsyncram.wrcontrol_wraddress_reg_b = "CLOCK1",
+ U_altsyncram.indata_aclr_b = "NONE",
+ U_altsyncram.wrcontrol_aclr_b = "NONE",
+ U_altsyncram.address_aclr_b = "NONE",
+ U_altsyncram.outdata_aclr_b = "NONE",
+ U_altsyncram.power_up_uninitialized = "FALSE";
 
-altsyncram U_altsyncram (
-.wren_a         (wren_a),
-.wren_b         (wren_b),
-.data_a         (data_a),
-.data_b         (data_b),
-.address_a      (address_a),
-.address_b      (address_b),
-.clock0         (clock_a),
-.clock1         (clock_b),
-.q_a            (q_a),
-.q_b            (q_b),
-// synopsys translate_off
-.aclr0 (),
-.aclr1 (),
-.addressstall_a (),
-.addressstall_b (),
-.byteena_a (),
-.byteena_b (),
-.clocken0 (),
-.clocken1 (),
-.rden_b ()
-// synopsys translate_on
-);
-    defparam
-        U_altsyncram.intended_device_family = "Stratix",
-        U_altsyncram.ram_block_type = BLK_RAM_TYPE,
-        U_altsyncram.operation_mode = DURAM_MODE,
-        U_altsyncram.width_a = DATA_WIDTH,
-        U_altsyncram.widthad_a = ADDR_WIDTH,
-//      U_altsyncram.numwords_a = 256,
-        U_altsyncram.width_b = DATA_WIDTH,
-        U_altsyncram.widthad_b = ADDR_WIDTH,
-//      U_altsyncram.numwords_b = 256,
-        U_altsyncram.lpm_type = "altsyncram",
-        U_altsyncram.width_byteena_a = 1,
-        U_altsyncram.width_byteena_b = 1,
-        U_altsyncram.outdata_reg_a = "UNREGISTERED",
-        U_altsyncram.outdata_aclr_a = "NONE",
-        U_altsyncram.outdata_reg_b = "UNREGISTERED",
-        U_altsyncram.indata_aclr_a = "NONE",
-        U_altsyncram.wrcontrol_aclr_a = "NONE",
-        U_altsyncram.address_aclr_a = "NONE",
-        U_altsyncram.indata_reg_b = "CLOCK1",
-        U_altsyncram.address_reg_b = "CLOCK1",
-        U_altsyncram.wrcontrol_wraddress_reg_b = "CLOCK1",
-        U_altsyncram.indata_aclr_b = "NONE",
-        U_altsyncram.wrcontrol_aclr_b = "NONE",
-        U_altsyncram.address_aclr_b = "NONE",
-        U_altsyncram.outdata_aclr_b = "NONE",
-        U_altsyncram.power_up_uninitialized = "FALSE";
- 
-endmodule 
-
-
+ */

Modified: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/miim/eth_clockgen.v
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/miim/eth_clockgen.v
   2007-05-08 18:19:08 UTC (rev 5257)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/miim/eth_clockgen.v
   2007-05-09 03:32:54 UTC (rev 5258)
@@ -78,66 +78,65 @@
 //
 //
 
-`timescale 1ns/10ps
-
 module eth_clockgen(Clk, Reset, Divider, MdcEn, MdcEn_n, Mdc);
+   
+   parameter Tp=1;
+   
+   input     Clk;              // Input clock (Host clock)
+   input     Reset;            // Reset signal
+   input [7:0] Divider;          // Divider (input clock will be divided by 
the Divider[7:0])
+   
+   output      Mdc;              // Output clock
+   output      MdcEn;            // Enable signal is asserted for one Clk 
period before Mdc rises.
+   output      MdcEn_n;          // Enable signal is asserted for one Clk 
period before Mdc falls.
+   
+   reg         Mdc;
+   reg [7:0]   Counter;
+   
+   wire        CountEq0;
+   wire [7:0]  CounterPreset;
+   wire [7:0]  TempDivider;
+   
+   
+   assign      TempDivider[7:0]   = (Divider[7:0]<2)? 8'h02 : Divider[7:0]; // 
If smaller than 2
+   assign      CounterPreset[7:0] = (TempDivider[7:0]>>1) -1;               // 
We are counting half of period
+   
+   
+   // Counter counts half period
+   always @ (posedge Clk or posedge Reset)
+     begin
+       if(Reset)
+         Counter[7:0] <= #Tp 8'h1;
+       else
+         begin
+            if(CountEq0)
+               begin
+                 Counter[7:0] <= #Tp CounterPreset[7:0];
+               end
+            else
+               Counter[7:0] <= #Tp Counter - 8'h1;
+         end
+     end
+   
+   
+   // Mdc is asserted every other half period
+   always @ (posedge Clk or posedge Reset)
+     begin
+       if(Reset)
+         Mdc <= #Tp 1'b0;
+       else
+         begin
+            if(CountEq0)
+               Mdc <= #Tp ~Mdc;
+         end
+     end
+   
+   
+   assign CountEq0 = Counter == 8'h0;
+   assign MdcEn = CountEq0 & ~Mdc;
+   assign MdcEn_n = CountEq0 & Mdc;
+   
+endmodule // eth_clockgen
 
-parameter Tp=1;
 
-input       Clk;              // Input clock (Host clock)
-input       Reset;            // Reset signal
-input [7:0] Divider;          // Divider (input clock will be divided by the 
Divider[7:0])
 
-output      Mdc;              // Output clock
-output      MdcEn;            // Enable signal is asserted for one Clk period 
before Mdc rises.
-output      MdcEn_n;          // Enable signal is asserted for one Clk period 
before Mdc falls.
-
-reg         Mdc;
-reg   [7:0] Counter;
-
-wire        CountEq0;
-wire  [7:0] CounterPreset;
-wire  [7:0] TempDivider;
-
-
-assign TempDivider[7:0]   = (Divider[7:0]<2)? 8'h02 : Divider[7:0]; // If 
smaller than 2
-assign CounterPreset[7:0] = (TempDivider[7:0]>>1) -1;               // We are 
counting half of period
-
-
-// Counter counts half period
-always @ (posedge Clk or posedge Reset)
-begin
-  if(Reset)
-    Counter[7:0] <= #Tp 8'h1;
-  else
-    begin
-      if(CountEq0)
-        begin
-          Counter[7:0] <= #Tp CounterPreset[7:0];
-        end
-      else
-        Counter[7:0] <= #Tp Counter - 8'h1;
-    end
-end
-
-
-// Mdc is asserted every other half period
-always @ (posedge Clk or posedge Reset)
-begin
-  if(Reset)
-    Mdc <= #Tp 1'b0;
-  else
-    begin
-      if(CountEq0)
-        Mdc <= #Tp ~Mdc;
-    end
-end
-
-
-assign CountEq0 = Counter == 8'h0;
-assign MdcEn = CountEq0 & ~Mdc;
-assign MdcEn_n = CountEq0 & Mdc;
-
-endmodule
-
-

Modified: 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/reg_int.v
===================================================================
--- 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/reg_int.v
     2007-05-08 18:19:08 UTC (rev 5257)
+++ 
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/reg_int.v
     2007-05-09 03:32:54 UTC (rev 5258)
@@ -1,4 +1,4 @@
-module Reg_int (
+module reg_int (
 input                   Reset                   ,
 input                   Clk_reg                 ,
 input                   CSB                     ,
@@ -176,4 +176,4 @@
     else if (CWR_pulse && !CCSB && CA_reg[7:1] ==CA_reg_set[6:0])  
         RegOut      <=CD_in_reg;
 
-endmodule           
\ No newline at end of file
+endmodule           





reply via email to

[Prev in Thread] Current Thread [Next in Thread]