fmcadc4: Update project to the new JESD interface framework

main
Istvan Csomortani 2015-09-25 18:07:17 +03:00
parent f4b432da08
commit 1604e88242
3 changed files with 97 additions and 315 deletions

View File

@ -7,23 +7,6 @@ create_bd_port -dir I rx_sysref
create_bd_port -dir I -from 7 -to 0 rx_data_p
create_bd_port -dir I -from 7 -to 0 rx_data_n
create_bd_port -dir O adc_clk
create_bd_port -dir O adc_enable_0
create_bd_port -dir O adc_valid_0
create_bd_port -dir O -from 63 -to 0 adc_data_0
create_bd_port -dir O adc_enable_1
create_bd_port -dir O adc_valid_1
create_bd_port -dir O -from 63 -to 0 adc_data_1
create_bd_port -dir O adc_enable_2
create_bd_port -dir O adc_valid_2
create_bd_port -dir O -from 63 -to 0 adc_data_2
create_bd_port -dir O adc_enable_3
create_bd_port -dir O adc_valid_3
create_bd_port -dir O -from 63 -to 0 adc_data_3
create_bd_port -dir I adc_dwr
create_bd_port -dir I adc_dsync
create_bd_port -dir I -from 255 -to 0 adc_ddata
# adc peripherals
set axi_ad9680_core_0 [create_bd_cell -type ip -vlnv analog.com:user:axi_ad9680:1.0 axi_ad9680_core_0]
@ -48,123 +31,112 @@ set_property -dict [list CONFIG.CYCLIC {0}] $axi_ad9680_dma
set_property -dict [list CONFIG.DMA_DATA_WIDTH_SRC {64}] $axi_ad9680_dma
set_property -dict [list CONFIG.DMA_DATA_WIDTH_DEST {64}] $axi_ad9680_dma
# dac/adc common gt
set axi_ad9680_cpack [create_bd_cell -type ip -vlnv analog.com:user:util_cpack:1.0 axi_ad9680_cpack]
set_property -dict [list CONFIG.CHANNEL_DATA_WIDTH {64}] $axi_ad9680_cpack
set_property -dict [list CONFIG.NUM_OF_CHANNELS {4}] $axi_ad9680_cpack
# adc common gt
set axi_fmcadc4_gt [create_bd_cell -type ip -vlnv analog.com:user:axi_jesd_gt:1.0 axi_fmcadc4_gt]
set_property -dict [list CONFIG.PCORE_NUM_OF_RX_LANES {8}] $axi_fmcadc4_gt
set_property -dict [list CONFIG.NUM_OF_LANES {8}] $axi_fmcadc4_gt
set_property -dict [list CONFIG.RX_NUM_OF_LANES {8}] $axi_fmcadc4_gt
set_property -dict [list CONFIG.TX_NUM_OF_LANES {0}] $axi_fmcadc4_gt
set util_fmcadc4_gt [create_bd_cell -type ip -vlnv analog.com:user:util_jesd_gt:1.0 util_fmcadc4_gt]
set_property -dict [list CONFIG.NUM_OF_LANES {8}] $util_fmcadc4_gt
set_property -dict [list CONFIG.RX_ENABLE {1}] $util_fmcadc4_gt
set_property -dict [list CONFIG.RX_NUM_OF_LANES {8}] $util_fmcadc4_gt
set_property -dict [list CONFIG.TX_ENABLE {0}] $util_fmcadc4_gt
# connections (gt)
ad_connect axi_fmcadc4_gt/ref_clk_q rx_ref_clk
ad_connect axi_fmcadc4_gt/rx_data_p rx_data_p
ad_connect axi_fmcadc4_gt/rx_data_n rx_data_n
ad_connect axi_fmcadc4_gt/rx_sync rx_sync
ad_connect axi_fmcadc4_gt/rx_ext_sysref rx_sysref
ad_connect util_fmcadc4_gt/qpll_ref_clk rx_ref_clk
ad_connect axi_fmcadc4_gt/gt_qpll_0 util_fmcadc4_gt/gt_qpll_0
ad_connect axi_fmcadc4_gt/gt_qpll_1 util_fmcadc4_gt/gt_qpll_1
ad_connect axi_fmcadc4_gt/gt_pll_0 util_fmcadc4_gt/gt_pll_0
ad_connect axi_fmcadc4_gt/gt_pll_1 util_fmcadc4_gt/gt_pll_1
ad_connect axi_fmcadc4_gt/gt_pll_2 util_fmcadc4_gt/gt_pll_2
ad_connect axi_fmcadc4_gt/gt_pll_3 util_fmcadc4_gt/gt_pll_3
ad_connect axi_fmcadc4_gt/gt_pll_4 util_fmcadc4_gt/gt_pll_4
ad_connect axi_fmcadc4_gt/gt_pll_5 util_fmcadc4_gt/gt_pll_5
ad_connect axi_fmcadc4_gt/gt_pll_6 util_fmcadc4_gt/gt_pll_6
ad_connect axi_fmcadc4_gt/gt_pll_7 util_fmcadc4_gt/gt_pll_7
ad_connect axi_fmcadc4_gt/gt_rx_0 util_fmcadc4_gt/gt_rx_0
ad_connect axi_fmcadc4_gt/gt_rx_1 util_fmcadc4_gt/gt_rx_1
ad_connect axi_fmcadc4_gt/gt_rx_2 util_fmcadc4_gt/gt_rx_2
ad_connect axi_fmcadc4_gt/gt_rx_3 util_fmcadc4_gt/gt_rx_3
ad_connect axi_fmcadc4_gt/gt_rx_4 util_fmcadc4_gt/gt_rx_4
ad_connect axi_fmcadc4_gt/gt_rx_5 util_fmcadc4_gt/gt_rx_5
ad_connect axi_fmcadc4_gt/gt_rx_6 util_fmcadc4_gt/gt_rx_6
ad_connect axi_fmcadc4_gt/gt_rx_7 util_fmcadc4_gt/gt_rx_7
ad_connect axi_fmcadc4_gt/gt_rx_ip_0 axi_ad9680_jesd/gt0_rx
ad_connect axi_fmcadc4_gt/gt_rx_ip_1 axi_ad9680_jesd/gt1_rx
ad_connect axi_fmcadc4_gt/gt_rx_ip_2 axi_ad9680_jesd/gt2_rx
ad_connect axi_fmcadc4_gt/gt_rx_ip_3 axi_ad9680_jesd/gt3_rx
ad_connect axi_fmcadc4_gt/gt_rx_ip_4 axi_ad9680_jesd/gt4_rx
ad_connect axi_fmcadc4_gt/gt_rx_ip_5 axi_ad9680_jesd/gt5_rx
ad_connect axi_fmcadc4_gt/gt_rx_ip_6 axi_ad9680_jesd/gt6_rx
ad_connect axi_fmcadc4_gt/gt_rx_ip_7 axi_ad9680_jesd/gt7_rx
ad_connect axi_fmcadc4_gt/rx_gt_comma_align_enb_0 axi_ad9680_jesd/rxencommaalign_out
ad_connect axi_fmcadc4_gt/rx_gt_comma_align_enb_1 axi_ad9680_jesd/rxencommaalign_out
ad_connect axi_fmcadc4_gt/rx_gt_comma_align_enb_2 axi_ad9680_jesd/rxencommaalign_out
ad_connect axi_fmcadc4_gt/rx_gt_comma_align_enb_3 axi_ad9680_jesd/rxencommaalign_out
ad_connect axi_fmcadc4_gt/rx_gt_comma_align_enb_4 axi_ad9680_jesd/rxencommaalign_out
ad_connect axi_fmcadc4_gt/rx_gt_comma_align_enb_5 axi_ad9680_jesd/rxencommaalign_out
ad_connect axi_fmcadc4_gt/rx_gt_comma_align_enb_6 axi_ad9680_jesd/rxencommaalign_out
ad_connect axi_fmcadc4_gt/rx_gt_comma_align_enb_7 axi_ad9680_jesd/rxencommaalign_out
# connections (adc)
ad_connect axi_fmcadc4_gt/rx_clk_g adc_clk
ad_connect axi_fmcadc4_gt/tx_clk_g axi_fmcadc4_gt/tx_clk
ad_connect axi_fmcadc4_gt/rx_clk_g axi_fmcadc4_gt/rx_clk
ad_connect axi_fmcadc4_gt/rx_clk_g axi_ad9680_core_0/rx_clk
ad_connect axi_fmcadc4_gt/rx_clk_g axi_ad9680_core_1/rx_clk
ad_connect axi_fmcadc4_gt/rx_clk_g axi_ad9680_jesd/rx_core_clk
ad_connect axi_fmcadc4_gt/rx_rst axi_ad9680_jesd/rx_reset
ad_connect axi_fmcadc4_gt/rx_sysref axi_ad9680_jesd/rx_sysref
create_bd_cell -type ip -vlnv analog.com:user:util_bsplit:1.0 util_bsplit_rx_gt_charisk
set_property -dict [list CONFIG.CHANNEL_DATA_WIDTH {4}] [get_bd_cells util_bsplit_rx_gt_charisk]
set_property -dict [list CONFIG.NUM_OF_CHANNELS {8}] [get_bd_cells util_bsplit_rx_gt_charisk]
ad_connect util_bsplit_rx_gt_charisk/data axi_fmcadc4_gt/rx_gt_charisk
ad_connect util_bsplit_rx_gt_charisk/split_data_0 axi_ad9680_jesd/gt0_rxcharisk
ad_connect util_bsplit_rx_gt_charisk/split_data_1 axi_ad9680_jesd/gt1_rxcharisk
ad_connect util_bsplit_rx_gt_charisk/split_data_2 axi_ad9680_jesd/gt2_rxcharisk
ad_connect util_bsplit_rx_gt_charisk/split_data_3 axi_ad9680_jesd/gt3_rxcharisk
ad_connect util_bsplit_rx_gt_charisk/split_data_4 axi_ad9680_jesd/gt4_rxcharisk
ad_connect util_bsplit_rx_gt_charisk/split_data_5 axi_ad9680_jesd/gt5_rxcharisk
ad_connect util_bsplit_rx_gt_charisk/split_data_6 axi_ad9680_jesd/gt6_rxcharisk
ad_connect util_bsplit_rx_gt_charisk/split_data_7 axi_ad9680_jesd/gt7_rxcharisk
create_bd_cell -type ip -vlnv analog.com:user:util_bsplit:1.0 util_bsplit_rx_gt_disperr
set_property -dict [list CONFIG.CHANNEL_DATA_WIDTH {4}] [get_bd_cells util_bsplit_rx_gt_disperr]
set_property -dict [list CONFIG.NUM_OF_CHANNELS {8}] [get_bd_cells util_bsplit_rx_gt_disperr]
ad_connect util_bsplit_rx_gt_disperr/data axi_fmcadc4_gt/rx_gt_disperr
ad_connect util_bsplit_rx_gt_disperr/split_data_0 axi_ad9680_jesd/gt0_rxdisperr
ad_connect util_bsplit_rx_gt_disperr/split_data_1 axi_ad9680_jesd/gt1_rxdisperr
ad_connect util_bsplit_rx_gt_disperr/split_data_2 axi_ad9680_jesd/gt2_rxdisperr
ad_connect util_bsplit_rx_gt_disperr/split_data_3 axi_ad9680_jesd/gt3_rxdisperr
ad_connect util_bsplit_rx_gt_disperr/split_data_4 axi_ad9680_jesd/gt4_rxdisperr
ad_connect util_bsplit_rx_gt_disperr/split_data_5 axi_ad9680_jesd/gt5_rxdisperr
ad_connect util_bsplit_rx_gt_disperr/split_data_6 axi_ad9680_jesd/gt6_rxdisperr
ad_connect util_bsplit_rx_gt_disperr/split_data_7 axi_ad9680_jesd/gt7_rxdisperr
create_bd_cell -type ip -vlnv analog.com:user:util_bsplit:1.0 util_bsplit_rx_gt_notintable
set_property -dict [list CONFIG.CHANNEL_DATA_WIDTH {4}] [get_bd_cells util_bsplit_rx_gt_notintable]
set_property -dict [list CONFIG.NUM_OF_CHANNELS {8}] [get_bd_cells util_bsplit_rx_gt_notintable]
ad_connect util_bsplit_rx_gt_notintable/data axi_fmcadc4_gt/rx_gt_notintable
ad_connect util_bsplit_rx_gt_notintable/split_data_0 axi_ad9680_jesd/gt0_rxnotintable
ad_connect util_bsplit_rx_gt_notintable/split_data_1 axi_ad9680_jesd/gt1_rxnotintable
ad_connect util_bsplit_rx_gt_notintable/split_data_2 axi_ad9680_jesd/gt2_rxnotintable
ad_connect util_bsplit_rx_gt_notintable/split_data_3 axi_ad9680_jesd/gt3_rxnotintable
ad_connect util_bsplit_rx_gt_notintable/split_data_4 axi_ad9680_jesd/gt4_rxnotintable
ad_connect util_bsplit_rx_gt_notintable/split_data_5 axi_ad9680_jesd/gt5_rxnotintable
ad_connect util_bsplit_rx_gt_notintable/split_data_6 axi_ad9680_jesd/gt6_rxnotintable
ad_connect util_bsplit_rx_gt_notintable/split_data_7 axi_ad9680_jesd/gt7_rxnotintable
create_bd_cell -type ip -vlnv analog.com:user:util_bsplit:1.0 util_bsplit_rx_gt_data
set_property -dict [list CONFIG.CHANNEL_DATA_WIDTH {32}] [get_bd_cells util_bsplit_rx_gt_data]
set_property -dict [list CONFIG.NUM_OF_CHANNELS {8}] [get_bd_cells util_bsplit_rx_gt_data]
ad_connect util_bsplit_rx_gt_data/data axi_fmcadc4_gt/rx_gt_data
ad_connect util_bsplit_rx_gt_data/split_data_0 axi_ad9680_jesd/gt0_rxdata
ad_connect util_bsplit_rx_gt_data/split_data_1 axi_ad9680_jesd/gt1_rxdata
ad_connect util_bsplit_rx_gt_data/split_data_2 axi_ad9680_jesd/gt2_rxdata
ad_connect util_bsplit_rx_gt_data/split_data_3 axi_ad9680_jesd/gt3_rxdata
ad_connect util_bsplit_rx_gt_data/split_data_4 axi_ad9680_jesd/gt4_rxdata
ad_connect util_bsplit_rx_gt_data/split_data_5 axi_ad9680_jesd/gt5_rxdata
ad_connect util_bsplit_rx_gt_data/split_data_6 axi_ad9680_jesd/gt6_rxdata
ad_connect util_bsplit_rx_gt_data/split_data_7 axi_ad9680_jesd/gt7_rxdata
ad_connect axi_fmcadc4_gt/rx_rst_done axi_ad9680_jesd/rx_reset_done
ad_connect axi_fmcadc4_gt/rx_ip_comma_align axi_ad9680_jesd/rxencommaalign_out
ad_connect axi_fmcadc4_gt/rx_ip_sync axi_ad9680_jesd/rx_sync
ad_connect axi_fmcadc4_gt/rx_ip_sof axi_ad9680_jesd/rx_start_of_frame
ad_connect axi_fmcadc4_gt/rx_ip_data axi_ad9680_jesd/rx_tdata
ad_connect util_fmcadc4_gt/rx_sysref rx_sysref
ad_connect util_fmcadc4_gt/rx_p rx_data_p
ad_connect util_fmcadc4_gt/rx_n rx_data_n
ad_connect util_fmcadc4_gt/rx_sync rx_sync
ad_connect util_fmcadc4_gt/rx_out_clk util_fmcadc4_gt/rx_clk
ad_connect util_fmcadc4_gt/rx_out_clk axi_ad9680_jesd/rx_core_clk
ad_connect util_fmcadc4_gt/rx_ip_rst axi_ad9680_jesd/rx_reset
ad_connect util_fmcadc4_gt/rx_ip_rst_done axi_ad9680_jesd/rx_reset_done
ad_connect util_fmcadc4_gt/rx_ip_sysref axi_ad9680_jesd/rx_sysref
ad_connect util_fmcadc4_gt/rx_ip_sync axi_ad9680_jesd/rx_sync
ad_connect util_fmcadc4_gt/rx_ip_sof axi_ad9680_jesd/rx_start_of_frame
ad_connect util_fmcadc4_gt/rx_ip_data axi_ad9680_jesd/rx_tdata
create_bd_cell -type ip -vlnv analog.com:user:util_bsplit:1.0 util_bsplit_rx_data
set_property -dict [list CONFIG.CHANNEL_DATA_WIDTH {128}] [get_bd_cells util_bsplit_rx_data]
set_property -dict [list CONFIG.NUM_OF_CHANNELS {2}] [get_bd_cells util_bsplit_rx_data]
ad_connect util_bsplit_rx_data/data axi_fmcadc4_gt/rx_data
ad_connect util_fmcadc4_gt/rx_out_clk axi_ad9680_core_0/rx_clk
ad_connect util_fmcadc4_gt/rx_out_clk axi_ad9680_core_1/rx_clk
ad_connect util_fmcadc4_gt/rx_data util_bsplit_rx_data/data
ad_connect util_bsplit_rx_data/split_data_0 axi_ad9680_core_0/rx_data
ad_connect util_bsplit_rx_data/split_data_1 axi_ad9680_core_1/rx_data
ad_connect axi_ad9680_core_0/adc_enable_0 adc_enable_0
ad_connect axi_ad9680_core_0/adc_valid_0 adc_valid_0
ad_connect axi_ad9680_core_0/adc_data_0 adc_data_0
ad_connect axi_ad9680_core_0/adc_enable_1 adc_enable_1
ad_connect axi_ad9680_core_0/adc_valid_1 adc_valid_1
ad_connect axi_ad9680_core_0/adc_data_1 adc_data_1
ad_connect axi_ad9680_core_1/adc_enable_0 adc_enable_2
ad_connect axi_ad9680_core_1/adc_valid_0 adc_valid_2
ad_connect axi_ad9680_core_1/adc_data_0 adc_data_2
ad_connect axi_ad9680_core_1/adc_enable_1 adc_enable_3
ad_connect axi_ad9680_core_1/adc_valid_1 adc_valid_3
ad_connect axi_ad9680_core_1/adc_data_1 adc_data_3
ad_connect axi_ad9680_fifo/adc_rst axi_fmcadc4_gt/rx_rst
ad_connect axi_ad9680_core_0/adc_clk axi_ad9680_cpack/adc_clk
ad_connect util_fmcadc4_gt/rx_rst axi_ad9680_cpack/adc_rst
ad_connect axi_ad9680_core_0/adc_enable_0 axi_ad9680_cpack/adc_enable_0
ad_connect axi_ad9680_core_0/adc_valid_0 axi_ad9680_cpack/adc_valid_0
ad_connect axi_ad9680_core_0/adc_data_0 axi_ad9680_cpack/adc_data_0
ad_connect axi_ad9680_core_0/adc_enable_1 axi_ad9680_cpack/adc_enable_1
ad_connect axi_ad9680_core_0/adc_valid_1 axi_ad9680_cpack/adc_valid_1
ad_connect axi_ad9680_core_0/adc_data_1 axi_ad9680_cpack/adc_data_1
ad_connect axi_ad9680_core_1/adc_enable_0 axi_ad9680_cpack/adc_enable_2
ad_connect axi_ad9680_core_1/adc_valid_0 axi_ad9680_cpack/adc_valid_2
ad_connect axi_ad9680_core_1/adc_data_0 axi_ad9680_cpack/adc_data_2
ad_connect axi_ad9680_core_1/adc_enable_1 axi_ad9680_cpack/adc_enable_3
ad_connect axi_ad9680_core_1/adc_valid_1 axi_ad9680_cpack/adc_valid_3
ad_connect axi_ad9680_core_1/adc_data_1 axi_ad9680_cpack/adc_data_3
ad_connect axi_ad9680_core_0/adc_clk axi_ad9680_fifo/adc_clk
ad_connect axi_ad9680_core_0/adc_dovf axi_ad9680_fifo/adc_wovf
ad_connect adc_dwr axi_ad9680_fifo/adc_wr
ad_connect adc_ddata axi_ad9680_fifo/adc_wdata
ad_connect util_fmcadc4_gt/rx_rst axi_ad9680_fifo/adc_rst
ad_connect axi_ad9680_cpack/adc_valid axi_ad9680_fifo/adc_wr
ad_connect axi_ad9680_cpack/adc_data axi_ad9680_fifo/adc_wdata
ad_connect sys_cpu_clk axi_ad9680_fifo/dma_clk
ad_connect sys_cpu_clk axi_ad9680_dma/s_axis_aclk
ad_connect sys_cpu_resetn axi_ad9680_dma/m_dest_axi_aresetn
ad_connect axi_ad9680_fifo/dma_wr axi_ad9680_dma/s_axis_valid
ad_connect axi_ad9680_fifo/dma_wdata axi_ad9680_dma/s_axis_data
ad_connect axi_ad9680_fifo/dma_wready axi_ad9680_dma/s_axis_ready
ad_connect axi_ad9680_fifo/dma_xfer_req axi_ad9680_dma/s_axis_xfer_req
ad_connect axi_ad9680_core_0/adc_dovf axi_ad9680_fifo/adc_wovf
# interconnect (cpu)
@ -183,9 +155,8 @@ ad_mem_hp3_interconnect sys_cpu_clk axi_fmcadc4_gt/m_axi
ad_mem_hp2_interconnect sys_cpu_clk sys_ps7/S_AXI_HP2
ad_mem_hp2_interconnect sys_cpu_clk axi_ad9680_dma/m_dest_axi
ad_connect sys_cpu_resetn axi_ad9680_dma/m_dest_axi_aresetn
# interrupts
ad_cpu_interrupt ps-13 mb-13 axi_ad9680_dma/irq
ad_cpu_interrupt ps-13 mb-12 axi_ad9680_dma/irq

