RFDC ADC data interp and packΒΆ

TerosHDL

Entity: rfdc_dac_data_interp_and_pack

  • File: rfdc_dac_data_interp_and_pack.vhd

Diagram

boolean PARAM_OUT_CLEANING_FIR std_logic s_axi_aclk std_logic s_axi_aresetn std_logic_vector(2 downto 0) rfdc_N_FFT_param std_logic rfdc_N_FFT_valid std_logic dac0_axis_aclk std_logic dac0_axis_aresetn std_logic dac00_axis_tready std_logic DACxN_clk std_logic DACxN_reset std_logic DACxN_locked std_logic dac_enable_0 std_logic dac_valid_0 std_logic_vector(15 downto 0) dac_data_0 std_logic dac_enable_1 std_logic dac_valid_1 std_logic_vector(15 downto 0) dac_data_1 std_logic_vector(31 downto 0) dac00_axis_tdata std_logic dac00_axis_tvalid

Description

Currently only one Tx antenna is supported in this design; this block will interface the rfdc IP and provide the decimated I/Q data, jointly with the related clock, as expected by the timestamping and synchronization blocks.

Generics

Generic name Type Value Description
PARAM_OUT_CLEANING_FIR boolean false A low-pass filter to clean the output signal can be added at the end (true) or skipped [(false) default]

Ports

Port name Direction Type Description
s_axi_aclk in std_logic
s_axi_aresetn in std_logic
rfdc_N_FFT_param in std_logic_vector(2 downto 0) Signal providing the 'N_FFT' PSS parameter (i.e., number of FFT points) (@s_axi_aclk)
rfdc_N_FFT_valid in std_logic Signal indicating if the output 'N_FFT' PSS parameter is valid (@s_axi_aclk)
dac0_axis_aclk in std_logic DAC channel 0 clock signal (@245.76 MHz)
dac0_axis_aresetn in std_logic RFdc low-active reset signal (mapped to the DAC channel 0 clock domain [@245.76 MHz])
dac00_axis_tdata out std_logic_vector(31 downto 0) Parallel (interleaved) output I/Q data (AXI-formatted)
dac00_axis_tvalid out std_logic Valid signal for 'DAC00_axis_tdata'
dac00_axis_tready in std_logic Signal indicating to RFdc that we are ready to receive new data through 'DAC00_axis_tdata'
DACxN_clk in std_logic DAC clock signal xN [depends on antenna (N = 2 for 1x1 and N = 4 for 2x2) configuration and sampling freq; max LTE value for 1x1 is @61.44 MHz and for 2x2 is @122.88 MHz]
DACxN_reset in std_logic DAC high-active reset signal (mapped to the DAC clock xN domain [depends on antenna (N = 2 for 1x1 and N = 4 for 2x2) configuration and sampling freq; max LTE value for 1x1 is @61.44 MHz and for 2x2 is @122.88 MHz]
DACxN_locked in std_logic DAC clock locked indication signal
dac_enable_0 in std_logic Enable signal for DAC data port 0
dac_valid_0 in std_logic Valid signal for DAC data port 0
dac_data_0 in std_logic_vector(15 downto 0) DAC parallel data port 0 [16-bit I samples, Tx antenna 1]
dac_enable_1 in std_logic Enable signal for DAC data port 1
dac_valid_1 in std_logic Valid signal for DAC data port 1
dac_data_1 in std_logic_vector(15 downto 0) DAC parallel data port 1 [16-bit Q samples, Tx antenna 1]

Instantiations

  • synchronizer_rfdc_N_FFT_valid_DAC0_ins: multibit_cross_clock_domain_fifo_synchronizer_resetless_3b
  • synchronizer_rfdc_N_FFT_valid_DACxN_ins: multibit_cross_clock_domain_fifo_synchronizer_resetless_3b
  • synchronizer_DACxN_locked_ins: multibit_cross_clock_domain_fifo_synchronizer_resetless_1b
  • synchronizer_clk_mgr_locked_AXIclk_ins: multibit_cross_clock_domain_fifo_synchronizer_resetless_1b
  • synchronizer_data_IQ_1p92MHz_from_DMA_ins: multibit_cross_clock_domain_fifo_synchronizer_resetless_1b
  • synchronizer_data_I_1p92MHz_3p84MHzClk_ins: multibit_cross_clock_domain_fifo_synchronizer_resetless_16b
  • synchronizer_data_Q_1p92MHz_3p84MHzClk_ins: multibit_cross_clock_domain_fifo_synchronizer_resetless_16b
  • dac_interpolation_192msps_to_384msps_I_ins: dac_interpolation_192msps_to_384msps
  • dac_interpolation_192msps_to_384msps_Q_ins: dac_interpolation_192msps_to_384msps
  • synchronizer_data_IQ_3p84MHz_from_DMA_ins: multibit_cross_clock_domain_fifo_synchronizer_resetless_1b
  • synchronizer_enable_384msps_to_768msps_interp_filter_ins: multibit_cross_clock_domain_fifo_synchronizer_resetless_1b
  • synchronizer_data_I_3p84MHz_7p68MHzClk_ins: multibit_cross_clock_domain_fifo_synchronizer_resetless_16b
  • synchronizer_data_Q_3p84MHz_7p68MHzClk_ins: multibit_cross_clock_domain_fifo_synchronizer_resetless_16b
  • dac_interpolation_384msps_to_768msps_I_ins: dac_interpolation_384msps_to_768msps
  • dac_interpolation_384msps_to_768msps_Q_ins: dac_interpolation_384msps_to_768msps
  • synchronizer_data_IQ_7p68MHz_from_DMA_ins: multibit_cross_clock_domain_fifo_synchronizer_resetless_1b
  • synchronizer_enable_768msps_to_1536msps_interp_filter_ins: multibit_cross_clock_domain_fifo_synchronizer_resetless_1b
  • synchronizer_data_I_7p68MHz_15p36MHzClk_ins: multibit_cross_clock_domain_fifo_synchronizer_resetless_16b
  • synchronizer_data_Q_7p68MHz_15p36MHzClk_ins: multibit_cross_clock_domain_fifo_synchronizer_resetless_16b
  • dac_interpolation_768msps_to_1536msps_I_ins: dac_interpolation_768msps_to_1536msps
  • dac_interpolation_768msps_to_1536msps_Q_ins: dac_interpolation_768msps_to_1536msps
  • synchronizer_data_IQ_15p36MHz_from_DMA_ins: multibit_cross_clock_domain_fifo_synchronizer_resetless_1b
  • synchronizer_enable_1536msps_to_3072msps_interp_filter_ins: multibit_cross_clock_domain_fifo_synchronizer_resetless_1b
  • synchronizer_data_I_15p36MHz_30p72MHzClk_ins: multibit_cross_clock_domain_fifo_synchronizer_resetless_16b
  • synchronizer_data_Q_15p36MHz_30p72MHzClk_ins: multibit_cross_clock_domain_fifo_synchronizer_resetless_16b
  • dac_interpolation_1536msps_to_3072msps_I_ins: dac_interpolation_1536msps_to_3072msps
  • dac_interpolation_1536msps_to_3072msps_Q_ins: dac_interpolation_1536msps_to_3072msps
  • synchronizer_data_IQ_30p72MHz_from_DMA_ins: multibit_cross_clock_domain_fifo_synchronizer_resetless_1b
  • synchronizer_data_I_30p72MHz_61p44MHzClk_ins: multibit_cross_clock_domain_fifo_synchronizer_resetless_16b
  • synchronizer_data_Q_30p72MHz_61p44MHzClk_ins: multibit_cross_clock_domain_fifo_synchronizer_resetless_16b
  • dac_interpolation_3072msps_to_24576msps_I_ins: dac_interpolation_3072msps_to_24576msps
  • dac_interpolation_3072msps_to_24576msps_Q_ins: dac_interpolation_3072msps_to_24576msps
  • lat_leveller_shift_reg_768msps_I_ins: lat_leveller_shift_reg_768msps
  • lat_leveller_shift_reg_768msps_Q_ins: lat_leveller_shift_reg_768msps
  • lat_leveller_shift_reg_384msps_I_ins: lat_leveller_shift_reg_384msps
  • lat_leveller_shift_reg_384msps_Q_ins: lat_leveller_shift_reg_384msps
  • lat_leveller_shift_reg_1536msps_I_ins: lat_leveller_shift_reg_1536msps
  • lat_leveller_shift_reg_1536msps_Q_ins: lat_leveller_shift_reg_1536msps
  • lat_leveller_shift_reg_3072msps_I_ins: lat_leveller_shift_reg_3072msps
  • lat_leveller_shift_reg_3072msps_Q_ins: lat_leveller_shift_reg_3072msps
  • lat_leveller_shift_reg_192msps_I_ins: lat_leveller_shift_reg_192msps
  • lat_leveller_shift_reg_192msps_Q_ins: lat_leveller_shift_reg_192msps