Achieve timing closure: DSP48E1 pipelines, 4-stage NCO, 28-bit CIC, ASYNC_REG
Phase 0+ timing optimization (attempts #13-22 + implementation): NCO (nco_400m_enhanced.v): - 4-stage pipeline: DSP48E1 accumulate -> LUT read -> negate -> quadrant MUX - DSP48E1 phase accumulator in P=P+C mode (eliminates 8-stage CARRY4 chain) - Registered phase_inc_dithered to break cascaded 32-bit add path DDC (ddc_400m.v): - Direct DSP48E1 instantiation for I/Q mixers (AREG=1, BREG=1, MREG=1, PREG=1) - CEP=1, RSTP=!reset_n for proper pipeline control - 3-stage dsp_valid_pipe for PREG=1 latency - Behavioral sim model under ifdef SIMULATION for Icarus compatibility CIC (cic_decimator_4x_enhanced.v): - 28-bit accumulators (was 36) per CIC width formula: 18 + 5*log2(4) = 28 - Removed integrator/comb saturation (CIC uses wrapping arithmetic by design) - Pipelined output saturation comparison CDC/ASYNC_REG: - ASYNC_REG attribute on all CDC synchronizer registers (cdc_modules.v, radar_system_top.v, usb_data_interface.v) - Sync reset in generate blocks (cdc_modules.v) Results: Vivado post-implementation WNS=+1.196ns, 0 failing endpoints, 850 LUTs (1.34%), 466 FFs (0.37%), 2 DSP48E1 (0.83%) on xc7a100t. All testbenches pass: 241/244 (3 known stub failures).
This commit is contained in:
@@ -2,6 +2,9 @@
|
||||
|
||||
// ============================================================================
|
||||
// CDC FOR MULTI-BIT DATA (ADVANCED)
|
||||
// Uses Gray-code encoding with synchronous reset on sync chain to avoid
|
||||
// latch inference. ASYNC_REG attributes ensure Vivado places synchronizer
|
||||
// FFs in the same slice for optimal MTBF.
|
||||
// ============================================================================
|
||||
module cdc_adc_to_processing #(
|
||||
parameter WIDTH = 8,
|
||||
@@ -38,15 +41,16 @@ module cdc_adc_to_processing #(
|
||||
// Source domain registers
|
||||
reg [WIDTH-1:0] src_data_reg;
|
||||
reg [1:0] src_toggle = 2'b00;
|
||||
reg src_toggle_sync = 0;
|
||||
|
||||
// Destination domain registers
|
||||
reg [WIDTH-1:0] dst_data_gray [0:STAGES-1];
|
||||
reg [1:0] dst_toggle_sync [0:STAGES-1];
|
||||
// Destination domain synchronizer registers
|
||||
// ASYNC_REG on memory arrays applies to all elements
|
||||
(* ASYNC_REG = "TRUE" *) reg [WIDTH-1:0] dst_data_gray [0:STAGES-1];
|
||||
(* ASYNC_REG = "TRUE" *) reg [1:0] dst_toggle_sync [0:STAGES-1];
|
||||
reg [WIDTH-1:0] dst_data_reg;
|
||||
reg dst_valid_reg = 0;
|
||||
reg [1:0] prev_dst_toggle = 2'b00;
|
||||
|
||||
// Source domain: capture data and toggle
|
||||
always @(posedge src_clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
src_data_reg <= 0;
|
||||
@@ -57,17 +61,16 @@ module cdc_adc_to_processing #(
|
||||
end
|
||||
end
|
||||
|
||||
// CDC synchronization chain for data
|
||||
// CDC synchronization chain for data — SYNCHRONOUS RESET
|
||||
// Using synchronous reset avoids latch inference in Vivado.
|
||||
// For CDC synchronizers, synchronous reset is preferred because
|
||||
// the reset value is sampled safely within the clock domain.
|
||||
genvar i;
|
||||
generate
|
||||
for (i = 0; i < STAGES; i = i + 1) begin : data_sync_chain
|
||||
always @(posedge dst_clk or negedge reset_n) begin
|
||||
always @(posedge dst_clk) begin
|
||||
if (!reset_n) begin
|
||||
if (i == 0) begin
|
||||
dst_data_gray[i] <= 0;
|
||||
end else begin
|
||||
dst_data_gray[i] <= dst_data_gray[i-1];
|
||||
end
|
||||
dst_data_gray[i] <= 0;
|
||||
end else begin
|
||||
if (i == 0) begin
|
||||
// Convert to gray code at domain crossing
|
||||
@@ -80,13 +83,9 @@ module cdc_adc_to_processing #(
|
||||
end
|
||||
|
||||
for (i = 0; i < STAGES; i = i + 1) begin : toggle_sync_chain
|
||||
always @(posedge dst_clk or negedge reset_n) begin
|
||||
always @(posedge dst_clk) begin
|
||||
if (!reset_n) begin
|
||||
if (i == 0) begin
|
||||
dst_toggle_sync[i] <= 2'b00;
|
||||
end else begin
|
||||
dst_toggle_sync[i] <= dst_toggle_sync[i-1];
|
||||
end
|
||||
dst_toggle_sync[i] <= 2'b00;
|
||||
end else begin
|
||||
if (i == 0) begin
|
||||
dst_toggle_sync[i] <= src_toggle;
|
||||
@@ -136,7 +135,7 @@ module cdc_single_bit #(
|
||||
output wire dst_signal
|
||||
);
|
||||
|
||||
reg [STAGES-1:0] sync_chain;
|
||||
(* ASYNC_REG = "TRUE" *) reg [STAGES-1:0] sync_chain;
|
||||
|
||||
always @(posedge dst_clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
@@ -171,13 +170,13 @@ module cdc_handshake #(
|
||||
reg [WIDTH-1:0] src_data_reg;
|
||||
reg src_busy = 0;
|
||||
reg src_ack_sync = 0;
|
||||
reg [1:0] src_ack_sync_chain = 2'b00;
|
||||
(* ASYNC_REG = "TRUE" *) reg [1:0] src_ack_sync_chain = 2'b00;
|
||||
|
||||
// Destination domain
|
||||
reg [WIDTH-1:0] dst_data_reg;
|
||||
reg dst_valid_reg = 0;
|
||||
reg dst_req_sync = 0;
|
||||
reg [1:0] dst_req_sync_chain = 2'b00;
|
||||
(* ASYNC_REG = "TRUE" *) reg [1:0] dst_req_sync_chain = 2'b00;
|
||||
reg dst_ack = 0;
|
||||
|
||||
// Source clock domain
|
||||
@@ -234,4 +233,4 @@ module cdc_handshake #(
|
||||
assign dst_data = dst_data_reg;
|
||||
assign dst_valid = dst_valid_reg;
|
||||
|
||||
endmodule
|
||||
endmodule
|
||||
|
||||
@@ -15,20 +15,23 @@ parameter STAGES = 5;
|
||||
parameter DECIMATION = 4;
|
||||
parameter COMB_DELAY = 1;
|
||||
|
||||
// Increased bit width for 18-bit input with headroom
|
||||
reg signed [35:0] integrator [0:STAGES-1]; // 36-bit for better dynamic range
|
||||
reg signed [35:0] comb [0:STAGES-1];
|
||||
reg signed [35:0] comb_delay [0:STAGES-1][0:COMB_DELAY-1];
|
||||
|
||||
// Enhanced control and monitoring
|
||||
reg [1:0] decimation_counter;
|
||||
reg data_valid_delayed;
|
||||
reg data_valid_comb;
|
||||
reg [7:0] output_counter;
|
||||
reg [35:0] max_integrator_value;
|
||||
reg overflow_detected;
|
||||
reg overflow_latched; // Latched overflow indicator
|
||||
|
||||
// Accumulator width: input_width + N*log2(R) = 18 + 5*2 = 28 bits
|
||||
// (36-bit was over-provisioned; 28 bits is mathematically exact for R=4, N=5)
|
||||
localparam ACC_WIDTH = 28;
|
||||
|
||||
reg signed [ACC_WIDTH-1:0] integrator [0:STAGES-1];
|
||||
reg signed [ACC_WIDTH-1:0] comb [0:STAGES-1];
|
||||
reg signed [ACC_WIDTH-1:0] comb_delay [0:STAGES-1][0:COMB_DELAY-1];
|
||||
|
||||
// Enhanced control and monitoring
|
||||
reg [1:0] decimation_counter;
|
||||
reg data_valid_delayed;
|
||||
reg data_valid_comb;
|
||||
reg [7:0] output_counter;
|
||||
reg [ACC_WIDTH-1:0] max_integrator_value;
|
||||
reg overflow_detected;
|
||||
reg overflow_latched; // Latched overflow indicator
|
||||
|
||||
// Diagnostic registers
|
||||
reg [7:0] saturation_event_count;
|
||||
reg [31:0] sample_count;
|
||||
@@ -36,12 +39,18 @@ reg [31:0] sample_count;
|
||||
// Comb-stage saturation flags (separate from integrator block to avoid multi-driven nets)
|
||||
reg comb_overflow_latched;
|
||||
reg comb_saturation_detected;
|
||||
reg [7:0] comb_saturation_event_count;
|
||||
|
||||
// Temporary signals for calculations
|
||||
reg signed [35:0] abs_integrator_value;
|
||||
reg signed [35:0] temp_scaled_output;
|
||||
reg [7:0] comb_saturation_event_count;
|
||||
|
||||
// Temporary signals for calculations
|
||||
reg signed [ACC_WIDTH-1:0] abs_integrator_value;
|
||||
reg signed [ACC_WIDTH-1:0] temp_scaled_output;
|
||||
reg signed [17:0] temp_output; // Temporary output for proper range checking
|
||||
|
||||
// Pipeline stage for saturation comparison — breaks CARRY4 chain from timing path
|
||||
reg sat_pos; // temp_scaled_output > 131071 (registered)
|
||||
reg sat_neg; // temp_scaled_output < -131072 (registered)
|
||||
reg signed [17:0] temp_output_pipe; // Registered passthrough value
|
||||
reg data_out_valid_pipe; // Delayed valid for pipelined output
|
||||
|
||||
integer i, j;
|
||||
|
||||
@@ -70,6 +79,10 @@ initial begin
|
||||
abs_integrator_value = 0;
|
||||
temp_scaled_output = 0;
|
||||
temp_output = 0;
|
||||
sat_pos = 0;
|
||||
sat_neg = 0;
|
||||
temp_output_pipe = 0;
|
||||
data_out_valid_pipe = 0;
|
||||
comb_overflow_latched = 0;
|
||||
comb_saturation_detected = 0;
|
||||
comb_saturation_event_count = 0;
|
||||
@@ -106,54 +119,23 @@ always @(posedge clk or negedge reset_n) begin
|
||||
if (data_valid) begin
|
||||
sample_count <= sample_count + 1;
|
||||
|
||||
// First integrator stage with enhanced saturation detection
|
||||
if (integrator[0] + $signed({{18{data_in[17]}}, data_in}) > (2**35 - 1)) begin
|
||||
integrator[0] <= (2**35 - 1);
|
||||
overflow_detected <= 1'b1;
|
||||
overflow_latched <= 1'b1;
|
||||
saturation_detected <= 1'b1;
|
||||
saturation_event_count <= saturation_event_count + 1;
|
||||
`ifdef SIMULATION
|
||||
$display("CIC_SATURATION: Positive overflow at sample %0d", sample_count);
|
||||
`endif
|
||||
end else if (integrator[0] + $signed({{18{data_in[17]}}, data_in}) < -(2**35)) begin
|
||||
integrator[0] <= -(2**35);
|
||||
overflow_detected <= 1'b1;
|
||||
overflow_latched <= 1'b1;
|
||||
saturation_detected <= 1'b1;
|
||||
saturation_event_count <= saturation_event_count + 1;
|
||||
`ifdef SIMULATION
|
||||
$display("CIC_SATURATION: Negative overflow at sample %0d", sample_count);
|
||||
`endif
|
||||
end else begin
|
||||
integrator[0] <= integrator[0] + $signed({{18{data_in[17]}}, data_in});
|
||||
overflow_detected <= 1'b0; // Only clear immediate detection, not latched
|
||||
end
|
||||
// Integrator stages — standard CIC uses wrapping (modular) arithmetic.
|
||||
// Saturation clamping is removed because CIC math relies on wrap-around;
|
||||
// the comb stages difference successive integrator values, canceling wraps.
|
||||
integrator[0] <= integrator[0] + {{(ACC_WIDTH-18){data_in[17]}}, data_in};
|
||||
|
||||
// Calculate absolute value for monitoring
|
||||
abs_integrator_value <= (integrator[0][35]) ? -integrator[0] : integrator[0];
|
||||
abs_integrator_value <= (integrator[0][ACC_WIDTH-1]) ? -integrator[0] : integrator[0];
|
||||
|
||||
// Track maximum integrator value for gain monitoring (absolute value)
|
||||
if (abs_integrator_value > max_integrator_value) begin
|
||||
max_integrator_value <= abs_integrator_value;
|
||||
max_value_monitor <= abs_integrator_value[31:24];
|
||||
max_value_monitor <= abs_integrator_value[ACC_WIDTH-5:ACC_WIDTH-12];
|
||||
end
|
||||
|
||||
// Remaining integrator stages with saturation protection
|
||||
// Remaining integrator stages — pure accumulation, no saturation
|
||||
for (i = 1; i < STAGES; i = i + 1) begin
|
||||
if (integrator[i] + integrator[i-1] > (2**35 - 1)) begin
|
||||
integrator[i] <= (2**35 - 1);
|
||||
overflow_detected <= 1'b1;
|
||||
overflow_latched <= 1'b1;
|
||||
saturation_detected <= 1'b1;
|
||||
end else if (integrator[i] + integrator[i-1] < -(2**35)) begin
|
||||
integrator[i] <= -(2**35);
|
||||
overflow_detected <= 1'b1;
|
||||
overflow_latched <= 1'b1;
|
||||
saturation_detected <= 1'b1;
|
||||
end else begin
|
||||
integrator[i] <= integrator[i] + integrator[i-1];
|
||||
end
|
||||
integrator[i] <= integrator[i] + integrator[i-1];
|
||||
end
|
||||
|
||||
// Enhanced decimation control
|
||||
@@ -194,6 +176,10 @@ always @(posedge clk or negedge reset_n) begin
|
||||
data_out_valid <= 0;
|
||||
temp_scaled_output <= 0;
|
||||
temp_output <= 0;
|
||||
sat_pos <= 0;
|
||||
sat_neg <= 0;
|
||||
temp_output_pipe <= 0;
|
||||
data_out_valid_pipe <= 0;
|
||||
comb_overflow_latched <= 0;
|
||||
comb_saturation_detected <= 0;
|
||||
comb_saturation_event_count <= 0;
|
||||
@@ -207,21 +193,11 @@ always @(posedge clk or negedge reset_n) begin
|
||||
end
|
||||
|
||||
if (data_valid_comb) begin
|
||||
// Enhanced comb processing with saturation check
|
||||
// Comb processing — raw subtraction only (no saturation check needed;
|
||||
// comb is a differencing stage, cannot overflow if integrators are bounded)
|
||||
for (i = 0; i < STAGES; i = i + 1) begin
|
||||
if (i == 0) begin
|
||||
// Check for comb stage saturation
|
||||
if (integrator[STAGES-1] - comb_delay[0][COMB_DELAY-1] > (2**35 - 1)) begin
|
||||
comb[0] <= (2**35 - 1);
|
||||
comb_overflow_latched <= 1'b1;
|
||||
comb_saturation_detected <= 1'b1;
|
||||
end else if (integrator[STAGES-1] - comb_delay[0][COMB_DELAY-1] < -(2**35)) begin
|
||||
comb[0] <= -(2**35);
|
||||
comb_overflow_latched <= 1'b1;
|
||||
comb_saturation_detected <= 1'b1;
|
||||
end else begin
|
||||
comb[0] <= integrator[STAGES-1] - comb_delay[0][COMB_DELAY-1];
|
||||
end
|
||||
comb[0] <= integrator[STAGES-1] - comb_delay[0][COMB_DELAY-1];
|
||||
|
||||
// Update delay line for first stage
|
||||
for (j = COMB_DELAY-1; j > 0; j = j - 1) begin
|
||||
@@ -229,18 +205,7 @@ always @(posedge clk or negedge reset_n) begin
|
||||
end
|
||||
comb_delay[0][0] <= integrator[STAGES-1];
|
||||
end else begin
|
||||
// Check for comb stage saturation
|
||||
if (comb[i-1] - comb_delay[i][COMB_DELAY-1] > (2**35 - 1)) begin
|
||||
comb[i] <= (2**35 - 1);
|
||||
comb_overflow_latched <= 1'b1;
|
||||
comb_saturation_detected <= 1'b1;
|
||||
end else if (comb[i-1] - comb_delay[i][COMB_DELAY-1] < -(2**35)) begin
|
||||
comb[i] <= -(2**35);
|
||||
comb_overflow_latched <= 1'b1;
|
||||
comb_saturation_detected <= 1'b1;
|
||||
end else begin
|
||||
comb[i] <= comb[i-1] - comb_delay[i][COMB_DELAY-1];
|
||||
end
|
||||
comb[i] <= comb[i-1] - comb_delay[i][COMB_DELAY-1];
|
||||
|
||||
// Update delay line
|
||||
for (j = COMB_DELAY-1; j > 0; j = j - 1) begin
|
||||
@@ -257,27 +222,36 @@ always @(posedge clk or negedge reset_n) begin
|
||||
// FIXED: Extract 18-bit output properly
|
||||
temp_output <= temp_scaled_output[17:0];
|
||||
|
||||
// FIXED: Proper saturation detection for 18-bit signed range
|
||||
if (temp_scaled_output > 131071) begin // 2^17 - 1
|
||||
// Pipeline Stage 2: Register saturation comparison flags
|
||||
// This breaks the CARRY4 chain out of the data_out critical path
|
||||
sat_pos <= (temp_scaled_output > 131071);
|
||||
sat_neg <= (temp_scaled_output < -131072);
|
||||
temp_output_pipe <= temp_scaled_output[17:0];
|
||||
data_out_valid_pipe <= 1;
|
||||
end else begin
|
||||
data_out_valid_pipe <= 0;
|
||||
end
|
||||
|
||||
// Pipeline Stage 3: MUX from registered comparison flags
|
||||
if (data_out_valid_pipe) begin
|
||||
if (sat_pos) begin
|
||||
data_out <= 131071;
|
||||
comb_overflow_latched <= 1'b1;
|
||||
comb_saturation_detected <= 1'b1;
|
||||
comb_saturation_event_count <= comb_saturation_event_count + 1;
|
||||
`ifdef SIMULATION
|
||||
$display("CIC_OUTPUT_SAT: TRUE Positive saturation, raw=%h, scaled=%h, temp_out=%d, final_out=%d",
|
||||
comb[STAGES-1], temp_scaled_output, temp_output, 131071);
|
||||
$display("CIC_OUTPUT_SAT: TRUE Positive saturation, final_out=%d", 131071);
|
||||
`endif
|
||||
end else if (temp_scaled_output < -131072) begin // -2^17
|
||||
end else if (sat_neg) begin
|
||||
data_out <= -131072;
|
||||
comb_overflow_latched <= 1'b1;
|
||||
comb_saturation_detected <= 1'b1;
|
||||
comb_saturation_event_count <= comb_saturation_event_count + 1;
|
||||
`ifdef SIMULATION
|
||||
$display("CIC_OUTPUT_SAT: TRUE Negative saturation, raw=%h, scaled=%h, temp_out=%d, final_out=%d",
|
||||
comb[STAGES-1], temp_scaled_output, temp_output, -131072);
|
||||
$display("CIC_OUTPUT_SAT: TRUE Negative saturation, final_out=%d", -131072);
|
||||
`endif
|
||||
end else begin
|
||||
data_out <= temp_output;
|
||||
data_out <= temp_output_pipe;
|
||||
comb_overflow_latched <= 1'b0;
|
||||
comb_saturation_detected <= 1'b0;
|
||||
end
|
||||
|
||||
+349
-92
@@ -54,36 +54,41 @@ reg [2:0] saturation_count;
|
||||
reg overflow_detected;
|
||||
reg [7:0] error_counter;
|
||||
|
||||
// CDC synchronization for control signals
|
||||
reg mixers_enable_sync;
|
||||
reg bypass_mode_sync;
|
||||
|
||||
// Debug monitoring signals
|
||||
reg [31:0] sample_counter;
|
||||
wire signed [17:0] debug_mixed_i_trunc;
|
||||
wire signed [17:0] debug_mixed_q_trunc;
|
||||
|
||||
// Real-time status monitoring
|
||||
// CDC synchronization for control signals (2-stage synchronizers)
|
||||
(* ASYNC_REG = "TRUE" *) reg [1:0] mixers_enable_sync_chain;
|
||||
(* ASYNC_REG = "TRUE" *) reg [1:0] bypass_mode_sync_chain;
|
||||
(* ASYNC_REG = "TRUE" *) reg [1:0] force_saturation_sync_chain;
|
||||
wire mixers_enable_sync;
|
||||
wire bypass_mode_sync;
|
||||
wire force_saturation_sync;
|
||||
|
||||
// Debug monitoring signals
|
||||
reg [31:0] sample_counter;
|
||||
wire signed [17:0] debug_mixed_i_trunc;
|
||||
wire signed [17:0] debug_mixed_q_trunc;
|
||||
|
||||
// Real-time status monitoring
|
||||
reg [7:0] signal_power_i, signal_power_q;
|
||||
|
||||
// Enhanced saturation injection for testing
|
||||
reg force_saturation_sync;
|
||||
|
||||
// Internal mixing signals
|
||||
reg signed [MIXER_WIDTH-1:0] adc_signed;
|
||||
reg signed [MIXER_WIDTH + NCO_WIDTH -1:0] mixed_i, mixed_q;
|
||||
reg mixed_valid;
|
||||
reg mixer_overflow_i, mixer_overflow_q;
|
||||
// Internal mixing signals
|
||||
// DSP48E1 with AREG=1, BREG=1, MREG=1, PREG=1 handles all internal pipelining
|
||||
// Latency: 3 cycles (1 for AREG/BREG, 1 for MREG, 1 for PREG)
|
||||
wire signed [MIXER_WIDTH-1:0] adc_signed_w;
|
||||
reg signed [MIXER_WIDTH + NCO_WIDTH -1:0] mixed_i, mixed_q;
|
||||
reg mixed_valid;
|
||||
reg mixer_overflow_i, mixer_overflow_q;
|
||||
// Pipeline valid tracking: 3-stage shift register to match DSP48E1 AREG+MREG+PREG latency
|
||||
reg [2:0] dsp_valid_pipe;
|
||||
|
||||
// Output stage registers
|
||||
reg signed [17:0] baseband_i_reg, baseband_q_reg;
|
||||
reg baseband_valid_reg;
|
||||
|
||||
// ============================================================================
|
||||
// Phase Dithering Signals
|
||||
// ============================================================================
|
||||
wire [7:0] phase_dither_bits;
|
||||
wire [31:0] phase_inc_dithered;
|
||||
// Phase Dithering Signals
|
||||
// ============================================================================
|
||||
wire [7:0] phase_dither_bits;
|
||||
reg [31:0] phase_inc_dithered;
|
||||
|
||||
|
||||
|
||||
@@ -97,27 +102,30 @@ assign debug_mixed_i_trunc = mixed_i[25:8];
|
||||
assign debug_mixed_q_trunc = mixed_q[25:8];
|
||||
|
||||
// ============================================================================
|
||||
// Clock Domain Crossing for Control Signals
|
||||
// ============================================================================
|
||||
always @(posedge clk_400m or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
mixers_enable_sync <= 1'b0;
|
||||
bypass_mode_sync <= 1'b0;
|
||||
force_saturation_sync <= 1'b0;
|
||||
end else begin
|
||||
mixers_enable_sync <= mixers_enable;
|
||||
bypass_mode_sync <= bypass_mode;
|
||||
force_saturation_sync <= force_saturation;
|
||||
end
|
||||
// Clock Domain Crossing for Control Signals (2-stage synchronizers)
|
||||
// ============================================================================
|
||||
assign mixers_enable_sync = mixers_enable_sync_chain[1];
|
||||
assign bypass_mode_sync = bypass_mode_sync_chain[1];
|
||||
assign force_saturation_sync = force_saturation_sync_chain[1];
|
||||
|
||||
always @(posedge clk_400m or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
mixers_enable_sync_chain <= 2'b00;
|
||||
bypass_mode_sync_chain <= 2'b00;
|
||||
force_saturation_sync_chain <= 2'b00;
|
||||
end else begin
|
||||
mixers_enable_sync_chain <= {mixers_enable_sync_chain[0], mixers_enable};
|
||||
bypass_mode_sync_chain <= {bypass_mode_sync_chain[0], bypass_mode};
|
||||
force_saturation_sync_chain <= {force_saturation_sync_chain[0], force_saturation};
|
||||
end
|
||||
end
|
||||
|
||||
// ============================================================================
|
||||
// Sample Counter and Debug Monitoring
|
||||
// ============================================================================
|
||||
always @(posedge clk_400m or negedge reset_n) begin
|
||||
if (!reset_n || reset_monitors) begin
|
||||
sample_counter <= 0;
|
||||
saturation_count <= 0;
|
||||
if (!reset_n || reset_monitors) begin
|
||||
sample_counter <= 0;
|
||||
error_counter <= 0;
|
||||
end else if (adc_data_valid_i && adc_data_valid_q ) begin
|
||||
sample_counter <= sample_counter + 1;
|
||||
@@ -143,8 +151,13 @@ lfsr_dither_enhanced #(
|
||||
// Calculate phase increment for 120MHz IF at 400MHz sampling
|
||||
localparam PHASE_INC_120MHZ = 32'h4CCCCCCD;
|
||||
|
||||
// Apply dithering to reduce spurious tones
|
||||
assign phase_inc_dithered = PHASE_INC_120MHZ + {24'b0, phase_dither_bits};
|
||||
// Apply dithering to reduce spurious tones (registered for 400 MHz timing)
|
||||
always @(posedge clk_400m or negedge reset_n) begin
|
||||
if (!reset_n)
|
||||
phase_inc_dithered <= PHASE_INC_120MHZ;
|
||||
else
|
||||
phase_inc_dithered <= PHASE_INC_120MHZ + {24'b0, phase_dither_bits};
|
||||
end
|
||||
|
||||
// ============================================================================
|
||||
// Enhanced NCO with Diagnostics
|
||||
@@ -160,59 +173,303 @@ nco_400m_enhanced nco_core (
|
||||
.dds_ready(nco_ready)
|
||||
);
|
||||
|
||||
// ============================================================================
|
||||
// Enhanced Mixing Stage with AGC
|
||||
// ============================================================================
|
||||
always @(posedge clk_400m or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
adc_signed <= 0;
|
||||
mixed_i <= 0;
|
||||
mixed_q <= 0;
|
||||
mixed_valid <= 0;
|
||||
mixer_overflow_i <= 0;
|
||||
mixer_overflow_q <= 0;
|
||||
saturation_count <= 0;
|
||||
overflow_detected <= 0;
|
||||
end else if (nco_ready && adc_data_valid_i && adc_data_valid_q) begin
|
||||
// Convert ADC data to signed with extended precision
|
||||
adc_signed <= {1'b0, adc_data, {(MIXER_WIDTH-ADC_WIDTH-1){1'b0}}} -
|
||||
{1'b0, {ADC_WIDTH{1'b1}}, {(MIXER_WIDTH-ADC_WIDTH-1){1'b0}}} / 2;
|
||||
|
||||
// Force saturation for testing
|
||||
if (force_saturation_sync) begin
|
||||
mixed_i <= 34'h1FFFFFFFF; // Force positive saturation
|
||||
mixed_q <= 34'h200000000; // Force negative saturation
|
||||
mixer_overflow_i <= 1'b1;
|
||||
mixer_overflow_q <= 1'b1;
|
||||
end else begin
|
||||
|
||||
// Normal mixing
|
||||
mixed_i <= $signed(adc_signed) * $signed(cos_out);
|
||||
mixed_q <= $signed(adc_signed) * $signed(sin_out);
|
||||
|
||||
|
||||
// Enhanced overflow detection with counting
|
||||
mixer_overflow_i <= (mixed_i > (2**(MIXER_WIDTH+NCO_WIDTH-2)-1)) ||
|
||||
(mixed_i < -(2**(MIXER_WIDTH+NCO_WIDTH-2)));
|
||||
mixer_overflow_q <= (mixed_q > (2**(MIXER_WIDTH+NCO_WIDTH-2)-1)) ||
|
||||
(mixed_q < -(2**(MIXER_WIDTH+NCO_WIDTH-2)));
|
||||
end
|
||||
|
||||
mixed_valid <= 1;
|
||||
|
||||
if (mixer_overflow_i || mixer_overflow_q) begin
|
||||
saturation_count <= saturation_count + 1;
|
||||
overflow_detected <= 1'b1;
|
||||
end else begin
|
||||
overflow_detected <= 1'b0;
|
||||
end
|
||||
|
||||
end else begin
|
||||
mixed_valid <= 0;
|
||||
mixer_overflow_i <= 0;
|
||||
mixer_overflow_q <= 0;
|
||||
overflow_detected <= 1'b0;
|
||||
end
|
||||
// ============================================================================
|
||||
// Enhanced Mixing Stage — DSP48E1 direct instantiation for 400 MHz timing
|
||||
//
|
||||
// Architecture:
|
||||
// ADC data → sign-extend to 18b → DSP48E1 A-port (AREG=1 pipelines it)
|
||||
// NCO cos/sin → sign-extend to 18b → DSP48E1 B-port (BREG=1 pipelines it)
|
||||
// Multiply result captured by MREG=1, then output registered by PREG=1
|
||||
// force_saturation override applied AFTER DSP48E1 output (not on input path)
|
||||
//
|
||||
// Latency: 3 clock cycles (AREG/BREG + MREG + PREG)
|
||||
// PREG=1 absorbs DSP48E1 CLK→P delay internally, preventing fabric timing violations
|
||||
// In simulation (Icarus), uses behavioral equivalent since DSP48E1 is Xilinx-only
|
||||
// ============================================================================
|
||||
|
||||
// Combinational ADC sign conversion (no register — DSP48E1 AREG handles it)
|
||||
assign adc_signed_w = {1'b0, adc_data, {(MIXER_WIDTH-ADC_WIDTH-1){1'b0}}} -
|
||||
{1'b0, {ADC_WIDTH{1'b1}}, {(MIXER_WIDTH-ADC_WIDTH-1){1'b0}}} / 2;
|
||||
|
||||
// Valid pipeline: 3-stage shift register matching DSP48E1 AREG+MREG+PREG latency
|
||||
always @(posedge clk_400m or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
dsp_valid_pipe <= 3'b000;
|
||||
end else begin
|
||||
dsp_valid_pipe <= {dsp_valid_pipe[1:0], (nco_ready && adc_data_valid_i && adc_data_valid_q)};
|
||||
end
|
||||
end
|
||||
|
||||
`ifdef SIMULATION
|
||||
// ---- Behavioral model for Icarus Verilog simulation ----
|
||||
// Mimics DSP48E1 with AREG=1, BREG=1, MREG=1, PREG=1 (3-cycle latency)
|
||||
reg signed [MIXER_WIDTH-1:0] adc_signed_reg; // Models AREG
|
||||
reg signed [15:0] cos_pipe_reg, sin_pipe_reg; // Models BREG
|
||||
reg signed [MIXER_WIDTH+NCO_WIDTH-1:0] mult_i_internal, mult_q_internal; // Models MREG
|
||||
reg signed [MIXER_WIDTH+NCO_WIDTH-1:0] mult_i_reg, mult_q_reg; // Models PREG
|
||||
|
||||
// Stage 1: AREG/BREG equivalent
|
||||
always @(posedge clk_400m or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
adc_signed_reg <= 0;
|
||||
cos_pipe_reg <= 0;
|
||||
sin_pipe_reg <= 0;
|
||||
end else begin
|
||||
adc_signed_reg <= adc_signed_w;
|
||||
cos_pipe_reg <= cos_out;
|
||||
sin_pipe_reg <= sin_out;
|
||||
end
|
||||
end
|
||||
|
||||
// Stage 2: MREG equivalent
|
||||
always @(posedge clk_400m or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
mult_i_internal <= 0;
|
||||
mult_q_internal <= 0;
|
||||
end else begin
|
||||
mult_i_internal <= $signed(adc_signed_reg) * $signed(cos_pipe_reg);
|
||||
mult_q_internal <= $signed(adc_signed_reg) * $signed(sin_pipe_reg);
|
||||
end
|
||||
end
|
||||
|
||||
// Stage 3: PREG equivalent
|
||||
always @(posedge clk_400m or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
mult_i_reg <= 0;
|
||||
mult_q_reg <= 0;
|
||||
end else begin
|
||||
mult_i_reg <= mult_i_internal;
|
||||
mult_q_reg <= mult_q_internal;
|
||||
end
|
||||
end
|
||||
|
||||
`else
|
||||
// ---- Direct DSP48E1 instantiation for Vivado synthesis ----
|
||||
// This guarantees AREG/BREG/MREG are used, achieving timing closure at 400 MHz
|
||||
wire [47:0] dsp_p_i, dsp_p_q;
|
||||
|
||||
// DSP48E1 for I-channel mixer (adc_signed * cos_out)
|
||||
DSP48E1 #(
|
||||
// Feature control attributes
|
||||
.A_INPUT("DIRECT"),
|
||||
.B_INPUT("DIRECT"),
|
||||
.USE_DPORT("FALSE"),
|
||||
.USE_MULT("MULTIPLY"),
|
||||
.USE_SIMD("ONE48"),
|
||||
// Pipeline register attributes — all enabled for max timing
|
||||
.AREG(1),
|
||||
.BREG(1),
|
||||
.MREG(1),
|
||||
.PREG(1), // P register enabled — absorbs CLK→P delay for timing closure
|
||||
.ADREG(0),
|
||||
.ACASCREG(1),
|
||||
.BCASCREG(1),
|
||||
.ALUMODEREG(0),
|
||||
.CARRYINREG(0),
|
||||
.CARRYINSELREG(0),
|
||||
.CREG(0),
|
||||
.DREG(0),
|
||||
.INMODEREG(0),
|
||||
.OPMODEREG(0),
|
||||
// Pattern detector (unused)
|
||||
.AUTORESET_PATDET("NO_RESET"),
|
||||
.MASK(48'h3fffffffffff),
|
||||
.PATTERN(48'h000000000000),
|
||||
.SEL_MASK("MASK"),
|
||||
.SEL_PATTERN("PATTERN"),
|
||||
.USE_PATTERN_DETECT("NO_PATDET")
|
||||
) dsp_mixer_i (
|
||||
// Clock and reset
|
||||
.CLK(clk_400m),
|
||||
.RSTA(!reset_n),
|
||||
.RSTB(!reset_n),
|
||||
.RSTM(!reset_n),
|
||||
.RSTP(!reset_n),
|
||||
.RSTALLCARRYIN(1'b0),
|
||||
.RSTALUMODE(1'b0),
|
||||
.RSTCTRL(1'b0),
|
||||
.RSTC(1'b0),
|
||||
.RSTD(1'b0),
|
||||
.RSTINMODE(1'b0),
|
||||
// Clock enables
|
||||
.CEA1(1'b0), // AREG=1 uses CEA2
|
||||
.CEA2(1'b1),
|
||||
.CEB1(1'b0), // BREG=1 uses CEB2
|
||||
.CEB2(1'b1),
|
||||
.CEM(1'b1),
|
||||
.CEP(1'b1), // P register clock enable (PREG=1)
|
||||
.CEAD(1'b0),
|
||||
.CEALUMODE(1'b0),
|
||||
.CECARRYIN(1'b0),
|
||||
.CECTRL(1'b0),
|
||||
.CEC(1'b0),
|
||||
.CED(1'b0),
|
||||
.CEINMODE(1'b0),
|
||||
// Data ports
|
||||
.A({{12{adc_signed_w[MIXER_WIDTH-1]}}, adc_signed_w}), // Sign-extend 18b to 30b
|
||||
.B({{2{cos_out[15]}}, cos_out}), // Sign-extend 16b to 18b
|
||||
.C(48'b0),
|
||||
.D(25'b0),
|
||||
.CARRYIN(1'b0),
|
||||
// Control ports
|
||||
.OPMODE(7'b0000101), // P = M (multiply only, no accumulate)
|
||||
.ALUMODE(4'b0000), // Z + X + Y + CIN
|
||||
.INMODE(5'b00000), // A2 * B2 (direct)
|
||||
.CARRYINSEL(3'b000),
|
||||
// Output ports
|
||||
.P(dsp_p_i),
|
||||
.PATTERNDETECT(),
|
||||
.PATTERNBDETECT(),
|
||||
.OVERFLOW(),
|
||||
.UNDERFLOW(),
|
||||
.CARRYOUT(),
|
||||
// Cascade ports (unused)
|
||||
.ACIN(30'b0),
|
||||
.BCIN(18'b0),
|
||||
.CARRYCASCIN(1'b0),
|
||||
.MULTSIGNIN(1'b0),
|
||||
.PCIN(48'b0),
|
||||
.ACOUT(),
|
||||
.BCOUT(),
|
||||
.CARRYCASCOUT(),
|
||||
.MULTSIGNOUT(),
|
||||
.PCOUT()
|
||||
);
|
||||
|
||||
// DSP48E1 for Q-channel mixer (adc_signed * sin_out)
|
||||
DSP48E1 #(
|
||||
.A_INPUT("DIRECT"),
|
||||
.B_INPUT("DIRECT"),
|
||||
.USE_DPORT("FALSE"),
|
||||
.USE_MULT("MULTIPLY"),
|
||||
.USE_SIMD("ONE48"),
|
||||
.AREG(1),
|
||||
.BREG(1),
|
||||
.MREG(1),
|
||||
.PREG(1),
|
||||
.ADREG(0),
|
||||
.ACASCREG(1),
|
||||
.BCASCREG(1),
|
||||
.ALUMODEREG(0),
|
||||
.CARRYINREG(0),
|
||||
.CARRYINSELREG(0),
|
||||
.CREG(0),
|
||||
.DREG(0),
|
||||
.INMODEREG(0),
|
||||
.OPMODEREG(0),
|
||||
.AUTORESET_PATDET("NO_RESET"),
|
||||
.MASK(48'h3fffffffffff),
|
||||
.PATTERN(48'h000000000000),
|
||||
.SEL_MASK("MASK"),
|
||||
.SEL_PATTERN("PATTERN"),
|
||||
.USE_PATTERN_DETECT("NO_PATDET")
|
||||
) dsp_mixer_q (
|
||||
.CLK(clk_400m),
|
||||
.RSTA(!reset_n),
|
||||
.RSTB(!reset_n),
|
||||
.RSTM(!reset_n),
|
||||
.RSTP(!reset_n),
|
||||
.RSTALLCARRYIN(1'b0),
|
||||
.RSTALUMODE(1'b0),
|
||||
.RSTCTRL(1'b0),
|
||||
.RSTC(1'b0),
|
||||
.RSTD(1'b0),
|
||||
.RSTINMODE(1'b0),
|
||||
.CEA1(1'b0),
|
||||
.CEA2(1'b1),
|
||||
.CEB1(1'b0),
|
||||
.CEB2(1'b1),
|
||||
.CEM(1'b1),
|
||||
.CEP(1'b1), // P register clock enable (PREG=1)
|
||||
.CEAD(1'b0),
|
||||
.CEALUMODE(1'b0),
|
||||
.CECARRYIN(1'b0),
|
||||
.CECTRL(1'b0),
|
||||
.CEC(1'b0),
|
||||
.CED(1'b0),
|
||||
.CEINMODE(1'b0),
|
||||
.A({{12{adc_signed_w[MIXER_WIDTH-1]}}, adc_signed_w}),
|
||||
.B({{2{sin_out[15]}}, sin_out}),
|
||||
.C(48'b0),
|
||||
.D(25'b0),
|
||||
.CARRYIN(1'b0),
|
||||
.OPMODE(7'b0000101),
|
||||
.ALUMODE(4'b0000),
|
||||
.INMODE(5'b00000),
|
||||
.CARRYINSEL(3'b000),
|
||||
.P(dsp_p_q),
|
||||
.PATTERNDETECT(),
|
||||
.PATTERNBDETECT(),
|
||||
.OVERFLOW(),
|
||||
.UNDERFLOW(),
|
||||
.CARRYOUT(),
|
||||
.ACIN(30'b0),
|
||||
.BCIN(18'b0),
|
||||
.CARRYCASCIN(1'b0),
|
||||
.MULTSIGNIN(1'b0),
|
||||
.PCIN(48'b0),
|
||||
.ACOUT(),
|
||||
.BCOUT(),
|
||||
.CARRYCASCOUT(),
|
||||
.MULTSIGNOUT(),
|
||||
.PCOUT()
|
||||
);
|
||||
|
||||
// Extract the multiply result from DSP48E1 P output
|
||||
// adc_signed is 18 bits, NCO is 16 bits → product is 34 bits (bits [33:0] of P)
|
||||
wire signed [MIXER_WIDTH+NCO_WIDTH-1:0] mult_i_reg = dsp_p_i[MIXER_WIDTH+NCO_WIDTH-1:0];
|
||||
wire signed [MIXER_WIDTH+NCO_WIDTH-1:0] mult_q_reg = dsp_p_q[MIXER_WIDTH+NCO_WIDTH-1:0];
|
||||
|
||||
`endif
|
||||
|
||||
// ============================================================================
|
||||
// Post-DSP48E1 output stage: force_saturation override + overflow detection
|
||||
// force_saturation mux is intentionally AFTER the DSP48E1 output to avoid
|
||||
// polluting the critical input path with extra logic
|
||||
// ============================================================================
|
||||
always @(posedge clk_400m or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
mixed_i <= 0;
|
||||
mixed_q <= 0;
|
||||
mixed_valid <= 0;
|
||||
mixer_overflow_i <= 0;
|
||||
mixer_overflow_q <= 0;
|
||||
saturation_count <= 0;
|
||||
overflow_detected <= 0;
|
||||
end else if (dsp_valid_pipe[2]) begin
|
||||
// Force saturation for testing (applied after DSP output, not on input path)
|
||||
if (force_saturation_sync) begin
|
||||
mixed_i <= 34'h1FFFFFFFF;
|
||||
mixed_q <= 34'h200000000;
|
||||
mixer_overflow_i <= 1'b1;
|
||||
mixer_overflow_q <= 1'b1;
|
||||
end else begin
|
||||
// Normal path: take DSP48E1 multiply result
|
||||
mixed_i <= mult_i_reg;
|
||||
mixed_q <= mult_q_reg;
|
||||
|
||||
// Overflow detection on current cycle's multiply result
|
||||
mixer_overflow_i <= (mult_i_reg > (2**(MIXER_WIDTH+NCO_WIDTH-2)-1)) ||
|
||||
(mult_i_reg < -(2**(MIXER_WIDTH+NCO_WIDTH-2)));
|
||||
mixer_overflow_q <= (mult_q_reg > (2**(MIXER_WIDTH+NCO_WIDTH-2)-1)) ||
|
||||
(mult_q_reg < -(2**(MIXER_WIDTH+NCO_WIDTH-2)));
|
||||
end
|
||||
|
||||
mixed_valid <= 1;
|
||||
|
||||
if (mixer_overflow_i || mixer_overflow_q) begin
|
||||
saturation_count <= saturation_count + 1;
|
||||
overflow_detected <= 1'b1;
|
||||
end else begin
|
||||
overflow_detected <= 1'b0;
|
||||
end
|
||||
|
||||
end else begin
|
||||
mixed_valid <= 0;
|
||||
mixer_overflow_i <= 0;
|
||||
mixer_overflow_q <= 0;
|
||||
overflow_detected <= 1'b0;
|
||||
end
|
||||
end
|
||||
|
||||
// ============================================================================
|
||||
|
||||
@@ -11,11 +11,38 @@ module nco_400m_enhanced (
|
||||
output reg dds_ready
|
||||
);
|
||||
|
||||
// Phase accumulator with registered outputs for better timing
|
||||
reg [31:0] phase_accumulator;
|
||||
reg [31:0] phase_accumulator_reg;
|
||||
// ============================================================================
|
||||
// 4-stage pipelined NCO for 400 MHz timing closure
|
||||
//
|
||||
// Stage 1: Phase accumulator update (DSP48E1 in P=P+C mode) + offset addition
|
||||
// DSP48E1 does: P_reg <= P_reg + C_port (frequency_tuning_word)
|
||||
// The P register output IS the phase accumulator — no CARRY4 chain.
|
||||
// phase_with_offset = P_output + {phase_offset, 16'b0} (registered)
|
||||
// Stage 2: LUT address decode + LUT read → register abs values + quadrant
|
||||
// Stage 3: Compute negations from registered abs values → register neg values
|
||||
// (CARRY4 x4 chain has registered inputs, fits in 2.5ns easily)
|
||||
// Stage 4: Quadrant sign application → sin_out, cos_out (pure MUX, no arith)
|
||||
//
|
||||
// Total latency: 4 cycles from phase_valid to sin/cos output
|
||||
// Max logic levels per stage: Stage 1=DSP48E1(internal), Stage 2=2(LUT3+LUT6),
|
||||
// Stage 3=4(CARRY4 chain), Stage 4=1(MUX)
|
||||
// ============================================================================
|
||||
|
||||
// Phase accumulator — DSP48E1 P output provides the accumulated phase
|
||||
// In simulation: behavioral reg. In synthesis: DSP48E1 P[31:0].
|
||||
reg [31:0] phase_with_offset;
|
||||
reg phase_valid_delayed;
|
||||
|
||||
// Stage 2 pipeline registers: LUT output + quadrant
|
||||
reg [15:0] sin_abs_reg, cos_abs_reg;
|
||||
reg [1:0] quadrant_reg;
|
||||
|
||||
// Stage 3 pipeline registers: pre-computed negations + abs copies + quadrant
|
||||
reg signed [15:0] sin_neg_reg, cos_neg_reg;
|
||||
reg [15:0] sin_abs_reg2, cos_abs_reg2; // Pass-through for Stage 4 MUX
|
||||
reg [1:0] quadrant_reg2; // Pass-through for Stage 4 MUX
|
||||
|
||||
// Valid pipeline: tracks 4-stage latency
|
||||
reg [3:0] valid_pipe;
|
||||
|
||||
// Use only the top 8 bits for LUT addressing (256-entry LUT equivalent)
|
||||
wire [7:0] lut_address = phase_with_offset[31:24];
|
||||
@@ -51,61 +78,229 @@ initial begin
|
||||
sin_lut[60] = 16'h7F61; sin_lut[61] = 16'h7FA6; sin_lut[62] = 16'h7FD8; sin_lut[63] = 16'h7FF5;
|
||||
end
|
||||
|
||||
// Quadrant determination
|
||||
wire [1:0] quadrant = lut_address[7:6]; // 00: Q1, 01: Q2, 10: Q3, 11: Q4
|
||||
wire [5:0] lut_index = (quadrant[1] ? ~lut_address[5:0] : lut_address[5:0]); // Mirror for Q2/Q3
|
||||
// Combinational: quadrant determination and LUT index (feeds Stage 2 registers)
|
||||
wire [1:0] quadrant_w = lut_address[7:6];
|
||||
wire [5:0] lut_index = (quadrant_w[0] ^ quadrant_w[1]) ? ~lut_address[5:0] : lut_address[5:0];
|
||||
|
||||
// Sine and cosine calculation with quadrant mapping
|
||||
wire [15:0] sin_abs = sin_lut[lut_index];
|
||||
wire [15:0] cos_abs = sin_lut[63 - lut_index]; // Cosine is phase-shifted sine
|
||||
// Combinational LUT read (will be registered in Stage 2)
|
||||
wire [15:0] sin_abs_w = sin_lut[lut_index];
|
||||
wire [15:0] cos_abs_w = sin_lut[63 - lut_index];
|
||||
|
||||
// ============================================================================
|
||||
// Stage 1: Phase accumulator (DSP48E1) + offset addition (fabric register)
|
||||
//
|
||||
// The phase accumulator is the critical path bottleneck: a 32-bit addition
|
||||
// requires 8 CARRY4 stages in fabric (2.826 ns > 2.5 ns budget at 400 MHz).
|
||||
// Solution: Use DSP48E1 in P = P + C accumulate mode.
|
||||
// - C-port carries frequency_tuning_word (zero-extended to 48 bits)
|
||||
// - CREG=1 registers the tuning word inside the DSP
|
||||
// - PREG=1 registers the accumulator output (P = P + C each cycle)
|
||||
// - The DSP48E1 48-bit ALU performs the add internally at full speed
|
||||
// - Only P[31:0] is used (32-bit phase accumulator)
|
||||
//
|
||||
// phase_with_offset is computed in fabric: DSP48E1 P output + {phase_offset, 16'b0}
|
||||
// This is OK because both operands are registered (P is PREG output, phase_offset
|
||||
// is a stable input), and the result feeds Stage 2 LUT which is also registered.
|
||||
// ============================================================================
|
||||
|
||||
`ifdef SIMULATION
|
||||
// ---- Behavioral model for Icarus Verilog simulation ----
|
||||
// Mimics DSP48E1 accumulator: P <= P + C, with CREG=1, PREG=1
|
||||
reg [31:0] phase_accumulator;
|
||||
|
||||
// Pipeline stage for better timing
|
||||
always @(posedge clk_400m or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
phase_accumulator <= 32'h00000000;
|
||||
phase_accumulator_reg <= 32'h00000000;
|
||||
phase_with_offset <= 32'h00000000;
|
||||
phase_valid_delayed <= 1'b0;
|
||||
dds_ready <= 1'b0;
|
||||
end else if (phase_valid) begin
|
||||
phase_accumulator <= phase_accumulator + frequency_tuning_word;
|
||||
phase_with_offset <= phase_accumulator + {phase_offset, 16'b0};
|
||||
end
|
||||
end
|
||||
|
||||
`else
|
||||
// ---- DSP48E1 phase accumulator for Vivado synthesis ----
|
||||
// P = P + C mode: accumulates frequency_tuning_word each clock cycle
|
||||
// Uses 1 DSP48E1 (total design: 5 of 240 available = 2.08%)
|
||||
wire [47:0] phase_accum_p; // DSP48E1 P output (48 bits, use [31:0])
|
||||
|
||||
DSP48E1 #(
|
||||
// Feature control
|
||||
.A_INPUT("DIRECT"),
|
||||
.B_INPUT("DIRECT"),
|
||||
.USE_DPORT("FALSE"),
|
||||
.USE_MULT("NONE"), // No multiplier — pure ALU accumulate
|
||||
.USE_SIMD("ONE48"),
|
||||
// Pipeline registers
|
||||
.AREG(0), // A-port unused for accumulate
|
||||
.BREG(0), // B-port unused for accumulate
|
||||
.CREG(1), // Register frequency_tuning_word on C-port
|
||||
.MREG(0), // No multiplier
|
||||
.PREG(1), // P register IS the phase accumulator
|
||||
.ADREG(0),
|
||||
.ACASCREG(0),
|
||||
.BCASCREG(0),
|
||||
.ALUMODEREG(0),
|
||||
.CARRYINREG(0),
|
||||
.CARRYINSELREG(0),
|
||||
.DREG(0),
|
||||
.INMODEREG(0),
|
||||
.OPMODEREG(0),
|
||||
// Pattern detector (unused)
|
||||
.AUTORESET_PATDET("NO_RESET"),
|
||||
.MASK(48'h3fffffffffff),
|
||||
.PATTERN(48'h000000000000),
|
||||
.SEL_MASK("MASK"),
|
||||
.SEL_PATTERN("PATTERN"),
|
||||
.USE_PATTERN_DETECT("NO_PATDET")
|
||||
) dsp_phase_accum (
|
||||
// Clock and reset
|
||||
.CLK(clk_400m),
|
||||
.RSTA(1'b0),
|
||||
.RSTB(1'b0),
|
||||
.RSTM(1'b0),
|
||||
.RSTP(!reset_n), // Reset P register (phase accumulator) on !reset_n
|
||||
.RSTC(!reset_n), // Reset C register (tuning word) on !reset_n
|
||||
.RSTALLCARRYIN(1'b0),
|
||||
.RSTALUMODE(1'b0),
|
||||
.RSTCTRL(1'b0),
|
||||
.RSTD(1'b0),
|
||||
.RSTINMODE(1'b0),
|
||||
// Clock enables
|
||||
.CEA1(1'b0),
|
||||
.CEA2(1'b0),
|
||||
.CEB1(1'b0),
|
||||
.CEB2(1'b0),
|
||||
.CEC(1'b1), // Always register C (tuning word updates)
|
||||
.CEM(1'b0),
|
||||
.CEP(phase_valid), // Only accumulate when phase_valid is asserted
|
||||
.CEAD(1'b0),
|
||||
.CEALUMODE(1'b0),
|
||||
.CECARRYIN(1'b0),
|
||||
.CECTRL(1'b0),
|
||||
.CED(1'b0),
|
||||
.CEINMODE(1'b0),
|
||||
// Data ports
|
||||
.A(30'b0), // Unused for P = P + C
|
||||
.B(18'b0), // Unused for P = P + C
|
||||
.C({16'b0, frequency_tuning_word}), // Zero-extend 32-bit FTW to 48 bits
|
||||
.D(25'b0),
|
||||
.CARRYIN(1'b0),
|
||||
// Control ports
|
||||
.OPMODE(7'b0010011), // Z=P (010), Y=0 (00), X=C_reg (11) → P = P + C
|
||||
.ALUMODE(4'b0000), // Z + X + Y + CIN (standard add)
|
||||
.INMODE(5'b00000),
|
||||
.CARRYINSEL(3'b000),
|
||||
// Output ports
|
||||
.P(phase_accum_p),
|
||||
.PATTERNDETECT(),
|
||||
.PATTERNBDETECT(),
|
||||
.OVERFLOW(),
|
||||
.UNDERFLOW(),
|
||||
.CARRYOUT(),
|
||||
// Cascade ports (unused)
|
||||
.ACIN(30'b0),
|
||||
.BCIN(18'b0),
|
||||
.CARRYCASCIN(1'b0),
|
||||
.MULTSIGNIN(1'b0),
|
||||
.PCIN(48'b0),
|
||||
.ACOUT(),
|
||||
.BCOUT(),
|
||||
.CARRYCASCOUT(),
|
||||
.MULTSIGNOUT(),
|
||||
.PCOUT()
|
||||
);
|
||||
|
||||
// phase_with_offset: add phase_offset to the DSP48E1 accumulator output
|
||||
// Both operands are registered (phase_accum_p from PREG, phase_offset is stable input)
|
||||
// This fabric add feeds Stage 2 LUT which is also registered — timing is fine
|
||||
always @(posedge clk_400m or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
phase_with_offset <= 32'h00000000;
|
||||
end else if (phase_valid) begin
|
||||
phase_with_offset <= phase_accum_p[31:0] + {phase_offset, 16'b0};
|
||||
end
|
||||
end
|
||||
|
||||
`endif
|
||||
|
||||
// ============================================================================
|
||||
// Stage 2: LUT read + register absolute values and quadrant
|
||||
// Only LUT decode here — negation is deferred to Stage 3
|
||||
// ============================================================================
|
||||
always @(posedge clk_400m or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
sin_abs_reg <= 16'h0000;
|
||||
cos_abs_reg <= 16'h7FFF;
|
||||
quadrant_reg <= 2'b00;
|
||||
end else if (valid_pipe[0]) begin
|
||||
sin_abs_reg <= sin_abs_w;
|
||||
cos_abs_reg <= cos_abs_w;
|
||||
quadrant_reg <= quadrant_w;
|
||||
end
|
||||
end
|
||||
|
||||
// ============================================================================
|
||||
// Stage 3: Compute negations from registered abs values
|
||||
// CARRY4 x4 chain has registered inputs — easily fits in 2.5ns
|
||||
// Also pass through abs values and quadrant for Stage 4
|
||||
// ============================================================================
|
||||
always @(posedge clk_400m or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
sin_neg_reg <= 16'h0000;
|
||||
cos_neg_reg <= -16'h7FFF;
|
||||
sin_abs_reg2 <= 16'h0000;
|
||||
cos_abs_reg2 <= 16'h7FFF;
|
||||
quadrant_reg2 <= 2'b00;
|
||||
end else if (valid_pipe[1]) begin
|
||||
sin_neg_reg <= -sin_abs_reg;
|
||||
cos_neg_reg <= -cos_abs_reg;
|
||||
sin_abs_reg2 <= sin_abs_reg;
|
||||
cos_abs_reg2 <= cos_abs_reg;
|
||||
quadrant_reg2 <= quadrant_reg;
|
||||
end
|
||||
end
|
||||
|
||||
// ============================================================================
|
||||
// Stage 4: Quadrant sign application → final sin/cos output
|
||||
// Uses pre-computed negated values from Stage 3 — pure MUX, no arithmetic
|
||||
// ============================================================================
|
||||
always @(posedge clk_400m or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
sin_out <= 16'h0000;
|
||||
cos_out <= 16'h7FFF;
|
||||
end else if (valid_pipe[2]) begin
|
||||
case (quadrant_reg2)
|
||||
2'b00: begin // Quadrant I: sin+, cos+
|
||||
sin_out <= sin_abs_reg2;
|
||||
cos_out <= cos_abs_reg2;
|
||||
end
|
||||
2'b01: begin // Quadrant II: sin+, cos-
|
||||
sin_out <= sin_abs_reg2;
|
||||
cos_out <= cos_neg_reg;
|
||||
end
|
||||
2'b10: begin // Quadrant III: sin-, cos-
|
||||
sin_out <= sin_neg_reg;
|
||||
cos_out <= cos_neg_reg;
|
||||
end
|
||||
2'b11: begin // Quadrant IV: sin-, cos+
|
||||
sin_out <= sin_neg_reg;
|
||||
cos_out <= cos_abs_reg2;
|
||||
end
|
||||
endcase
|
||||
end
|
||||
end
|
||||
|
||||
// ============================================================================
|
||||
// Valid pipeline and dds_ready (4-stage latency)
|
||||
// ============================================================================
|
||||
always @(posedge clk_400m or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
valid_pipe <= 4'b0000;
|
||||
dds_ready <= 1'b0;
|
||||
end else begin
|
||||
phase_valid_delayed <= phase_valid;
|
||||
|
||||
if (phase_valid) begin
|
||||
// Update phase accumulator with dithered frequency tuning word
|
||||
phase_accumulator <= phase_accumulator + frequency_tuning_word;
|
||||
phase_accumulator_reg <= phase_accumulator;
|
||||
|
||||
// Apply phase offset
|
||||
phase_with_offset <= phase_accumulator + {phase_offset, 16'b0};
|
||||
dds_ready <= 1'b1;
|
||||
end else begin
|
||||
dds_ready <= 1'b0;
|
||||
end
|
||||
|
||||
// Generate outputs with one cycle delay for pipelining
|
||||
if (phase_valid_delayed) begin
|
||||
// Calculate sine and cosine with proper quadrant signs
|
||||
case (quadrant)
|
||||
2'b00: begin // Quadrant I: sin+, cos+
|
||||
sin_out <= sin_abs;
|
||||
cos_out <= cos_abs;
|
||||
end
|
||||
2'b01: begin // Quadrant II: sin+, cos-
|
||||
sin_out <= sin_abs;
|
||||
cos_out <= -cos_abs;
|
||||
end
|
||||
2'b10: begin // Quadrant III: sin-, cos-
|
||||
sin_out <= -sin_abs;
|
||||
cos_out <= -cos_abs;
|
||||
end
|
||||
2'b11: begin // Quadrant IV: sin-, cos+
|
||||
sin_out <= -sin_abs;
|
||||
cos_out <= cos_abs;
|
||||
end
|
||||
endcase
|
||||
end
|
||||
valid_pipe <= {valid_pipe[2:0], phase_valid};
|
||||
dds_ready <= valid_pipe[3];
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -191,7 +191,7 @@ BUFG bufg_ft601 (
|
||||
);
|
||||
|
||||
// Reset synchronization (clk_100m domain)
|
||||
reg [1:0] reset_sync;
|
||||
(* ASYNC_REG = "TRUE" *) reg [1:0] reset_sync;
|
||||
always @(posedge clk_100m_buf or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
reset_sync <= 2'b00;
|
||||
@@ -204,7 +204,7 @@ assign sys_reset_n = reset_sync[1];
|
||||
// Reset synchronization (clk_120m_dac domain)
|
||||
// Ensures reset deassertion is synchronous to the DAC clock,
|
||||
// preventing recovery/removal timing violations on 120 MHz FFs.
|
||||
reg [1:0] reset_sync_120m;
|
||||
(* ASYNC_REG = "TRUE" *) reg [1:0] reset_sync_120m;
|
||||
always @(posedge clk_120m_dac_buf or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
reset_sync_120m <= 2'b00;
|
||||
|
||||
@@ -1,50 +1,50 @@
|
||||
input_sample,output_sample,data_out,data_out_valid
|
||||
5,0,0,1
|
||||
9,1,0,1
|
||||
13,2,0,1
|
||||
17,3,0,1
|
||||
21,4,0,1
|
||||
25,5,0,1
|
||||
29,6,0,1
|
||||
33,7,0,1
|
||||
37,8,118,1
|
||||
41,9,651,1
|
||||
45,10,979,1
|
||||
49,11,1000,1
|
||||
53,12,1000,1
|
||||
57,13,1000,1
|
||||
61,14,1000,1
|
||||
65,15,1000,1
|
||||
69,16,1000,1
|
||||
73,17,1000,1
|
||||
77,18,1000,1
|
||||
81,19,1000,1
|
||||
85,20,1000,1
|
||||
89,21,1000,1
|
||||
93,22,1000,1
|
||||
97,23,1000,1
|
||||
101,24,1000,1
|
||||
105,25,1000,1
|
||||
109,26,1000,1
|
||||
113,27,1000,1
|
||||
117,28,1000,1
|
||||
121,29,1000,1
|
||||
125,30,1000,1
|
||||
129,31,1000,1
|
||||
133,32,1000,1
|
||||
137,33,1000,1
|
||||
141,34,1000,1
|
||||
145,35,1000,1
|
||||
149,36,1000,1
|
||||
153,37,1000,1
|
||||
157,38,1000,1
|
||||
161,39,1000,1
|
||||
165,40,1000,1
|
||||
169,41,1000,1
|
||||
173,42,1000,1
|
||||
177,43,1000,1
|
||||
181,44,1000,1
|
||||
185,45,1000,1
|
||||
189,46,1000,1
|
||||
193,47,1000,1
|
||||
197,48,1000,1
|
||||
6,0,0,1
|
||||
10,1,0,1
|
||||
14,2,0,1
|
||||
18,3,0,1
|
||||
22,4,0,1
|
||||
26,5,0,1
|
||||
30,6,0,1
|
||||
34,7,118,1
|
||||
38,8,651,1
|
||||
42,9,979,1
|
||||
46,10,1000,1
|
||||
50,11,1000,1
|
||||
54,12,1000,1
|
||||
58,13,1000,1
|
||||
62,14,1000,1
|
||||
66,15,1000,1
|
||||
70,16,1000,1
|
||||
74,17,1000,1
|
||||
78,18,1000,1
|
||||
82,19,1000,1
|
||||
86,20,1000,1
|
||||
90,21,1000,1
|
||||
94,22,1000,1
|
||||
98,23,1000,1
|
||||
102,24,1000,1
|
||||
106,25,1000,1
|
||||
110,26,1000,1
|
||||
114,27,1000,1
|
||||
118,28,1000,1
|
||||
122,29,1000,1
|
||||
126,30,1000,1
|
||||
130,31,1000,1
|
||||
134,32,1000,1
|
||||
138,33,1000,1
|
||||
142,34,1000,1
|
||||
146,35,1000,1
|
||||
150,36,1000,1
|
||||
154,37,1000,1
|
||||
158,38,1000,1
|
||||
162,39,1000,1
|
||||
166,40,1000,1
|
||||
170,41,1000,1
|
||||
174,42,1000,1
|
||||
178,43,1000,1
|
||||
182,44,1000,1
|
||||
186,45,1000,1
|
||||
190,46,1000,1
|
||||
194,47,1000,1
|
||||
198,48,1000,1
|
||||
|
||||
|
@@ -5,11 +5,11 @@ sample,data_out
|
||||
3,0
|
||||
4,0
|
||||
5,0
|
||||
6,0
|
||||
7,9
|
||||
8,634
|
||||
9,1513
|
||||
10,341
|
||||
6,9
|
||||
7,634
|
||||
8,1513
|
||||
9,341
|
||||
10,0
|
||||
11,0
|
||||
12,0
|
||||
13,0
|
||||
|
||||
|
@@ -1,400 +1,400 @@
|
||||
input_n,data_in,output_n,data_out
|
||||
5,392,0,0
|
||||
9,704,1,0
|
||||
13,1013,2,0
|
||||
17,1319,3,0
|
||||
21,1619,4,0
|
||||
25,1913,5,0
|
||||
29,2199,6,0
|
||||
33,2477,7,0
|
||||
37,2745,8,6
|
||||
41,3002,9,99
|
||||
45,3247,10,354
|
||||
49,3479,11,664
|
||||
53,3698,12,974
|
||||
57,3902,13,1279
|
||||
61,4090,14,1580
|
||||
65,4263,15,1875
|
||||
69,4418,16,2161
|
||||
73,4557,17,2440
|
||||
77,4677,18,2709
|
||||
81,4778,19,2967
|
||||
85,4861,20,3214
|
||||
89,4925,21,3448
|
||||
93,4969,22,3668
|
||||
97,4994,23,3874
|
||||
101,4999,24,4064
|
||||
105,4984,25,4238
|
||||
109,4950,26,4396
|
||||
113,4896,27,4536
|
||||
117,4822,28,4659
|
||||
121,4730,29,4763
|
||||
125,4619,30,4848
|
||||
129,4490,31,4914
|
||||
133,4343,32,4960
|
||||
137,4179,33,4988
|
||||
141,3998,34,4995
|
||||
145,3802,35,4983
|
||||
149,3590,36,4951
|
||||
153,3365,37,4899
|
||||
157,3126,38,4828
|
||||
161,2875,39,4738
|
||||
165,2612,40,4630
|
||||
169,2339,41,4503
|
||||
173,2057,42,4358
|
||||
177,1767,43,4196
|
||||
181,1470,44,4018
|
||||
185,1167,45,3824
|
||||
189,859,46,3614
|
||||
193,548,47,3390
|
||||
197,235,48,3154
|
||||
201,-78,49,2904
|
||||
205,-392,50,2643
|
||||
209,-704,51,2371
|
||||
213,-1013,52,2091
|
||||
217,-1319,53,1802
|
||||
221,-1619,54,1506
|
||||
225,-1913,55,1203
|
||||
229,-2199,56,896
|
||||
233,-2477,57,586
|
||||
237,-2745,58,274
|
||||
241,-3002,59,-40
|
||||
245,-3247,60,-353
|
||||
249,-3479,61,-665
|
||||
253,-3698,62,-975
|
||||
257,-3902,63,-1280
|
||||
261,-4090,64,-1581
|
||||
265,-4263,65,-1876
|
||||
269,-4418,66,-2162
|
||||
273,-4557,67,-2441
|
||||
277,-4677,68,-2710
|
||||
281,-4778,69,-2968
|
||||
285,-4861,70,-3215
|
||||
289,-4925,71,-3449
|
||||
293,-4969,72,-3669
|
||||
297,-4994,73,-3875
|
||||
301,-4999,74,-4065
|
||||
305,-4984,75,-4239
|
||||
309,-4950,76,-4397
|
||||
313,-4896,77,-4537
|
||||
317,-4822,78,-4660
|
||||
321,-4730,79,-4764
|
||||
325,-4619,80,-4849
|
||||
329,-4490,81,-4915
|
||||
333,-4343,82,-4961
|
||||
337,-4179,83,-4989
|
||||
341,-3998,84,-4996
|
||||
345,-3802,85,-4984
|
||||
349,-3590,86,-4952
|
||||
353,-3365,87,-4900
|
||||
357,-3126,88,-4829
|
||||
361,-2875,89,-4739
|
||||
365,-2612,90,-4631
|
||||
369,-2339,91,-4504
|
||||
373,-2057,92,-4359
|
||||
377,-1767,93,-4197
|
||||
381,-1470,94,-4019
|
||||
385,-1167,95,-3825
|
||||
389,-859,96,-3615
|
||||
393,-548,97,-3391
|
||||
397,-235,98,-3155
|
||||
401,78,99,-2905
|
||||
405,392,100,-2644
|
||||
409,704,101,-2372
|
||||
413,1013,102,-2091
|
||||
417,1319,103,-1803
|
||||
421,1619,104,-1507
|
||||
425,1913,105,-1204
|
||||
429,2199,106,-897
|
||||
433,2477,107,-587
|
||||
437,2745,108,-275
|
||||
441,3002,109,39
|
||||
445,3247,110,352
|
||||
449,3479,111,664
|
||||
453,3698,112,974
|
||||
457,3902,113,1279
|
||||
461,4090,114,1580
|
||||
465,4263,115,1875
|
||||
469,4418,116,2161
|
||||
473,4557,117,2440
|
||||
477,4677,118,2709
|
||||
481,4778,119,2967
|
||||
485,4861,120,3214
|
||||
489,4925,121,3448
|
||||
493,4969,122,3668
|
||||
497,4994,123,3874
|
||||
501,4999,124,4064
|
||||
505,4984,125,4238
|
||||
509,4950,126,4396
|
||||
513,4896,127,4536
|
||||
517,4822,128,4659
|
||||
521,4730,129,4763
|
||||
525,4619,130,4848
|
||||
529,4490,131,4914
|
||||
533,4343,132,4960
|
||||
537,4179,133,4988
|
||||
541,3998,134,4995
|
||||
545,3802,135,4983
|
||||
549,3590,136,4951
|
||||
553,3365,137,4899
|
||||
557,3126,138,4828
|
||||
561,2875,139,4738
|
||||
565,2612,140,4630
|
||||
569,2339,141,4503
|
||||
573,2057,142,4358
|
||||
577,1767,143,4196
|
||||
581,1470,144,4018
|
||||
585,1167,145,3824
|
||||
589,859,146,3614
|
||||
593,548,147,3390
|
||||
597,235,148,3154
|
||||
601,-78,149,2904
|
||||
605,-392,150,2643
|
||||
609,-704,151,2371
|
||||
613,-1013,152,2091
|
||||
617,-1319,153,1802
|
||||
621,-1619,154,1506
|
||||
625,-1913,155,1203
|
||||
629,-2199,156,896
|
||||
633,-2477,157,586
|
||||
637,-2745,158,274
|
||||
641,-3002,159,-40
|
||||
645,-3247,160,-353
|
||||
649,-3479,161,-665
|
||||
653,-3698,162,-975
|
||||
657,-3902,163,-1280
|
||||
661,-4090,164,-1581
|
||||
665,-4263,165,-1876
|
||||
669,-4418,166,-2162
|
||||
673,-4557,167,-2441
|
||||
677,-4677,168,-2710
|
||||
681,-4778,169,-2968
|
||||
685,-4861,170,-3215
|
||||
689,-4925,171,-3449
|
||||
693,-4969,172,-3669
|
||||
697,-4994,173,-3875
|
||||
701,-4999,174,-4065
|
||||
705,-4984,175,-4239
|
||||
709,-4950,176,-4397
|
||||
713,-4896,177,-4537
|
||||
717,-4822,178,-4660
|
||||
721,-4730,179,-4764
|
||||
725,-4619,180,-4849
|
||||
729,-4490,181,-4915
|
||||
733,-4343,182,-4961
|
||||
737,-4179,183,-4989
|
||||
741,-3998,184,-4996
|
||||
745,-3802,185,-4984
|
||||
749,-3590,186,-4952
|
||||
753,-3365,187,-4900
|
||||
757,-3126,188,-4829
|
||||
761,-2875,189,-4739
|
||||
765,-2612,190,-4631
|
||||
769,-2339,191,-4504
|
||||
773,-2057,192,-4359
|
||||
777,-1767,193,-4197
|
||||
781,-1470,194,-4019
|
||||
785,-1167,195,-3825
|
||||
789,-859,196,-3615
|
||||
793,-548,197,-3391
|
||||
797,-235,198,-3155
|
||||
801,78,199,-2905
|
||||
805,392,200,-2644
|
||||
809,704,201,-2372
|
||||
813,1013,202,-2091
|
||||
817,1319,203,-1803
|
||||
821,1619,204,-1507
|
||||
825,1913,205,-1204
|
||||
829,2199,206,-897
|
||||
833,2477,207,-587
|
||||
837,2745,208,-275
|
||||
841,3002,209,39
|
||||
845,3247,210,352
|
||||
849,3479,211,664
|
||||
853,3698,212,974
|
||||
857,3902,213,1279
|
||||
861,4090,214,1580
|
||||
865,4263,215,1875
|
||||
869,4418,216,2161
|
||||
873,4557,217,2440
|
||||
877,4677,218,2709
|
||||
881,4778,219,2967
|
||||
885,4861,220,3214
|
||||
889,4925,221,3448
|
||||
893,4969,222,3668
|
||||
897,4994,223,3874
|
||||
901,4999,224,4064
|
||||
905,4984,225,4238
|
||||
909,4950,226,4396
|
||||
913,4896,227,4536
|
||||
917,4822,228,4659
|
||||
921,4730,229,4763
|
||||
925,4619,230,4848
|
||||
929,4490,231,4914
|
||||
933,4343,232,4960
|
||||
937,4179,233,4988
|
||||
941,3998,234,4995
|
||||
945,3802,235,4983
|
||||
949,3590,236,4951
|
||||
953,3365,237,4899
|
||||
957,3126,238,4828
|
||||
961,2875,239,4738
|
||||
965,2612,240,4630
|
||||
969,2339,241,4503
|
||||
973,2057,242,4358
|
||||
977,1767,243,4196
|
||||
981,1470,244,4018
|
||||
985,1167,245,3824
|
||||
989,859,246,3614
|
||||
993,548,247,3390
|
||||
997,235,248,3154
|
||||
1001,-78,249,2904
|
||||
1005,-392,250,2643
|
||||
1009,-704,251,2371
|
||||
1013,-1013,252,2091
|
||||
1017,-1319,253,1802
|
||||
1021,-1619,254,1506
|
||||
1025,-1913,255,1203
|
||||
1029,-2199,256,896
|
||||
1033,-2477,257,586
|
||||
1037,-2745,258,274
|
||||
1041,-3002,259,-40
|
||||
1045,-3247,260,-353
|
||||
1049,-3479,261,-665
|
||||
1053,-3698,262,-975
|
||||
1057,-3902,263,-1280
|
||||
1061,-4090,264,-1581
|
||||
1065,-4263,265,-1876
|
||||
1069,-4418,266,-2162
|
||||
1073,-4557,267,-2441
|
||||
1077,-4677,268,-2710
|
||||
1081,-4778,269,-2968
|
||||
1085,-4861,270,-3215
|
||||
1089,-4925,271,-3449
|
||||
1093,-4969,272,-3669
|
||||
1097,-4994,273,-3875
|
||||
1101,-4999,274,-4065
|
||||
1105,-4984,275,-4239
|
||||
1109,-4950,276,-4397
|
||||
1113,-4896,277,-4537
|
||||
1117,-4822,278,-4660
|
||||
1121,-4730,279,-4764
|
||||
1125,-4619,280,-4849
|
||||
1129,-4490,281,-4915
|
||||
1133,-4343,282,-4961
|
||||
1137,-4179,283,-4989
|
||||
1141,-3998,284,-4996
|
||||
1145,-3802,285,-4984
|
||||
1149,-3590,286,-4952
|
||||
1153,-3365,287,-4900
|
||||
1157,-3126,288,-4829
|
||||
1161,-2875,289,-4739
|
||||
1165,-2612,290,-4631
|
||||
1169,-2339,291,-4504
|
||||
1173,-2057,292,-4359
|
||||
1177,-1767,293,-4197
|
||||
1181,-1470,294,-4019
|
||||
1185,-1167,295,-3825
|
||||
1189,-859,296,-3615
|
||||
1193,-548,297,-3391
|
||||
1197,-235,298,-3155
|
||||
1201,78,299,-2905
|
||||
1205,392,300,-2644
|
||||
1209,704,301,-2372
|
||||
1213,1013,302,-2091
|
||||
1217,1319,303,-1803
|
||||
1221,1619,304,-1507
|
||||
1225,1913,305,-1204
|
||||
1229,2199,306,-897
|
||||
1233,2477,307,-587
|
||||
1237,2745,308,-275
|
||||
1241,3002,309,39
|
||||
1245,3247,310,352
|
||||
1249,3479,311,664
|
||||
1253,3698,312,974
|
||||
1257,3902,313,1279
|
||||
1261,4090,314,1580
|
||||
1265,4263,315,1875
|
||||
1269,4418,316,2161
|
||||
1273,4557,317,2440
|
||||
1277,4677,318,2709
|
||||
1281,4778,319,2967
|
||||
1285,4861,320,3214
|
||||
1289,4925,321,3448
|
||||
1293,4969,322,3668
|
||||
1297,4994,323,3874
|
||||
1301,4999,324,4064
|
||||
1305,4984,325,4238
|
||||
1309,4950,326,4396
|
||||
1313,4896,327,4536
|
||||
1317,4822,328,4659
|
||||
1321,4730,329,4763
|
||||
1325,4619,330,4848
|
||||
1329,4490,331,4914
|
||||
1333,4343,332,4960
|
||||
1337,4179,333,4988
|
||||
1341,3998,334,4995
|
||||
1345,3802,335,4983
|
||||
1349,3590,336,4951
|
||||
1353,3365,337,4899
|
||||
1357,3126,338,4828
|
||||
1361,2875,339,4738
|
||||
1365,2612,340,4630
|
||||
1369,2339,341,4503
|
||||
1373,2057,342,4358
|
||||
1377,1767,343,4196
|
||||
1381,1470,344,4018
|
||||
1385,1167,345,3824
|
||||
1389,859,346,3614
|
||||
1393,548,347,3390
|
||||
1397,235,348,3154
|
||||
1401,-78,349,2904
|
||||
1405,-392,350,2643
|
||||
1409,-704,351,2371
|
||||
1413,-1013,352,2091
|
||||
1417,-1319,353,1802
|
||||
1421,-1619,354,1506
|
||||
1425,-1913,355,1203
|
||||
1429,-2199,356,896
|
||||
1433,-2477,357,586
|
||||
1437,-2745,358,274
|
||||
1441,-3002,359,-40
|
||||
1445,-3247,360,-353
|
||||
1449,-3479,361,-665
|
||||
1453,-3698,362,-975
|
||||
1457,-3902,363,-1280
|
||||
1461,-4090,364,-1581
|
||||
1465,-4263,365,-1876
|
||||
1469,-4418,366,-2162
|
||||
1473,-4557,367,-2441
|
||||
1477,-4677,368,-2710
|
||||
1481,-4778,369,-2968
|
||||
1485,-4861,370,-3215
|
||||
1489,-4925,371,-3449
|
||||
1493,-4969,372,-3669
|
||||
1497,-4994,373,-3875
|
||||
1501,-4999,374,-4065
|
||||
1505,-4984,375,-4239
|
||||
1509,-4950,376,-4397
|
||||
1513,-4896,377,-4537
|
||||
1517,-4822,378,-4660
|
||||
1521,-4730,379,-4764
|
||||
1525,-4619,380,-4849
|
||||
1529,-4490,381,-4915
|
||||
1533,-4343,382,-4961
|
||||
1537,-4179,383,-4989
|
||||
1541,-3998,384,-4996
|
||||
1545,-3802,385,-4984
|
||||
1549,-3590,386,-4952
|
||||
1553,-3365,387,-4900
|
||||
1557,-3126,388,-4829
|
||||
1561,-2875,389,-4739
|
||||
1565,-2612,390,-4631
|
||||
1569,-2339,391,-4504
|
||||
1573,-2057,392,-4359
|
||||
1577,-1767,393,-4197
|
||||
1581,-1470,394,-4019
|
||||
1585,-1167,395,-3825
|
||||
1589,-859,396,-3615
|
||||
1593,-548,397,-3391
|
||||
1597,-235,398,-3155
|
||||
6,470,0,0
|
||||
10,782,1,0
|
||||
14,1090,2,0
|
||||
18,1394,3,0
|
||||
22,1693,4,0
|
||||
26,1985,5,0
|
||||
30,2269,6,0
|
||||
34,2545,7,6
|
||||
38,2810,8,99
|
||||
42,3064,9,354
|
||||
46,3306,10,664
|
||||
50,3535,11,974
|
||||
54,3750,12,1279
|
||||
58,3950,13,1580
|
||||
62,4135,14,1875
|
||||
66,4303,15,2161
|
||||
70,4455,16,2440
|
||||
74,4588,17,2709
|
||||
78,4704,18,2967
|
||||
82,4801,19,3214
|
||||
86,4879,20,3448
|
||||
90,4938,21,3668
|
||||
94,4977,22,3874
|
||||
98,4997,23,4064
|
||||
102,4997,24,4238
|
||||
106,4977,25,4396
|
||||
110,4938,26,4536
|
||||
114,4879,27,4659
|
||||
118,4801,28,4763
|
||||
122,4704,29,4848
|
||||
126,4588,30,4914
|
||||
130,4455,31,4960
|
||||
134,4303,32,4988
|
||||
138,4135,33,4995
|
||||
142,3950,34,4983
|
||||
146,3750,35,4951
|
||||
150,3535,36,4899
|
||||
154,3306,37,4828
|
||||
158,3064,38,4738
|
||||
162,2810,39,4630
|
||||
166,2545,40,4503
|
||||
170,2269,41,4358
|
||||
174,1985,42,4196
|
||||
178,1693,43,4018
|
||||
182,1394,44,3824
|
||||
186,1090,45,3614
|
||||
190,782,46,3390
|
||||
194,470,47,3154
|
||||
198,157,48,2904
|
||||
202,-157,49,2643
|
||||
206,-470,50,2371
|
||||
210,-782,51,2091
|
||||
214,-1090,52,1802
|
||||
218,-1394,53,1506
|
||||
222,-1693,54,1203
|
||||
226,-1985,55,896
|
||||
230,-2269,56,586
|
||||
234,-2545,57,274
|
||||
238,-2810,58,-40
|
||||
242,-3064,59,-353
|
||||
246,-3306,60,-665
|
||||
250,-3535,61,-975
|
||||
254,-3750,62,-1280
|
||||
258,-3950,63,-1581
|
||||
262,-4135,64,-1876
|
||||
266,-4303,65,-2162
|
||||
270,-4455,66,-2441
|
||||
274,-4588,67,-2710
|
||||
278,-4704,68,-2968
|
||||
282,-4801,69,-3215
|
||||
286,-4879,70,-3449
|
||||
290,-4938,71,-3669
|
||||
294,-4977,72,-3875
|
||||
298,-4997,73,-4065
|
||||
302,-4997,74,-4239
|
||||
306,-4977,75,-4397
|
||||
310,-4938,76,-4537
|
||||
314,-4879,77,-4660
|
||||
318,-4801,78,-4764
|
||||
322,-4704,79,-4849
|
||||
326,-4588,80,-4915
|
||||
330,-4455,81,-4961
|
||||
334,-4303,82,-4989
|
||||
338,-4135,83,-4996
|
||||
342,-3950,84,-4984
|
||||
346,-3750,85,-4952
|
||||
350,-3535,86,-4900
|
||||
354,-3306,87,-4829
|
||||
358,-3064,88,-4739
|
||||
362,-2810,89,-4631
|
||||
366,-2545,90,-4504
|
||||
370,-2269,91,-4359
|
||||
374,-1985,92,-4197
|
||||
378,-1693,93,-4019
|
||||
382,-1394,94,-3825
|
||||
386,-1090,95,-3615
|
||||
390,-782,96,-3391
|
||||
394,-470,97,-3155
|
||||
398,-157,98,-2905
|
||||
402,157,99,-2644
|
||||
406,470,100,-2372
|
||||
410,782,101,-2091
|
||||
414,1090,102,-1803
|
||||
418,1394,103,-1507
|
||||
422,1693,104,-1204
|
||||
426,1985,105,-897
|
||||
430,2269,106,-587
|
||||
434,2545,107,-275
|
||||
438,2810,108,39
|
||||
442,3064,109,352
|
||||
446,3306,110,664
|
||||
450,3535,111,974
|
||||
454,3750,112,1279
|
||||
458,3950,113,1580
|
||||
462,4135,114,1875
|
||||
466,4303,115,2161
|
||||
470,4455,116,2440
|
||||
474,4588,117,2709
|
||||
478,4704,118,2967
|
||||
482,4801,119,3214
|
||||
486,4879,120,3448
|
||||
490,4938,121,3668
|
||||
494,4977,122,3874
|
||||
498,4997,123,4064
|
||||
502,4997,124,4238
|
||||
506,4977,125,4396
|
||||
510,4938,126,4536
|
||||
514,4879,127,4659
|
||||
518,4801,128,4763
|
||||
522,4704,129,4848
|
||||
526,4588,130,4914
|
||||
530,4455,131,4960
|
||||
534,4303,132,4988
|
||||
538,4135,133,4995
|
||||
542,3950,134,4983
|
||||
546,3750,135,4951
|
||||
550,3535,136,4899
|
||||
554,3306,137,4828
|
||||
558,3064,138,4738
|
||||
562,2810,139,4630
|
||||
566,2545,140,4503
|
||||
570,2269,141,4358
|
||||
574,1985,142,4196
|
||||
578,1693,143,4018
|
||||
582,1394,144,3824
|
||||
586,1090,145,3614
|
||||
590,782,146,3390
|
||||
594,470,147,3154
|
||||
598,157,148,2904
|
||||
602,-157,149,2643
|
||||
606,-470,150,2371
|
||||
610,-782,151,2091
|
||||
614,-1090,152,1802
|
||||
618,-1394,153,1506
|
||||
622,-1693,154,1203
|
||||
626,-1985,155,896
|
||||
630,-2269,156,586
|
||||
634,-2545,157,274
|
||||
638,-2810,158,-40
|
||||
642,-3064,159,-353
|
||||
646,-3306,160,-665
|
||||
650,-3535,161,-975
|
||||
654,-3750,162,-1280
|
||||
658,-3950,163,-1581
|
||||
662,-4135,164,-1876
|
||||
666,-4303,165,-2162
|
||||
670,-4455,166,-2441
|
||||
674,-4588,167,-2710
|
||||
678,-4704,168,-2968
|
||||
682,-4801,169,-3215
|
||||
686,-4879,170,-3449
|
||||
690,-4938,171,-3669
|
||||
694,-4977,172,-3875
|
||||
698,-4997,173,-4065
|
||||
702,-4997,174,-4239
|
||||
706,-4977,175,-4397
|
||||
710,-4938,176,-4537
|
||||
714,-4879,177,-4660
|
||||
718,-4801,178,-4764
|
||||
722,-4704,179,-4849
|
||||
726,-4588,180,-4915
|
||||
730,-4455,181,-4961
|
||||
734,-4303,182,-4989
|
||||
738,-4135,183,-4996
|
||||
742,-3950,184,-4984
|
||||
746,-3750,185,-4952
|
||||
750,-3535,186,-4900
|
||||
754,-3306,187,-4829
|
||||
758,-3064,188,-4739
|
||||
762,-2810,189,-4631
|
||||
766,-2545,190,-4504
|
||||
770,-2269,191,-4359
|
||||
774,-1985,192,-4197
|
||||
778,-1693,193,-4019
|
||||
782,-1394,194,-3825
|
||||
786,-1090,195,-3615
|
||||
790,-782,196,-3391
|
||||
794,-470,197,-3155
|
||||
798,-157,198,-2905
|
||||
802,157,199,-2644
|
||||
806,470,200,-2372
|
||||
810,782,201,-2091
|
||||
814,1090,202,-1803
|
||||
818,1394,203,-1507
|
||||
822,1693,204,-1204
|
||||
826,1985,205,-897
|
||||
830,2269,206,-587
|
||||
834,2545,207,-275
|
||||
838,2810,208,39
|
||||
842,3064,209,352
|
||||
846,3306,210,664
|
||||
850,3535,211,974
|
||||
854,3750,212,1279
|
||||
858,3950,213,1580
|
||||
862,4135,214,1875
|
||||
866,4303,215,2161
|
||||
870,4455,216,2440
|
||||
874,4588,217,2709
|
||||
878,4704,218,2967
|
||||
882,4801,219,3214
|
||||
886,4879,220,3448
|
||||
890,4938,221,3668
|
||||
894,4977,222,3874
|
||||
898,4997,223,4064
|
||||
902,4997,224,4238
|
||||
906,4977,225,4396
|
||||
910,4938,226,4536
|
||||
914,4879,227,4659
|
||||
918,4801,228,4763
|
||||
922,4704,229,4848
|
||||
926,4588,230,4914
|
||||
930,4455,231,4960
|
||||
934,4303,232,4988
|
||||
938,4135,233,4995
|
||||
942,3950,234,4983
|
||||
946,3750,235,4951
|
||||
950,3535,236,4899
|
||||
954,3306,237,4828
|
||||
958,3064,238,4738
|
||||
962,2810,239,4630
|
||||
966,2545,240,4503
|
||||
970,2269,241,4358
|
||||
974,1985,242,4196
|
||||
978,1693,243,4018
|
||||
982,1394,244,3824
|
||||
986,1090,245,3614
|
||||
990,782,246,3390
|
||||
994,470,247,3154
|
||||
998,157,248,2904
|
||||
1002,-157,249,2643
|
||||
1006,-470,250,2371
|
||||
1010,-782,251,2091
|
||||
1014,-1090,252,1802
|
||||
1018,-1394,253,1506
|
||||
1022,-1693,254,1203
|
||||
1026,-1985,255,896
|
||||
1030,-2269,256,586
|
||||
1034,-2545,257,274
|
||||
1038,-2810,258,-40
|
||||
1042,-3064,259,-353
|
||||
1046,-3306,260,-665
|
||||
1050,-3535,261,-975
|
||||
1054,-3750,262,-1280
|
||||
1058,-3950,263,-1581
|
||||
1062,-4135,264,-1876
|
||||
1066,-4303,265,-2162
|
||||
1070,-4455,266,-2441
|
||||
1074,-4588,267,-2710
|
||||
1078,-4704,268,-2968
|
||||
1082,-4801,269,-3215
|
||||
1086,-4879,270,-3449
|
||||
1090,-4938,271,-3669
|
||||
1094,-4977,272,-3875
|
||||
1098,-4997,273,-4065
|
||||
1102,-4997,274,-4239
|
||||
1106,-4977,275,-4397
|
||||
1110,-4938,276,-4537
|
||||
1114,-4879,277,-4660
|
||||
1118,-4801,278,-4764
|
||||
1122,-4704,279,-4849
|
||||
1126,-4588,280,-4915
|
||||
1130,-4455,281,-4961
|
||||
1134,-4303,282,-4989
|
||||
1138,-4135,283,-4996
|
||||
1142,-3950,284,-4984
|
||||
1146,-3750,285,-4952
|
||||
1150,-3535,286,-4900
|
||||
1154,-3306,287,-4829
|
||||
1158,-3064,288,-4739
|
||||
1162,-2810,289,-4631
|
||||
1166,-2545,290,-4504
|
||||
1170,-2269,291,-4359
|
||||
1174,-1985,292,-4197
|
||||
1178,-1693,293,-4019
|
||||
1182,-1394,294,-3825
|
||||
1186,-1090,295,-3615
|
||||
1190,-782,296,-3391
|
||||
1194,-470,297,-3155
|
||||
1198,-157,298,-2905
|
||||
1202,157,299,-2644
|
||||
1206,470,300,-2372
|
||||
1210,782,301,-2091
|
||||
1214,1090,302,-1803
|
||||
1218,1394,303,-1507
|
||||
1222,1693,304,-1204
|
||||
1226,1985,305,-897
|
||||
1230,2269,306,-587
|
||||
1234,2545,307,-275
|
||||
1238,2810,308,39
|
||||
1242,3064,309,352
|
||||
1246,3306,310,664
|
||||
1250,3535,311,974
|
||||
1254,3750,312,1279
|
||||
1258,3950,313,1580
|
||||
1262,4135,314,1875
|
||||
1266,4303,315,2161
|
||||
1270,4455,316,2440
|
||||
1274,4588,317,2709
|
||||
1278,4704,318,2967
|
||||
1282,4801,319,3214
|
||||
1286,4879,320,3448
|
||||
1290,4938,321,3668
|
||||
1294,4977,322,3874
|
||||
1298,4997,323,4064
|
||||
1302,4997,324,4238
|
||||
1306,4977,325,4396
|
||||
1310,4938,326,4536
|
||||
1314,4879,327,4659
|
||||
1318,4801,328,4763
|
||||
1322,4704,329,4848
|
||||
1326,4588,330,4914
|
||||
1330,4455,331,4960
|
||||
1334,4303,332,4988
|
||||
1338,4135,333,4995
|
||||
1342,3950,334,4983
|
||||
1346,3750,335,4951
|
||||
1350,3535,336,4899
|
||||
1354,3306,337,4828
|
||||
1358,3064,338,4738
|
||||
1362,2810,339,4630
|
||||
1366,2545,340,4503
|
||||
1370,2269,341,4358
|
||||
1374,1985,342,4196
|
||||
1378,1693,343,4018
|
||||
1382,1394,344,3824
|
||||
1386,1090,345,3614
|
||||
1390,782,346,3390
|
||||
1394,470,347,3154
|
||||
1398,157,348,2904
|
||||
1402,-157,349,2643
|
||||
1406,-470,350,2371
|
||||
1410,-782,351,2091
|
||||
1414,-1090,352,1802
|
||||
1418,-1394,353,1506
|
||||
1422,-1693,354,1203
|
||||
1426,-1985,355,896
|
||||
1430,-2269,356,586
|
||||
1434,-2545,357,274
|
||||
1438,-2810,358,-40
|
||||
1442,-3064,359,-353
|
||||
1446,-3306,360,-665
|
||||
1450,-3535,361,-975
|
||||
1454,-3750,362,-1280
|
||||
1458,-3950,363,-1581
|
||||
1462,-4135,364,-1876
|
||||
1466,-4303,365,-2162
|
||||
1470,-4455,366,-2441
|
||||
1474,-4588,367,-2710
|
||||
1478,-4704,368,-2968
|
||||
1482,-4801,369,-3215
|
||||
1486,-4879,370,-3449
|
||||
1490,-4938,371,-3669
|
||||
1494,-4977,372,-3875
|
||||
1498,-4997,373,-4065
|
||||
1502,-4997,374,-4239
|
||||
1506,-4977,375,-4397
|
||||
1510,-4938,376,-4537
|
||||
1514,-4879,377,-4660
|
||||
1518,-4801,378,-4764
|
||||
1522,-4704,379,-4849
|
||||
1526,-4588,380,-4915
|
||||
1530,-4455,381,-4961
|
||||
1534,-4303,382,-4989
|
||||
1538,-4135,383,-4996
|
||||
1542,-3950,384,-4984
|
||||
1546,-3750,385,-4952
|
||||
1550,-3535,386,-4900
|
||||
1554,-3306,387,-4829
|
||||
1558,-3064,388,-4739
|
||||
1562,-2810,389,-4631
|
||||
1566,-2545,390,-4504
|
||||
1570,-2269,391,-4359
|
||||
1574,-1985,392,-4197
|
||||
1578,-1693,393,-4019
|
||||
1582,-1394,394,-3825
|
||||
1586,-1090,395,-3615
|
||||
1590,-782,396,-3391
|
||||
1594,-470,397,-3155
|
||||
1598,-157,398,-2905
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,101 +1,101 @@
|
||||
sample,sin_out,cos_out,dds_ready
|
||||
0,0,32757,1
|
||||
1,9512,-31113,1
|
||||
2,-26319,-18868,1
|
||||
3,-18868,26319,1
|
||||
4,31113,9512,1
|
||||
5,-32757,0,1
|
||||
6,-31113,9512,1
|
||||
7,18868,26319,1
|
||||
8,26319,-18868,1
|
||||
9,-9512,-31113,1
|
||||
10,0,32757,1
|
||||
11,9512,-31113,1
|
||||
12,-26319,-18868,1
|
||||
13,-18868,26319,1
|
||||
14,31113,9512,1
|
||||
15,-32757,0,1
|
||||
16,-31113,9512,1
|
||||
17,18868,26319,1
|
||||
18,26319,-18868,1
|
||||
19,-9512,-31113,1
|
||||
20,0,32757,1
|
||||
21,9512,-31113,1
|
||||
22,-26319,-18868,1
|
||||
23,-18868,26319,1
|
||||
24,31113,9512,1
|
||||
25,-32757,0,1
|
||||
26,-31113,9512,1
|
||||
27,18868,26319,1
|
||||
28,26319,-18868,1
|
||||
29,-9512,-31113,1
|
||||
30,0,32757,1
|
||||
31,9512,-31113,1
|
||||
32,-26319,-18868,1
|
||||
33,-18868,26319,1
|
||||
34,31113,9512,1
|
||||
35,-32757,0,1
|
||||
36,-31113,9512,1
|
||||
37,18868,26319,1
|
||||
38,26319,-18868,1
|
||||
39,-9512,-31113,1
|
||||
40,0,32757,1
|
||||
41,9512,-31113,1
|
||||
42,-26319,-18868,1
|
||||
43,-18868,26319,1
|
||||
44,31113,9512,1
|
||||
45,-32757,0,1
|
||||
46,-31113,9512,1
|
||||
47,18868,26319,1
|
||||
48,26319,-18868,1
|
||||
49,-9512,-31113,1
|
||||
50,0,32757,1
|
||||
51,9512,-31113,1
|
||||
52,-26319,-18868,1
|
||||
53,-18868,26319,1
|
||||
54,31113,9512,1
|
||||
55,-32757,0,1
|
||||
56,-31113,9512,1
|
||||
57,18868,26319,1
|
||||
58,26319,-18868,1
|
||||
59,-9512,-31113,1
|
||||
60,0,32757,1
|
||||
61,9512,-31113,1
|
||||
62,-26319,-18868,1
|
||||
63,-18868,26319,1
|
||||
64,31113,9512,1
|
||||
65,-32757,0,1
|
||||
66,-31113,9512,1
|
||||
67,18868,26319,1
|
||||
68,26319,-18868,1
|
||||
69,-9512,-31113,1
|
||||
70,0,32757,1
|
||||
71,9512,-31113,1
|
||||
72,-26319,-18868,1
|
||||
73,-18868,26319,1
|
||||
74,31113,9512,1
|
||||
75,-32757,0,1
|
||||
76,-31113,9512,1
|
||||
77,18868,26319,1
|
||||
78,26319,-18868,1
|
||||
79,-9512,-31113,1
|
||||
80,0,32757,1
|
||||
81,9512,-31113,1
|
||||
82,-26319,-18868,1
|
||||
83,-18868,26319,1
|
||||
84,31113,9512,1
|
||||
85,-32757,0,1
|
||||
86,-31113,9512,1
|
||||
87,18868,26319,1
|
||||
88,26319,-18868,1
|
||||
89,-9512,-31113,1
|
||||
90,0,32757,1
|
||||
91,9512,-31113,1
|
||||
92,-26319,-18868,1
|
||||
93,-18868,26319,1
|
||||
94,31113,9512,1
|
||||
95,-32757,0,1
|
||||
96,-31113,9512,1
|
||||
97,18868,26319,1
|
||||
98,26319,-18868,1
|
||||
99,-9512,-31113,1
|
||||
0,0,32767,0
|
||||
1,0,32767,0
|
||||
2,0,32757,0
|
||||
3,31113,-9512,1
|
||||
4,-26319,-18868,1
|
||||
5,-26319,18868,1
|
||||
6,31113,9512,1
|
||||
7,-32757,0,1
|
||||
8,-9512,31113,1
|
||||
9,18868,26319,1
|
||||
10,18868,-26319,1
|
||||
11,-9512,-31113,1
|
||||
12,0,32757,1
|
||||
13,31113,-9512,1
|
||||
14,-26319,-18868,1
|
||||
15,-26319,18868,1
|
||||
16,31113,9512,1
|
||||
17,-32757,0,1
|
||||
18,-9512,31113,1
|
||||
19,18868,26319,1
|
||||
20,18868,-26319,1
|
||||
21,-9512,-31113,1
|
||||
22,0,32757,1
|
||||
23,31113,-9512,1
|
||||
24,-26319,-18868,1
|
||||
25,-26319,18868,1
|
||||
26,31113,9512,1
|
||||
27,-32757,0,1
|
||||
28,-9512,31113,1
|
||||
29,18868,26319,1
|
||||
30,18868,-26319,1
|
||||
31,-9512,-31113,1
|
||||
32,0,32757,1
|
||||
33,31113,-9512,1
|
||||
34,-26319,-18868,1
|
||||
35,-26319,18868,1
|
||||
36,31113,9512,1
|
||||
37,-32757,0,1
|
||||
38,-9512,31113,1
|
||||
39,18868,26319,1
|
||||
40,18868,-26319,1
|
||||
41,-9512,-31113,1
|
||||
42,0,32757,1
|
||||
43,31113,-9512,1
|
||||
44,-26319,-18868,1
|
||||
45,-26319,18868,1
|
||||
46,31113,9512,1
|
||||
47,-32757,0,1
|
||||
48,-9512,31113,1
|
||||
49,18868,26319,1
|
||||
50,18868,-26319,1
|
||||
51,-9512,-31113,1
|
||||
52,0,32757,1
|
||||
53,31113,-9512,1
|
||||
54,-26319,-18868,1
|
||||
55,-26319,18868,1
|
||||
56,31113,9512,1
|
||||
57,-32757,0,1
|
||||
58,-9512,31113,1
|
||||
59,18868,26319,1
|
||||
60,18868,-26319,1
|
||||
61,-9512,-31113,1
|
||||
62,0,32757,1
|
||||
63,31113,-9512,1
|
||||
64,-26319,-18868,1
|
||||
65,-26319,18868,1
|
||||
66,31113,9512,1
|
||||
67,-32757,0,1
|
||||
68,-9512,31113,1
|
||||
69,18868,26319,1
|
||||
70,18868,-26319,1
|
||||
71,-9512,-31113,1
|
||||
72,0,32757,1
|
||||
73,31113,-9512,1
|
||||
74,-26319,-18868,1
|
||||
75,-26319,18868,1
|
||||
76,31113,9512,1
|
||||
77,-32757,0,1
|
||||
78,-9512,31113,1
|
||||
79,18868,26319,1
|
||||
80,18868,-26319,1
|
||||
81,-9512,-31113,1
|
||||
82,0,32757,1
|
||||
83,31113,-9512,1
|
||||
84,-26319,-18868,1
|
||||
85,-26319,18868,1
|
||||
86,31113,9512,1
|
||||
87,-32757,0,1
|
||||
88,-9512,31113,1
|
||||
89,18868,26319,1
|
||||
90,18868,-26319,1
|
||||
91,-9512,-31113,1
|
||||
92,0,32757,1
|
||||
93,31113,-9512,1
|
||||
94,-26319,-18868,1
|
||||
95,-26319,18868,1
|
||||
96,31113,9512,1
|
||||
97,-32757,0,1
|
||||
98,-9512,31113,1
|
||||
99,18868,26319,1
|
||||
|
||||
|
@@ -1,501 +1,501 @@
|
||||
sample,sin_out,cos_out,dds_ready
|
||||
0,0,32767,1
|
||||
1,0,32757,1
|
||||
2,0,32757,1
|
||||
3,804,32728,1
|
||||
4,804,32728,1
|
||||
5,1608,32678,1
|
||||
6,2410,32609,1
|
||||
7,2410,32609,1
|
||||
8,3212,32521,1
|
||||
9,4011,32412,1
|
||||
10,4011,32412,1
|
||||
11,4808,32285,1
|
||||
12,5602,32137,1
|
||||
13,5602,32137,1
|
||||
14,6393,31971,1
|
||||
15,6393,31971,1
|
||||
16,7179,31785,1
|
||||
17,7962,31580,1
|
||||
18,7962,31580,1
|
||||
19,8739,31356,1
|
||||
20,9512,31113,1
|
||||
21,9512,31113,1
|
||||
22,10278,30852,1
|
||||
23,11039,30571,1
|
||||
24,11039,30571,1
|
||||
25,11793,30273,1
|
||||
26,11793,30273,1
|
||||
27,12539,29956,1
|
||||
28,13279,29621,1
|
||||
29,13279,29621,1
|
||||
30,14010,29268,1
|
||||
31,14732,28898,1
|
||||
32,14732,28898,1
|
||||
33,15446,28510,1
|
||||
34,16151,28105,1
|
||||
35,16151,28105,1
|
||||
36,16846,27683,1
|
||||
37,17530,27245,1
|
||||
38,17530,27245,1
|
||||
39,18204,26790,1
|
||||
40,18204,26790,1
|
||||
41,18868,26319,1
|
||||
42,19519,25832,1
|
||||
43,19519,25832,1
|
||||
44,20159,25329,1
|
||||
45,20787,24811,1
|
||||
46,20787,24811,1
|
||||
47,21403,24279,1
|
||||
48,22005,23731,1
|
||||
49,22005,23731,1
|
||||
50,22594,23170,1
|
||||
51,22594,23170,1
|
||||
52,23170,22594,1
|
||||
53,23731,22005,1
|
||||
54,23731,22005,1
|
||||
55,24279,21403,1
|
||||
56,24811,20787,1
|
||||
57,24811,20787,1
|
||||
58,25329,20159,1
|
||||
59,25832,19519,1
|
||||
60,25832,19519,1
|
||||
61,26319,18868,1
|
||||
62,26790,18204,1
|
||||
63,26790,18204,1
|
||||
64,27245,17530,1
|
||||
65,27245,17530,1
|
||||
66,27683,16846,1
|
||||
67,28105,16151,1
|
||||
68,28105,16151,1
|
||||
69,28510,15446,1
|
||||
70,28898,14732,1
|
||||
71,28898,14732,1
|
||||
72,29268,14010,1
|
||||
73,29621,13279,1
|
||||
74,29621,13279,1
|
||||
75,29956,12539,1
|
||||
76,29956,12539,1
|
||||
77,30273,11793,1
|
||||
78,30571,11039,1
|
||||
79,30571,11039,1
|
||||
80,30852,10278,1
|
||||
81,31113,9512,1
|
||||
82,31113,9512,1
|
||||
83,31356,8739,1
|
||||
84,31580,7962,1
|
||||
85,31580,7962,1
|
||||
86,31785,7179,1
|
||||
87,31971,6393,1
|
||||
88,31971,6393,1
|
||||
89,32137,5602,1
|
||||
90,32137,5602,1
|
||||
91,32285,4808,1
|
||||
92,32412,4011,1
|
||||
93,32412,4011,1
|
||||
94,32521,3212,1
|
||||
95,32609,2410,1
|
||||
96,32609,2410,1
|
||||
97,32678,1608,1
|
||||
98,32728,804,1
|
||||
99,32728,804,1
|
||||
100,32757,0,1
|
||||
101,32757,0,1
|
||||
102,0,-32757,1
|
||||
103,804,-32728,1
|
||||
104,804,-32728,1
|
||||
105,1608,-32678,1
|
||||
106,2410,-32609,1
|
||||
107,2410,-32609,1
|
||||
108,3212,-32521,1
|
||||
109,4011,-32412,1
|
||||
110,4011,-32412,1
|
||||
111,4808,-32285,1
|
||||
112,5602,-32137,1
|
||||
113,5602,-32137,1
|
||||
114,6393,-31971,1
|
||||
115,6393,-31971,1
|
||||
116,7179,-31785,1
|
||||
117,7962,-31580,1
|
||||
118,7962,-31580,1
|
||||
119,8739,-31356,1
|
||||
120,9512,-31113,1
|
||||
121,9512,-31113,1
|
||||
122,10278,-30852,1
|
||||
123,11039,-30571,1
|
||||
124,11039,-30571,1
|
||||
125,11793,-30273,1
|
||||
126,11793,-30273,1
|
||||
127,12539,-29956,1
|
||||
128,13279,-29621,1
|
||||
129,13279,-29621,1
|
||||
130,14010,-29268,1
|
||||
131,14732,-28898,1
|
||||
132,14732,-28898,1
|
||||
133,15446,-28510,1
|
||||
134,16151,-28105,1
|
||||
135,16151,-28105,1
|
||||
136,16846,-27683,1
|
||||
137,17530,-27245,1
|
||||
138,17530,-27245,1
|
||||
139,18204,-26790,1
|
||||
140,18204,-26790,1
|
||||
141,18868,-26319,1
|
||||
142,19519,-25832,1
|
||||
143,19519,-25832,1
|
||||
144,20159,-25329,1
|
||||
145,20787,-24811,1
|
||||
146,20787,-24811,1
|
||||
147,21403,-24279,1
|
||||
148,22005,-23731,1
|
||||
149,22005,-23731,1
|
||||
150,22594,-23170,1
|
||||
151,22594,-23170,1
|
||||
0,0,32767,0
|
||||
1,0,32767,0
|
||||
2,0,32767,0
|
||||
3,0,32757,0
|
||||
4,0,32757,1
|
||||
5,804,32728,1
|
||||
6,804,32728,1
|
||||
7,1608,32678,1
|
||||
8,2410,32609,1
|
||||
9,2410,32609,1
|
||||
10,3212,32521,1
|
||||
11,4011,32412,1
|
||||
12,4011,32412,1
|
||||
13,4808,32285,1
|
||||
14,5602,32137,1
|
||||
15,5602,32137,1
|
||||
16,6393,31971,1
|
||||
17,6393,31971,1
|
||||
18,7179,31785,1
|
||||
19,7962,31580,1
|
||||
20,7962,31580,1
|
||||
21,8739,31356,1
|
||||
22,9512,31113,1
|
||||
23,9512,31113,1
|
||||
24,10278,30852,1
|
||||
25,11039,30571,1
|
||||
26,11039,30571,1
|
||||
27,11793,30273,1
|
||||
28,11793,30273,1
|
||||
29,12539,29956,1
|
||||
30,13279,29621,1
|
||||
31,13279,29621,1
|
||||
32,14010,29268,1
|
||||
33,14732,28898,1
|
||||
34,14732,28898,1
|
||||
35,15446,28510,1
|
||||
36,16151,28105,1
|
||||
37,16151,28105,1
|
||||
38,16846,27683,1
|
||||
39,17530,27245,1
|
||||
40,17530,27245,1
|
||||
41,18204,26790,1
|
||||
42,18204,26790,1
|
||||
43,18868,26319,1
|
||||
44,19519,25832,1
|
||||
45,19519,25832,1
|
||||
46,20159,25329,1
|
||||
47,20787,24811,1
|
||||
48,20787,24811,1
|
||||
49,21403,24279,1
|
||||
50,22005,23731,1
|
||||
51,22005,23731,1
|
||||
52,22594,23170,1
|
||||
53,22594,23170,1
|
||||
54,23170,22594,1
|
||||
55,23731,22005,1
|
||||
56,23731,22005,1
|
||||
57,24279,21403,1
|
||||
58,24811,20787,1
|
||||
59,24811,20787,1
|
||||
60,25329,20159,1
|
||||
61,25832,19519,1
|
||||
62,25832,19519,1
|
||||
63,26319,18868,1
|
||||
64,26790,18204,1
|
||||
65,26790,18204,1
|
||||
66,27245,17530,1
|
||||
67,27245,17530,1
|
||||
68,27683,16846,1
|
||||
69,28105,16151,1
|
||||
70,28105,16151,1
|
||||
71,28510,15446,1
|
||||
72,28898,14732,1
|
||||
73,28898,14732,1
|
||||
74,29268,14010,1
|
||||
75,29621,13279,1
|
||||
76,29621,13279,1
|
||||
77,29956,12539,1
|
||||
78,29956,12539,1
|
||||
79,30273,11793,1
|
||||
80,30571,11039,1
|
||||
81,30571,11039,1
|
||||
82,30852,10278,1
|
||||
83,31113,9512,1
|
||||
84,31113,9512,1
|
||||
85,31356,8739,1
|
||||
86,31580,7962,1
|
||||
87,31580,7962,1
|
||||
88,31785,7179,1
|
||||
89,31971,6393,1
|
||||
90,31971,6393,1
|
||||
91,32137,5602,1
|
||||
92,32137,5602,1
|
||||
93,32285,4808,1
|
||||
94,32412,4011,1
|
||||
95,32412,4011,1
|
||||
96,32521,3212,1
|
||||
97,32609,2410,1
|
||||
98,32609,2410,1
|
||||
99,32678,1608,1
|
||||
100,32728,804,1
|
||||
101,32728,804,1
|
||||
102,32757,0,1
|
||||
103,32757,0,1
|
||||
104,32757,0,1
|
||||
105,32728,-804,1
|
||||
106,32728,-804,1
|
||||
107,32678,-1608,1
|
||||
108,32609,-2410,1
|
||||
109,32609,-2410,1
|
||||
110,32521,-3212,1
|
||||
111,32412,-4011,1
|
||||
112,32412,-4011,1
|
||||
113,32285,-4808,1
|
||||
114,32137,-5602,1
|
||||
115,32137,-5602,1
|
||||
116,31971,-6393,1
|
||||
117,31971,-6393,1
|
||||
118,31785,-7179,1
|
||||
119,31580,-7962,1
|
||||
120,31580,-7962,1
|
||||
121,31356,-8739,1
|
||||
122,31113,-9512,1
|
||||
123,31113,-9512,1
|
||||
124,30852,-10278,1
|
||||
125,30571,-11039,1
|
||||
126,30571,-11039,1
|
||||
127,30273,-11793,1
|
||||
128,30273,-11793,1
|
||||
129,29956,-12539,1
|
||||
130,29621,-13279,1
|
||||
131,29621,-13279,1
|
||||
132,29268,-14010,1
|
||||
133,28898,-14732,1
|
||||
134,28898,-14732,1
|
||||
135,28510,-15446,1
|
||||
136,28105,-16151,1
|
||||
137,28105,-16151,1
|
||||
138,27683,-16846,1
|
||||
139,27245,-17530,1
|
||||
140,27245,-17530,1
|
||||
141,26790,-18204,1
|
||||
142,26790,-18204,1
|
||||
143,26319,-18868,1
|
||||
144,25832,-19519,1
|
||||
145,25832,-19519,1
|
||||
146,25329,-20159,1
|
||||
147,24811,-20787,1
|
||||
148,24811,-20787,1
|
||||
149,24279,-21403,1
|
||||
150,23731,-22005,1
|
||||
151,23731,-22005,1
|
||||
152,23170,-22594,1
|
||||
153,23731,-22005,1
|
||||
154,23731,-22005,1
|
||||
155,24279,-21403,1
|
||||
156,24811,-20787,1
|
||||
157,24811,-20787,1
|
||||
158,25329,-20159,1
|
||||
159,25832,-19519,1
|
||||
160,25832,-19519,1
|
||||
161,26319,-18868,1
|
||||
162,26790,-18204,1
|
||||
163,26790,-18204,1
|
||||
164,27245,-17530,1
|
||||
165,27245,-17530,1
|
||||
166,27683,-16846,1
|
||||
167,28105,-16151,1
|
||||
168,28105,-16151,1
|
||||
169,28510,-15446,1
|
||||
170,28898,-14732,1
|
||||
171,28898,-14732,1
|
||||
172,29268,-14010,1
|
||||
173,29621,-13279,1
|
||||
174,29621,-13279,1
|
||||
175,29956,-12539,1
|
||||
176,29956,-12539,1
|
||||
177,30273,-11793,1
|
||||
178,30571,-11039,1
|
||||
179,30571,-11039,1
|
||||
180,30852,-10278,1
|
||||
181,31113,-9512,1
|
||||
182,31113,-9512,1
|
||||
183,31356,-8739,1
|
||||
184,31580,-7962,1
|
||||
185,31580,-7962,1
|
||||
186,31785,-7179,1
|
||||
187,31971,-6393,1
|
||||
188,31971,-6393,1
|
||||
189,32137,-5602,1
|
||||
190,32137,-5602,1
|
||||
191,32285,-4808,1
|
||||
192,32412,-4011,1
|
||||
193,32412,-4011,1
|
||||
194,32521,-3212,1
|
||||
195,32609,-2410,1
|
||||
196,32609,-2410,1
|
||||
197,32678,-1608,1
|
||||
198,32728,-804,1
|
||||
199,32728,-804,1
|
||||
200,32757,0,1
|
||||
201,32757,0,1
|
||||
202,-32757,0,1
|
||||
203,-32728,-804,1
|
||||
204,-32728,-804,1
|
||||
205,-32678,-1608,1
|
||||
206,-32609,-2410,1
|
||||
207,-32609,-2410,1
|
||||
208,-32521,-3212,1
|
||||
209,-32412,-4011,1
|
||||
210,-32412,-4011,1
|
||||
211,-32285,-4808,1
|
||||
212,-32137,-5602,1
|
||||
213,-32137,-5602,1
|
||||
214,-31971,-6393,1
|
||||
215,-31971,-6393,1
|
||||
216,-31785,-7179,1
|
||||
217,-31580,-7962,1
|
||||
218,-31580,-7962,1
|
||||
219,-31356,-8739,1
|
||||
220,-31113,-9512,1
|
||||
221,-31113,-9512,1
|
||||
222,-30852,-10278,1
|
||||
223,-30571,-11039,1
|
||||
224,-30571,-11039,1
|
||||
225,-30273,-11793,1
|
||||
226,-30273,-11793,1
|
||||
227,-29956,-12539,1
|
||||
228,-29621,-13279,1
|
||||
229,-29621,-13279,1
|
||||
230,-29268,-14010,1
|
||||
231,-28898,-14732,1
|
||||
232,-28898,-14732,1
|
||||
233,-28510,-15446,1
|
||||
234,-28105,-16151,1
|
||||
235,-28105,-16151,1
|
||||
236,-27683,-16846,1
|
||||
237,-27245,-17530,1
|
||||
238,-27245,-17530,1
|
||||
239,-26790,-18204,1
|
||||
240,-26790,-18204,1
|
||||
241,-26319,-18868,1
|
||||
242,-25832,-19519,1
|
||||
243,-25832,-19519,1
|
||||
244,-25329,-20159,1
|
||||
245,-24811,-20787,1
|
||||
246,-24811,-20787,1
|
||||
247,-24279,-21403,1
|
||||
248,-23731,-22005,1
|
||||
249,-23731,-22005,1
|
||||
250,-23170,-22594,1
|
||||
251,-23170,-22594,1
|
||||
252,-22594,-23170,1
|
||||
253,-22005,-23731,1
|
||||
254,-22005,-23731,1
|
||||
255,-21403,-24279,1
|
||||
256,-20787,-24811,1
|
||||
257,-20787,-24811,1
|
||||
258,-20159,-25329,1
|
||||
259,-19519,-25832,1
|
||||
260,-19519,-25832,1
|
||||
261,-18868,-26319,1
|
||||
262,-18204,-26790,1
|
||||
263,-18204,-26790,1
|
||||
264,-17530,-27245,1
|
||||
265,-17530,-27245,1
|
||||
266,-16846,-27683,1
|
||||
267,-16151,-28105,1
|
||||
268,-16151,-28105,1
|
||||
269,-15446,-28510,1
|
||||
270,-14732,-28898,1
|
||||
271,-14732,-28898,1
|
||||
272,-14010,-29268,1
|
||||
273,-13279,-29621,1
|
||||
274,-13279,-29621,1
|
||||
275,-12539,-29956,1
|
||||
276,-12539,-29956,1
|
||||
277,-11793,-30273,1
|
||||
278,-11039,-30571,1
|
||||
279,-11039,-30571,1
|
||||
280,-10278,-30852,1
|
||||
281,-9512,-31113,1
|
||||
282,-9512,-31113,1
|
||||
283,-8739,-31356,1
|
||||
284,-7962,-31580,1
|
||||
285,-7962,-31580,1
|
||||
286,-7179,-31785,1
|
||||
287,-6393,-31971,1
|
||||
288,-6393,-31971,1
|
||||
289,-5602,-32137,1
|
||||
290,-5602,-32137,1
|
||||
291,-4808,-32285,1
|
||||
292,-4011,-32412,1
|
||||
293,-4011,-32412,1
|
||||
294,-3212,-32521,1
|
||||
295,-2410,-32609,1
|
||||
296,-2410,-32609,1
|
||||
297,-1608,-32678,1
|
||||
298,-804,-32728,1
|
||||
299,-804,-32728,1
|
||||
300,0,-32757,1
|
||||
301,0,-32757,1
|
||||
302,-32757,0,1
|
||||
303,-32728,804,1
|
||||
304,-32728,804,1
|
||||
305,-32678,1608,1
|
||||
306,-32609,2410,1
|
||||
307,-32609,2410,1
|
||||
308,-32521,3212,1
|
||||
309,-32412,4011,1
|
||||
310,-32412,4011,1
|
||||
311,-32285,4808,1
|
||||
312,-32137,5602,1
|
||||
313,-32137,5602,1
|
||||
314,-31971,6393,1
|
||||
315,-31971,6393,1
|
||||
316,-31785,7179,1
|
||||
317,-31580,7962,1
|
||||
318,-31580,7962,1
|
||||
319,-31356,8739,1
|
||||
320,-31113,9512,1
|
||||
321,-31113,9512,1
|
||||
322,-30852,10278,1
|
||||
323,-30571,11039,1
|
||||
324,-30571,11039,1
|
||||
325,-30273,11793,1
|
||||
326,-30273,11793,1
|
||||
327,-29956,12539,1
|
||||
328,-29621,13279,1
|
||||
329,-29621,13279,1
|
||||
330,-29268,14010,1
|
||||
331,-28898,14732,1
|
||||
332,-28898,14732,1
|
||||
333,-28510,15446,1
|
||||
334,-28105,16151,1
|
||||
335,-28105,16151,1
|
||||
336,-27683,16846,1
|
||||
337,-27245,17530,1
|
||||
338,-27245,17530,1
|
||||
339,-26790,18204,1
|
||||
340,-26790,18204,1
|
||||
341,-26319,18868,1
|
||||
342,-25832,19519,1
|
||||
343,-25832,19519,1
|
||||
344,-25329,20159,1
|
||||
345,-24811,20787,1
|
||||
346,-24811,20787,1
|
||||
347,-24279,21403,1
|
||||
348,-23731,22005,1
|
||||
349,-23731,22005,1
|
||||
350,-23170,22594,1
|
||||
351,-23170,22594,1
|
||||
153,23170,-22594,1
|
||||
154,22594,-23170,1
|
||||
155,22005,-23731,1
|
||||
156,22005,-23731,1
|
||||
157,21403,-24279,1
|
||||
158,20787,-24811,1
|
||||
159,20787,-24811,1
|
||||
160,20159,-25329,1
|
||||
161,19519,-25832,1
|
||||
162,19519,-25832,1
|
||||
163,18868,-26319,1
|
||||
164,18204,-26790,1
|
||||
165,18204,-26790,1
|
||||
166,17530,-27245,1
|
||||
167,17530,-27245,1
|
||||
168,16846,-27683,1
|
||||
169,16151,-28105,1
|
||||
170,16151,-28105,1
|
||||
171,15446,-28510,1
|
||||
172,14732,-28898,1
|
||||
173,14732,-28898,1
|
||||
174,14010,-29268,1
|
||||
175,13279,-29621,1
|
||||
176,13279,-29621,1
|
||||
177,12539,-29956,1
|
||||
178,12539,-29956,1
|
||||
179,11793,-30273,1
|
||||
180,11039,-30571,1
|
||||
181,11039,-30571,1
|
||||
182,10278,-30852,1
|
||||
183,9512,-31113,1
|
||||
184,9512,-31113,1
|
||||
185,8739,-31356,1
|
||||
186,7962,-31580,1
|
||||
187,7962,-31580,1
|
||||
188,7179,-31785,1
|
||||
189,6393,-31971,1
|
||||
190,6393,-31971,1
|
||||
191,5602,-32137,1
|
||||
192,5602,-32137,1
|
||||
193,4808,-32285,1
|
||||
194,4011,-32412,1
|
||||
195,4011,-32412,1
|
||||
196,3212,-32521,1
|
||||
197,2410,-32609,1
|
||||
198,2410,-32609,1
|
||||
199,1608,-32678,1
|
||||
200,804,-32728,1
|
||||
201,804,-32728,1
|
||||
202,0,-32757,1
|
||||
203,0,-32757,1
|
||||
204,-32757,0,1
|
||||
205,-32728,-804,1
|
||||
206,-32728,-804,1
|
||||
207,-32678,-1608,1
|
||||
208,-32609,-2410,1
|
||||
209,-32609,-2410,1
|
||||
210,-32521,-3212,1
|
||||
211,-32412,-4011,1
|
||||
212,-32412,-4011,1
|
||||
213,-32285,-4808,1
|
||||
214,-32137,-5602,1
|
||||
215,-32137,-5602,1
|
||||
216,-31971,-6393,1
|
||||
217,-31971,-6393,1
|
||||
218,-31785,-7179,1
|
||||
219,-31580,-7962,1
|
||||
220,-31580,-7962,1
|
||||
221,-31356,-8739,1
|
||||
222,-31113,-9512,1
|
||||
223,-31113,-9512,1
|
||||
224,-30852,-10278,1
|
||||
225,-30571,-11039,1
|
||||
226,-30571,-11039,1
|
||||
227,-30273,-11793,1
|
||||
228,-30273,-11793,1
|
||||
229,-29956,-12539,1
|
||||
230,-29621,-13279,1
|
||||
231,-29621,-13279,1
|
||||
232,-29268,-14010,1
|
||||
233,-28898,-14732,1
|
||||
234,-28898,-14732,1
|
||||
235,-28510,-15446,1
|
||||
236,-28105,-16151,1
|
||||
237,-28105,-16151,1
|
||||
238,-27683,-16846,1
|
||||
239,-27245,-17530,1
|
||||
240,-27245,-17530,1
|
||||
241,-26790,-18204,1
|
||||
242,-26790,-18204,1
|
||||
243,-26319,-18868,1
|
||||
244,-25832,-19519,1
|
||||
245,-25832,-19519,1
|
||||
246,-25329,-20159,1
|
||||
247,-24811,-20787,1
|
||||
248,-24811,-20787,1
|
||||
249,-24279,-21403,1
|
||||
250,-23731,-22005,1
|
||||
251,-23731,-22005,1
|
||||
252,-23170,-22594,1
|
||||
253,-23170,-22594,1
|
||||
254,-22594,-23170,1
|
||||
255,-22005,-23731,1
|
||||
256,-22005,-23731,1
|
||||
257,-21403,-24279,1
|
||||
258,-20787,-24811,1
|
||||
259,-20787,-24811,1
|
||||
260,-20159,-25329,1
|
||||
261,-19519,-25832,1
|
||||
262,-19519,-25832,1
|
||||
263,-18868,-26319,1
|
||||
264,-18204,-26790,1
|
||||
265,-18204,-26790,1
|
||||
266,-17530,-27245,1
|
||||
267,-17530,-27245,1
|
||||
268,-16846,-27683,1
|
||||
269,-16151,-28105,1
|
||||
270,-16151,-28105,1
|
||||
271,-15446,-28510,1
|
||||
272,-14732,-28898,1
|
||||
273,-14732,-28898,1
|
||||
274,-14010,-29268,1
|
||||
275,-13279,-29621,1
|
||||
276,-13279,-29621,1
|
||||
277,-12539,-29956,1
|
||||
278,-12539,-29956,1
|
||||
279,-11793,-30273,1
|
||||
280,-11039,-30571,1
|
||||
281,-11039,-30571,1
|
||||
282,-10278,-30852,1
|
||||
283,-9512,-31113,1
|
||||
284,-9512,-31113,1
|
||||
285,-8739,-31356,1
|
||||
286,-7962,-31580,1
|
||||
287,-7962,-31580,1
|
||||
288,-7179,-31785,1
|
||||
289,-6393,-31971,1
|
||||
290,-6393,-31971,1
|
||||
291,-5602,-32137,1
|
||||
292,-5602,-32137,1
|
||||
293,-4808,-32285,1
|
||||
294,-4011,-32412,1
|
||||
295,-4011,-32412,1
|
||||
296,-3212,-32521,1
|
||||
297,-2410,-32609,1
|
||||
298,-2410,-32609,1
|
||||
299,-1608,-32678,1
|
||||
300,-804,-32728,1
|
||||
301,-804,-32728,1
|
||||
302,0,-32757,1
|
||||
303,0,-32757,1
|
||||
304,0,32757,1
|
||||
305,-804,32728,1
|
||||
306,-804,32728,1
|
||||
307,-1608,32678,1
|
||||
308,-2410,32609,1
|
||||
309,-2410,32609,1
|
||||
310,-3212,32521,1
|
||||
311,-4011,32412,1
|
||||
312,-4011,32412,1
|
||||
313,-4808,32285,1
|
||||
314,-5602,32137,1
|
||||
315,-5602,32137,1
|
||||
316,-6393,31971,1
|
||||
317,-6393,31971,1
|
||||
318,-7179,31785,1
|
||||
319,-7962,31580,1
|
||||
320,-7962,31580,1
|
||||
321,-8739,31356,1
|
||||
322,-9512,31113,1
|
||||
323,-9512,31113,1
|
||||
324,-10278,30852,1
|
||||
325,-11039,30571,1
|
||||
326,-11039,30571,1
|
||||
327,-11793,30273,1
|
||||
328,-11793,30273,1
|
||||
329,-12539,29956,1
|
||||
330,-13279,29621,1
|
||||
331,-13279,29621,1
|
||||
332,-14010,29268,1
|
||||
333,-14732,28898,1
|
||||
334,-14732,28898,1
|
||||
335,-15446,28510,1
|
||||
336,-16151,28105,1
|
||||
337,-16151,28105,1
|
||||
338,-16846,27683,1
|
||||
339,-17530,27245,1
|
||||
340,-17530,27245,1
|
||||
341,-18204,26790,1
|
||||
342,-18204,26790,1
|
||||
343,-18868,26319,1
|
||||
344,-19519,25832,1
|
||||
345,-19519,25832,1
|
||||
346,-20159,25329,1
|
||||
347,-20787,24811,1
|
||||
348,-20787,24811,1
|
||||
349,-21403,24279,1
|
||||
350,-22005,23731,1
|
||||
351,-22005,23731,1
|
||||
352,-22594,23170,1
|
||||
353,-22005,23731,1
|
||||
354,-22005,23731,1
|
||||
355,-21403,24279,1
|
||||
356,-20787,24811,1
|
||||
357,-20787,24811,1
|
||||
358,-20159,25329,1
|
||||
359,-19519,25832,1
|
||||
360,-19519,25832,1
|
||||
361,-18868,26319,1
|
||||
362,-18204,26790,1
|
||||
363,-18204,26790,1
|
||||
364,-17530,27245,1
|
||||
365,-17530,27245,1
|
||||
366,-16846,27683,1
|
||||
367,-16151,28105,1
|
||||
368,-16151,28105,1
|
||||
369,-15446,28510,1
|
||||
370,-14732,28898,1
|
||||
371,-14732,28898,1
|
||||
372,-14010,29268,1
|
||||
373,-13279,29621,1
|
||||
374,-13279,29621,1
|
||||
375,-12539,29956,1
|
||||
376,-12539,29956,1
|
||||
377,-11793,30273,1
|
||||
378,-11039,30571,1
|
||||
379,-11039,30571,1
|
||||
380,-10278,30852,1
|
||||
381,-9512,31113,1
|
||||
382,-9512,31113,1
|
||||
383,-8739,31356,1
|
||||
384,-7962,31580,1
|
||||
385,-7962,31580,1
|
||||
386,-7179,31785,1
|
||||
387,-6393,31971,1
|
||||
388,-6393,31971,1
|
||||
389,-5602,32137,1
|
||||
390,-5602,32137,1
|
||||
391,-4808,32285,1
|
||||
392,-4011,32412,1
|
||||
393,-4011,32412,1
|
||||
394,-3212,32521,1
|
||||
395,-2410,32609,1
|
||||
396,-2410,32609,1
|
||||
397,-1608,32678,1
|
||||
398,-804,32728,1
|
||||
399,-804,32728,1
|
||||
400,0,32757,1
|
||||
401,0,32757,1
|
||||
402,0,32757,1
|
||||
403,804,32728,1
|
||||
404,804,32728,1
|
||||
405,1608,32678,1
|
||||
406,2410,32609,1
|
||||
407,2410,32609,1
|
||||
408,3212,32521,1
|
||||
409,4011,32412,1
|
||||
410,4011,32412,1
|
||||
411,4808,32285,1
|
||||
412,5602,32137,1
|
||||
413,5602,32137,1
|
||||
414,6393,31971,1
|
||||
415,6393,31971,1
|
||||
416,7179,31785,1
|
||||
417,7962,31580,1
|
||||
418,7962,31580,1
|
||||
419,8739,31356,1
|
||||
420,9512,31113,1
|
||||
421,9512,31113,1
|
||||
422,10278,30852,1
|
||||
423,11039,30571,1
|
||||
424,11039,30571,1
|
||||
425,11793,30273,1
|
||||
426,11793,30273,1
|
||||
427,12539,29956,1
|
||||
428,13279,29621,1
|
||||
429,13279,29621,1
|
||||
430,14010,29268,1
|
||||
431,14732,28898,1
|
||||
432,14732,28898,1
|
||||
433,15446,28510,1
|
||||
434,16151,28105,1
|
||||
435,16151,28105,1
|
||||
436,16846,27683,1
|
||||
437,17530,27245,1
|
||||
438,17530,27245,1
|
||||
439,18204,26790,1
|
||||
440,18204,26790,1
|
||||
441,18868,26319,1
|
||||
442,19519,25832,1
|
||||
443,19519,25832,1
|
||||
444,20159,25329,1
|
||||
445,20787,24811,1
|
||||
446,20787,24811,1
|
||||
447,21403,24279,1
|
||||
448,22005,23731,1
|
||||
449,22005,23731,1
|
||||
450,22594,23170,1
|
||||
451,22594,23170,1
|
||||
452,23170,22594,1
|
||||
453,23731,22005,1
|
||||
454,23731,22005,1
|
||||
455,24279,21403,1
|
||||
456,24811,20787,1
|
||||
457,24811,20787,1
|
||||
458,25329,20159,1
|
||||
459,25832,19519,1
|
||||
460,25832,19519,1
|
||||
461,26319,18868,1
|
||||
462,26790,18204,1
|
||||
463,26790,18204,1
|
||||
464,27245,17530,1
|
||||
465,27245,17530,1
|
||||
466,27683,16846,1
|
||||
467,28105,16151,1
|
||||
468,28105,16151,1
|
||||
469,28510,15446,1
|
||||
470,28898,14732,1
|
||||
471,28898,14732,1
|
||||
472,29268,14010,1
|
||||
473,29621,13279,1
|
||||
474,29621,13279,1
|
||||
475,29956,12539,1
|
||||
476,29956,12539,1
|
||||
477,30273,11793,1
|
||||
478,30571,11039,1
|
||||
479,30571,11039,1
|
||||
480,30852,10278,1
|
||||
481,31113,9512,1
|
||||
482,31113,9512,1
|
||||
483,31356,8739,1
|
||||
484,31580,7962,1
|
||||
485,31580,7962,1
|
||||
486,31785,7179,1
|
||||
487,31971,6393,1
|
||||
488,31971,6393,1
|
||||
489,32137,5602,1
|
||||
490,32137,5602,1
|
||||
491,32285,4808,1
|
||||
492,32412,4011,1
|
||||
493,32412,4011,1
|
||||
494,32521,3212,1
|
||||
495,32609,2410,1
|
||||
496,32609,2410,1
|
||||
497,32678,1608,1
|
||||
498,32728,804,1
|
||||
499,32728,804,1
|
||||
353,-22594,23170,1
|
||||
354,-23170,22594,1
|
||||
355,-23731,22005,1
|
||||
356,-23731,22005,1
|
||||
357,-24279,21403,1
|
||||
358,-24811,20787,1
|
||||
359,-24811,20787,1
|
||||
360,-25329,20159,1
|
||||
361,-25832,19519,1
|
||||
362,-25832,19519,1
|
||||
363,-26319,18868,1
|
||||
364,-26790,18204,1
|
||||
365,-26790,18204,1
|
||||
366,-27245,17530,1
|
||||
367,-27245,17530,1
|
||||
368,-27683,16846,1
|
||||
369,-28105,16151,1
|
||||
370,-28105,16151,1
|
||||
371,-28510,15446,1
|
||||
372,-28898,14732,1
|
||||
373,-28898,14732,1
|
||||
374,-29268,14010,1
|
||||
375,-29621,13279,1
|
||||
376,-29621,13279,1
|
||||
377,-29956,12539,1
|
||||
378,-29956,12539,1
|
||||
379,-30273,11793,1
|
||||
380,-30571,11039,1
|
||||
381,-30571,11039,1
|
||||
382,-30852,10278,1
|
||||
383,-31113,9512,1
|
||||
384,-31113,9512,1
|
||||
385,-31356,8739,1
|
||||
386,-31580,7962,1
|
||||
387,-31580,7962,1
|
||||
388,-31785,7179,1
|
||||
389,-31971,6393,1
|
||||
390,-31971,6393,1
|
||||
391,-32137,5602,1
|
||||
392,-32137,5602,1
|
||||
393,-32285,4808,1
|
||||
394,-32412,4011,1
|
||||
395,-32412,4011,1
|
||||
396,-32521,3212,1
|
||||
397,-32609,2410,1
|
||||
398,-32609,2410,1
|
||||
399,-32678,1608,1
|
||||
400,-32728,804,1
|
||||
401,-32728,804,1
|
||||
402,-32757,0,1
|
||||
403,-32757,0,1
|
||||
404,0,32757,1
|
||||
405,804,32728,1
|
||||
406,804,32728,1
|
||||
407,1608,32678,1
|
||||
408,2410,32609,1
|
||||
409,2410,32609,1
|
||||
410,3212,32521,1
|
||||
411,4011,32412,1
|
||||
412,4011,32412,1
|
||||
413,4808,32285,1
|
||||
414,5602,32137,1
|
||||
415,5602,32137,1
|
||||
416,6393,31971,1
|
||||
417,6393,31971,1
|
||||
418,7179,31785,1
|
||||
419,7962,31580,1
|
||||
420,7962,31580,1
|
||||
421,8739,31356,1
|
||||
422,9512,31113,1
|
||||
423,9512,31113,1
|
||||
424,10278,30852,1
|
||||
425,11039,30571,1
|
||||
426,11039,30571,1
|
||||
427,11793,30273,1
|
||||
428,11793,30273,1
|
||||
429,12539,29956,1
|
||||
430,13279,29621,1
|
||||
431,13279,29621,1
|
||||
432,14010,29268,1
|
||||
433,14732,28898,1
|
||||
434,14732,28898,1
|
||||
435,15446,28510,1
|
||||
436,16151,28105,1
|
||||
437,16151,28105,1
|
||||
438,16846,27683,1
|
||||
439,17530,27245,1
|
||||
440,17530,27245,1
|
||||
441,18204,26790,1
|
||||
442,18204,26790,1
|
||||
443,18868,26319,1
|
||||
444,19519,25832,1
|
||||
445,19519,25832,1
|
||||
446,20159,25329,1
|
||||
447,20787,24811,1
|
||||
448,20787,24811,1
|
||||
449,21403,24279,1
|
||||
450,22005,23731,1
|
||||
451,22005,23731,1
|
||||
452,22594,23170,1
|
||||
453,22594,23170,1
|
||||
454,23170,22594,1
|
||||
455,23731,22005,1
|
||||
456,23731,22005,1
|
||||
457,24279,21403,1
|
||||
458,24811,20787,1
|
||||
459,24811,20787,1
|
||||
460,25329,20159,1
|
||||
461,25832,19519,1
|
||||
462,25832,19519,1
|
||||
463,26319,18868,1
|
||||
464,26790,18204,1
|
||||
465,26790,18204,1
|
||||
466,27245,17530,1
|
||||
467,27245,17530,1
|
||||
468,27683,16846,1
|
||||
469,28105,16151,1
|
||||
470,28105,16151,1
|
||||
471,28510,15446,1
|
||||
472,28898,14732,1
|
||||
473,28898,14732,1
|
||||
474,29268,14010,1
|
||||
475,29621,13279,1
|
||||
476,29621,13279,1
|
||||
477,29956,12539,1
|
||||
478,29956,12539,1
|
||||
479,30273,11793,1
|
||||
480,30571,11039,1
|
||||
481,30571,11039,1
|
||||
482,30852,10278,1
|
||||
483,31113,9512,1
|
||||
484,31113,9512,1
|
||||
485,31356,8739,1
|
||||
486,31580,7962,1
|
||||
487,31580,7962,1
|
||||
488,31785,7179,1
|
||||
489,31971,6393,1
|
||||
490,31971,6393,1
|
||||
491,32137,5602,1
|
||||
492,32137,5602,1
|
||||
493,32285,4808,1
|
||||
494,32412,4011,1
|
||||
495,32412,4011,1
|
||||
496,32521,3212,1
|
||||
497,32609,2410,1
|
||||
498,32609,2410,1
|
||||
499,32678,1608,1
|
||||
|
||||
|
@@ -1,201 +1,201 @@
|
||||
sample,sin_out,cos_out
|
||||
0,22594,23170
|
||||
1,26319,18868
|
||||
2,28898,14732
|
||||
3,31113,9512
|
||||
4,32285,4808
|
||||
5,32757,0
|
||||
6,4808,-32285
|
||||
7,9512,-31113
|
||||
8,14732,-28898
|
||||
9,18868,-26319
|
||||
10,22594,-23170
|
||||
0,22005,23731
|
||||
1,22594,23170
|
||||
2,22594,23170
|
||||
3,26319,18868
|
||||
4,28898,14732
|
||||
5,31113,9512
|
||||
6,32285,4808
|
||||
7,32757,0
|
||||
8,32285,-4808
|
||||
9,31113,-9512
|
||||
10,28898,-14732
|
||||
11,26319,-18868
|
||||
12,28898,-14732
|
||||
13,31113,-9512
|
||||
14,32285,-4808
|
||||
15,32757,0
|
||||
16,-32285,-4808
|
||||
17,-31113,-9512
|
||||
18,-28898,-14732
|
||||
19,-26319,-18868
|
||||
20,-23170,-22594
|
||||
21,-18868,-26319
|
||||
22,-14732,-28898
|
||||
23,-9512,-31113
|
||||
24,-4808,-32285
|
||||
25,0,-32757
|
||||
26,-32285,4808
|
||||
27,-31113,9512
|
||||
28,-28898,14732
|
||||
29,-26319,18868
|
||||
30,-23170,22594
|
||||
12,23170,-22594
|
||||
13,18868,-26319
|
||||
14,14732,-28898
|
||||
15,9512,-31113
|
||||
16,4808,-32285
|
||||
17,0,-32757
|
||||
18,-32285,-4808
|
||||
19,-31113,-9512
|
||||
20,-28898,-14732
|
||||
21,-26319,-18868
|
||||
22,-23170,-22594
|
||||
23,-18868,-26319
|
||||
24,-14732,-28898
|
||||
25,-9512,-31113
|
||||
26,-4808,-32285
|
||||
27,0,-32757
|
||||
28,-4808,32285
|
||||
29,-9512,31113
|
||||
30,-14732,28898
|
||||
31,-18868,26319
|
||||
32,-14732,28898
|
||||
33,-9512,31113
|
||||
34,-4808,32285
|
||||
35,0,32757
|
||||
36,4808,32285
|
||||
37,9512,31113
|
||||
38,14732,28898
|
||||
39,18868,26319
|
||||
40,22594,23170
|
||||
41,26319,18868
|
||||
42,28898,14732
|
||||
43,31113,9512
|
||||
44,32285,4808
|
||||
45,32757,0
|
||||
46,4808,-32285
|
||||
47,9512,-31113
|
||||
48,14732,-28898
|
||||
49,18868,-26319
|
||||
50,22594,-23170
|
||||
32,-22594,23170
|
||||
33,-26319,18868
|
||||
34,-28898,14732
|
||||
35,-31113,9512
|
||||
36,-32285,4808
|
||||
37,-32757,0
|
||||
38,4808,32285
|
||||
39,9512,31113
|
||||
40,14732,28898
|
||||
41,18868,26319
|
||||
42,22594,23170
|
||||
43,26319,18868
|
||||
44,28898,14732
|
||||
45,31113,9512
|
||||
46,32285,4808
|
||||
47,32757,0
|
||||
48,32285,-4808
|
||||
49,31113,-9512
|
||||
50,28898,-14732
|
||||
51,26319,-18868
|
||||
52,28898,-14732
|
||||
53,31113,-9512
|
||||
54,32285,-4808
|
||||
55,32757,0
|
||||
56,-32285,-4808
|
||||
57,-31113,-9512
|
||||
58,-28898,-14732
|
||||
59,-26319,-18868
|
||||
60,-23170,-22594
|
||||
61,-18868,-26319
|
||||
62,-14732,-28898
|
||||
63,-9512,-31113
|
||||
64,-4808,-32285
|
||||
65,0,-32757
|
||||
66,-32285,4808
|
||||
67,-31113,9512
|
||||
68,-28898,14732
|
||||
69,-26319,18868
|
||||
70,-23170,22594
|
||||
52,23170,-22594
|
||||
53,18868,-26319
|
||||
54,14732,-28898
|
||||
55,9512,-31113
|
||||
56,4808,-32285
|
||||
57,0,-32757
|
||||
58,-32285,-4808
|
||||
59,-31113,-9512
|
||||
60,-28898,-14732
|
||||
61,-26319,-18868
|
||||
62,-23170,-22594
|
||||
63,-18868,-26319
|
||||
64,-14732,-28898
|
||||
65,-9512,-31113
|
||||
66,-4808,-32285
|
||||
67,0,-32757
|
||||
68,-4808,32285
|
||||
69,-9512,31113
|
||||
70,-14732,28898
|
||||
71,-18868,26319
|
||||
72,-14732,28898
|
||||
73,-9512,31113
|
||||
74,-4808,32285
|
||||
75,0,32757
|
||||
76,4808,32285
|
||||
77,9512,31113
|
||||
78,14732,28898
|
||||
79,18868,26319
|
||||
80,22594,23170
|
||||
81,26319,18868
|
||||
82,28898,14732
|
||||
83,31113,9512
|
||||
84,32285,4808
|
||||
85,32757,0
|
||||
86,4808,-32285
|
||||
87,9512,-31113
|
||||
88,14732,-28898
|
||||
89,18868,-26319
|
||||
90,22594,-23170
|
||||
72,-22594,23170
|
||||
73,-26319,18868
|
||||
74,-28898,14732
|
||||
75,-31113,9512
|
||||
76,-32285,4808
|
||||
77,-32757,0
|
||||
78,4808,32285
|
||||
79,9512,31113
|
||||
80,14732,28898
|
||||
81,18868,26319
|
||||
82,22594,23170
|
||||
83,26319,18868
|
||||
84,28898,14732
|
||||
85,31113,9512
|
||||
86,32285,4808
|
||||
87,32757,0
|
||||
88,32285,-4808
|
||||
89,31113,-9512
|
||||
90,28898,-14732
|
||||
91,26319,-18868
|
||||
92,28898,-14732
|
||||
93,31113,-9512
|
||||
94,32285,-4808
|
||||
95,32757,0
|
||||
96,-32285,-4808
|
||||
97,-31113,-9512
|
||||
98,-28898,-14732
|
||||
99,-26319,-18868
|
||||
100,-23170,-22594
|
||||
101,-18868,-26319
|
||||
102,-14732,-28898
|
||||
103,-9512,-31113
|
||||
104,-4808,-32285
|
||||
105,0,-32757
|
||||
106,-32285,4808
|
||||
107,-31113,9512
|
||||
108,-28898,14732
|
||||
109,-26319,18868
|
||||
110,-23170,22594
|
||||
92,23170,-22594
|
||||
93,18868,-26319
|
||||
94,14732,-28898
|
||||
95,9512,-31113
|
||||
96,4808,-32285
|
||||
97,0,-32757
|
||||
98,-32285,-4808
|
||||
99,-31113,-9512
|
||||
100,-28898,-14732
|
||||
101,-26319,-18868
|
||||
102,-23170,-22594
|
||||
103,-18868,-26319
|
||||
104,-14732,-28898
|
||||
105,-9512,-31113
|
||||
106,-4808,-32285
|
||||
107,0,-32757
|
||||
108,-4808,32285
|
||||
109,-9512,31113
|
||||
110,-14732,28898
|
||||
111,-18868,26319
|
||||
112,-14732,28898
|
||||
113,-9512,31113
|
||||
114,-4808,32285
|
||||
115,0,32757
|
||||
116,4808,32285
|
||||
117,9512,31113
|
||||
118,14732,28898
|
||||
119,18868,26319
|
||||
120,22594,23170
|
||||
121,26319,18868
|
||||
122,28898,14732
|
||||
123,31113,9512
|
||||
124,32285,4808
|
||||
125,32757,0
|
||||
126,4808,-32285
|
||||
127,9512,-31113
|
||||
128,14732,-28898
|
||||
129,18868,-26319
|
||||
130,22594,-23170
|
||||
112,-22594,23170
|
||||
113,-26319,18868
|
||||
114,-28898,14732
|
||||
115,-31113,9512
|
||||
116,-32285,4808
|
||||
117,-32757,0
|
||||
118,4808,32285
|
||||
119,9512,31113
|
||||
120,14732,28898
|
||||
121,18868,26319
|
||||
122,22594,23170
|
||||
123,26319,18868
|
||||
124,28898,14732
|
||||
125,31113,9512
|
||||
126,32285,4808
|
||||
127,32757,0
|
||||
128,32285,-4808
|
||||
129,31113,-9512
|
||||
130,28898,-14732
|
||||
131,26319,-18868
|
||||
132,28898,-14732
|
||||
133,31113,-9512
|
||||
134,32285,-4808
|
||||
135,32757,0
|
||||
136,-32285,-4808
|
||||
137,-31113,-9512
|
||||
138,-28898,-14732
|
||||
139,-26319,-18868
|
||||
140,-23170,-22594
|
||||
141,-18868,-26319
|
||||
142,-14732,-28898
|
||||
143,-9512,-31113
|
||||
144,-4808,-32285
|
||||
145,0,-32757
|
||||
146,-32285,4808
|
||||
147,-31113,9512
|
||||
148,-28898,14732
|
||||
149,-26319,18868
|
||||
150,-23170,22594
|
||||
132,23170,-22594
|
||||
133,18868,-26319
|
||||
134,14732,-28898
|
||||
135,9512,-31113
|
||||
136,4808,-32285
|
||||
137,0,-32757
|
||||
138,-32285,-4808
|
||||
139,-31113,-9512
|
||||
140,-28898,-14732
|
||||
141,-26319,-18868
|
||||
142,-23170,-22594
|
||||
143,-18868,-26319
|
||||
144,-14732,-28898
|
||||
145,-9512,-31113
|
||||
146,-4808,-32285
|
||||
147,0,-32757
|
||||
148,-4808,32285
|
||||
149,-9512,31113
|
||||
150,-14732,28898
|
||||
151,-18868,26319
|
||||
152,-14732,28898
|
||||
153,-9512,31113
|
||||
154,-4808,32285
|
||||
155,0,32757
|
||||
156,4808,32285
|
||||
157,9512,31113
|
||||
158,14732,28898
|
||||
159,18868,26319
|
||||
160,22594,23170
|
||||
161,26319,18868
|
||||
162,28898,14732
|
||||
163,31113,9512
|
||||
164,32285,4808
|
||||
165,32757,0
|
||||
166,4808,-32285
|
||||
167,9512,-31113
|
||||
168,14732,-28898
|
||||
169,18868,-26319
|
||||
170,22594,-23170
|
||||
152,-22594,23170
|
||||
153,-26319,18868
|
||||
154,-28898,14732
|
||||
155,-31113,9512
|
||||
156,-32285,4808
|
||||
157,-32757,0
|
||||
158,4808,32285
|
||||
159,9512,31113
|
||||
160,14732,28898
|
||||
161,18868,26319
|
||||
162,22594,23170
|
||||
163,26319,18868
|
||||
164,28898,14732
|
||||
165,31113,9512
|
||||
166,32285,4808
|
||||
167,32757,0
|
||||
168,32285,-4808
|
||||
169,31113,-9512
|
||||
170,28898,-14732
|
||||
171,26319,-18868
|
||||
172,28898,-14732
|
||||
173,31113,-9512
|
||||
174,32285,-4808
|
||||
175,32757,0
|
||||
176,-32285,-4808
|
||||
177,-31113,-9512
|
||||
178,-28898,-14732
|
||||
179,-26319,-18868
|
||||
180,-23170,-22594
|
||||
181,-18868,-26319
|
||||
182,-14732,-28898
|
||||
183,-9512,-31113
|
||||
184,-4808,-32285
|
||||
185,0,-32757
|
||||
186,-32285,4808
|
||||
187,-31113,9512
|
||||
188,-28898,14732
|
||||
189,-26319,18868
|
||||
190,-23170,22594
|
||||
172,23170,-22594
|
||||
173,18868,-26319
|
||||
174,14732,-28898
|
||||
175,9512,-31113
|
||||
176,4808,-32285
|
||||
177,0,-32757
|
||||
178,-32285,-4808
|
||||
179,-31113,-9512
|
||||
180,-28898,-14732
|
||||
181,-26319,-18868
|
||||
182,-23170,-22594
|
||||
183,-18868,-26319
|
||||
184,-14732,-28898
|
||||
185,-9512,-31113
|
||||
186,-4808,-32285
|
||||
187,0,-32757
|
||||
188,-4808,32285
|
||||
189,-9512,31113
|
||||
190,-14732,28898
|
||||
191,-18868,26319
|
||||
192,-14732,28898
|
||||
193,-9512,31113
|
||||
194,-4808,32285
|
||||
195,0,32757
|
||||
196,4808,32285
|
||||
197,9512,31113
|
||||
198,14732,28898
|
||||
199,18868,26319
|
||||
192,-22594,23170
|
||||
193,-26319,18868
|
||||
194,-28898,14732
|
||||
195,-31113,9512
|
||||
196,-32285,4808
|
||||
197,-32757,0
|
||||
198,4808,32285
|
||||
199,9512,31113
|
||||
|
||||
|
@@ -7,16 +7,16 @@ sample,sin,cos,mag_sq
|
||||
5,31113,9512,1058496913
|
||||
6,32285,4808,1065438089
|
||||
7,32757,0,1073021049
|
||||
8,4808,-32285,1065438089
|
||||
9,9512,-31113,1058496913
|
||||
10,14732,-28898,1052126228
|
||||
11,18868,-26319,1048691185
|
||||
12,22594,-23170,1047337736
|
||||
13,26319,-18868,1048691185
|
||||
14,28898,-14732,1052126228
|
||||
15,31113,-9512,1058496913
|
||||
16,32285,-4808,1065438089
|
||||
17,32757,0,1073021049
|
||||
8,32285,-4808,1065438089
|
||||
9,31113,-9512,1058496913
|
||||
10,28898,-14732,1052126228
|
||||
11,26319,-18868,1048691185
|
||||
12,23170,-22594,1047337736
|
||||
13,18868,-26319,1048691185
|
||||
14,14732,-28898,1052126228
|
||||
15,9512,-31113,1058496913
|
||||
16,4808,-32285,1065438089
|
||||
17,0,-32757,1073021049
|
||||
18,-32285,-4808,1065438089
|
||||
19,-31113,-9512,1058496913
|
||||
20,-28898,-14732,1052126228
|
||||
@@ -27,15 +27,15 @@ sample,sin,cos,mag_sq
|
||||
25,-9512,-31113,1058496913
|
||||
26,-4808,-32285,1065438089
|
||||
27,0,-32757,1073021049
|
||||
28,-32285,4808,1065438089
|
||||
29,-31113,9512,1058496913
|
||||
30,-28898,14732,1052126228
|
||||
31,-26319,18868,1048691185
|
||||
32,-23170,22594,1047337736
|
||||
33,-18868,26319,1048691185
|
||||
34,-14732,28898,1052126228
|
||||
35,-9512,31113,1058496913
|
||||
36,-4808,32285,1065438089
|
||||
37,0,32757,1073021049
|
||||
28,-4808,32285,1065438089
|
||||
29,-9512,31113,1058496913
|
||||
30,-14732,28898,1052126228
|
||||
31,-18868,26319,1048691185
|
||||
32,-22594,23170,1047337736
|
||||
33,-26319,18868,1048691185
|
||||
34,-28898,14732,1052126228
|
||||
35,-31113,9512,1058496913
|
||||
36,-32285,4808,1065438089
|
||||
37,-32757,0,1073021049
|
||||
38,4808,32285,1065438089
|
||||
39,9512,31113,1058496913
|
||||
|
||||
|
@@ -259,16 +259,16 @@ module tb_nco_400m;
|
||||
#1;
|
||||
sin_before_gate = sin_out;
|
||||
|
||||
// Deassert phase_valid
|
||||
// Deassert phase_valid — with 4-stage pipeline, dds_ready has 5-cycle latency
|
||||
phase_valid = 0;
|
||||
@(posedge clk_400m); #1;
|
||||
repeat (6) @(posedge clk_400m); #1;
|
||||
check(dds_ready === 1'b0, "dds_ready deasserts when phase_valid=0");
|
||||
|
||||
repeat (10) @(posedge clk_400m);
|
||||
|
||||
// Re-enable
|
||||
// Re-enable — wait for pipeline to refill (5 cycles)
|
||||
phase_valid = 1;
|
||||
@(posedge clk_400m); #1;
|
||||
repeat (6) @(posedge clk_400m); #1;
|
||||
check(dds_ready === 1'b1, "dds_ready re-asserts when phase_valid=1");
|
||||
|
||||
// ════════════════════════════════════════════════════════
|
||||
@@ -285,8 +285,8 @@ module tb_nco_400m;
|
||||
frequency_tuning_word = FTW_10MHZ;
|
||||
phase_valid = 1;
|
||||
|
||||
// Skip pipeline warmup
|
||||
repeat (3) @(posedge clk_400m);
|
||||
// Skip pipeline warmup (4-stage pipeline + 1 for dds_ready)
|
||||
repeat (5) @(posedge clk_400m);
|
||||
|
||||
mag_sq_min = 32'hFFFFFFFF;
|
||||
mag_sq_max = 32'h00000000;
|
||||
|
||||
@@ -63,9 +63,9 @@ reg ft601_data_oe; // Output enable for bidirectional data bus
|
||||
// Even though both are 100 MHz, they are asynchronous clocks and need synchronization.
|
||||
|
||||
// 2-stage synchronizers for valid signals
|
||||
reg [1:0] range_valid_sync;
|
||||
reg [1:0] doppler_valid_sync;
|
||||
reg [1:0] cfar_valid_sync;
|
||||
(* ASYNC_REG = "TRUE" *) reg [1:0] range_valid_sync;
|
||||
(* ASYNC_REG = "TRUE" *) reg [1:0] doppler_valid_sync;
|
||||
(* ASYNC_REG = "TRUE" *) reg [1:0] cfar_valid_sync;
|
||||
|
||||
// Synchronized data captures (registered in ft601_clk_in domain)
|
||||
reg [31:0] range_profile_cap;
|
||||
|
||||
Reference in New Issue
Block a user