| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- //////////////////////////////////////////////////////////////////////////////
- // Copyright (c) 2012-2015 Xilinx, Inc.
- // This design is confidential and proprietary of Xilinx, All Rights Reserved.
- //////////////////////////////////////////////////////////////////////////////
- // ____ ____
- // / /\/ /
- // /___/ \ / Vendor: Xilinx
- // \ \ \/ Version: 1.2
- // \ \ Filename: top5x2_7to1_sdr_rx.v
- // / / Date Last Modified: 21JAN2015
- // /___/ /\ Date Created: 2SEP2011
- // \ \ / \
- // \___\/\___\
- //
- //Device: 7-Series
- //Purpose: SDR top level receiver example - 2 channels of 5-bits each
- //
- //Reference: XAPP585.pdf
- //
- //Revision History:
- // Rev 1.0 - First created (nicks)
- // Rev 1.1 - BUFG added to IDELAY reference clock
- // Rev 1.2 - Updated format (brandond)
- //
- //////////////////////////////////////////////////////////////////////////////
- //
- // Disclaimer:
- //
- // This disclaimer is not a license and does not grant any rights to the materials
- // distributed herewith. Except as otherwise provided in a valid license issued to you
- // by Xilinx, and to the maximum extent permitted by applicable law:
- // (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND WITH ALL FAULTS,
- // AND XILINX HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY,
- // INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, OR
- // FITNESS FOR ANY PARTICULAR PURPOSE; and (2) Xilinx shall not be liable (whether in contract
- // or tort, including negligence, or under any other theory of liability) for any loss or damage
- // of any kind or nature related to, arising under or in connection with these materials,
- // including for any direct, or any indirect, special, incidental, or consequential loss
- // or damage (including loss of data, profits, goodwill, or any type of loss or damage suffered
- // as a result of any action brought by a third party) even if such damage or loss was
- // reasonably foreseeable or Xilinx had been advised of the possibility of the same.
- //
- // Critical Applications:
- //
- // Xilinx products are not designed or intended to be fail-safe, or for use in any application
- // requiring fail-safe performance, such as life-support or safety devices or systems,
- // Class III medical devices, nuclear facilities, applications related to the deployment of airbags,
- // or any other applications that could lead to death, personal injury, or severe property or
- // environmental damage (individually and collectively, "Critical Applications"). Customer assumes
- // the sole risk and liability of any use of Xilinx products in Critical Applications, subject only
- // to applicable laws and regulations governing limitations on product liability.
- //
- // THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS PART OF THIS FILE AT ALL TIMES.
- //
- //////////////////////////////////////////////////////////////////////////////
- `timescale 1ps/1ps
- module top5x2_7to1_sdr_rx
- #(
- parameter integer D = 4, // Set the number of outputs per channel to be 5 in this example
- parameter integer N = 1, // Set the number of channels to be 2 in this example
- parameter DataWidth = 14
- )
- (
- input reset, // reset (active high)
- input refclkin, // Reference clock for input delay control
- input Locked_i, // Reference clock for input delay control
- input clkin1_p,
- input clkin1_n, // lvds channel 1 clock input
- input [D-1:0] datain1_p,
- input [D-1:0] datain1_n, // lvds channel 1 data inputs
- input clkin2_p,
- input clkin2_n, // lvds channel 2 clock input
- input [D-1:0] datain2_p,
- input [D-1:0] datain2_n, // lvds channel 2 data inputs
- output reg dummy,
- output [27:0] dout,
- output DivClk_o
- // output [DataWidth-1:0] dout
- );// Dummy output for test
-
-
- wire refclkint;
- wire rx_mmcm_lckdps;
- wire [1:0] rx_mmcm_lckdpsbs;
- wire rxclk_div;
- wire clkin_p;
- wire clkin_n;
- wire [D*N-1:0] datain_p;
- wire [D*N-1:0] datain_n;
- // wire [N*DataWidth-1:0] rxdall;
- wire [27:0] rxdall;
- wire delay_ready;
- wire rx_mmcm_lckd;
- IDELAYCTRL icontrol
- ( // Instantiate input delay control block
- .REFCLK (refclkin),
- .RST (~Locked_i),
- .RDY (delay_ready)
- );
- // Input clock and data for 2 channels
- assign clkin_p = clkin1_p;
- assign clkin_n = clkin1_n;
- assign datain_p = datain1_p;
- assign datain_n = datain1_n;
- assign dout = rxdall;
- assign DivClk_o = rxclk_div;
- n_x_serdes_1_to_7_mmcm_idelay_sdr
- #(
- .N (N),
- .SAMPL_CLOCK ("BUF_G"),
- .PIXEL_CLOCK ("BUF_G"),
- .USE_PLL ("TRUE"),
- .HIGH_PERFORMANCE_MODE ("FALSE"),
- .D (D), // Number of data lines
- .CLKIN_PERIOD (40.000), // Set input clock period
- .MMCM_MODE (4), // Parameter to set multiplier for MMCM to get VCO in correct operating range. 1 multiplies input clock by 7, 2 multiplies clock by 14, etc
- .DIFF_TERM ("TRUE"),
- // .DATA_FORMAT ("PER_CLOCK")
- .DATA_FORMAT ("PER_CHANL")
- ) // PER_CLOCK or PER_CHANL data formatting
- ReceiverModule
- (
- .clkin_p (clkin_p),
- .clkin_n (clkin_n),
- .datain_p (datain_p),
- .datain_n (datain_n),
- .enable_phase_detector (1'b0),
- .rxclk (),
- .idelay_rdy (delay_ready),
- .rxclk_div (rxclk_div),
- .reset (reset),
- .rx_mmcm_lckd (rx_mmcm_lckd),
- .rx_mmcm_lckdps (rx_mmcm_lckdps),
- .rx_mmcm_lckdpsbs (rx_mmcm_lckdpsbs),
- .clk_data (),
- .rx_data (rxdall),
- .bit_rate_value (16'h0350), // required bit rate value
- .bit_time_value (),
- .status (),
- .debug ()
- );
-
- endmodule
|