m2k: Remove dac last_sample_hold control
axi_dac_interpolate - Remove last sample hold control axi_ad9963 - Remove last sample hold control and set as default the last sample hold functionality plus code optimization changes.main
parent
06201d5ee1
commit
6998cc99b4
|
@ -107,8 +107,6 @@ module axi_ad9963 #(
|
||||||
input dma_valid_q,
|
input dma_valid_q,
|
||||||
input dac_dunf,
|
input dac_dunf,
|
||||||
|
|
||||||
input hold_last_sample,
|
|
||||||
|
|
||||||
// axi interface
|
// axi interface
|
||||||
|
|
||||||
input s_axi_aclk,
|
input s_axi_aclk,
|
||||||
|
@ -169,8 +167,6 @@ module axi_ad9963 #(
|
||||||
wire up_rack_tx_s;
|
wire up_rack_tx_s;
|
||||||
wire up_adc_ce;
|
wire up_adc_ce;
|
||||||
wire up_dac_ce;
|
wire up_dac_ce;
|
||||||
wire valid_out_q_s;
|
|
||||||
wire valid_out_i_s;
|
|
||||||
|
|
||||||
// signal name changes
|
// signal name changes
|
||||||
|
|
||||||
|
@ -208,10 +204,7 @@ module axi_ad9963 #(
|
||||||
.adc_status (adc_status_s),
|
.adc_status (adc_status_s),
|
||||||
.up_adc_ce(up_adc_ce),
|
.up_adc_ce(up_adc_ce),
|
||||||
.dac_data (dac_data_s),
|
.dac_data (dac_data_s),
|
||||||
.out_valid_q (valid_out_q_s),
|
|
||||||
.out_valid_i (valid_out_i_s),
|
|
||||||
.up_dac_ce(up_dac_ce),
|
.up_dac_ce(up_dac_ce),
|
||||||
.tx_sample_hold (hold_last_sample),
|
|
||||||
.up_clk (up_clk),
|
.up_clk (up_clk),
|
||||||
.up_adc_dld (up_adc_dld_s),
|
.up_adc_dld (up_adc_dld_s),
|
||||||
.up_adc_dwdata (up_adc_dwdata_s),
|
.up_adc_dwdata (up_adc_dwdata_s),
|
||||||
|
@ -288,12 +281,10 @@ module axi_ad9963 #(
|
||||||
.dac_valid_i (dac_valid_i),
|
.dac_valid_i (dac_valid_i),
|
||||||
.dac_data_i (dac_data_i),
|
.dac_data_i (dac_data_i),
|
||||||
.dma_valid_i (dma_valid_i),
|
.dma_valid_i (dma_valid_i),
|
||||||
.out_valid_i (valid_out_i_s),
|
|
||||||
.dac_enable_q (dac_enable_q),
|
.dac_enable_q (dac_enable_q),
|
||||||
.dac_valid_q (dac_valid_q),
|
.dac_valid_q (dac_valid_q),
|
||||||
.dac_data_q (dac_data_q),
|
.dac_data_q (dac_data_q),
|
||||||
.dma_valid_q (dma_valid_q),
|
.dma_valid_q (dma_valid_q),
|
||||||
.out_valid_q (valid_out_q_s),
|
|
||||||
.dac_dunf(dac_dunf),
|
.dac_dunf(dac_dunf),
|
||||||
.up_dac_ce(up_dac_ce),
|
.up_dac_ce(up_dac_ce),
|
||||||
.up_rstn (up_rstn),
|
.up_rstn (up_rstn),
|
||||||
|
|
|
@ -73,11 +73,8 @@ module axi_ad9963_if #(
|
||||||
|
|
||||||
// transmit data path interface
|
// transmit data path interface
|
||||||
|
|
||||||
input out_valid_q,
|
|
||||||
input out_valid_i,
|
|
||||||
input [23:0] dac_data,
|
input [23:0] dac_data,
|
||||||
input up_dac_ce,
|
input up_dac_ce,
|
||||||
input tx_sample_hold,
|
|
||||||
|
|
||||||
// delay interface
|
// delay interface
|
||||||
|
|
||||||
|
@ -93,9 +90,6 @@ module axi_ad9963_if #(
|
||||||
// internal registers
|
// internal registers
|
||||||
|
|
||||||
reg [11:0] rx_data_p = 0;
|
reg [11:0] rx_data_p = 0;
|
||||||
reg [11:0] tx_data_p = 'd0;
|
|
||||||
reg [11:0] tx_data_n = 'd0;
|
|
||||||
reg [23:0] constant_sample = 'd0;
|
|
||||||
|
|
||||||
// internal signals
|
// internal signals
|
||||||
|
|
||||||
|
@ -103,6 +97,8 @@ module axi_ad9963_if #(
|
||||||
wire [11:0] rx_data_n_s;
|
wire [11:0] rx_data_n_s;
|
||||||
wire rx_iq_p_s;
|
wire rx_iq_p_s;
|
||||||
wire rx_iq_n_s;
|
wire rx_iq_n_s;
|
||||||
|
wire [11:0] tx_data_p;
|
||||||
|
wire [11:0] tx_data_n;
|
||||||
|
|
||||||
wire div_clk;
|
wire div_clk;
|
||||||
|
|
||||||
|
@ -119,26 +115,8 @@ module axi_ad9963_if #(
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
always @(posedge dac_clk) begin
|
assign tx_data_p = dac_data[11: 0];
|
||||||
if (dac_rst == 1'b1) begin
|
assign tx_data_n = dac_data[23:12];
|
||||||
tx_data_p <= 24'd0;
|
|
||||||
tx_data_n <= 24'd0;
|
|
||||||
constant_sample <= 24'd0;
|
|
||||||
end else begin
|
|
||||||
if(out_valid_i == 1'b1) begin
|
|
||||||
tx_data_p <= dac_data[11: 0];
|
|
||||||
constant_sample[11: 0] <= tx_sample_hold ? dac_data[11: 0] : 12'd0;
|
|
||||||
end else begin
|
|
||||||
tx_data_p <= constant_sample[11:0] ;
|
|
||||||
end
|
|
||||||
if(out_valid_q == 1'b1) begin
|
|
||||||
tx_data_n <= dac_data[23:12];
|
|
||||||
constant_sample[23:12] <= tx_sample_hold ? dac_data[23:12] : 12'd0;
|
|
||||||
end else begin
|
|
||||||
tx_data_n <= constant_sample[23:12];
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
always @(posedge adc_clk) begin
|
always @(posedge adc_clk) begin
|
||||||
if (adc_rst == 1'b1) begin
|
if (adc_rst == 1'b1) begin
|
||||||
|
|
|
@ -68,12 +68,10 @@ module axi_ad9963_tx #(
|
||||||
output reg dac_valid_i,
|
output reg dac_valid_i,
|
||||||
input [15:0] dac_data_i,
|
input [15:0] dac_data_i,
|
||||||
input dma_valid_i,
|
input dma_valid_i,
|
||||||
output out_valid_i,
|
|
||||||
output dac_enable_q,
|
output dac_enable_q,
|
||||||
output reg dac_valid_q,
|
output reg dac_valid_q,
|
||||||
input [15:0] dac_data_q,
|
input [15:0] dac_data_q,
|
||||||
input dma_valid_q,
|
input dma_valid_q,
|
||||||
output out_valid_q,
|
|
||||||
input dac_dunf,
|
input dac_dunf,
|
||||||
|
|
||||||
output up_dac_ce,
|
output up_dac_ce,
|
||||||
|
@ -147,7 +145,6 @@ module axi_ad9963_tx #(
|
||||||
.dac_data_sync (dac_data_sync_s),
|
.dac_data_sync (dac_data_sync_s),
|
||||||
.dac_dds_format (dac_dds_format_s),
|
.dac_dds_format (dac_dds_format_s),
|
||||||
.dma_valid (dma_valid_i),
|
.dma_valid (dma_valid_i),
|
||||||
.out_data_valid (out_valid_i),
|
|
||||||
.up_rstn (up_rstn),
|
.up_rstn (up_rstn),
|
||||||
.up_clk (up_clk),
|
.up_clk (up_clk),
|
||||||
.up_wreq (up_wreq),
|
.up_wreq (up_wreq),
|
||||||
|
@ -181,7 +178,6 @@ module axi_ad9963_tx #(
|
||||||
.dac_data_sync (dac_data_sync_s),
|
.dac_data_sync (dac_data_sync_s),
|
||||||
.dac_dds_format (dac_dds_format_s),
|
.dac_dds_format (dac_dds_format_s),
|
||||||
.dma_valid (dma_valid_q),
|
.dma_valid (dma_valid_q),
|
||||||
.out_data_valid (out_valid_q),
|
|
||||||
.up_rstn (up_rstn),
|
.up_rstn (up_rstn),
|
||||||
.up_clk (up_clk),
|
.up_clk (up_clk),
|
||||||
.up_wreq (up_wreq),
|
.up_wreq (up_wreq),
|
||||||
|
|
|
@ -58,7 +58,6 @@ module axi_ad9963_tx_channel #(
|
||||||
output reg [11:0] dac_data_out,
|
output reg [11:0] dac_data_out,
|
||||||
input [11:0] dac_data_in,
|
input [11:0] dac_data_in,
|
||||||
input dma_valid,
|
input dma_valid,
|
||||||
output out_data_valid,
|
|
||||||
|
|
||||||
// processor interface
|
// processor interface
|
||||||
|
|
||||||
|
@ -113,8 +112,6 @@ module axi_ad9963_tx_channel #(
|
||||||
wire [15:0] dac_iqcor_coeff_1_s;
|
wire [15:0] dac_iqcor_coeff_1_s;
|
||||||
wire [15:0] dac_iqcor_coeff_2_s;
|
wire [15:0] dac_iqcor_coeff_2_s;
|
||||||
|
|
||||||
assign out_data_valid = dac_iqcor_valid_s;
|
|
||||||
|
|
||||||
// dac iq correction
|
// dac iq correction
|
||||||
|
|
||||||
always @(posedge dac_clk) begin
|
always @(posedge dac_clk) begin
|
||||||
|
|
|
@ -58,7 +58,6 @@ module axi_dac_interpolate #(
|
||||||
output [15:0] dac_int_data_b,
|
output [15:0] dac_int_data_b,
|
||||||
output dac_valid_out_a,
|
output dac_valid_out_a,
|
||||||
output dac_valid_out_b,
|
output dac_valid_out_b,
|
||||||
output hold_last_sample,
|
|
||||||
output underflow,
|
output underflow,
|
||||||
|
|
||||||
input [ 1:0] trigger_i,
|
input [ 1:0] trigger_i,
|
||||||
|
@ -152,8 +151,7 @@ module axi_dac_interpolate #(
|
||||||
wire underflow_a;
|
wire underflow_a;
|
||||||
wire underflow_b;
|
wire underflow_b;
|
||||||
|
|
||||||
wire [ 1:0] lsample_hold_config;
|
wire stop_sync_channels;
|
||||||
wire sync_stop_channels;
|
|
||||||
|
|
||||||
// signal name changes
|
// signal name changes
|
||||||
|
|
||||||
|
@ -206,9 +204,6 @@ module axi_dac_interpolate #(
|
||||||
low_level_trigger <= ~trigger_i_m3 & low_level;
|
low_level_trigger <= ~trigger_i_m3 & low_level;
|
||||||
end
|
end
|
||||||
|
|
||||||
assign hold_last_sample = lsample_hold_config[0];
|
|
||||||
assign sync_stop_channels = lsample_hold_config[1];
|
|
||||||
|
|
||||||
assign underflow = underflow_a | underflow_b;
|
assign underflow = underflow_a | underflow_b;
|
||||||
|
|
||||||
axi_dac_interpolate_filter #(
|
axi_dac_interpolate_filter #(
|
||||||
|
@ -220,7 +215,7 @@ module axi_dac_interpolate #(
|
||||||
.dac_data (dac_data_a),
|
.dac_data (dac_data_a),
|
||||||
.dac_valid (dac_valid_a),
|
.dac_valid (dac_valid_a),
|
||||||
.dac_valid_out (dac_valid_out_a),
|
.dac_valid_out (dac_valid_out_a),
|
||||||
.sync_stop_channels (sync_stop_channels),
|
.sync_stop_channels (stop_sync_channels),
|
||||||
|
|
||||||
.dac_enable (dac_enable_a),
|
.dac_enable (dac_enable_a),
|
||||||
.dac_int_data (dac_int_data_a),
|
.dac_int_data (dac_int_data_a),
|
||||||
|
@ -249,7 +244,7 @@ module axi_dac_interpolate #(
|
||||||
.dac_data (dac_data_b),
|
.dac_data (dac_data_b),
|
||||||
.dac_valid (dac_valid_b),
|
.dac_valid (dac_valid_b),
|
||||||
.dac_valid_out (dac_valid_out_b),
|
.dac_valid_out (dac_valid_out_b),
|
||||||
.sync_stop_channels (sync_stop_channels),
|
.sync_stop_channels (stop_sync_channels),
|
||||||
.underflow (underflow_b),
|
.underflow (underflow_b),
|
||||||
|
|
||||||
.dac_enable (dac_enable_b),
|
.dac_enable (dac_enable_b),
|
||||||
|
@ -285,7 +280,7 @@ module axi_dac_interpolate #(
|
||||||
.dac_correction_coefficient_a(dac_correction_coefficient_a),
|
.dac_correction_coefficient_a(dac_correction_coefficient_a),
|
||||||
.dac_correction_coefficient_b(dac_correction_coefficient_b),
|
.dac_correction_coefficient_b(dac_correction_coefficient_b),
|
||||||
.trigger_config (trigger_config),
|
.trigger_config (trigger_config),
|
||||||
.lsample_hold_config (lsample_hold_config),
|
.stop_sync_channels (stop_sync_channels),
|
||||||
|
|
||||||
.up_rstn (up_rstn),
|
.up_rstn (up_rstn),
|
||||||
.up_clk (up_clk),
|
.up_clk (up_clk),
|
||||||
|
|
|
@ -45,12 +45,12 @@ module axi_dac_interpolate_reg(
|
||||||
output [ 2:0] dac_filter_mask_b,
|
output [ 2:0] dac_filter_mask_b,
|
||||||
output dma_transfer_suspend,
|
output dma_transfer_suspend,
|
||||||
output start_sync_channels,
|
output start_sync_channels,
|
||||||
|
output stop_sync_channels,
|
||||||
output dac_correction_enable_a,
|
output dac_correction_enable_a,
|
||||||
output dac_correction_enable_b,
|
output dac_correction_enable_b,
|
||||||
output [15:0] dac_correction_coefficient_a,
|
output [15:0] dac_correction_coefficient_a,
|
||||||
output [15:0] dac_correction_coefficient_b,
|
output [15:0] dac_correction_coefficient_b,
|
||||||
output [19:0] trigger_config,
|
output [19:0] trigger_config,
|
||||||
output [ 1:0] lsample_hold_config,
|
|
||||||
// bus interface
|
// bus interface
|
||||||
|
|
||||||
input up_rstn,
|
input up_rstn,
|
||||||
|
@ -67,24 +67,26 @@ module axi_dac_interpolate_reg(
|
||||||
|
|
||||||
// internal registers
|
// internal registers
|
||||||
|
|
||||||
reg [31:0] up_version = 32'h00020100;
|
reg [31:0] up_version = {16'h0002, /* MAJOR */
|
||||||
|
8'h02, /* MINOR */
|
||||||
|
8'h00}; /* PATCH */
|
||||||
reg [31:0] up_scratch = 32'h0;
|
reg [31:0] up_scratch = 32'h0;
|
||||||
|
|
||||||
reg [31:0] up_interpolation_ratio_a = 32'h0;
|
reg [31:0] up_interpolation_ratio_a = 32'h0;
|
||||||
reg [ 2:0] up_filter_mask_a = 3'h0;
|
reg [ 2:0] up_filter_mask_a = 3'h0;
|
||||||
reg [31:0] up_interpolation_ratio_b = 32'h0;
|
reg [31:0] up_interpolation_ratio_b = 32'h0;
|
||||||
reg [ 2:0] up_filter_mask_b = 3'h0;
|
reg [ 2:0] up_filter_mask_b = 3'h0;
|
||||||
reg [1:0] up_flags = 2'h2;
|
reg [2:0] up_flags = 3'h2;
|
||||||
reg [1:0] up_config = 2'h0;
|
reg [1:0] up_config = 2'h0;
|
||||||
reg [15:0] up_correction_coefficient_a = 16'h0;
|
reg [15:0] up_correction_coefficient_a = 16'h0;
|
||||||
reg [15:0] up_correction_coefficient_b = 16'h0;
|
reg [15:0] up_correction_coefficient_b = 16'h0;
|
||||||
reg [19:0] up_trigger_config = 20'h0;
|
reg [19:0] up_trigger_config = 20'h0;
|
||||||
reg [ 1:0] up_lsample_hold_config = 2'h0;
|
|
||||||
|
|
||||||
wire [ 1:0] flags;
|
wire [ 2:0] flags;
|
||||||
|
|
||||||
assign dma_transfer_suspend = flags[0];
|
assign dma_transfer_suspend = flags[0];
|
||||||
assign start_sync_channels = flags[1];
|
assign start_sync_channels = flags[1];
|
||||||
|
assign stop_sync_channels = flags[2];
|
||||||
|
|
||||||
always @(negedge up_rstn or posedge up_clk) begin
|
always @(negedge up_rstn or posedge up_clk) begin
|
||||||
if (up_rstn == 0) begin
|
if (up_rstn == 0) begin
|
||||||
|
@ -99,7 +101,6 @@ module axi_dac_interpolate_reg(
|
||||||
up_correction_coefficient_a <= 'd0;
|
up_correction_coefficient_a <= 'd0;
|
||||||
up_correction_coefficient_b <= 'd0;
|
up_correction_coefficient_b <= 'd0;
|
||||||
up_trigger_config <= 'd0;
|
up_trigger_config <= 'd0;
|
||||||
up_lsample_hold_config <= 'h0;
|
|
||||||
end else begin
|
end else begin
|
||||||
up_wack <= up_wreq;
|
up_wack <= up_wreq;
|
||||||
if ((up_wreq == 1'b1) && (up_waddr[4:0] == 5'h1)) begin
|
if ((up_wreq == 1'b1) && (up_waddr[4:0] == 5'h1)) begin
|
||||||
|
@ -118,7 +119,7 @@ module axi_dac_interpolate_reg(
|
||||||
up_filter_mask_b <= up_wdata[2:0];
|
up_filter_mask_b <= up_wdata[2:0];
|
||||||
end
|
end
|
||||||
if ((up_wreq == 1'b1) && (up_waddr[4:0] == 5'h14)) begin
|
if ((up_wreq == 1'b1) && (up_waddr[4:0] == 5'h14)) begin
|
||||||
up_flags <= {30'h0,up_wdata[1:0]};
|
up_flags <= {29'h0,up_wdata[2:0]};
|
||||||
end
|
end
|
||||||
if ((up_wreq == 1'b1) && (up_waddr[4:0] == 5'h15)) begin
|
if ((up_wreq == 1'b1) && (up_waddr[4:0] == 5'h15)) begin
|
||||||
up_config <= up_wdata[1:0];
|
up_config <= up_wdata[1:0];
|
||||||
|
@ -132,9 +133,6 @@ module axi_dac_interpolate_reg(
|
||||||
if ((up_wreq == 1'b1) && (up_waddr[4:0] == 5'h18)) begin
|
if ((up_wreq == 1'b1) && (up_waddr[4:0] == 5'h18)) begin
|
||||||
up_trigger_config <= up_wdata[19:0];
|
up_trigger_config <= up_wdata[19:0];
|
||||||
end
|
end
|
||||||
if ((up_wreq == 1'b1) && (up_waddr[4:0] == 5'h19)) begin
|
|
||||||
up_lsample_hold_config <= up_wdata[1:0];
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -154,12 +152,11 @@ module axi_dac_interpolate_reg(
|
||||||
5'h11: up_rdata <= {29'h0,up_filter_mask_a};
|
5'h11: up_rdata <= {29'h0,up_filter_mask_a};
|
||||||
5'h12: up_rdata <= up_interpolation_ratio_b;
|
5'h12: up_rdata <= up_interpolation_ratio_b;
|
||||||
5'h13: up_rdata <= {29'h0,up_filter_mask_b};
|
5'h13: up_rdata <= {29'h0,up_filter_mask_b};
|
||||||
5'h14: up_rdata <= {30'h0,up_flags};
|
5'h14: up_rdata <= {29'h0,up_flags};
|
||||||
5'h15: up_rdata <= {30'h0,up_config};
|
5'h15: up_rdata <= {30'h0,up_config};
|
||||||
5'h16: up_rdata <= {16'h0,up_correction_coefficient_a};
|
5'h16: up_rdata <= {16'h0,up_correction_coefficient_a};
|
||||||
5'h17: up_rdata <= {16'h0,up_correction_coefficient_b};
|
5'h17: up_rdata <= {16'h0,up_correction_coefficient_b};
|
||||||
5'h18: up_rdata <= {12'h0,up_trigger_config};
|
5'h18: up_rdata <= {12'h0,up_trigger_config};
|
||||||
5'h19: up_rdata <= {30'h0,up_lsample_hold_config};
|
|
||||||
default: up_rdata <= 0;
|
default: up_rdata <= 0;
|
||||||
endcase
|
endcase
|
||||||
end else begin
|
end else begin
|
||||||
|
@ -169,7 +166,7 @@ module axi_dac_interpolate_reg(
|
||||||
end
|
end
|
||||||
|
|
||||||
up_xfer_cntrl #(
|
up_xfer_cntrl #(
|
||||||
.DATA_WIDTH(128)
|
.DATA_WIDTH(127)
|
||||||
) i_xfer_cntrl (
|
) i_xfer_cntrl (
|
||||||
.up_rstn (up_rstn),
|
.up_rstn (up_rstn),
|
||||||
.up_clk (up_clk),
|
.up_clk (up_clk),
|
||||||
|
@ -178,8 +175,7 @@ module axi_dac_interpolate_reg(
|
||||||
up_correction_coefficient_b,// 16
|
up_correction_coefficient_b,// 16
|
||||||
up_correction_coefficient_a,// 16
|
up_correction_coefficient_a,// 16
|
||||||
up_trigger_config, // 20
|
up_trigger_config, // 20
|
||||||
up_lsample_hold_config, // 2
|
up_flags, // 3
|
||||||
up_flags, // 2
|
|
||||||
up_interpolation_ratio_b, // 32
|
up_interpolation_ratio_b, // 32
|
||||||
up_interpolation_ratio_a, // 32
|
up_interpolation_ratio_a, // 32
|
||||||
up_filter_mask_b, // 3
|
up_filter_mask_b, // 3
|
||||||
|
@ -193,8 +189,7 @@ module axi_dac_interpolate_reg(
|
||||||
dac_correction_coefficient_b, // 16
|
dac_correction_coefficient_b, // 16
|
||||||
dac_correction_coefficient_a, // 16
|
dac_correction_coefficient_a, // 16
|
||||||
trigger_config, // 20
|
trigger_config, // 20
|
||||||
lsample_hold_config, // 2
|
flags, // 3
|
||||||
flags, // 2
|
|
||||||
dac_interpolation_ratio_b, // 32
|
dac_interpolation_ratio_b, // 32
|
||||||
dac_interpolation_ratio_a, // 32
|
dac_interpolation_ratio_a, // 32
|
||||||
dac_filter_mask_b, // 3
|
dac_filter_mask_b, // 3
|
||||||
|
|
|
@ -265,7 +265,6 @@ ad_connect axi_dac_interpolate/trigger_la logic_analyzer/trigger_out_adc
|
||||||
|
|
||||||
ad_connect axi_dac_interpolate/dac_valid_out_a axi_ad9963/dma_valid_i
|
ad_connect axi_dac_interpolate/dac_valid_out_a axi_ad9963/dma_valid_i
|
||||||
ad_connect axi_dac_interpolate/dac_valid_out_b axi_ad9963/dma_valid_q
|
ad_connect axi_dac_interpolate/dac_valid_out_b axi_ad9963/dma_valid_q
|
||||||
ad_connect axi_dac_interpolate/hold_last_sample axi_ad9963/hold_last_sample
|
|
||||||
|
|
||||||
ad_connect /axi_ad9963/tx_data txd
|
ad_connect /axi_ad9963/tx_data txd
|
||||||
ad_connect /axi_ad9963/tx_iq txiq
|
ad_connect /axi_ad9963/tx_iq txiq
|
||||||
|
|
Loading…
Reference in New Issue