Merge branch 'new_eth' of http://gnuradio.org/git/matt into master
[debian/gnuradio] / usrp2 / fpga / eth / demo / verilog / demo.v
diff --git a/usrp2/fpga/eth/demo/verilog/demo.v b/usrp2/fpga/eth/demo/verilog/demo.v
deleted file mode 100644 (file)
index 649903c..0000000
+++ /dev/null
@@ -1,378 +0,0 @@
-module demo(\r
-  Reset_n,\r
-  Clk_100M,\r
-  Clk_125M, // GMII only\r
-\r
-  RS232_TXD,\r
-  RS232_RXD,\r
-\r
-  USB_TXD,\r
-  USB_RXD,\r
-\r
-  //--- 10/100/1000BASE-T Ethernet PHY (MII/GMII)\r
-  PHY_RESET_n,\r
-\r
-  PHY_RXC,\r
-  PHY_RXD,\r
-  PHY_RXDV,\r
-  PHY_RXER,\r
-\r
-  PHY_GTX_CLK, // GMII only\r
-  PHY_TXC,\r
-  PHY_TXD,\r
-  PHY_TXEN,\r
-  PHY_TXER,\r
-\r
-  PHY_COL,\r
-  PHY_CRS,\r
-\r
-  PHY_MDC,\r
-  PHY_MDIO,\r
-\r
-  // Misc. I/Os\r
-  LED,\r
-  Button\r
-);\r
-\r
-  input        Reset_n;\r
-  input        Clk_100M;\r
-  input        Clk_125M; // GMII\r
-\r
-  output       RS232_TXD;\r
-  input        RS232_RXD;\r
-\r
-  output       USB_TXD;\r
-  input        USB_RXD;\r
-\r
-  //--- 10/100/1000BASE-T Ethernet PHY (MII/GMII)\r
-  output       PHY_RESET_n;\r
-\r
-  input        PHY_RXC;\r
-  input [7:0]  PHY_RXD;\r
-  input        PHY_RXDV;\r
-  input        PHY_RXER;\r
-\r
-  output       PHY_GTX_CLK; // GMII only\r
-  input        PHY_TXC;\r
-  output [7:0] PHY_TXD;\r
-  output       PHY_TXEN;\r
-  output       PHY_TXER;\r
-\r
-  input        PHY_COL;\r
-  input        PHY_CRS;\r
-\r
-  output       PHY_MDC;\r
-  inout        PHY_MDIO;\r
-\r
-  // Misc. I/Os\r
-  output [1:4] LED;\r
-\r
-  input [1:4]  Button;\r
-\r
-  //-------------------------------------------------------------------------\r
-  // Local declarations\r
-  //-------------------------------------------------------------------------\r
-\r
-  // Rename to "standard" core clock name\r
-  wire Clk = Clk_100M;\r
-\r
-  reg [27:0] Counter;\r
-  always @( negedge Reset_n or posedge Clk )\r
-    if ( ~Reset_n )\r
-      Counter <= 0;\r
-    else\r
-      Counter <= Counter + 1;\r
-\r
-  assign LED[1:4] = Counter[27:24];\r
-\r
-  //-------------------------------------------------------------------------\r
-  // Instantiation of sub-modules\r
-  //-------------------------------------------------------------------------\r
-\r
-  //--- UART ----------------------------------------------------------------\r
-\r
-  wire       UART_RXD;\r
-  wire       UART_TXD;\r
-  wire       UART_RxValid;\r
-  wire [7:0] UART_RxData;\r
-  wire       UART_TxReady;\r
-  wire       UART_TxValid;\r
-  wire [7:0] UART_TxData;\r
-\r
-  demo_uart demo_uart(\r
-    .Reset_n( Reset_n ),\r
-    .Clk    ( Clk     ),\r
-\r
-    // Interface to UART PHY\r
-    .RXD_i( UART_RXD ),\r
-    .TXD_o( UART_TXD ),\r
-\r
-    // Clk is divided by (Prescaler+1) to generate 16x the bitrate\r
-`ifdef EHDL_SIMULATION\r
-    .Prescaler_i( 16'd3 ), // Corresponds to VERY FAST - for simulation only!\r
-`else                      \r
-    .Prescaler_i( 16'd650 ), // Corresponds to 9600 baud (assuming 100 MHz clock)\r
-`endif\r
-                      \r
-    // Pulsed when RxData is valid\r
-    .RxValid_o( UART_RxValid ),\r
-    .RxData_o ( UART_RxData  ),\r
-\r
-    // Asserted when ready for a new Tx byte\r
-    .TxReady_o( UART_TxReady ),\r
-\r
-    // Pulsed when TxData is valid\r
-    .TxValid_i( UART_TxValid ),\r
-    .TxData_i ( UART_TxData  )\r
-  );\r
-\r
-  // Transmit & receive in parallel on either RS232 or USB/RS232 interface\r
-//  assign UART_RXD = RS232_RXD & USB_RXD; // RS232 signals are high when inactive\r
-  assign     UART_RXD = RS232_RXD;\r
-\r
-  assign RS232_TXD = UART_TXD;\r
-  assign USB_TXD   = UART_TXD;\r
-\r
-  //--- UART-to-Wishbone Master ---------------------------------------------\r
-\r
-  wire        WB_STB_ETH;\r
-  wire        WB_STB_PDM;\r
-  wire        WB_STB_PG;\r
-  wire        WB_CYC;\r
-  wire [14:0] WB_ADR;\r
-  wire        WB_WE;\r
-  wire [15:0] WB_DAT_Wr;\r
-  wire [15:0] WB_DAT_Rd;\r
-  wire        WB_ACK;\r
-\r
-  demo_wishbone_master demo_wishbone_master(\r
-    .Reset_n( Reset_n ),\r
-    .Clk    ( Clk     ),\r
-\r
-    //--- UART interface\r
-\r
-    // Pulsed when RxData_i is valid\r
-    .RxValid_i( UART_RxValid ),\r
-    .RxData_i ( UART_RxData  ),\r
-\r
-    // Asserted when ready for a new Tx byte\r
-    .TxReady_i( UART_TxReady ),\r
-\r
-    // Pulsed when TxData_o is valid\r
-    .TxValid_o( UART_TxValid ),\r
-    .TxData_o ( UART_TxData  ),\r
-\r
-    //--- Wishbone interface\r
-    .STB_ETH_O( WB_STB_ETH ),\r
-    .STB_PDM_O( WB_STB_PDM ),\r
-    .STB_PG_O ( WB_STB_PG  ),\r
-    .CYC_O    ( WB_CYC     ),\r
-    .ADR_O    ( WB_ADR     ),\r
-    .WE_O     ( WB_WE      ), \r
-    .DAT_O    ( WB_DAT_Wr  ),\r
-    .DAT_I    ( WB_DAT_Rd  ),\r
-    .ACK_I    ( WB_ACK     )\r
-  );\r
-\r
-  //--- Wishbone clients ----------------------------------------------------\r
-\r
-  //--- Packet Descriptor Memory --------------------------------------------\r
-\r
-  wire [15:0] WB_DAT_Rd_PDM;\r
-  wire        WB_ACK_PDM;\r
-\r
-  wire        PDM_Rd;\r
-  wire [13:0] PDM_Addr;\r
-  wire [31:0] PDM_RdData;\r
-\r
-  demo_packet_descriptor_memory demo_packet_descriptor_memory(\r
-    .Reset_n( Reset_n ),\r
-    .Clk    ( Clk     ),\r
-\r
-    //--- Wishbone interface\r
-    .STB_I( WB_STB_PDM    ),\r
-    .CYC_I( WB_CYC        ),\r
-    .ADR_I( WB_ADR        ),\r
-    .WE_I ( WB_WE         ), \r
-    .DAT_I( WB_DAT_Wr     ),\r
-    .DAT_O( WB_DAT_Rd_PDM ),\r
-    .ACK_O( WB_ACK_PDM    ),\r
-\r
-    //--- Packet Generator interface\r
-    // RdData_o is always valid exactly one clock after Addr_i changes\r
-    // and Rd_i is asserted\r
-    .Rd_i    ( PDM_Rd     ),\r
-    .Addr_i  ( PDM_Addr   ),\r
-    .RdData_o( PDM_RdData )\r
-  );\r
-\r
-  //--- Packet Generator ----------------------------------------------------\r
-\r
-  wire [15:0] WB_DAT_Rd_PG;\r
-  wire        WB_ACK_PG;\r
-\r
-  wire        Rx_mac_ra;\r
-  wire        Rx_mac_rd;\r
-  wire [31:0] Rx_mac_data;\r
-  wire [1:0]  Rx_mac_BE;\r
-  wire        Rx_mac_pa;\r
-  wire        Rx_mac_sop;\r
-  wire        Rx_mac_err;\r
-  wire        Rx_mac_eop;\r
-\r
-  wire        Tx_mac_wa;\r
-  wire        Tx_mac_wr;\r
-  wire [31:0] Tx_mac_data;\r
-  wire [1:0]  Tx_mac_BE;\r
-  wire        Tx_mac_sop;\r
-  wire        Tx_mac_eop;\r
-\r
-  demo_packet_generator demo_packet_generator(\r
-    .Reset_n( Reset_n ),\r
-    .Clk    ( Clk     ),\r
-\r
-    //--- Wishbone interface\r
-    .STB_I( WB_STB_PG    ),\r
-    .CYC_I( WB_CYC       ),\r
-    .ADR_I( WB_ADR[1:0]  ),\r
-    .WE_I ( WB_WE        ),\r
-    .DAT_I( WB_DAT_Wr    ),\r
-    .DAT_O( WB_DAT_Rd_PG ),\r
-    .ACK_O( WB_ACK_PG    ),\r
-\r
-    //--- Packet Descriptor Memory interface\r
-    // RdData_i is always valid exactly one clock after Addr_o changes\r
-    // and Rd_o is asserted\r
-    .Rd_o    ( PDM_Rd     ),\r
-    .Addr_o  ( PDM_Addr   ),\r
-    .RdData_i( PDM_RdData ),\r
-\r
-    //--- User (packet) interface\r
-    .Rx_mac_ra  ( Rx_mac_ra   ),\r
-    .Rx_mac_rd  ( Rx_mac_rd   ),\r
-    .Rx_mac_data( Rx_mac_data ),\r
-    .Rx_mac_BE  ( Rx_mac_BE   ),\r
-    .Rx_mac_pa  ( Rx_mac_pa   ),\r
-    .Rx_mac_sop ( Rx_mac_sop  ),\r
-    .Rx_mac_err ( Rx_mac_err  ),\r
-    .Rx_mac_eop ( Rx_mac_eop  ),\r
-\r
-    .Tx_mac_wa  ( Tx_mac_wa   ),\r
-    .Tx_mac_wr  ( Tx_mac_wr   ),\r
-    .Tx_mac_data( Tx_mac_data ),\r
-    .Tx_mac_BE  ( Tx_mac_BE   ),\r
-    .Tx_mac_sop ( Tx_mac_sop  ),\r
-    .Tx_mac_eop ( Tx_mac_eop  )\r
-  );\r
-\r
-  //--- Simple Wishbone client ----------------------------------------------\r
-\r
-  reg [15:0] Reg1;\r
-  reg [15:0] Reg2;\r
-\r
-  reg        WB_ACK_Reg;\r
-  reg [15:0] WB_DAT_Reg;\r
-\r
-  always @( negedge Reset_n or posedge Clk )\r
-    if ( ~Reset_n )\r
-      begin\r
-        WB_ACK_Reg <= 0;\r
-        WB_DAT_Reg <= 'b0;\r
-\r
-        Reg1 <= 16'h1234;\r
-        Reg2 <= 16'hABCD;\r
-      end\r
-    else\r
-      begin\r
-        WB_ACK_Reg <= 0;\r
-        if ( WB_CYC & ~( WB_STB_ETH | WB_STB_PG | WB_STB_PDM ) )\r
-          begin\r
-            WB_ACK_Reg <= 1;\r
-            if ( WB_WE )\r
-              begin\r
-                if ( WB_ADR[0] )\r
-                  Reg2 <= WB_DAT_Wr;\r
-                else\r
-                  Reg1 <= WB_DAT_Wr;\r
-              end\r
-            else\r
-              begin\r
-                if ( WB_ADR[0] )\r
-                  WB_DAT_Reg <= Reg2;\r
-                else\r
-                  WB_DAT_Reg <= Reg1;\r
-              end\r
-          end\r
-      end\r
-\r
-  //--- DUT - Ethernet Core -------------------------------------------------\r
-\r
-  wire [15:0] WB_DAT_Rd_ETH;\r
-  wire        WB_ACK_ETH;\r
-\r
-  wire [2:0] Speed;\r
-\r
-  MAC_top dut(\r
-    // System signals\r
-    .Clk_125M( Clk_125M ),\r
-    .Clk_user( Clk      ),\r
-    .Speed   ( Speed    ),\r
-\r
-    // Wishbone compliant core host interface\r
-    .RST_I( ~Reset_n ),\r
-    .CLK_I( Clk     ),\r
-    .STB_I( WB_STB_ETH    ),\r
-    .CYC_I( WB_CYC        ),\r
-    .ADR_I( WB_ADR[6:0]   ),\r
-    .WE_I ( WB_WE         ),\r
-    .DAT_I( WB_DAT_Wr     ),\r
-    .DAT_O( WB_DAT_Rd_ETH ),\r
-    .ACK_O( WB_ACK_ETH    ),\r
-\r
-    // User (packet) interface\r
-    .Rx_mac_ra  ( Rx_mac_ra   ),\r
-    .Rx_mac_rd  ( Rx_mac_rd   ),\r
-    .Rx_mac_data( Rx_mac_data ),\r
-    .Rx_mac_BE  ( Rx_mac_BE   ),\r
-    .Rx_mac_pa  ( Rx_mac_pa   ),\r
-    .Rx_mac_sop ( Rx_mac_sop  ),\r
-    .Rx_mac_err ( Rx_mac_err  ),\r
-    .Rx_mac_eop ( Rx_mac_eop  ),\r
-\r
-    .Tx_mac_wa  ( Tx_mac_wa   ),\r
-    .Tx_mac_wr  ( Tx_mac_wr   ),\r
-    .Tx_mac_data( Tx_mac_data ),\r
-    .Tx_mac_BE  ( Tx_mac_BE   ),\r
-    .Tx_mac_sop ( Tx_mac_sop  ),\r
-    .Tx_mac_eop ( Tx_mac_eop  ),\r
-\r
-    // PHY interface (GMII/MII)\r
-    .Gtx_clk( PHY_GTX_CLK  ), // Used only in GMII mode\r
-    .Rx_clk ( PHY_RXC      ),\r
-    .Tx_clk ( PHY_TXC      ),  // Used only in MII mode\r
-    .Tx_er  ( PHY_TXER     ),\r
-    .Tx_en  ( PHY_TXEN     ),\r
-    .Txd    ( PHY_TXD      ),\r
-    .Rx_er  ( PHY_RXER     ),\r
-    .Rx_dv  ( PHY_RXDV     ),\r
-    .Rxd    ( PHY_RXD      ),\r
-    .Crs    ( PHY_CRS      ),\r
-    .Col    ( PHY_COL      ),\r
-\r
-    // MDIO interface (to PHY)\r
-    .Mdio( PHY_MDIO ),\r
-    .Mdc ( PHY_MDC  )\r
-  );\r
-\r
-  //--- Combination of Wishbone read data and acknowledge -------------------\r
-\r
-  assign WB_DAT_Rd = ({16{WB_ACK_Reg}} & WB_DAT_Reg   ) |\r
-                     ({16{WB_ACK_PDM}} & WB_DAT_Rd_PDM) |\r
-                     ({16{WB_ACK_PG }} & WB_DAT_Rd_PG ) |\r
-                     ({16{WB_ACK_ETH}} & WB_DAT_Rd_ETH);\r
-\r
-  assign WB_ACK = WB_ACK_Reg | WB_ACK_PDM | WB_ACK_PG | WB_ACK_ETH;\r
-\r
-  assign PHY_RESET_n = Reset_n;                 \r
-\r
-endmodule\r