View File

@ -46,5 +46,5 @@ set_property -dict {PACKAGE_PIN AE23 IOSTANDARD LVCMOS25} [get_ports ad9680_2
# clocks
create_clock -name rx_ref_clk -period 2.00 [get_ports rx_ref_clk_p]
create_clock -name rx_div_clk -period 4.00 [get_pins i_system_wrapper/system_i/axi_fmcadc4_gt/inst/g_lane_1[0].i_gt_channel_1/i_gtxe2_channel/RXOUTCLK]
create_clock -name rx_div_clk -period 4.00 [get_pins i_system_wrapper/system_i/axi_fmcadc4_gt/inst/g_lane_1[0].i_channel/i_gt/i_gtxe2_channel/RXOUTCLK]

View File

@ -1,9 +1,9 @@
// ***************************************************************************
// ***************************************************************************
// Copyright 2011(c) Analog Devices, Inc.
//
//
// All rights reserved.
//
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
// - Redistributions of source code must retain the above copyright
@ -21,16 +21,16 @@
// patent holders to use this software.
// - Use of the software either in source or binary form, must be run
// on or directly connected to an Analog Devices Inc. component.
//
//
// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A
// PARTICULAR PURPOSE ARE DISCLAIMED.
//
// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY
// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// ***************************************************************************
// ***************************************************************************
@ -71,7 +71,7 @@ module system_top (
hdmi_hsync,
hdmi_data_e,
hdmi_data,
spdif,
sys_rst,
@ -107,14 +107,14 @@ module system_top (
rx_sync_1_n,
rx_data_p,
rx_data_n,
ad9528_rstn,
ad9528_status,
ad9680_1_fda,
ad9680_1_fdb,
ad9680_2_fda,
ad9680_2_fdb,
ad9528_csn,
ada4961_1a_csn,
ada4961_1b_csn,
@ -155,7 +155,7 @@ module system_top (
output hdmi_hsync;
output hdmi_data_e;
output [23:0] hdmi_data;
output spdif;
input sys_rst;
@ -191,14 +191,14 @@ module system_top (
output rx_sync_1_n;
input [ 7:0] rx_data_p;
input [ 7:0] rx_data_n;
inout ad9528_rstn;
inout ad9528_status;
inout ad9680_1_fda;
inout ad9680_1_fdb;
inout ad9680_2_fda;
inout ad9680_2_fdb;
output ad9528_csn;
output ada4961_1a_csn;
output ada4961_1b_csn;
@ -209,13 +209,6 @@ module system_top (
output spi_clk;
inout spi_sdio;
// internal registers
reg [ 1:0] adc_dcnt = 'd0;
reg adc_dsync = 'd0;
reg adc_dwr = 'd0;
reg [255:0] adc_ddata = 'd0;
// internal signals
wire [63:0] gpio_i;
@ -232,172 +225,6 @@ module system_top (
wire rx_ref_clk;
wire rx_sysref;
wire rx_sync;
wire adc_clk;
wire [63:0] adc_data_0;
wire [63:0] adc_data_1;
wire [63:0] adc_data_2;
wire [63:0] adc_data_3;
wire adc_enable_0;
wire adc_enable_1;
wire adc_enable_2;
wire adc_enable_3;
wire adc_valid_0;
wire adc_valid_1;
wire adc_valid_2;
wire adc_valid_3;
// adc-pack place holder
always @(posedge adc_clk) begin
adc_dcnt <= adc_dcnt + 1'b1;
case ({adc_enable_3, adc_enable_2, adc_enable_1, adc_enable_0})
4'b1111: begin
adc_dsync <= 1'b1;
adc_dwr <= adc_valid_3 & adc_valid_2 & adc_valid_1 & adc_valid_0;
adc_ddata[255:240] <= $signed(adc_data_3[63:52]);
adc_ddata[239:224] <= $signed(adc_data_2[63:52]);
adc_ddata[223:208] <= $signed(adc_data_1[63:52]);
adc_ddata[207:192] <= $signed(adc_data_0[63:52]);
adc_ddata[191:176] <= $signed(adc_data_3[47:36]);
adc_ddata[175:160] <= $signed(adc_data_2[47:36]);
adc_ddata[159:144] <= $signed(adc_data_1[47:36]);
adc_ddata[143:128] <= $signed(adc_data_0[47:36]);
adc_ddata[127:112] <= $signed(adc_data_3[31:20]);
adc_ddata[111: 96] <= $signed(adc_data_2[31:20]);
adc_ddata[ 95: 80] <= $signed(adc_data_1[31:20]);
adc_ddata[ 79: 64] <= $signed(adc_data_0[31:20]);
adc_ddata[ 63: 48] <= $signed(adc_data_3[15: 4]);
adc_ddata[ 47: 32] <= $signed(adc_data_2[15: 4]);
adc_ddata[ 31: 16] <= $signed(adc_data_1[15: 4]);
adc_ddata[ 15: 0] <= $signed(adc_data_0[15: 4]);
end
4'b0001: begin
adc_dsync <= 1'b1;
adc_dwr <= adc_valid_0 & adc_dcnt[0] & adc_dcnt[1];
adc_ddata[255:240] <= $signed(adc_data_0[63:52]);
adc_ddata[239:224] <= $signed(adc_data_0[47:36]);
adc_ddata[223:208] <= $signed(adc_data_0[31:20]);
adc_ddata[207:192] <= $signed(adc_data_0[15: 4]);
adc_ddata[191:176] <= adc_ddata[255:240];
adc_ddata[175:160] <= adc_ddata[239:224];
adc_ddata[159:144] <= adc_ddata[223:208];
adc_ddata[143:128] <= adc_ddata[207:192];
adc_ddata[127:112] <= adc_ddata[191:176];
adc_ddata[111: 96] <= adc_ddata[175:160];
adc_ddata[ 95: 80] <= adc_ddata[159:144];
adc_ddata[ 79: 64] <= adc_ddata[143:128];
adc_ddata[ 63: 48] <= adc_ddata[127:112];
adc_ddata[ 47: 32] <= adc_ddata[111: 96];
adc_ddata[ 31: 16] <= adc_ddata[ 95: 80];
adc_ddata[ 15: 0] <= adc_ddata[ 79: 64];
end
4'b0010: begin
adc_dsync <= 1'b1;
adc_dwr <= adc_valid_1 & adc_dcnt[0] & adc_dcnt[1];
adc_ddata[255:240] <= $signed(adc_data_1[63:52]);
adc_ddata[239:224] <= $signed(adc_data_1[47:36]);
adc_ddata[223:208] <= $signed(adc_data_1[31:20]);
adc_ddata[207:192] <= $signed(adc_data_1[15: 4]);
adc_ddata[191:176] <= adc_ddata[255:240];
adc_ddata[175:160] <= adc_ddata[239:224];
adc_ddata[159:144] <= adc_ddata[223:208];
adc_ddata[143:128] <= adc_ddata[207:192];
adc_ddata[127:112] <= adc_ddata[191:176];
adc_ddata[111: 96] <= adc_ddata[175:160];
adc_ddata[ 95: 80] <= adc_ddata[159:144];
adc_ddata[ 79: 64] <= adc_ddata[143:128];
adc_ddata[ 63: 48] <= adc_ddata[127:112];
adc_ddata[ 47: 32] <= adc_ddata[111: 96];
adc_ddata[ 31: 16] <= adc_ddata[ 95: 80];
adc_ddata[ 15: 0] <= adc_ddata[ 79: 64];
end
4'b0011: begin
adc_dsync <= 1'b1;
adc_dwr <= adc_valid_1 & adc_valid_0 & adc_dcnt[0];
adc_ddata[255:240] <= $signed(adc_data_1[63:52]);
adc_ddata[239:224] <= $signed(adc_data_0[63:52]);
adc_ddata[223:208] <= $signed(adc_data_1[47:36]);
adc_ddata[207:192] <= $signed(adc_data_0[47:36]);
adc_ddata[191:176] <= $signed(adc_data_1[31:20]);
adc_ddata[175:160] <= $signed(adc_data_0[31:20]);
adc_ddata[159:144] <= $signed(adc_data_1[15: 4]);
adc_ddata[143:128] <= $signed(adc_data_0[15: 4]);
adc_ddata[127:112] <= adc_ddata[255:240];
adc_ddata[111: 96] <= adc_ddata[239:224];
adc_ddata[ 95: 80] <= adc_ddata[223:208];
adc_ddata[ 79: 64] <= adc_ddata[207:192];
adc_ddata[ 63: 48] <= adc_ddata[191:176];
adc_ddata[ 47: 32] <= adc_ddata[175:160];
adc_ddata[ 31: 16] <= adc_ddata[159:144];
adc_ddata[ 15: 0] <= adc_ddata[143:128];
end
4'b0100: begin
adc_dsync <= 1'b1;
adc_dwr <= adc_valid_2 & adc_dcnt[0] & adc_dcnt[1];
adc_ddata[255:240] <= $signed(adc_data_2[63:52]);
adc_ddata[239:224] <= $signed(adc_data_2[47:36]);
adc_ddata[223:208] <= $signed(adc_data_2[31:20]);
adc_ddata[207:192] <= $signed(adc_data_2[15: 4]);
adc_ddata[191:176] <= adc_ddata[255:240];
adc_ddata[175:160] <= adc_ddata[239:224];
adc_ddata[159:144] <= adc_ddata[223:208];
adc_ddata[143:128] <= adc_ddata[207:192];
adc_ddata[127:112] <= adc_ddata[191:176];
adc_ddata[111: 96] <= adc_ddata[175:160];
adc_ddata[ 95: 80] <= adc_ddata[159:144];
adc_ddata[ 79: 64] <= adc_ddata[143:128];
adc_ddata[ 63: 48] <= adc_ddata[127:112];
adc_ddata[ 47: 32] <= adc_ddata[111: 96];
adc_ddata[ 31: 16] <= adc_ddata[ 95: 80];
adc_ddata[ 15: 0] <= adc_ddata[ 79: 64];
end
4'b1000: begin
adc_dsync <= 1'b1;
adc_dwr <= adc_valid_3 & adc_dcnt[0] & adc_dcnt[1];
adc_ddata[255:240] <= $signed(adc_data_3[63:52]);
adc_ddata[239:224] <= $signed(adc_data_3[47:36]);
adc_ddata[223:208] <= $signed(adc_data_3[31:20]);
adc_ddata[207:192] <= $signed(adc_data_3[15: 4]);
adc_ddata[191:176] <= adc_ddata[255:240];
adc_ddata[175:160] <= adc_ddata[239:224];
adc_ddata[159:144] <= adc_ddata[223:208];
adc_ddata[143:128] <= adc_ddata[207:192];
adc_ddata[127:112] <= adc_ddata[191:176];
adc_ddata[111: 96] <= adc_ddata[175:160];
adc_ddata[ 95: 80] <= adc_ddata[159:144];
adc_ddata[ 79: 64] <= adc_ddata[143:128];
adc_ddata[ 63: 48] <= adc_ddata[127:112];
adc_ddata[ 47: 32] <= adc_ddata[111: 96];
adc_ddata[ 31: 16] <= adc_ddata[ 95: 80];
adc_ddata[ 15: 0] <= adc_ddata[ 79: 64];
end
4'b1100: begin
adc_dsync <= 1'b1;
adc_dwr <= adc_valid_3 & adc_valid_2 & adc_dcnt[0];
adc_ddata[255:240] <= $signed(adc_data_3[63:52]);
adc_ddata[239:224] <= $signed(adc_data_2[63:52]);
adc_ddata[223:208] <= $signed(adc_data_3[47:36]);
adc_ddata[207:192] <= $signed(adc_data_2[47:36]);
adc_ddata[191:176] <= $signed(adc_data_3[31:20]);
adc_ddata[175:160] <= $signed(adc_data_2[31:20]);
adc_ddata[159:144] <= $signed(adc_data_3[15: 4]);
adc_ddata[143:128] <= $signed(adc_data_2[15: 4]);
adc_ddata[127:112] <= adc_ddata[255:240];
adc_ddata[111: 96] <= adc_ddata[239:224];
adc_ddata[ 95: 80] <= adc_ddata[223:208];
adc_ddata[ 79: 64] <= adc_ddata[207:192];
adc_ddata[ 63: 48] <= adc_ddata[191:176];
adc_ddata[ 47: 32] <= adc_ddata[175:160];
adc_ddata[ 31: 16] <= adc_ddata[159:144];
adc_ddata[ 15: 0] <= adc_ddata[143:128];
end
default: begin
adc_dsync <= 1'b0;
adc_dwr <= 1'b0;
adc_ddata <= 256'd0;
end
endcase
end
// spi
@ -459,22 +286,6 @@ module system_top (
.dio_p (gpio_bd));
system_wrapper i_system_wrapper (
.adc_clk (adc_clk),
.adc_data_0 (adc_data_0),
.adc_data_1 (adc_data_1),
.adc_data_2 (adc_data_2),
.adc_data_3 (adc_data_3),
.adc_ddata (adc_ddata),
.adc_dsync (adc_dsync),
.adc_dwr (adc_dwr),
.adc_enable_0 (adc_enable_0),
.adc_enable_1 (adc_enable_1),
.adc_enable_2 (adc_enable_2),
.adc_enable_3 (adc_enable_3),
.adc_valid_0 (adc_valid_0),
.adc_valid_1 (adc_valid_1),
.adc_valid_2 (adc_valid_2),
.adc_valid_3 (adc_valid_3),
.ddr3_addr (ddr3_addr),
.ddr3_ba (ddr3_ba),
.ddr3_cas_n (ddr3_cas_n),