x393  1.0
FPGAcodeforElphelNC393camera
dqs_single.v
Go to the documentation of this file.
1 
39 `timescale 1ns/1ps
40 module dqs_single #(
41  parameter IODELAY_GRP ="IODELAY_MEMORY",
42  parameter integer IDELAY_VALUE = 0,
43  parameter integer ODELAY_VALUE = 0,
44  parameter IBUF_LOW_PWR ="TRUE",
45  parameter IOSTANDARD = "DIFF_SSTL15_T_DCI",
46  parameter SLEW = "SLOW",
47  parameter real REFCLK_FREQUENCY = 300.0,
48  parameter HIGH_PERFORMANCE_MODE = "FALSE"
49 )(
50  inout dqs,
51  inout ndqs,
52  input clk,
53  input clk_div,
54  input rst,
56 // output dqs_di, // debugging:
57  //Input buffer ddrc_sequencer_i/phy_cmd_i/phy_top_i/byte_lane0_i/dqs_i/iobufs_dqs_i/IBUFDS/IBUFDS_S (in ddrc_sequencer_i/phy_cmd_i/phy_top_i/byte_lane0_i/dqs_i/iobufs_dqs_i macro) has no loads. An input buffer must drive an internal load.
58 
59  input dci_disable, // disable DCI termination during writes and idle
60  input [7:0] dly_data,
61  input [3:0] din,
62  input [3:0] tin,
63  input set_odelay,
64  input ld_odelay,
65  input set_idelay,
66  input ld_idelay
67 );
68 wire d_ser;
69 wire dqs_tri;
71 wire dqs_di;
72 
73 
74 oserdes_mem oserdes_i (
75  .clk(clk), // serial output clock
76  .clk_div(clk_div), // oclk divided by 2, front aligned
77  .rst(rst), // reset
78  .din(din[3:0]), // parallel data in
79  .tin(tin[3:0]), // parallel tri-state in
80  .dout_dly(d_ser), // data out to be connected to odelay input
81  .dout_iob(), // data out to be connected directly to the output buffer
82  .tout_dly(), // tristate out to be connected to odelay input
83  .tout_iob(dqs_tri) // tristate out to be connected directly to the tristate control of the output buffer
84 );
87  .DELAY_VALUE(ODELAY_VALUE),
90 ) dqs_out_dly_i(
91  .clk(clk_div),
92  .rst(rst),
93  .set(set_odelay),
94  .ld(ld_odelay),
95  .delay(dly_data[7:0]),
96  .data_in(d_ser),
98 );
99 
101  .DIFF_TERM("FALSE"),
102  .DQS_BIAS("TRUE"), // outputs 1'b0 when IOB is floating
105  .SLEW(SLEW),
106  .USE_IBUFDISABLE("FALSE")
107 ) iobufs_dqs_i (
108  .O(dqs_di),
109  .IO(dqs),
110  .IOB(ndqs),
111  .DCITERMDISABLE(dci_disable),
112  .IBUFDISABLE(1'b0),
113  .I(dqs_data_dly), //dqs_data),
114  .T(dqs_tri));
117  .DELAY_VALUE(IDELAY_VALUE),
120 ) dqs_in_dly_i(
121  .clk(clk_div),
122  .rst(rst),
123  .set(set_idelay),
124  .ld(ld_idelay),
125  .delay(dly_data[7:0]),
126  .data_in(dqs_di),
128 );
129 endmodule
130 
iobufs_dqs_i IOBUFDS_DCIEN
Definition: dqs_single.v:100
real 6140REFCLK_FREQUENCY300.0
Definition: dqs_single.v:47
dqs_out_dly_i odelay_fine_pipe
Definition: dqs_single.v:85
6134IODELAY_GRP"IODELAY_MEMORY"
Definition: dqs_single.v:41
[MODE_DDR=="TRUE"?3:1:0] 11538din
Definition: oserdes_mem.v:48
[7:0] 6149dly_data
Definition: dqs_single.v:60
6139SLEW"SLOW"
Definition: dqs_single.v:46
oserdes_i oserdes_mem
Definition: dqs_single.v:74
integer 6135IDELAY_VALUE0
Definition: dqs_single.v:42
6159dqs_diwire
Definition: dqs_single.v:71
[MODE_DDR=="TRUE"?3:0:0] 11539tin
Definition: oserdes_mem.v:50
6138IOSTANDARD"DIFF_SSTL15_T_DCI"
Definition: dqs_single.v:45
[3:0] 6150din
Definition: dqs_single.v:61
6141HIGH_PERFORMANCE_MODE"FALSE"
Definition: dqs_single.v:48
[3:0] 6151tin
Definition: dqs_single.v:62
6156d_serwire
Definition: dqs_single.v:68
6157dqs_triwire
Definition: dqs_single.v:69
6147dqs_received_dly
Definition: dqs_single.v:55
integer 6136ODELAY_VALUE0
Definition: dqs_single.v:43
6137IBUF_LOW_PWR"TRUE"
Definition: dqs_single.v:44
6158dqs_data_dlywire
Definition: dqs_single.v:70
dqs_in_dly_i idelay_fine_pipe
Definition: dqs_single.v:115