axi_ad9963: Allow to disable the IDELAYs on the ADC data path

Not all designs need the IDELAYs. Disabling them can reduce power consumption of the system.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
main
Lars-Peter Clausen 2017-04-17 13:12:06 +02:00
parent 09ffe42603
commit 72cdd846b0
3 changed files with 21 additions and 2 deletions

View File

@ -43,6 +43,7 @@ module axi_ad9963 #(
parameter ID = 0,
parameter DEVICE_TYPE = 0,
parameter ADC_IODELAY_ENABLE = 0,
parameter DAC_IODELAY_ENABLE = 0,
parameter IO_DELAY_GROUP = "dev_if_delay_group",
parameter DAC_DATAPATH_DISABLE = 0,
@ -176,6 +177,7 @@ module axi_ad9963 #(
axi_ad9963_if #(
.DEVICE_TYPE (DEVICE_TYPE),
.ADC_IODELAY_ENABLE (ADC_IODELAY_ENABLE),
.DAC_IODELAY_ENABLE (DAC_IODELAY_ENABLE),
.IO_DELAY_GROUP (IO_DELAY_GROUP))
i_dev_if (
@ -206,8 +208,9 @@ module axi_ad9963 #(
axi_ad9963_rx #(
.ID (ID),
.DATAPATH_DISABLE (ADC_DATAPATH_DISABLE))
i_rx (
.DATAPATH_DISABLE (ADC_DATAPATH_DISABLE),
.IODELAY_ENABLE (ADC_IODELAY_ENABLE)
) i_rx (
.adc_rst (adc_rst),
.adc_clk (adc_clk),
.adc_valid (adc_valid_s),

View File

@ -36,6 +36,7 @@ module axi_ad9963_if #(
parameter DEVICE_TYPE = 0,
parameter DAC_IODELAY_ENABLE = 0,
parameter ADC_IODELAY_ENABLE = 0,
parameter IO_DELAY_GROUP = "dev_if_delay_group") (
// physical interface (receive)
@ -135,6 +136,7 @@ module axi_ad9963_if #(
ad_lvds_in #(
.SINGLE_ENDED (1),
.DEVICE_TYPE (DEVICE_TYPE),
.IODELAY_ENABLE (ADC_IODELAY_ENABLE),
.IODELAY_CTRL (0),
.IODELAY_GROUP (IO_DELAY_GROUP))
i_rx_data (
@ -158,6 +160,7 @@ module axi_ad9963_if #(
ad_lvds_in #(
.SINGLE_ENDED (1),
.DEVICE_TYPE (DEVICE_TYPE),
.IODELAY_ENABLE (ADC_IODELAY_ENABLE),
.IODELAY_CTRL (1),
.IODELAY_GROUP (IO_DELAY_GROUP))
i_rx_iq (

View File

@ -42,6 +42,7 @@ module axi_ad9963_rx #(
// parameters
parameter DATAPATH_DISABLE = 0,
parameter IODELAY_ENABLE = 0,
parameter ID = 0) (
// adc interface
@ -233,6 +234,8 @@ module axi_ad9963_rx #(
// adc delay control
generate if (IODELAY_ENABLE == 1) begin
up_delay_cntrl #(.DATA_WIDTH(13), .BASE_ADDRESS(6'h02)) i_delay_cntrl (
.delay_clk (delay_clk),
.delay_rst (delay_rst),
@ -251,6 +254,16 @@ module axi_ad9963_rx #(
.up_rdata (up_rdata_s[3]),
.up_rack (up_rack_s[3]));
end else begin
assign up_dld = 'h00;
assign up_dwdata = 'h00;
assign delay_rst = 1'b1;
assign up_wack_s[3] = 0;
assign up_rack_s[3] = 0;
assign up_rdata_s[3] = 'h00;
end
endgenerate
endmodule
// ***************************************************************************