From 7e193e3af2110197bb52979748d3fa6acf46aa43 Mon Sep 17 00:00:00 2001 From: bonnom Date: Mon, 31 Mar 2025 16:38:27 +0200 Subject: [PATCH 1/2] Update dds.sv fixed the k out of range --- hdl/dds.sv | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/hdl/dds.sv b/hdl/dds.sv index ef49b7f..030f6b6 100644 --- a/hdl/dds.sv +++ b/hdl/dds.sv @@ -211,16 +211,21 @@ reg [TAYLOR_PIPELINE_STAGES - 1 : 0] valid_taylor; if (USE_TAYLOR) begin always_ff@(posedge clk) begin integer k; - for (k = 0; k < TAYLOR_PIPELINE_STAGES; k = k + 1) begin - if (!reset_n) begin + if (!reset_n) begin + for (k = 0; k < TAYLOR_PIPELINE_STAGES - 1; k = k + 1) begin out_sin_buf_taylor[k] <= '0; out_cos_buf_taylor[k] <= '0; - sin_extended[k] <= '0; - cos_extended[k] <= '0; phase_error_multiplied_buf[k] <= '0; phase_error_multiplied_buf2[k] <= '0; + sin_extended[k] <= '0; + cos_extended[k] <= '0; valid_taylor[k] <= '0; - end else begin + end + sin_extended[TAYLOR_PIPELINE_STAGES - 1] <= '0; + cos_extended[TAYLOR_PIPELINE_STAGES - 1] <= '0; + valid_taylor[TAYLOR_PIPELINE_STAGES - 1] <= '0; + end else begin + for (k = 0; k < TAYLOR_PIPELINE_STAGES; k = k + 1) begin if(k == 0) begin // stage 5 out_sin_buf_taylor[k] <= out_sin_phase; out_cos_buf_taylor[k] <= out_cos_phase; @@ -229,7 +234,7 @@ if (USE_TAYLOR) begin phase_error_multiplied_buf[k] <= phase_error_multiplied; phase_error_multiplied_buf2[k] <= phase_error_multiplied; valid_taylor[k] <= phase_error_valid; - end + end else if (k < TAYLOR_PIPELINE_STAGES -1) begin // stages 6-7 out_sin_buf_taylor[k] <= out_sin_buf_taylor[k-1]; out_cos_buf_taylor[k] <= out_cos_buf_taylor[k-1]; @@ -306,4 +311,4 @@ end assign m_axis_out_tdata = {m_axis_out_sin_tdata, m_axis_out_cos_tdata}; assign m_axis_out_tvalid = m_axis_out_sin_tvalid; -endmodule \ No newline at end of file +endmodule From 8812383218fb54cbc40a1742bb8275a4e8155b03 Mon Sep 17 00:00:00 2001 From: bonnom Date: Mon, 31 Mar 2025 17:36:58 +0200 Subject: [PATCH 2/2] Update dds.sv added explicit 1'b1 instead of 1 --- hdl/dds.sv | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hdl/dds.sv b/hdl/dds.sv index 030f6b6..7ff3202 100644 --- a/hdl/dds.sv +++ b/hdl/dds.sv @@ -82,13 +82,13 @@ always_ff @(posedge clk) begin sin_quadrant_index <= phase_buf[PHASE_DW-1:PHASE_DW-2]; // sin if (phase_buf[PHASE_DW - 2]) // if in 2nd or 4th quadrant - sin_lut_index <= ~phase_buf[PHASE_DW - 3 -: EFFECTIVE_LUT_WIDTH] + 1; + sin_lut_index <= ~phase_buf[PHASE_DW - 3 -: EFFECTIVE_LUT_WIDTH] + 1'b1; else sin_lut_index <= phase_buf[PHASE_DW - 3 -: EFFECTIVE_LUT_WIDTH]; // cos if (SIN_COS || USE_TAYLOR) begin if (!phase_buf[PHASE_DW - 2]) // if in 1st or 3rd quadrant - cos_lut_index <= ~phase_buf[PHASE_DW - 3 -: EFFECTIVE_LUT_WIDTH] + 1; + cos_lut_index <= ~phase_buf[PHASE_DW - 3 -: EFFECTIVE_LUT_WIDTH] + 1'b1; else cos_lut_index <= phase_buf[PHASE_DW - 3 -: EFFECTIVE_LUT_WIDTH]; end