00001
00002
00003
00004 `default_nettype none
00005 `timescale 1ps / 1ps
00006
00007 (* KEEP_HIERARCHY = "TRUE" *)module dqs_io_pad (
00008 input wire clk,
00009 input wire reset,
00010 inout wire io_pad,
00011 input wire dqs_reset,
00012 input wire dqs_enable,
00013 output wire dqs_clk
00014 );
00015
00016 (* IOB="TRUE" *)reg dqs_tri_enable_1d;
00017 wire to_io_pad;
00018 wire dqs_clk_node;
00019 reg dqs_clk_node2;
00020
00021 ODDR2 #(
00022 .DDR_ALIGNMENT("NONE"),
00023 .SRTYPE("SYNC")
00024 ) ODDR2_DATA(
00025 .Q(to_io_pad),
00026 .C0(clk),
00027 .C1(~clk),
00028 .CE(1'b1),
00029 .D0(1'b1),
00030 .D1(1'b0),
00031 .R(dqs_reset),
00032 .S(1'b0)
00033 );
00034
00035 always @(posedge clk) begin
00036 if(reset)
00037 dqs_tri_enable_1d <= 1'b1;
00038 else
00039 dqs_tri_enable_1d <= ~dqs_enable;
00040 end
00041
00042 IOBUF IOBUF_INST (
00043 .O(dqs_clk_node),
00044 .IO(io_pad),
00045 .I(to_io_pad),
00046 .T(dqs_tri_enable_1d)
00047 );
00048
00049 always @*
00050 dqs_clk_node2 <= #1500 dqs_clk_node;
00051
00052 assign dqs_clk = dqs_clk_node2;
00053 endmodule