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