ad_ip_jesd204_tpl_dac: Fix pattern output correctly when DATA_PATH_WIDTH=1
Some modes produce only one sample per channel per beat, e.g. when M=2*L. In this case the pattern output needs to alternate between the two patterns from beat to beat. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>main
parent
5d044b9fd3
commit
ae8ce1ccd8
|
@ -65,6 +65,26 @@ module ad_ip_jesd204_tpl_dac_channel #(
|
||||||
// internal signals
|
// internal signals
|
||||||
|
|
||||||
wire [DATA_PATH_WIDTH*16-1:0] dac_dds_data_s;
|
wire [DATA_PATH_WIDTH*16-1:0] dac_dds_data_s;
|
||||||
|
wire [DATA_PATH_WIDTH*16-1:0] dac_pat_data_s;
|
||||||
|
|
||||||
|
generate
|
||||||
|
if (DATA_PATH_WIDTH > 1) begin
|
||||||
|
assign dac_pat_data_s = {DATA_PATH_WIDTH/2{dac_pat_data_1,dac_pat_data_0}};
|
||||||
|
end else begin
|
||||||
|
reg dac_pat_data_sel = 1'b0;
|
||||||
|
|
||||||
|
always @(posedge clk) begin
|
||||||
|
if (dac_data_sync == 1'b1) begin
|
||||||
|
dac_pat_data_sel <= 1'b0;
|
||||||
|
end else begin
|
||||||
|
dac_pat_data_sel <= ~dac_pat_data_sel;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
assign dac_pat_data_s = dac_pat_data_sel == 1'b0 ?
|
||||||
|
dac_pat_data_0 : dac_pat_data_1;
|
||||||
|
end
|
||||||
|
endgenerate
|
||||||
|
|
||||||
// dac data select
|
// dac data select
|
||||||
|
|
||||||
|
@ -77,7 +97,7 @@ module ad_ip_jesd204_tpl_dac_channel #(
|
||||||
4'h4: dac_data <= ~pn7_data;
|
4'h4: dac_data <= ~pn7_data;
|
||||||
4'h3: dac_data <= 'h00;
|
4'h3: dac_data <= 'h00;
|
||||||
4'h2: dac_data <= dma_data;
|
4'h2: dac_data <= dma_data;
|
||||||
4'h1: dac_data <= {DATA_PATH_WIDTH/2{dac_pat_data_1, dac_pat_data_0}};
|
4'h1: dac_data <= dac_pat_data_s;
|
||||||
default: dac_data <= dac_dds_data_s;
|
default: dac_data <= dac_dds_data_s;
|
||||||
endcase
|
endcase
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue