gateware

A collection of little open source FPGA hobby projects
git clone http://frotz.net/git/gateware.git
Log | Files | Refs | README

eth_rgmii_rx_glue_ecp5.sv (985B)


      1 // Copyright 2020 Brian Swetland <swetland@frotz.net>
      2 // Licensed under the Apache License, Version 2.0.
      3 
      4 `default_nettype none
      5 
      6 module eth_rgmii_rx_glue (
      7 	input wire rx_clk,
      8 	input wire pin_rx_dv,
      9 	input wire [3:0]pin_rx_data,
     10 	output wire rx_dv,
     11 	output wire rx_err,
     12 	output wire [7:0]rx_data
     13 );
     14 
     15 `ifndef verilator
     16 wire delay_rx_dv;
     17 wire [3:0]delay_rx_data;
     18 
     19 DELAYF #(
     20 	.DEL_MODE("SCLK_CENTERED"),
     21 	.DEL_VALUE(80) // units of ~25ps
     22 	) ctrl_delay (
     23 	.LOADN(1),
     24 	.MOVE(0),
     25 	.DIRECTION(0),
     26 	.A(pin_rx_dv),
     27 	.Z(delay_rx_dv)
     28 );
     29 IDDRX1F ctrl_ddr (
     30 	.D(delay_rx_dv),
     31 	.SCLK(rx_clk),
     32 	.RST(0),
     33 	.Q0(rx_dv),
     34 	.Q1(rx_err)
     35 );
     36 
     37 genvar i;
     38 
     39 generate for (i = 0; i < 4; i++) begin
     40 DELAYF #(
     41 	.DEL_MODE("SCLK_CENTERED"),
     42 	.DEL_VALUE(80) // units of ~25ps
     43 	) data_delay (
     44 	.LOADN(1),
     45 	.MOVE(0),
     46 	.DIRECTION(0),
     47 	.A(pin_rx_data[i]),
     48 	.Z(delay_rx_data[i])
     49 );
     50 IDDRX1F data_ddr (
     51 	.D(delay_rx_data[i]),
     52 	.SCLK(rx_clk),
     53 	.RST(0),
     54 	.Q0(rx_data[i]),
     55 	.Q1(rx_data[i+4])
     56 );
     57 end endgenerate
     58 `endif
     59 
     60 endmodule