diff --git a/projects/ad6676evb/common/ad6676evb_bd.tcl b/projects/ad6676evb/common/ad6676evb_bd.tcl index 6bfd35617..83769a072 100644 --- a/projects/ad6676evb/common/ad6676evb_bd.tcl +++ b/projects/ad6676evb/common/ad6676evb_bd.tcl @@ -1,35 +1,42 @@ +# +# Parameter description: +# RX_JESD_L : Number of lanes per link +# source $ad_hdl_dir/library/jesd204/scripts/jesd204.tcl # JESD204B interface configuration parameters -set RX_NUM_OF_LANES 2 +set RX_NUM_OF_LANES $ad_project_params(RX_JESD_L) set RX_NUM_OF_CONVERTERS 2 set RX_SAMPLES_PER_FRAME 1 set RX_SAMPLE_WIDTH 16 +set RX_SAMPLES_PER_CHANNEL [expr ($RX_NUM_OF_LANES*32) / ($RX_NUM_OF_CONVERTERS*$RX_SAMPLE_WIDTH)] ; # (L * 32) / (M * N) + +set MAX_RX_NUM_OF_LANES 2 + # adc peripherals ad_ip_instance axi_adxcvr axi_ad6676_xcvr -ad_ip_parameter axi_ad6676_xcvr CONFIG.NUM_OF_LANES 2 +ad_ip_parameter axi_ad6676_xcvr CONFIG.NUM_OF_LANES $RX_NUM_OF_LANES ad_ip_parameter axi_ad6676_xcvr CONFIG.QPLL_ENABLE 0 ad_ip_parameter axi_ad6676_xcvr CONFIG.TX_OR_RX_N 0 ad_ip_parameter axi_ad6676_xcvr CONFIG.LPM_OR_DFE_N 0 ad_ip_parameter axi_ad6676_xcvr CONFIG.SYS_CLK_SEL 0x0 ad_ip_parameter axi_ad6676_xcvr CONFIG.OUT_CLK_SEL 0x4 -adi_axi_jesd204_rx_create axi_ad6676_jesd 2 +adi_axi_jesd204_rx_create axi_ad6676_jesd $RX_NUM_OF_LANES -#ad_ip_instance axi_ad6676 axi_ad6676_core adi_tpl_jesd204_rx_create axi_ad6676_core $RX_NUM_OF_LANES \ $RX_NUM_OF_CONVERTERS \ $RX_SAMPLES_PER_FRAME \ $RX_SAMPLE_WIDTH \ -ad_ip_instance util_cpack2 axi_ad6676_cpack { \ - NUM_OF_CHANNELS 2 \ - SAMPLES_PER_CHANNEL 2 \ - SAMPLE_DATA_WIDTH 16 \ -} +ad_ip_instance util_cpack2 axi_ad6676_cpack [list \ + NUM_OF_CHANNELS $RX_NUM_OF_CONVERTERS \ + SAMPLES_PER_CHANNEL $RX_SAMPLES_PER_CHANNEL \ + SAMPLE_DATA_WIDTH $RX_SAMPLE_WIDTH \ +] ad_ip_instance axi_dmac axi_ad6676_dma ad_ip_parameter axi_ad6676_dma CONFIG.DMA_TYPE_SRC 2 @@ -50,7 +57,7 @@ ad_ip_instance util_adxcvr util_ad6676_xcvr ad_ip_parameter util_ad6676_xcvr CONFIG.CPLL_FBDIV 2 ad_ip_parameter util_ad6676_xcvr CONFIG.CPLL_FBDIV_4_5 5 ad_ip_parameter util_ad6676_xcvr CONFIG.TX_NUM_OF_LANES 0 -ad_ip_parameter util_ad6676_xcvr CONFIG.RX_NUM_OF_LANES 2 +ad_ip_parameter util_ad6676_xcvr CONFIG.RX_NUM_OF_LANES $MAX_RX_NUM_OF_LANES ad_ip_parameter util_ad6676_xcvr CONFIG.RX_OUT_DIV 1 ad_ip_parameter util_ad6676_xcvr CONFIG.RX_CLK25_DIV 8 ad_ip_parameter util_ad6676_xcvr CONFIG.RX_DFE_LPM_CFG 0x0954 @@ -70,7 +77,7 @@ ad_connect $sys_cpu_clk util_ad6676_xcvr/up_clk # connections (adc) -ad_xcvrcon util_ad6676_xcvr axi_ad6676_xcvr axi_ad6676_jesd +ad_xcvrcon util_ad6676_xcvr axi_ad6676_xcvr axi_ad6676_jesd {} {} {} $MAX_RX_NUM_OF_LANES ad_connect util_ad6676_xcvr/rx_out_clk_0 axi_ad6676_core/link_clk ad_connect util_ad6676_xcvr/rx_out_clk_0 rx_core_clk ad_connect axi_ad6676_jesd/rx_sof axi_ad6676_core/link_sof @@ -81,7 +88,7 @@ ad_connect util_ad6676_xcvr/rx_out_clk_0 axi_ad6676_cpack/clk ad_connect axi_ad6676_jesd_rstgen/peripheral_reset axi_ad6676_cpack/reset ad_connect axi_ad6676_core/adc_dovf axi_ad6676_cpack/fifo_wr_overflow ad_connect axi_ad6676_core/adc_valid_0 axi_ad6676_cpack/fifo_wr_en -for {set i 0} {$i < 2} {incr i} { +for {set i 0} {$i < $RX_NUM_OF_CONVERTERS} {incr i} { ad_connect axi_ad6676_core/adc_enable_${i} axi_ad6676_cpack/enable_${i} ad_connect axi_ad6676_core/adc_data_${i} axi_ad6676_cpack/fifo_wr_data_${i} } @@ -110,4 +117,3 @@ ad_connect $sys_dma_resetn axi_ad6676_dma/m_dest_axi_aresetn ad_cpu_interrupt ps-12 mb-12 axi_ad6676_jesd/irq ad_cpu_interrupt ps-13 mb-13 axi_ad6676_dma/irq - diff --git a/projects/ad6676evb/vc707/system_project.tcl b/projects/ad6676evb/vc707/system_project.tcl index 5496a3530..927641a37 100644 --- a/projects/ad6676evb/vc707/system_project.tcl +++ b/projects/ad6676evb/vc707/system_project.tcl @@ -1,11 +1,24 @@ - - source ../../scripts/adi_env.tcl source $ad_hdl_dir/projects/scripts/adi_project_xilinx.tcl source $ad_hdl_dir/projects/scripts/adi_board.tcl -adi_project ad6676evb_vc707 +# get_env_param retrieves parameter value from the environment if exists, +# other case use the default value +# +# Use over-writable parameters from the environment. +# +# e.g. +# make RX_JESD_L=1 +# make RX_JESD_L=2 + +# Parameter description: +# RX_JESD_L : Number of lanes per link + +adi_project ad6676evb_vc707 0 [list \ + RX_JESD_L [get_env_param RX_JESD_L 2 ] \ +] + adi_project_files ad6676evb_vc707 [list \ "system_top.v" \ "system_constr.xdc"\ diff --git a/projects/ad6676evb/vc707/system_top.v b/projects/ad6676evb/vc707/system_top.v index ba4a93fd6..256d76c87 100644 --- a/projects/ad6676evb/vc707/system_top.v +++ b/projects/ad6676evb/vc707/system_top.v @@ -236,7 +236,7 @@ module system_top ( .sys_clk_p (sys_clk_p), .sys_rst (sys_rst), .uart_sin (uart_sin), - .uart_sout (uart_sout)); + .uart_sout (uart_sout)); endmodule diff --git a/projects/ad6676evb/zc706/system_project.tcl b/projects/ad6676evb/zc706/system_project.tcl index 168a0170f..b660e9503 100644 --- a/projects/ad6676evb/zc706/system_project.tcl +++ b/projects/ad6676evb/zc706/system_project.tcl @@ -1,11 +1,24 @@ - - source ../../scripts/adi_env.tcl source $ad_hdl_dir/projects/scripts/adi_project_xilinx.tcl source $ad_hdl_dir/projects/scripts/adi_board.tcl -adi_project ad6676evb_zc706 +# get_env_param retrieves parameter value from the environment if exists, +# other case use the default value +# +# Use over-writable parameters from the environment. +# +# e.g. +# make RX_JESD_L=1 +# make RX_JESD_L=2 + +# Parameter description: +# RX_JESD_L : Number of lanes per link + +adi_project ad6676evb_zc706 0 [list \ + RX_JESD_L [get_env_param RX_JESD_L 2 ] \ +] + adi_project_files ad6676evb_zc706 [list \ "system_top.v" \ "system_constr.xdc"\ diff --git a/projects/ad6676evb/zc706/system_top.v b/projects/ad6676evb/zc706/system_top.v index a8dba5dca..da6cbe9d5 100644 --- a/projects/ad6676evb/zc706/system_top.v +++ b/projects/ad6676evb/zc706/system_top.v @@ -114,7 +114,7 @@ module system_top ( wire rx_ref_clk; wire rx_sync; wire rx_sysref; - wire rx_clk; + wire rx_clk; assign gpio_i[63:42]= gpio_o[63:42]; assign gpio_i[31:15]= gpio_o[31:15];