Add files via upload
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
module ad9484_interface_400m (
|
||||
// ADC Physical Interface (LVDS)
|
||||
input wire [7:0] adc_d_p, // ADC Data P
|
||||
input wire [7:0] adc_d_n, // ADC Data N
|
||||
input wire adc_dco_p, // Data Clock Output P (400MHz)
|
||||
input wire adc_dco_n, // Data Clock Output N (400MHz)
|
||||
|
||||
// System Interface
|
||||
input wire sys_clk, // 100MHz system clock (for control only)
|
||||
input wire reset_n,
|
||||
|
||||
// Output at 400MHz domain
|
||||
output wire [7:0] adc_data_400m, // ADC data at 400MHz
|
||||
output wire adc_data_valid_400m // Valid at 400MHz
|
||||
);
|
||||
|
||||
// LVDS to single-ended conversion
|
||||
wire [7:0] adc_data;
|
||||
wire adc_dco;
|
||||
|
||||
// IBUFDS for each data bit
|
||||
genvar i;
|
||||
generate
|
||||
for (i = 0; i < 8; i = i + 1) begin : data_buffers
|
||||
IBUFDS #(
|
||||
.DIFF_TERM("TRUE"),
|
||||
.IOSTANDARD("LVDS_25")
|
||||
) ibufds_data (
|
||||
.O(adc_data[i]),
|
||||
.I(adc_d_p[i]),
|
||||
.IB(adc_d_n[i])
|
||||
);
|
||||
end
|
||||
endgenerate
|
||||
|
||||
// IBUFDS for DCO
|
||||
IBUFDS #(
|
||||
.DIFF_TERM("TRUE"),
|
||||
.IOSTANDARD("LVDS_25")
|
||||
) ibufds_dco (
|
||||
.O(adc_dco),
|
||||
.I(adc_dco_p),
|
||||
.IB(adc_dco_n)
|
||||
);
|
||||
|
||||
// IDDR for capturing DDR data
|
||||
wire [7:0] adc_data_rise; // Data on rising edge
|
||||
wire [7:0] adc_data_fall; // Data on falling edge
|
||||
|
||||
genvar j;
|
||||
generate
|
||||
for (j = 0; j < 8; j = j + 1) begin : iddr_gen
|
||||
IDDR #(
|
||||
.DDR_CLK_EDGE("SAME_EDGE_PIPELINED"),
|
||||
.INIT_Q1(1'b0),
|
||||
.INIT_Q2(1'b0),
|
||||
.SRTYPE("SYNC")
|
||||
) iddr_inst (
|
||||
.Q1(adc_data_rise[j]), // Rising edge data
|
||||
.Q2(adc_data_fall[j]), // Falling edge data
|
||||
.C(adc_dco), // 400MHz DCO
|
||||
.CE(1'b1),
|
||||
.D(adc_data[j]),
|
||||
.R(1'b0),
|
||||
.S(1'b0)
|
||||
);
|
||||
end
|
||||
endgenerate
|
||||
|
||||
// Combine rising and falling edge data to get 400MSPS stream
|
||||
reg [7:0] adc_data_400m_reg;
|
||||
reg adc_data_valid_400m_reg;
|
||||
reg dco_phase;
|
||||
|
||||
always @(posedge adc_dco or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
adc_data_400m_reg <= 8'b0;
|
||||
adc_data_valid_400m_reg <= 1'b0;
|
||||
dco_phase <= 1'b0;
|
||||
end else begin
|
||||
dco_phase <= ~dco_phase;
|
||||
|
||||
if (dco_phase) begin
|
||||
// Output falling edge data (completes the 400MSPS stream)
|
||||
adc_data_400m_reg <= adc_data_fall;
|
||||
end else begin
|
||||
// Output rising edge data
|
||||
adc_data_400m_reg <= adc_data_rise;
|
||||
end
|
||||
|
||||
adc_data_valid_400m_reg <= 1'b1; // Always valid when ADC is running
|
||||
end
|
||||
end
|
||||
|
||||
assign adc_data_400m = adc_data_400m_reg;
|
||||
assign adc_data_valid_400m = adc_data_valid_400m_reg;
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,237 @@
|
||||
`timescale 1ns / 1ps
|
||||
|
||||
// ============================================================================
|
||||
// CDC FOR MULTI-BIT DATA (ADVANCED)
|
||||
// ============================================================================
|
||||
module cdc_adc_to_processing #(
|
||||
parameter WIDTH = 8,
|
||||
parameter STAGES = 3
|
||||
)(
|
||||
input wire src_clk,
|
||||
input wire dst_clk,
|
||||
input wire reset_n,
|
||||
input wire [WIDTH-1:0] src_data,
|
||||
input wire src_valid,
|
||||
output wire [WIDTH-1:0] dst_data,
|
||||
output wire dst_valid
|
||||
);
|
||||
|
||||
// Gray encoding for safe CDC
|
||||
function [WIDTH-1:0] binary_to_gray;
|
||||
input [WIDTH-1:0] binary;
|
||||
binary_to_gray = binary ^ (binary >> 1);
|
||||
endfunction
|
||||
|
||||
function [WIDTH-1:0] gray_to_binary;
|
||||
input [WIDTH-1:0] gray;
|
||||
reg [WIDTH-1:0] binary;
|
||||
integer i;
|
||||
begin
|
||||
binary[WIDTH-1] = gray[WIDTH-1];
|
||||
for (i = WIDTH-2; i >= 0; i = i - 1) begin
|
||||
binary[i] = binary[i+1] ^ gray[i];
|
||||
end
|
||||
gray_to_binary = binary;
|
||||
end
|
||||
endfunction
|
||||
|
||||
// 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];
|
||||
reg [WIDTH-1:0] dst_data_reg;
|
||||
reg dst_valid_reg = 0;
|
||||
reg [1:0] prev_dst_toggle = 2'b00;
|
||||
|
||||
always @(posedge src_clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
src_data_reg <= 0;
|
||||
src_toggle <= 2'b00;
|
||||
end else if (src_valid) begin
|
||||
src_data_reg <= src_data;
|
||||
src_toggle <= src_toggle + 1;
|
||||
end
|
||||
end
|
||||
|
||||
// CDC synchronization chain for data
|
||||
genvar i;
|
||||
generate
|
||||
for (i = 0; i < STAGES; i = i + 1) begin : data_sync_chain
|
||||
always @(posedge dst_clk or negedge reset_n) 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
|
||||
end else begin
|
||||
if (i == 0) begin
|
||||
// Convert to gray code at domain crossing
|
||||
dst_data_gray[i] <= binary_to_gray(src_data_reg);
|
||||
end else begin
|
||||
dst_data_gray[i] <= dst_data_gray[i-1];
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for (i = 0; i < STAGES; i = i + 1) begin : toggle_sync_chain
|
||||
always @(posedge dst_clk or negedge reset_n) 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
|
||||
end else begin
|
||||
if (i == 0) begin
|
||||
dst_toggle_sync[i] <= src_toggle;
|
||||
end else begin
|
||||
dst_toggle_sync[i] <= dst_toggle_sync[i-1];
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
endgenerate
|
||||
|
||||
// Detect new data
|
||||
always @(posedge dst_clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
dst_data_reg <= 0;
|
||||
dst_valid_reg <= 0;
|
||||
prev_dst_toggle <= 2'b00;
|
||||
end else begin
|
||||
// Convert from gray code
|
||||
dst_data_reg <= gray_to_binary(dst_data_gray[STAGES-1]);
|
||||
|
||||
// Check if toggle changed (new data)
|
||||
if (dst_toggle_sync[STAGES-1] != prev_dst_toggle) begin
|
||||
dst_valid_reg <= 1'b1;
|
||||
prev_dst_toggle <= dst_toggle_sync[STAGES-1];
|
||||
end else begin
|
||||
dst_valid_reg <= 1'b0;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
assign dst_data = dst_data_reg;
|
||||
assign dst_valid = dst_valid_reg;
|
||||
|
||||
endmodule
|
||||
|
||||
// ============================================================================
|
||||
// CDC FOR SINGLE BIT SIGNALS
|
||||
// ============================================================================
|
||||
module cdc_single_bit #(
|
||||
parameter STAGES = 3
|
||||
)(
|
||||
input wire src_clk,
|
||||
input wire dst_clk,
|
||||
input wire reset_n,
|
||||
input wire src_signal,
|
||||
output wire dst_signal
|
||||
);
|
||||
|
||||
reg [STAGES-1:0] sync_chain;
|
||||
|
||||
always @(posedge dst_clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
sync_chain <= 0;
|
||||
end else begin
|
||||
sync_chain <= {sync_chain[STAGES-2:0], src_signal};
|
||||
end
|
||||
end
|
||||
|
||||
assign dst_signal = sync_chain[STAGES-1];
|
||||
|
||||
endmodule
|
||||
|
||||
// ============================================================================
|
||||
// CDC FOR MULTI-BIT WITH HANDSHAKE
|
||||
// ============================================================================
|
||||
module cdc_handshake #(
|
||||
parameter WIDTH = 32
|
||||
)(
|
||||
input wire src_clk,
|
||||
input wire dst_clk,
|
||||
input wire reset_n,
|
||||
input wire [WIDTH-1:0] src_data,
|
||||
input wire src_valid,
|
||||
output wire src_ready,
|
||||
output wire [WIDTH-1:0] dst_data,
|
||||
output wire dst_valid,
|
||||
input wire dst_ready
|
||||
);
|
||||
|
||||
// Source domain
|
||||
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;
|
||||
|
||||
// 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;
|
||||
reg dst_ack = 0;
|
||||
|
||||
// Source clock domain
|
||||
always @(posedge src_clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
src_data_reg <= 0;
|
||||
src_busy <= 0;
|
||||
src_ack_sync <= 0;
|
||||
src_ack_sync_chain <= 2'b00;
|
||||
end else begin
|
||||
// Sync acknowledge from destination
|
||||
src_ack_sync_chain <= {src_ack_sync_chain[0], dst_ack};
|
||||
src_ack_sync <= src_ack_sync_chain[1];
|
||||
|
||||
if (!src_busy && src_valid) begin
|
||||
src_data_reg <= src_data;
|
||||
src_busy <= 1'b1;
|
||||
end else if (src_busy && src_ack_sync) begin
|
||||
src_busy <= 1'b0;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
// Destination clock domain
|
||||
always @(posedge dst_clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
dst_data_reg <= 0;
|
||||
dst_valid_reg <= 0;
|
||||
dst_req_sync <= 0;
|
||||
dst_req_sync_chain <= 2'b00;
|
||||
dst_ack <= 0;
|
||||
end else begin
|
||||
// Sync request from source
|
||||
dst_req_sync_chain <= {dst_req_sync_chain[0], src_busy};
|
||||
dst_req_sync <= dst_req_sync_chain[1];
|
||||
|
||||
// Capture data when request arrives
|
||||
if (dst_req_sync && !dst_valid_reg) begin
|
||||
dst_data_reg <= src_data_reg;
|
||||
dst_valid_reg <= 1'b1;
|
||||
dst_ack <= 1'b1;
|
||||
end else if (dst_valid_reg && dst_ready) begin
|
||||
dst_valid_reg <= 1'b0;
|
||||
end
|
||||
|
||||
// Clear acknowledge after source sees it
|
||||
if (dst_ack && !dst_req_sync) begin
|
||||
dst_ack <= 1'b0;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
assign src_ready = !src_busy;
|
||||
assign dst_data = dst_data_reg;
|
||||
assign dst_valid = dst_valid_reg;
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,244 @@
|
||||
// Auto-generated LUT initialization for PLFM chirp controller
|
||||
// Long chirp: 30us from 30MHz to 10MHz
|
||||
// Short chirp: 0.5us from 30MHz to 10MHz
|
||||
|
||||
// Long PLFM chirp LUT (30us, 30MHz to 10MHz)
|
||||
initial begin
|
||||
long_chirp_lut[ 0] = 8'd255; long_chirp_lut[ 1] = 8'd128; long_chirp_lut[ 2] = 8'd 1; long_chirp_lut[ 3] = 8'd127; long_chirp_lut[ 4] = 8'd254; long_chirp_lut[ 5] = 8'd128; long_chirp_lut[ 6] = 8'd 1; long_chirp_lut[ 7] = 8'd127; long_chirp_lut[ 8] = 8'd254; long_chirp_lut[ 9] = 8'd129; long_chirp_lut[ 10] = 8'd 1; long_chirp_lut[ 11] = 8'd125; long_chirp_lut[ 12] = 8'd254; long_chirp_lut[ 13] = 8'd131; long_chirp_lut[ 14] = 8'd 1; long_chirp_lut[ 15] = 8'd123;
|
||||
long_chirp_lut[ 16] = 8'd254; long_chirp_lut[ 17] = 8'd133; long_chirp_lut[ 18] = 8'd 1; long_chirp_lut[ 19] = 8'd121; long_chirp_lut[ 20] = 8'd254; long_chirp_lut[ 21] = 8'd136; long_chirp_lut[ 22] = 8'd 1; long_chirp_lut[ 23] = 8'd118; long_chirp_lut[ 24] = 8'd254; long_chirp_lut[ 25] = 8'd139; long_chirp_lut[ 26] = 8'd 1; long_chirp_lut[ 27] = 8'd114; long_chirp_lut[ 28] = 8'd254; long_chirp_lut[ 29] = 8'd143; long_chirp_lut[ 30] = 8'd 2; long_chirp_lut[ 31] = 8'd110;
|
||||
long_chirp_lut[ 32] = 8'd253; long_chirp_lut[ 33] = 8'd148; long_chirp_lut[ 34] = 8'd 2; long_chirp_lut[ 35] = 8'd105; long_chirp_lut[ 36] = 8'd252; long_chirp_lut[ 37] = 8'd153; long_chirp_lut[ 38] = 8'd 3; long_chirp_lut[ 39] = 8'd100; long_chirp_lut[ 40] = 8'd251; long_chirp_lut[ 41] = 8'd158; long_chirp_lut[ 42] = 8'd 5; long_chirp_lut[ 43] = 8'd 94; long_chirp_lut[ 44] = 8'd249; long_chirp_lut[ 45] = 8'd164; long_chirp_lut[ 46] = 8'd 6; long_chirp_lut[ 47] = 8'd 87;
|
||||
long_chirp_lut[ 48] = 8'd247; long_chirp_lut[ 49] = 8'd171; long_chirp_lut[ 50] = 8'd 9; long_chirp_lut[ 51] = 8'd 81; long_chirp_lut[ 52] = 8'd245; long_chirp_lut[ 53] = 8'd178; long_chirp_lut[ 54] = 8'd 12; long_chirp_lut[ 55] = 8'd 73; long_chirp_lut[ 56] = 8'd242; long_chirp_lut[ 57] = 8'd185; long_chirp_lut[ 58] = 8'd 15; long_chirp_lut[ 59] = 8'd 66; long_chirp_lut[ 60] = 8'd237; long_chirp_lut[ 61] = 8'd193; long_chirp_lut[ 62] = 8'd 20; long_chirp_lut[ 63] = 8'd 58;
|
||||
long_chirp_lut[ 64] = 8'd233; long_chirp_lut[ 65] = 8'd201; long_chirp_lut[ 66] = 8'd 25; long_chirp_lut[ 67] = 8'd 50; long_chirp_lut[ 68] = 8'd227; long_chirp_lut[ 69] = 8'd209; long_chirp_lut[ 70] = 8'd 31; long_chirp_lut[ 71] = 8'd 43; long_chirp_lut[ 72] = 8'd220; long_chirp_lut[ 73] = 8'd216; long_chirp_lut[ 74] = 8'd 39; long_chirp_lut[ 75] = 8'd 35; long_chirp_lut[ 76] = 8'd212; long_chirp_lut[ 77] = 8'd224; long_chirp_lut[ 78] = 8'd 47; long_chirp_lut[ 79] = 8'd 27;
|
||||
long_chirp_lut[ 80] = 8'd203; long_chirp_lut[ 81] = 8'd231; long_chirp_lut[ 82] = 8'd 57; long_chirp_lut[ 83] = 8'd 20; long_chirp_lut[ 84] = 8'd193; long_chirp_lut[ 85] = 8'd238; long_chirp_lut[ 86] = 8'd 67; long_chirp_lut[ 87] = 8'd 14; long_chirp_lut[ 88] = 8'd182; long_chirp_lut[ 89] = 8'd244; long_chirp_lut[ 90] = 8'd 79; long_chirp_lut[ 91] = 8'd 9; long_chirp_lut[ 92] = 8'd170; long_chirp_lut[ 93] = 8'd248; long_chirp_lut[ 94] = 8'd 92; long_chirp_lut[ 95] = 8'd 5;
|
||||
long_chirp_lut[ 96] = 8'd157; long_chirp_lut[ 97] = 8'd252; long_chirp_lut[ 98] = 8'd106; long_chirp_lut[ 99] = 8'd 2; long_chirp_lut[100] = 8'd142; long_chirp_lut[101] = 8'd254; long_chirp_lut[102] = 8'd120; long_chirp_lut[103] = 8'd 1; long_chirp_lut[104] = 8'd127; long_chirp_lut[105] = 8'd254; long_chirp_lut[106] = 8'd136; long_chirp_lut[107] = 8'd 1; long_chirp_lut[108] = 8'd112; long_chirp_lut[109] = 8'd253; long_chirp_lut[110] = 8'd151; long_chirp_lut[111] = 8'd 4;
|
||||
long_chirp_lut[112] = 8'd 96; long_chirp_lut[113] = 8'd249; long_chirp_lut[114] = 8'd167; long_chirp_lut[115] = 8'd 8; long_chirp_lut[116] = 8'd 80; long_chirp_lut[117] = 8'd243; long_chirp_lut[118] = 8'd183; long_chirp_lut[119] = 8'd 15; long_chirp_lut[120] = 8'd 64; long_chirp_lut[121] = 8'd235; long_chirp_lut[122] = 8'd199; long_chirp_lut[123] = 8'd 25; long_chirp_lut[124] = 8'd 49; long_chirp_lut[125] = 8'd224; long_chirp_lut[126] = 8'd213; long_chirp_lut[127] = 8'd 37;
|
||||
long_chirp_lut[128] = 8'd 35; long_chirp_lut[129] = 8'd211; long_chirp_lut[130] = 8'd226; long_chirp_lut[131] = 8'd 51; long_chirp_lut[132] = 8'd 23; long_chirp_lut[133] = 8'd196; long_chirp_lut[134] = 8'd237; long_chirp_lut[135] = 8'd 68; long_chirp_lut[136] = 8'd 13; long_chirp_lut[137] = 8'd178; long_chirp_lut[138] = 8'd246; long_chirp_lut[139] = 8'd 86; long_chirp_lut[140] = 8'd 6; long_chirp_lut[141] = 8'd159; long_chirp_lut[142] = 8'd252; long_chirp_lut[143] = 8'd106;
|
||||
long_chirp_lut[144] = 8'd 2; long_chirp_lut[145] = 8'd138; long_chirp_lut[146] = 8'd254; long_chirp_lut[147] = 8'd128; long_chirp_lut[148] = 8'd 1; long_chirp_lut[149] = 8'd116; long_chirp_lut[150] = 8'd253; long_chirp_lut[151] = 8'd150; long_chirp_lut[152] = 8'd 4; long_chirp_lut[153] = 8'd 94; long_chirp_lut[154] = 8'd249; long_chirp_lut[155] = 8'd171; long_chirp_lut[156] = 8'd 10; long_chirp_lut[157] = 8'd 73; long_chirp_lut[158] = 8'd240; long_chirp_lut[159] = 8'd192;
|
||||
long_chirp_lut[160] = 8'd 21; long_chirp_lut[161] = 8'd 53; long_chirp_lut[162] = 8'd227; long_chirp_lut[163] = 8'd212; long_chirp_lut[164] = 8'd 36; long_chirp_lut[165] = 8'd 35; long_chirp_lut[166] = 8'd210; long_chirp_lut[167] = 8'd228; long_chirp_lut[168] = 8'd 55; long_chirp_lut[169] = 8'd 20; long_chirp_lut[170] = 8'd189; long_chirp_lut[171] = 8'd241; long_chirp_lut[172] = 8'd 77; long_chirp_lut[173] = 8'd 9; long_chirp_lut[174] = 8'd166; long_chirp_lut[175] = 8'd250;
|
||||
long_chirp_lut[176] = 8'd101; long_chirp_lut[177] = 8'd 2; long_chirp_lut[178] = 8'd141; long_chirp_lut[179] = 8'd254; long_chirp_lut[180] = 8'd127; long_chirp_lut[181] = 8'd 1; long_chirp_lut[182] = 8'd114; long_chirp_lut[183] = 8'd253; long_chirp_lut[184] = 8'd154; long_chirp_lut[185] = 8'd 5; long_chirp_lut[186] = 8'd 88; long_chirp_lut[187] = 8'd246; long_chirp_lut[188] = 8'd180; long_chirp_lut[189] = 8'd 15; long_chirp_lut[190] = 8'd 62; long_chirp_lut[191] = 8'd233;
|
||||
long_chirp_lut[192] = 8'd204; long_chirp_lut[193] = 8'd 31; long_chirp_lut[194] = 8'd 40; long_chirp_lut[195] = 8'd214; long_chirp_lut[196] = 8'd225; long_chirp_lut[197] = 8'd 52; long_chirp_lut[198] = 8'd 21; long_chirp_lut[199] = 8'd191; long_chirp_lut[200] = 8'd241; long_chirp_lut[201] = 8'd 77; long_chirp_lut[202] = 8'd 8; long_chirp_lut[203] = 8'd164; long_chirp_lut[204] = 8'd251; long_chirp_lut[205] = 8'd106; long_chirp_lut[206] = 8'd 1; long_chirp_lut[207] = 8'd134;
|
||||
long_chirp_lut[208] = 8'd254; long_chirp_lut[209] = 8'd136; long_chirp_lut[210] = 8'd 2; long_chirp_lut[211] = 8'd103; long_chirp_lut[212] = 8'd250; long_chirp_lut[213] = 8'd167; long_chirp_lut[214] = 8'd 9; long_chirp_lut[215] = 8'd 73; long_chirp_lut[216] = 8'd239; long_chirp_lut[217] = 8'd196; long_chirp_lut[218] = 8'd 25; long_chirp_lut[219] = 8'd 46; long_chirp_lut[220] = 8'd220; long_chirp_lut[221] = 8'd220; long_chirp_lut[222] = 8'd 47; long_chirp_lut[223] = 8'd 24;
|
||||
long_chirp_lut[224] = 8'd195; long_chirp_lut[225] = 8'd240; long_chirp_lut[226] = 8'd 75; long_chirp_lut[227] = 8'd 9; long_chirp_lut[228] = 8'd164; long_chirp_lut[229] = 8'd251; long_chirp_lut[230] = 8'd107; long_chirp_lut[231] = 8'd 1; long_chirp_lut[232] = 8'd131; long_chirp_lut[233] = 8'd254; long_chirp_lut[234] = 8'd141; long_chirp_lut[235] = 8'd 3; long_chirp_lut[236] = 8'd 96; long_chirp_lut[237] = 8'd248; long_chirp_lut[238] = 8'd175; long_chirp_lut[239] = 8'd 13;
|
||||
long_chirp_lut[240] = 8'd 64; long_chirp_lut[241] = 8'd233; long_chirp_lut[242] = 8'd206; long_chirp_lut[243] = 8'd 33; long_chirp_lut[244] = 8'd 36; long_chirp_lut[245] = 8'd209; long_chirp_lut[246] = 8'd231; long_chirp_lut[247] = 8'd 61; long_chirp_lut[248] = 8'd 15; long_chirp_lut[249] = 8'd178; long_chirp_lut[250] = 8'd247; long_chirp_lut[251] = 8'd 95; long_chirp_lut[252] = 8'd 3; long_chirp_lut[253] = 8'd142; long_chirp_lut[254] = 8'd254; long_chirp_lut[255] = 8'd132;
|
||||
long_chirp_lut[256] = 8'd 1; long_chirp_lut[257] = 8'd105; long_chirp_lut[258] = 8'd250; long_chirp_lut[259] = 8'd169; long_chirp_lut[260] = 8'd 11; long_chirp_lut[261] = 8'd 69; long_chirp_lut[262] = 8'd235; long_chirp_lut[263] = 8'd203; long_chirp_lut[264] = 8'd 31; long_chirp_lut[265] = 8'd 37; long_chirp_lut[266] = 8'd210; long_chirp_lut[267] = 8'd230; long_chirp_lut[268] = 8'd 61; long_chirp_lut[269] = 8'd 14; long_chirp_lut[270] = 8'd176; long_chirp_lut[271] = 8'd248;
|
||||
long_chirp_lut[272] = 8'd 98; long_chirp_lut[273] = 8'd 2; long_chirp_lut[274] = 8'd137; long_chirp_lut[275] = 8'd254; long_chirp_lut[276] = 8'd138; long_chirp_lut[277] = 8'd 2; long_chirp_lut[278] = 8'd 97; long_chirp_lut[279] = 8'd248; long_chirp_lut[280] = 8'd178; long_chirp_lut[281] = 8'd 15; long_chirp_lut[282] = 8'd 59; long_chirp_lut[283] = 8'd228; long_chirp_lut[284] = 8'd213; long_chirp_lut[285] = 8'd 41; long_chirp_lut[286] = 8'd 28; long_chirp_lut[287] = 8'd198;
|
||||
long_chirp_lut[288] = 8'd239; long_chirp_lut[289] = 8'd 76; long_chirp_lut[290] = 8'd 8; long_chirp_lut[291] = 8'd159; long_chirp_lut[292] = 8'd253; long_chirp_lut[293] = 8'd117; long_chirp_lut[294] = 8'd 1; long_chirp_lut[295] = 8'd116; long_chirp_lut[296] = 8'd253; long_chirp_lut[297] = 8'd161; long_chirp_lut[298] = 8'd 8; long_chirp_lut[299] = 8'd 74; long_chirp_lut[300] = 8'd237; long_chirp_lut[301] = 8'd200; long_chirp_lut[302] = 8'd 30; long_chirp_lut[303] = 8'd 38;
|
||||
long_chirp_lut[304] = 8'd209; long_chirp_lut[305] = 8'd232; long_chirp_lut[306] = 8'd 65; long_chirp_lut[307] = 8'd 12; long_chirp_lut[308] = 8'd170; long_chirp_lut[309] = 8'd251; long_chirp_lut[310] = 8'd107; long_chirp_lut[311] = 8'd 1; long_chirp_lut[312] = 8'd125; long_chirp_lut[313] = 8'd254; long_chirp_lut[314] = 8'd153; long_chirp_lut[315] = 8'd 6; long_chirp_lut[316] = 8'd 80; long_chirp_lut[317] = 8'd240; long_chirp_lut[318] = 8'd196; long_chirp_lut[319] = 8'd 27;
|
||||
long_chirp_lut[320] = 8'd 40; long_chirp_lut[321] = 8'd211; long_chirp_lut[322] = 8'd230; long_chirp_lut[323] = 8'd 63; long_chirp_lut[324] = 8'd 13; long_chirp_lut[325] = 8'd171; long_chirp_lut[326] = 8'd251; long_chirp_lut[327] = 8'd108; long_chirp_lut[328] = 8'd 1; long_chirp_lut[329] = 8'd123; long_chirp_lut[330] = 8'd253; long_chirp_lut[331] = 8'd156; long_chirp_lut[332] = 8'd 7; long_chirp_lut[333] = 8'd 76; long_chirp_lut[334] = 8'd238; long_chirp_lut[335] = 8'd201;
|
||||
long_chirp_lut[336] = 8'd 31; long_chirp_lut[337] = 8'd 36; long_chirp_lut[338] = 8'd206; long_chirp_lut[339] = 8'd235; long_chirp_lut[340] = 8'd 71; long_chirp_lut[341] = 8'd 9; long_chirp_lut[342] = 8'd161; long_chirp_lut[343] = 8'd253; long_chirp_lut[344] = 8'd119; long_chirp_lut[345] = 8'd 1; long_chirp_lut[346] = 8'd111; long_chirp_lut[347] = 8'd251; long_chirp_lut[348] = 8'd169; long_chirp_lut[349] = 8'd 12; long_chirp_lut[350] = 8'd 62; long_chirp_lut[351] = 8'd229;
|
||||
long_chirp_lut[352] = 8'd213; long_chirp_lut[353] = 8'd 43; long_chirp_lut[354] = 8'd 24; long_chirp_lut[355] = 8'd191; long_chirp_lut[356] = 8'd244; long_chirp_lut[357] = 8'd 88; long_chirp_lut[358] = 8'd 3; long_chirp_lut[359] = 8'd141; long_chirp_lut[360] = 8'd255; long_chirp_lut[361] = 8'd141; long_chirp_lut[362] = 8'd 3; long_chirp_lut[363] = 8'd 88; long_chirp_lut[364] = 8'd243; long_chirp_lut[365] = 8'd191; long_chirp_lut[366] = 8'd 25; long_chirp_lut[367] = 8'd 42;
|
||||
long_chirp_lut[368] = 8'd212; long_chirp_lut[369] = 8'd231; long_chirp_lut[370] = 8'd 66; long_chirp_lut[371] = 8'd 11; long_chirp_lut[372] = 8'd164; long_chirp_lut[373] = 8'd252; long_chirp_lut[374] = 8'd118; long_chirp_lut[375] = 8'd 1; long_chirp_lut[376] = 8'd110; long_chirp_lut[377] = 8'd251; long_chirp_lut[378] = 8'd172; long_chirp_lut[379] = 8'd 14; long_chirp_lut[380] = 8'd 58; long_chirp_lut[381] = 8'd225; long_chirp_lut[382] = 8'd219; long_chirp_lut[383] = 8'd 50;
|
||||
long_chirp_lut[384] = 8'd 19; long_chirp_lut[385] = 8'd181; long_chirp_lut[386] = 8'd248; long_chirp_lut[387] = 8'd101; long_chirp_lut[388] = 8'd 1; long_chirp_lut[389] = 8'd125; long_chirp_lut[390] = 8'd253; long_chirp_lut[391] = 8'd158; long_chirp_lut[392] = 8'd 9; long_chirp_lut[393] = 8'd 70; long_chirp_lut[394] = 8'd233; long_chirp_lut[395] = 8'd209; long_chirp_lut[396] = 8'd 41; long_chirp_lut[397] = 8'd 26; long_chirp_lut[398] = 8'd191; long_chirp_lut[399] = 8'd244;
|
||||
long_chirp_lut[400] = 8'd 91; long_chirp_lut[401] = 8'd 2; long_chirp_lut[402] = 8'd135; long_chirp_lut[403] = 8'd254; long_chirp_lut[404] = 8'd150; long_chirp_lut[405] = 8'd 6; long_chirp_lut[406] = 8'd 77; long_chirp_lut[407] = 8'd237; long_chirp_lut[408] = 8'd204; long_chirp_lut[409] = 8'd 36; long_chirp_lut[410] = 8'd 29; long_chirp_lut[411] = 8'd195; long_chirp_lut[412] = 8'd242; long_chirp_lut[413] = 8'd 87; long_chirp_lut[414] = 8'd 3; long_chirp_lut[415] = 8'd138;
|
||||
long_chirp_lut[416] = 8'd254; long_chirp_lut[417] = 8'd148; long_chirp_lut[418] = 8'd 5; long_chirp_lut[419] = 8'd 78; long_chirp_lut[420] = 8'd237; long_chirp_lut[421] = 8'd204; long_chirp_lut[422] = 8'd 36; long_chirp_lut[423] = 8'd 29; long_chirp_lut[424] = 8'd195; long_chirp_lut[425] = 8'd243; long_chirp_lut[426] = 8'd 89; long_chirp_lut[427] = 8'd 3; long_chirp_lut[428] = 8'd135; long_chirp_lut[429] = 8'd254; long_chirp_lut[430] = 8'd151; long_chirp_lut[431] = 8'd 7;
|
||||
long_chirp_lut[432] = 8'd 73; long_chirp_lut[433] = 8'd235; long_chirp_lut[434] = 8'd209; long_chirp_lut[435] = 8'd 41; long_chirp_lut[436] = 8'd 25; long_chirp_lut[437] = 8'd188; long_chirp_lut[438] = 8'd246; long_chirp_lut[439] = 8'd 97; long_chirp_lut[440] = 8'd 1; long_chirp_lut[441] = 8'd126; long_chirp_lut[442] = 8'd253; long_chirp_lut[443] = 8'd161; long_chirp_lut[444] = 8'd 10; long_chirp_lut[445] = 8'd 64; long_chirp_lut[446] = 8'd228; long_chirp_lut[447] = 8'd217;
|
||||
long_chirp_lut[448] = 8'd 50; long_chirp_lut[449] = 8'd 18; long_chirp_lut[450] = 8'd176; long_chirp_lut[451] = 8'd250; long_chirp_lut[452] = 8'd111; long_chirp_lut[453] = 8'd 1; long_chirp_lut[454] = 8'd111; long_chirp_lut[455] = 8'd250; long_chirp_lut[456] = 8'd177; long_chirp_lut[457] = 8'd 18; long_chirp_lut[458] = 8'd 49; long_chirp_lut[459] = 8'd216; long_chirp_lut[460] = 8'd229; long_chirp_lut[461] = 8'd 66; long_chirp_lut[462] = 8'd 9; long_chirp_lut[463] = 8'd157;
|
||||
long_chirp_lut[464] = 8'd254; long_chirp_lut[465] = 8'd132; long_chirp_lut[466] = 8'd 2; long_chirp_lut[467] = 8'd 90; long_chirp_lut[468] = 8'd242; long_chirp_lut[469] = 8'd197; long_chirp_lut[470] = 8'd 31; long_chirp_lut[471] = 8'd 32; long_chirp_lut[472] = 8'd198; long_chirp_lut[473] = 8'd242; long_chirp_lut[474] = 8'd 89; long_chirp_lut[475] = 8'd 2; long_chirp_lut[476] = 8'd132; long_chirp_lut[477] = 8'd254; long_chirp_lut[478] = 8'd158; long_chirp_lut[479] = 8'd 10;
|
||||
long_chirp_lut[480] = 8'd 64; long_chirp_lut[481] = 8'd228; long_chirp_lut[482] = 8'd219; long_chirp_lut[483] = 8'd 53; long_chirp_lut[484] = 8'd 15; long_chirp_lut[485] = 8'd171; long_chirp_lut[486] = 8'd252; long_chirp_lut[487] = 8'd120; long_chirp_lut[488] = 8'd 1; long_chirp_lut[489] = 8'd100; long_chirp_lut[490] = 8'd246; long_chirp_lut[491] = 8'd189; long_chirp_lut[492] = 8'd 26; long_chirp_lut[493] = 8'd 37; long_chirp_lut[494] = 8'd203; long_chirp_lut[495] = 8'd240;
|
||||
long_chirp_lut[496] = 8'd 84; long_chirp_lut[497] = 8'd 3; long_chirp_lut[498] = 8'd135; long_chirp_lut[499] = 8'd254; long_chirp_lut[500] = 8'd157; long_chirp_lut[501] = 8'd 9; long_chirp_lut[502] = 8'd 64; long_chirp_lut[503] = 8'd227; long_chirp_lut[504] = 8'd220; long_chirp_lut[505] = 8'd 55; long_chirp_lut[506] = 8'd 14; long_chirp_lut[507] = 8'd167; long_chirp_lut[508] = 8'd253; long_chirp_lut[509] = 8'd125; long_chirp_lut[510] = 8'd 2; long_chirp_lut[511] = 8'd 92;
|
||||
long_chirp_lut[512] = 8'd243; long_chirp_lut[513] = 8'd197; long_chirp_lut[514] = 8'd 33; long_chirp_lut[515] = 8'd 30; long_chirp_lut[516] = 8'd193; long_chirp_lut[517] = 8'd245; long_chirp_lut[518] = 8'd 97; long_chirp_lut[519] = 8'd 1; long_chirp_lut[520] = 8'd120; long_chirp_lut[521] = 8'd252; long_chirp_lut[522] = 8'd172; long_chirp_lut[523] = 8'd 17; long_chirp_lut[524] = 8'd 49; long_chirp_lut[525] = 8'd214; long_chirp_lut[526] = 8'd232; long_chirp_lut[527] = 8'd 73;
|
||||
long_chirp_lut[528] = 8'd 6; long_chirp_lut[529] = 8'd145; long_chirp_lut[530] = 8'd254; long_chirp_lut[531] = 8'd149; long_chirp_lut[532] = 8'd 7; long_chirp_lut[533] = 8'd 69; long_chirp_lut[534] = 8'd230; long_chirp_lut[535] = 8'd218; long_chirp_lut[536] = 8'd 53; long_chirp_lut[537] = 8'd 14; long_chirp_lut[538] = 8'd167; long_chirp_lut[539] = 8'd253; long_chirp_lut[540] = 8'd127; long_chirp_lut[541] = 8'd 2; long_chirp_lut[542] = 8'd 88; long_chirp_lut[543] = 8'd241;
|
||||
long_chirp_lut[544] = 8'd202; long_chirp_lut[545] = 8'd 38; long_chirp_lut[546] = 8'd 24; long_chirp_lut[547] = 8'd184; long_chirp_lut[548] = 8'd249; long_chirp_lut[549] = 8'd109; long_chirp_lut[550] = 8'd 1; long_chirp_lut[551] = 8'd105; long_chirp_lut[552] = 8'd247; long_chirp_lut[553] = 8'd188; long_chirp_lut[554] = 8'd 27; long_chirp_lut[555] = 8'd 35; long_chirp_lut[556] = 8'd198; long_chirp_lut[557] = 8'd243; long_chirp_lut[558] = 8'd 94; long_chirp_lut[559] = 8'd 1;
|
||||
long_chirp_lut[560] = 8'd120; long_chirp_lut[561] = 8'd251; long_chirp_lut[562] = 8'd175; long_chirp_lut[563] = 8'd 19; long_chirp_lut[564] = 8'd 45; long_chirp_lut[565] = 8'd209; long_chirp_lut[566] = 8'd237; long_chirp_lut[567] = 8'd 82; long_chirp_lut[568] = 8'd 3; long_chirp_lut[569] = 8'd132; long_chirp_lut[570] = 8'd253; long_chirp_lut[571] = 8'd165; long_chirp_lut[572] = 8'd 14; long_chirp_lut[573] = 8'd 53; long_chirp_lut[574] = 8'd216; long_chirp_lut[575] = 8'd232;
|
||||
long_chirp_lut[576] = 8'd 73; long_chirp_lut[577] = 8'd 5; long_chirp_lut[578] = 8'd141; long_chirp_lut[579] = 8'd254; long_chirp_lut[580] = 8'd157; long_chirp_lut[581] = 8'd 11; long_chirp_lut[582] = 8'd 59; long_chirp_lut[583] = 8'd221; long_chirp_lut[584] = 8'd228; long_chirp_lut[585] = 8'd 68; long_chirp_lut[586] = 8'd 7; long_chirp_lut[587] = 8'd146; long_chirp_lut[588] = 8'd254; long_chirp_lut[589] = 8'd152; long_chirp_lut[590] = 8'd 9; long_chirp_lut[591] = 8'd 63;
|
||||
long_chirp_lut[592] = 8'd224; long_chirp_lut[593] = 8'd225; long_chirp_lut[594] = 8'd 65; long_chirp_lut[595] = 8'd 8; long_chirp_lut[596] = 8'd149; long_chirp_lut[597] = 8'd254; long_chirp_lut[598] = 8'd150; long_chirp_lut[599] = 8'd 8; long_chirp_lut[600] = 8'd 64; long_chirp_lut[601] = 8'd225; long_chirp_lut[602] = 8'd225; long_chirp_lut[603] = 8'd 64; long_chirp_lut[604] = 8'd 8; long_chirp_lut[605] = 8'd149; long_chirp_lut[606] = 8'd254; long_chirp_lut[607] = 8'd150;
|
||||
long_chirp_lut[608] = 8'd 9; long_chirp_lut[609] = 8'd 63; long_chirp_lut[610] = 8'd224; long_chirp_lut[611] = 8'd226; long_chirp_lut[612] = 8'd 66; long_chirp_lut[613] = 8'd 7; long_chirp_lut[614] = 8'd146; long_chirp_lut[615] = 8'd254; long_chirp_lut[616] = 8'd154; long_chirp_lut[617] = 8'd 10; long_chirp_lut[618] = 8'd 59; long_chirp_lut[619] = 8'd220; long_chirp_lut[620] = 8'd229; long_chirp_lut[621] = 8'd 71; long_chirp_lut[622] = 8'd 5; long_chirp_lut[623] = 8'd140;
|
||||
long_chirp_lut[624] = 8'd254; long_chirp_lut[625] = 8'd161; long_chirp_lut[626] = 8'd 13; long_chirp_lut[627] = 8'd 53; long_chirp_lut[628] = 8'd215; long_chirp_lut[629] = 8'd234; long_chirp_lut[630] = 8'd 79; long_chirp_lut[631] = 8'd 3; long_chirp_lut[632] = 8'd131; long_chirp_lut[633] = 8'd253; long_chirp_lut[634] = 8'd170; long_chirp_lut[635] = 8'd 18; long_chirp_lut[636] = 8'd 45; long_chirp_lut[637] = 8'd207; long_chirp_lut[638] = 8'd240; long_chirp_lut[639] = 8'd 90;
|
||||
long_chirp_lut[640] = 8'd 1; long_chirp_lut[641] = 8'd119; long_chirp_lut[642] = 8'd250; long_chirp_lut[643] = 8'd182; long_chirp_lut[644] = 8'd 25; long_chirp_lut[645] = 8'd 35; long_chirp_lut[646] = 8'd195; long_chirp_lut[647] = 8'd246; long_chirp_lut[648] = 8'd104; long_chirp_lut[649] = 8'd 1; long_chirp_lut[650] = 8'd104; long_chirp_lut[651] = 8'd246; long_chirp_lut[652] = 8'd196; long_chirp_lut[653] = 8'd 35; long_chirp_lut[654] = 8'd 24; long_chirp_lut[655] = 8'd181;
|
||||
long_chirp_lut[656] = 8'd251; long_chirp_lut[657] = 8'd121; long_chirp_lut[658] = 8'd 2; long_chirp_lut[659] = 8'd 86; long_chirp_lut[660] = 8'd237; long_chirp_lut[661] = 8'd211; long_chirp_lut[662] = 8'd 49; long_chirp_lut[663] = 8'd 14; long_chirp_lut[664] = 8'd162; long_chirp_lut[665] = 8'd254; long_chirp_lut[666] = 8'd141; long_chirp_lut[667] = 8'd 6; long_chirp_lut[668] = 8'd 67; long_chirp_lut[669] = 8'd225; long_chirp_lut[670] = 8'd226; long_chirp_lut[671] = 8'd 68;
|
||||
long_chirp_lut[672] = 8'd 6; long_chirp_lut[673] = 8'd140; long_chirp_lut[674] = 8'd254; long_chirp_lut[675] = 8'd164; long_chirp_lut[676] = 8'd 16; long_chirp_lut[677] = 8'd 47; long_chirp_lut[678] = 8'd208; long_chirp_lut[679] = 8'd240; long_chirp_lut[680] = 8'd 91; long_chirp_lut[681] = 8'd 1; long_chirp_lut[682] = 8'd114; long_chirp_lut[683] = 8'd249; long_chirp_lut[684] = 8'd189; long_chirp_lut[685] = 8'd 31; long_chirp_lut[686] = 8'd 28; long_chirp_lut[687] = 8'd185;
|
||||
long_chirp_lut[688] = 8'd250; long_chirp_lut[689] = 8'd119; long_chirp_lut[690] = 8'd 2; long_chirp_lut[691] = 8'd 86; long_chirp_lut[692] = 8'd237; long_chirp_lut[693] = 8'd213; long_chirp_lut[694] = 8'd 52; long_chirp_lut[695] = 8'd 12; long_chirp_lut[696] = 8'd157; long_chirp_lut[697] = 8'd254; long_chirp_lut[698] = 8'd150; long_chirp_lut[699] = 8'd 9; long_chirp_lut[700] = 8'd 58; long_chirp_lut[701] = 8'd217; long_chirp_lut[702] = 8'd234; long_chirp_lut[703] = 8'd 81;
|
||||
long_chirp_lut[704] = 8'd 2; long_chirp_lut[705] = 8'd123; long_chirp_lut[706] = 8'd251; long_chirp_lut[707] = 8'd182; long_chirp_lut[708] = 8'd 26; long_chirp_lut[709] = 8'd 32; long_chirp_lut[710] = 8'd189; long_chirp_lut[711] = 8'd249; long_chirp_lut[712] = 8'd115; long_chirp_lut[713] = 8'd 1; long_chirp_lut[714] = 8'd 88; long_chirp_lut[715] = 8'd237; long_chirp_lut[716] = 8'd213; long_chirp_lut[717] = 8'd 53; long_chirp_lut[718] = 8'd 11; long_chirp_lut[719] = 8'd154;
|
||||
long_chirp_lut[720] = 8'd255; long_chirp_lut[721] = 8'd154; long_chirp_lut[722] = 8'd 12; long_chirp_lut[723] = 8'd 53; long_chirp_lut[724] = 8'd212; long_chirp_lut[725] = 8'd238; long_chirp_lut[726] = 8'd 89; long_chirp_lut[727] = 8'd 1; long_chirp_lut[728] = 8'd113; long_chirp_lut[729] = 8'd248; long_chirp_lut[730] = 8'd193; long_chirp_lut[731] = 8'd 35; long_chirp_lut[732] = 8'd 23; long_chirp_lut[733] = 8'd176; long_chirp_lut[734] = 8'd252; long_chirp_lut[735] = 8'd132;
|
||||
long_chirp_lut[736] = 8'd 4; long_chirp_lut[737] = 8'd 71; long_chirp_lut[738] = 8'd227; long_chirp_lut[739] = 8'd226; long_chirp_lut[740] = 8'd 71; long_chirp_lut[741] = 8'd 4; long_chirp_lut[742] = 8'd132; long_chirp_lut[743] = 8'd252; long_chirp_lut[744] = 8'd177; long_chirp_lut[745] = 8'd 24; long_chirp_lut[746] = 8'd 34; long_chirp_lut[747] = 8'd191; long_chirp_lut[748] = 8'd249; long_chirp_lut[749] = 8'd116; long_chirp_lut[750] = 8'd 2; long_chirp_lut[751] = 8'd 84;
|
||||
long_chirp_lut[752] = 8'd235; long_chirp_lut[753] = 8'd217; long_chirp_lut[754] = 8'd 60; long_chirp_lut[755] = 8'd 8; long_chirp_lut[756] = 8'd143; long_chirp_lut[757] = 8'd254; long_chirp_lut[758] = 8'd167; long_chirp_lut[759] = 8'd 18; long_chirp_lut[760] = 8'd 40; long_chirp_lut[761] = 8'd199; long_chirp_lut[762] = 8'd246; long_chirp_lut[763] = 8'd109; long_chirp_lut[764] = 8'd 1; long_chirp_lut[765] = 8'd 91; long_chirp_lut[766] = 8'd238; long_chirp_lut[767] = 8'd213;
|
||||
long_chirp_lut[768] = 8'd 55; long_chirp_lut[769] = 8'd 10; long_chirp_lut[770] = 8'd148; long_chirp_lut[771] = 8'd254; long_chirp_lut[772] = 8'd164; long_chirp_lut[773] = 8'd 17; long_chirp_lut[774] = 8'd 42; long_chirp_lut[775] = 8'd200; long_chirp_lut[776] = 8'd245; long_chirp_lut[777] = 8'd108; long_chirp_lut[778] = 8'd 1; long_chirp_lut[779] = 8'd 90; long_chirp_lut[780] = 8'd237; long_chirp_lut[781] = 8'd214; long_chirp_lut[782] = 8'd 57; long_chirp_lut[783] = 8'd 9;
|
||||
long_chirp_lut[784] = 8'd145; long_chirp_lut[785] = 8'd254; long_chirp_lut[786] = 8'd167; long_chirp_lut[787] = 8'd 19; long_chirp_lut[788] = 8'd 38; long_chirp_lut[789] = 8'd195; long_chirp_lut[790] = 8'd247; long_chirp_lut[791] = 8'd114; long_chirp_lut[792] = 8'd 2; long_chirp_lut[793] = 8'd 83; long_chirp_lut[794] = 8'd233; long_chirp_lut[795] = 8'd220; long_chirp_lut[796] = 8'd 64; long_chirp_lut[797] = 8'd 6; long_chirp_lut[798] = 8'd135; long_chirp_lut[799] = 8'd253;
|
||||
long_chirp_lut[800] = 8'd178; long_chirp_lut[801] = 8'd 26; long_chirp_lut[802] = 8'd 30; long_chirp_lut[803] = 8'd184; long_chirp_lut[804] = 8'd251; long_chirp_lut[805] = 8'd128; long_chirp_lut[806] = 8'd 4; long_chirp_lut[807] = 8'd 70; long_chirp_lut[808] = 8'd224; long_chirp_lut[809] = 8'd230; long_chirp_lut[810] = 8'd 79; long_chirp_lut[811] = 8'd 2; long_chirp_lut[812] = 8'd117; long_chirp_lut[813] = 8'd248; long_chirp_lut[814] = 8'd194; long_chirp_lut[815] = 8'd 38;
|
||||
long_chirp_lut[816] = 8'd 19; long_chirp_lut[817] = 8'd166; long_chirp_lut[818] = 8'd254; long_chirp_lut[819] = 8'd149; long_chirp_lut[820] = 8'd 11; long_chirp_lut[821] = 8'd 51; long_chirp_lut[822] = 8'd208; long_chirp_lut[823] = 8'd242; long_chirp_lut[824] = 8'd101; long_chirp_lut[825] = 8'd 1; long_chirp_lut[826] = 8'd 93; long_chirp_lut[827] = 8'd238; long_chirp_lut[828] = 8'd214; long_chirp_lut[829] = 8'd 58; long_chirp_lut[830] = 8'd 8; long_chirp_lut[831] = 8'd139;
|
||||
long_chirp_lut[832] = 8'd253; long_chirp_lut[833] = 8'd176; long_chirp_lut[834] = 8'd 25; long_chirp_lut[835] = 8'd 30; long_chirp_lut[836] = 8'd183; long_chirp_lut[837] = 8'd252; long_chirp_lut[838] = 8'd132; long_chirp_lut[839] = 8'd 5; long_chirp_lut[840] = 8'd 64; long_chirp_lut[841] = 8'd219; long_chirp_lut[842] = 8'd235; long_chirp_lut[843] = 8'd 88; long_chirp_lut[844] = 8'd 1; long_chirp_lut[845] = 8'd105; long_chirp_lut[846] = 8'd243; long_chirp_lut[847] = 8'd206;
|
||||
long_chirp_lut[848] = 8'd 50; long_chirp_lut[849] = 8'd 11; long_chirp_lut[850] = 8'd148; long_chirp_lut[851] = 8'd254; long_chirp_lut[852] = 8'd169; long_chirp_lut[853] = 8'd 21; long_chirp_lut[854] = 8'd 34; long_chirp_lut[855] = 8'd187; long_chirp_lut[856] = 8'd251; long_chirp_lut[857] = 8'd128; long_chirp_lut[858] = 8'd 5; long_chirp_lut[859] = 8'd 66; long_chirp_lut[860] = 8'd220; long_chirp_lut[861] = 8'd235; long_chirp_lut[862] = 8'd 88; long_chirp_lut[863] = 8'd 1;
|
||||
long_chirp_lut[864] = 8'd104; long_chirp_lut[865] = 8'd242; long_chirp_lut[866] = 8'd209; long_chirp_lut[867] = 8'd 53; long_chirp_lut[868] = 8'd 9; long_chirp_lut[869] = 8'd143; long_chirp_lut[870] = 8'd253; long_chirp_lut[871] = 8'd175; long_chirp_lut[872] = 8'd 25; long_chirp_lut[873] = 8'd 29; long_chirp_lut[874] = 8'd180; long_chirp_lut[875] = 8'd253; long_chirp_lut[876] = 8'd138; long_chirp_lut[877] = 8'd 8; long_chirp_lut[878] = 8'd 56; long_chirp_lut[879] = 8'd211;
|
||||
long_chirp_lut[880] = 8'd241; long_chirp_lut[881] = 8'd101; long_chirp_lut[882] = 8'd 1; long_chirp_lut[883] = 8'd 90; long_chirp_lut[884] = 8'd235; long_chirp_lut[885] = 8'd220; long_chirp_lut[886] = 8'd 67; long_chirp_lut[887] = 8'd 4; long_chirp_lut[888] = 8'd125; long_chirp_lut[889] = 8'd250; long_chirp_lut[890] = 8'd193; long_chirp_lut[891] = 8'd 39; long_chirp_lut[892] = 8'd 17; long_chirp_lut[893] = 8'd159; long_chirp_lut[894] = 8'd254; long_chirp_lut[895] = 8'd161;
|
||||
long_chirp_lut[896] = 8'd 18; long_chirp_lut[897] = 8'd 38; long_chirp_lut[898] = 8'd191; long_chirp_lut[899] = 8'd250; long_chirp_lut[900] = 8'd127; long_chirp_lut[901] = 8'd 5; long_chirp_lut[902] = 8'd 64; long_chirp_lut[903] = 8'd217; long_chirp_lut[904] = 8'd238; long_chirp_lut[905] = 8'd 95; long_chirp_lut[906] = 8'd 1; long_chirp_lut[907] = 8'd 94; long_chirp_lut[908] = 8'd237; long_chirp_lut[909] = 8'd218; long_chirp_lut[910] = 8'd 66; long_chirp_lut[911] = 8'd 4;
|
||||
long_chirp_lut[912] = 8'd125; long_chirp_lut[913] = 8'd249; long_chirp_lut[914] = 8'd194; long_chirp_lut[915] = 8'd 41; long_chirp_lut[916] = 8'd 15; long_chirp_lut[917] = 8'd155; long_chirp_lut[918] = 8'd254; long_chirp_lut[919] = 8'd167; long_chirp_lut[920] = 8'd 21; long_chirp_lut[921] = 8'd 32; long_chirp_lut[922] = 8'd183; long_chirp_lut[923] = 8'd252; long_chirp_lut[924] = 8'd138; long_chirp_lut[925] = 8'd 8; long_chirp_lut[926] = 8'd 54; long_chirp_lut[927] = 8'd207;
|
||||
long_chirp_lut[928] = 8'd244; long_chirp_lut[929] = 8'd110; long_chirp_lut[930] = 8'd 2; long_chirp_lut[931] = 8'd 78; long_chirp_lut[932] = 8'd227; long_chirp_lut[933] = 8'd230; long_chirp_lut[934] = 8'd 83; long_chirp_lut[935] = 8'd 1; long_chirp_lut[936] = 8'd104; long_chirp_lut[937] = 8'd241; long_chirp_lut[938] = 8'd213; long_chirp_lut[939] = 8'd 60; long_chirp_lut[940] = 8'd 6; long_chirp_lut[941] = 8'd130; long_chirp_lut[942] = 8'd250; long_chirp_lut[943] = 8'd192;
|
||||
long_chirp_lut[944] = 8'd 39; long_chirp_lut[945] = 8'd 15; long_chirp_lut[946] = 8'd155; long_chirp_lut[947] = 8'd254; long_chirp_lut[948] = 8'd169; long_chirp_lut[949] = 8'd 23; long_chirp_lut[950] = 8'd 29; long_chirp_lut[951] = 8'd178; long_chirp_lut[952] = 8'd253; long_chirp_lut[953] = 8'd146; long_chirp_lut[954] = 8'd 12; long_chirp_lut[955] = 8'd 46; long_chirp_lut[956] = 8'd198; long_chirp_lut[957] = 8'd248; long_chirp_lut[958] = 8'd123; long_chirp_lut[959] = 8'd 4;
|
||||
long_chirp_lut[960] = 8'd 64; long_chirp_lut[961] = 8'd216; long_chirp_lut[962] = 8'd240; long_chirp_lut[963] = 8'd101; long_chirp_lut[964] = 8'd 1; long_chirp_lut[965] = 8'd 84; long_chirp_lut[966] = 8'd230; long_chirp_lut[967] = 8'd228; long_chirp_lut[968] = 8'd 81; long_chirp_lut[969] = 8'd 1; long_chirp_lut[970] = 8'd104; long_chirp_lut[971] = 8'd241; long_chirp_lut[972] = 8'd214; long_chirp_lut[973] = 8'd 63; long_chirp_lut[974] = 8'd 4; long_chirp_lut[975] = 8'd123;
|
||||
long_chirp_lut[976] = 8'd248; long_chirp_lut[977] = 8'd199; long_chirp_lut[978] = 8'd 47; long_chirp_lut[979] = 8'd 11; long_chirp_lut[980] = 8'd142; long_chirp_lut[981] = 8'd253; long_chirp_lut[982] = 8'd183; long_chirp_lut[983] = 8'd 34; long_chirp_lut[984] = 8'd 19; long_chirp_lut[985] = 8'd160; long_chirp_lut[986] = 8'd254; long_chirp_lut[987] = 8'd167; long_chirp_lut[988] = 8'd 23; long_chirp_lut[989] = 8'd 29; long_chirp_lut[990] = 8'd176; long_chirp_lut[991] = 8'd254;
|
||||
long_chirp_lut[992] = 8'd151; long_chirp_lut[993] = 8'd 14; long_chirp_lut[994] = 8'd 40; long_chirp_lut[995] = 8'd191; long_chirp_lut[996] = 8'd251; long_chirp_lut[997] = 8'd135; long_chirp_lut[998] = 8'd 8; long_chirp_lut[999] = 8'd 52; long_chirp_lut[1000] = 8'd203; long_chirp_lut[1001] = 8'd247; long_chirp_lut[1002] = 8'd120; long_chirp_lut[1003] = 8'd 4; long_chirp_lut[1004] = 8'd 64; long_chirp_lut[1005] = 8'd214; long_chirp_lut[1006] = 8'd241; long_chirp_lut[1007] = 8'd106;
|
||||
long_chirp_lut[1008] = 8'd 2; long_chirp_lut[1009] = 8'd 76; long_chirp_lut[1010] = 8'd224; long_chirp_lut[1011] = 8'd235; long_chirp_lut[1012] = 8'd 94; long_chirp_lut[1013] = 8'd 1; long_chirp_lut[1014] = 8'd 88; long_chirp_lut[1015] = 8'd231; long_chirp_lut[1016] = 8'd228; long_chirp_lut[1017] = 8'd 82; long_chirp_lut[1018] = 8'd 1; long_chirp_lut[1019] = 8'd 99; long_chirp_lut[1020] = 8'd237; long_chirp_lut[1021] = 8'd220; long_chirp_lut[1022] = 8'd 72; long_chirp_lut[1023] = 8'd 2;
|
||||
long_chirp_lut[1024] = 8'd110; long_chirp_lut[1025] = 8'd242; long_chirp_lut[1026] = 8'd213; long_chirp_lut[1027] = 8'd 63; long_chirp_lut[1028] = 8'd 4; long_chirp_lut[1029] = 8'd119; long_chirp_lut[1030] = 8'd246; long_chirp_lut[1031] = 8'd206; long_chirp_lut[1032] = 8'd 55; long_chirp_lut[1033] = 8'd 6; long_chirp_lut[1034] = 8'd128; long_chirp_lut[1035] = 8'd249; long_chirp_lut[1036] = 8'd199; long_chirp_lut[1037] = 8'd 48; long_chirp_lut[1038] = 8'd 9; long_chirp_lut[1039] = 8'd136;
|
||||
long_chirp_lut[1040] = 8'd251; long_chirp_lut[1041] = 8'd192; long_chirp_lut[1042] = 8'd 43; long_chirp_lut[1043] = 8'd 12; long_chirp_lut[1044] = 8'd143; long_chirp_lut[1045] = 8'd252; long_chirp_lut[1046] = 8'd186; long_chirp_lut[1047] = 8'd 38; long_chirp_lut[1048] = 8'd 15; long_chirp_lut[1049] = 8'd150; long_chirp_lut[1050] = 8'd253; long_chirp_lut[1051] = 8'd181; long_chirp_lut[1052] = 8'd 34; long_chirp_lut[1053] = 8'd 17; long_chirp_lut[1054] = 8'd155; long_chirp_lut[1055] = 8'd254;
|
||||
long_chirp_lut[1056] = 8'd177; long_chirp_lut[1057] = 8'd 31; long_chirp_lut[1058] = 8'd 20; long_chirp_lut[1059] = 8'd159; long_chirp_lut[1060] = 8'd254; long_chirp_lut[1061] = 8'd173; long_chirp_lut[1062] = 8'd 28; long_chirp_lut[1063] = 8'd 22; long_chirp_lut[1064] = 8'd162; long_chirp_lut[1065] = 8'd254; long_chirp_lut[1066] = 8'd170; long_chirp_lut[1067] = 8'd 27; long_chirp_lut[1068] = 8'd 23; long_chirp_lut[1069] = 8'd165; long_chirp_lut[1070] = 8'd254; long_chirp_lut[1071] = 8'd168;
|
||||
long_chirp_lut[1072] = 8'd 25; long_chirp_lut[1073] = 8'd 24; long_chirp_lut[1074] = 8'd166; long_chirp_lut[1075] = 8'd254; long_chirp_lut[1076] = 8'd167; long_chirp_lut[1077] = 8'd 25; long_chirp_lut[1078] = 8'd 25; long_chirp_lut[1079] = 8'd167; long_chirp_lut[1080] = 8'd255; long_chirp_lut[1081] = 8'd167; long_chirp_lut[1082] = 8'd 25; long_chirp_lut[1083] = 8'd 25; long_chirp_lut[1084] = 8'd166; long_chirp_lut[1085] = 8'd254; long_chirp_lut[1086] = 8'd167; long_chirp_lut[1087] = 8'd 25;
|
||||
long_chirp_lut[1088] = 8'd 24; long_chirp_lut[1089] = 8'd165; long_chirp_lut[1090] = 8'd254; long_chirp_lut[1091] = 8'd169; long_chirp_lut[1092] = 8'd 26; long_chirp_lut[1093] = 8'd 23; long_chirp_lut[1094] = 8'd163; long_chirp_lut[1095] = 8'd254; long_chirp_lut[1096] = 8'd171; long_chirp_lut[1097] = 8'd 28; long_chirp_lut[1098] = 8'd 21; long_chirp_lut[1099] = 8'd160; long_chirp_lut[1100] = 8'd254; long_chirp_lut[1101] = 8'd174; long_chirp_lut[1102] = 8'd 30; long_chirp_lut[1103] = 8'd 19;
|
||||
long_chirp_lut[1104] = 8'd157; long_chirp_lut[1105] = 8'd254; long_chirp_lut[1106] = 8'd178; long_chirp_lut[1107] = 8'd 33; long_chirp_lut[1108] = 8'd 17; long_chirp_lut[1109] = 8'd152; long_chirp_lut[1110] = 8'd253; long_chirp_lut[1111] = 8'd183; long_chirp_lut[1112] = 8'd 37; long_chirp_lut[1113] = 8'd 14; long_chirp_lut[1114] = 8'd146; long_chirp_lut[1115] = 8'd252; long_chirp_lut[1116] = 8'd189; long_chirp_lut[1117] = 8'd 42; long_chirp_lut[1118] = 8'd 11; long_chirp_lut[1119] = 8'd139;
|
||||
long_chirp_lut[1120] = 8'd251; long_chirp_lut[1121] = 8'd195; long_chirp_lut[1122] = 8'd 47; long_chirp_lut[1123] = 8'd 9; long_chirp_lut[1124] = 8'd132; long_chirp_lut[1125] = 8'd249; long_chirp_lut[1126] = 8'd201; long_chirp_lut[1127] = 8'd 54; long_chirp_lut[1128] = 8'd 6; long_chirp_lut[1129] = 8'd123; long_chirp_lut[1130] = 8'd246; long_chirp_lut[1131] = 8'd209; long_chirp_lut[1132] = 8'd 61; long_chirp_lut[1133] = 8'd 4; long_chirp_lut[1134] = 8'd114; long_chirp_lut[1135] = 8'd242;
|
||||
long_chirp_lut[1136] = 8'd216; long_chirp_lut[1137] = 8'd 70; long_chirp_lut[1138] = 8'd 2; long_chirp_lut[1139] = 8'd103; long_chirp_lut[1140] = 8'd237; long_chirp_lut[1141] = 8'd223; long_chirp_lut[1142] = 8'd 80; long_chirp_lut[1143] = 8'd 1; long_chirp_lut[1144] = 8'd 92; long_chirp_lut[1145] = 8'd231; long_chirp_lut[1146] = 8'd231; long_chirp_lut[1147] = 8'd 91; long_chirp_lut[1148] = 8'd 1; long_chirp_lut[1149] = 8'd 81; long_chirp_lut[1150] = 8'd224; long_chirp_lut[1151] = 8'd237;
|
||||
long_chirp_lut[1152] = 8'd104; long_chirp_lut[1153] = 8'd 2; long_chirp_lut[1154] = 8'd 69; long_chirp_lut[1155] = 8'd214; long_chirp_lut[1156] = 8'd244; long_chirp_lut[1157] = 8'd117; long_chirp_lut[1158] = 8'd 5; long_chirp_lut[1159] = 8'd 56; long_chirp_lut[1160] = 8'd203; long_chirp_lut[1161] = 8'd249; long_chirp_lut[1162] = 8'd132; long_chirp_lut[1163] = 8'd 9; long_chirp_lut[1164] = 8'd 45; long_chirp_lut[1165] = 8'd191; long_chirp_lut[1166] = 8'd252; long_chirp_lut[1167] = 8'd148;
|
||||
long_chirp_lut[1168] = 8'd 16; long_chirp_lut[1169] = 8'd 33; long_chirp_lut[1170] = 8'd176; long_chirp_lut[1171] = 8'd254; long_chirp_lut[1172] = 8'd164; long_chirp_lut[1173] = 8'd 25; long_chirp_lut[1174] = 8'd 23; long_chirp_lut[1175] = 8'd160; long_chirp_lut[1176] = 8'd254; long_chirp_lut[1177] = 8'd180; long_chirp_lut[1178] = 8'd 36; long_chirp_lut[1179] = 8'd 14; long_chirp_lut[1180] = 8'd142; long_chirp_lut[1181] = 8'd251; long_chirp_lut[1182] = 8'd196; long_chirp_lut[1183] = 8'd 50;
|
||||
long_chirp_lut[1184] = 8'd 7; long_chirp_lut[1185] = 8'd123; long_chirp_lut[1186] = 8'd246; long_chirp_lut[1187] = 8'd212; long_chirp_lut[1188] = 8'd 66; long_chirp_lut[1189] = 8'd 2; long_chirp_lut[1190] = 8'd104; long_chirp_lut[1191] = 8'd237; long_chirp_lut[1192] = 8'd226; long_chirp_lut[1193] = 8'd 85; long_chirp_lut[1194] = 8'd 1; long_chirp_lut[1195] = 8'd 84; long_chirp_lut[1196] = 8'd225; long_chirp_lut[1197] = 8'd238; long_chirp_lut[1198] = 8'd106; long_chirp_lut[1199] = 8'd 2;
|
||||
long_chirp_lut[1200] = 8'd 64; long_chirp_lut[1201] = 8'd209; long_chirp_lut[1202] = 8'd247; long_chirp_lut[1203] = 8'd128; long_chirp_lut[1204] = 8'd 8; long_chirp_lut[1205] = 8'd 46; long_chirp_lut[1206] = 8'd190; long_chirp_lut[1207] = 8'd253; long_chirp_lut[1208] = 8'd151; long_chirp_lut[1209] = 8'd 18; long_chirp_lut[1210] = 8'd 29; long_chirp_lut[1211] = 8'd169; long_chirp_lut[1212] = 8'd254; long_chirp_lut[1213] = 8'd174; long_chirp_lut[1214] = 8'd 33; long_chirp_lut[1215] = 8'd 15;
|
||||
long_chirp_lut[1216] = 8'd145; long_chirp_lut[1217] = 8'd252; long_chirp_lut[1218] = 8'd196; long_chirp_lut[1219] = 8'd 51; long_chirp_lut[1220] = 8'd 6; long_chirp_lut[1221] = 8'd119; long_chirp_lut[1222] = 8'd243; long_chirp_lut[1223] = 8'd216; long_chirp_lut[1224] = 8'd 73; long_chirp_lut[1225] = 8'd 1; long_chirp_lut[1226] = 8'd 93; long_chirp_lut[1227] = 8'd230; long_chirp_lut[1228] = 8'd233; long_chirp_lut[1229] = 8'd 99; long_chirp_lut[1230] = 8'd 2; long_chirp_lut[1231] = 8'd 68;
|
||||
long_chirp_lut[1232] = 8'd212; long_chirp_lut[1233] = 8'd246; long_chirp_lut[1234] = 8'd127; long_chirp_lut[1235] = 8'd 8; long_chirp_lut[1236] = 8'd 45; long_chirp_lut[1237] = 8'd188; long_chirp_lut[1238] = 8'd253; long_chirp_lut[1239] = 8'd155; long_chirp_lut[1240] = 8'd 21; long_chirp_lut[1241] = 8'd 25; long_chirp_lut[1242] = 8'd161; long_chirp_lut[1243] = 8'd254; long_chirp_lut[1244] = 8'd183; long_chirp_lut[1245] = 8'd 41; long_chirp_lut[1246] = 8'd 10; long_chirp_lut[1247] = 8'd131;
|
||||
long_chirp_lut[1248] = 8'd247; long_chirp_lut[1249] = 8'd209; long_chirp_lut[1250] = 8'd 66; long_chirp_lut[1251] = 8'd 2; long_chirp_lut[1252] = 8'd100; long_chirp_lut[1253] = 8'd234; long_chirp_lut[1254] = 8'd231; long_chirp_lut[1255] = 8'd 95; long_chirp_lut[1256] = 8'd 1; long_chirp_lut[1257] = 8'd 70; long_chirp_lut[1258] = 8'd212; long_chirp_lut[1259] = 8'd246; long_chirp_lut[1260] = 8'd128; long_chirp_lut[1261] = 8'd 9; long_chirp_lut[1262] = 8'd 42; long_chirp_lut[1263] = 8'd185;
|
||||
long_chirp_lut[1264] = 8'd254; long_chirp_lut[1265] = 8'd161; long_chirp_lut[1266] = 8'd 25; long_chirp_lut[1267] = 8'd 20; long_chirp_lut[1268] = 8'd153; long_chirp_lut[1269] = 8'd253; long_chirp_lut[1270] = 8'd193; long_chirp_lut[1271] = 8'd 49; long_chirp_lut[1272] = 8'd 6; long_chirp_lut[1273] = 8'd118; long_chirp_lut[1274] = 8'd242; long_chirp_lut[1275] = 8'd220; long_chirp_lut[1276] = 8'd 80; long_chirp_lut[1277] = 8'd 1; long_chirp_lut[1278] = 8'd 83; long_chirp_lut[1279] = 8'd222;
|
||||
long_chirp_lut[1280] = 8'd241; long_chirp_lut[1281] = 8'd116; long_chirp_lut[1282] = 8'd 5; long_chirp_lut[1283] = 8'd 50; long_chirp_lut[1284] = 8'd193; long_chirp_lut[1285] = 8'd253; long_chirp_lut[1286] = 8'd153; long_chirp_lut[1287] = 8'd 21; long_chirp_lut[1288] = 8'd 24; long_chirp_lut[1289] = 8'd158; long_chirp_lut[1290] = 8'd253; long_chirp_lut[1291] = 8'd189; long_chirp_lut[1292] = 8'd 47; long_chirp_lut[1293] = 8'd 7; long_chirp_lut[1294] = 8'd119; long_chirp_lut[1295] = 8'd242;
|
||||
long_chirp_lut[1296] = 8'd220; long_chirp_lut[1297] = 8'd 81; long_chirp_lut[1298] = 8'd 1; long_chirp_lut[1299] = 8'd 81; long_chirp_lut[1300] = 8'd220; long_chirp_lut[1301] = 8'd243; long_chirp_lut[1302] = 8'd120; long_chirp_lut[1303] = 8'd 7; long_chirp_lut[1304] = 8'd 46; long_chirp_lut[1305] = 8'd187; long_chirp_lut[1306] = 8'd254; long_chirp_lut[1307] = 8'd161; long_chirp_lut[1308] = 8'd 26; long_chirp_lut[1309] = 8'd 19; long_chirp_lut[1310] = 8'd148; long_chirp_lut[1311] = 8'd251;
|
||||
long_chirp_lut[1312] = 8'd199; long_chirp_lut[1313] = 8'd 57; long_chirp_lut[1314] = 8'd 3; long_chirp_lut[1315] = 8'd105; long_chirp_lut[1316] = 8'd235; long_chirp_lut[1317] = 8'd230; long_chirp_lut[1318] = 8'd 97; long_chirp_lut[1319] = 8'd 2; long_chirp_lut[1320] = 8'd 64; long_chirp_lut[1321] = 8'd206; long_chirp_lut[1322] = 8'd250; long_chirp_lut[1323] = 8'd141; long_chirp_lut[1324] = 8'd 16; long_chirp_lut[1325] = 8'd 30; long_chirp_lut[1326] = 8'd166; long_chirp_lut[1327] = 8'd254;
|
||||
long_chirp_lut[1328] = 8'd184; long_chirp_lut[1329] = 8'd 44; long_chirp_lut[1330] = 8'd 8; long_chirp_lut[1331] = 8'd121; long_chirp_lut[1332] = 8'd242; long_chirp_lut[1333] = 8'd221; long_chirp_lut[1334] = 8'd 83; long_chirp_lut[1335] = 8'd 1; long_chirp_lut[1336] = 8'd 76; long_chirp_lut[1337] = 8'd215; long_chirp_lut[1338] = 8'd246; long_chirp_lut[1339] = 8'd130; long_chirp_lut[1340] = 8'd 11; long_chirp_lut[1341] = 8'd 37; long_chirp_lut[1342] = 8'd175; long_chirp_lut[1343] = 8'd254;
|
||||
long_chirp_lut[1344] = 8'd177; long_chirp_lut[1345] = 8'd 38; long_chirp_lut[1346] = 8'd 10; long_chirp_lut[1347] = 8'd127; long_chirp_lut[1348] = 8'd245; long_chirp_lut[1349] = 8'd217; long_chirp_lut[1350] = 8'd 79; long_chirp_lut[1351] = 8'd 1; long_chirp_lut[1352] = 8'd 79; long_chirp_lut[1353] = 8'd217; long_chirp_lut[1354] = 8'd245; long_chirp_lut[1355] = 8'd128; long_chirp_lut[1356] = 8'd 10; long_chirp_lut[1357] = 8'd 37; long_chirp_lut[1358] = 8'd175; long_chirp_lut[1359] = 8'd254;
|
||||
long_chirp_lut[1360] = 8'd178; long_chirp_lut[1361] = 8'd 39; long_chirp_lut[1362] = 8'd 9; long_chirp_lut[1363] = 8'd124; long_chirp_lut[1364] = 8'd243; long_chirp_lut[1365] = 8'd220; long_chirp_lut[1366] = 8'd 83; long_chirp_lut[1367] = 8'd 1; long_chirp_lut[1368] = 8'd 73; long_chirp_lut[1369] = 8'd212; long_chirp_lut[1370] = 8'd247; long_chirp_lut[1371] = 8'd136; long_chirp_lut[1372] = 8'd 14; long_chirp_lut[1373] = 8'd 31; long_chirp_lut[1374] = 8'd166; long_chirp_lut[1375] = 8'd254;
|
||||
long_chirp_lut[1376] = 8'd187; long_chirp_lut[1377] = 8'd 48; long_chirp_lut[1378] = 8'd 5; long_chirp_lut[1379] = 8'd112; long_chirp_lut[1380] = 8'd237; long_chirp_lut[1381] = 8'd229; long_chirp_lut[1382] = 8'd 97; long_chirp_lut[1383] = 8'd 2; long_chirp_lut[1384] = 8'd 60; long_chirp_lut[1385] = 8'd200; long_chirp_lut[1386] = 8'd252; long_chirp_lut[1387] = 8'd153; long_chirp_lut[1388] = 8'd 23; long_chirp_lut[1389] = 8'd 20; long_chirp_lut[1390] = 8'd148; long_chirp_lut[1391] = 8'd251;
|
||||
long_chirp_lut[1392] = 8'd204; long_chirp_lut[1393] = 8'd 65; long_chirp_lut[1394] = 8'd 1; long_chirp_lut[1395] = 8'd 91; long_chirp_lut[1396] = 8'd225; long_chirp_lut[1397] = 8'd241; long_chirp_lut[1398] = 8'd120; long_chirp_lut[1399] = 8'd 8; long_chirp_lut[1400] = 8'd 40; long_chirp_lut[1401] = 8'd178; long_chirp_lut[1402] = 8'd254; long_chirp_lut[1403] = 8'd178; long_chirp_lut[1404] = 8'd 41; long_chirp_lut[1405] = 8'd 8; long_chirp_lut[1406] = 8'd119; long_chirp_lut[1407] = 8'd241;
|
||||
long_chirp_lut[1408] = 8'd226; long_chirp_lut[1409] = 8'd 93; long_chirp_lut[1410] = 8'd 2; long_chirp_lut[1411] = 8'd 62; long_chirp_lut[1412] = 8'd201; long_chirp_lut[1413] = 8'd252; long_chirp_lut[1414] = 8'd153; long_chirp_lut[1415] = 8'd 24; long_chirp_lut[1416] = 8'd 19; long_chirp_lut[1417] = 8'd144; long_chirp_lut[1418] = 8'd250; long_chirp_lut[1419] = 8'd209; long_chirp_lut[1420] = 8'd 71; long_chirp_lut[1421] = 8'd 1; long_chirp_lut[1422] = 8'd 83; long_chirp_lut[1423] = 8'd218;
|
||||
long_chirp_lut[1424] = 8'd245; long_chirp_lut[1425] = 8'd132; long_chirp_lut[1426] = 8'd 13; long_chirp_lut[1427] = 8'd 31; long_chirp_lut[1428] = 8'd164; long_chirp_lut[1429] = 8'd254; long_chirp_lut[1430] = 8'd193; long_chirp_lut[1431] = 8'd 54; long_chirp_lut[1432] = 8'd 3; long_chirp_lut[1433] = 8'd100; long_chirp_lut[1434] = 8'd230; long_chirp_lut[1435] = 8'd238; long_chirp_lut[1436] = 8'd115; long_chirp_lut[1437] = 8'd 7; long_chirp_lut[1438] = 8'd 42; long_chirp_lut[1439] = 8'd179;
|
||||
long_chirp_lut[1440] = 8'd255; long_chirp_lut[1441] = 8'd179; long_chirp_lut[1442] = 8'd 43; long_chirp_lut[1443] = 8'd 7; long_chirp_lut[1444] = 8'd114; long_chirp_lut[1445] = 8'd237; long_chirp_lut[1446] = 8'd231; long_chirp_lut[1447] = 8'd102; long_chirp_lut[1448] = 8'd 4; long_chirp_lut[1449] = 8'd 52; long_chirp_lut[1450] = 8'd189; long_chirp_lut[1451] = 8'd254; long_chirp_lut[1452] = 8'd169; long_chirp_lut[1453] = 8'd 35; long_chirp_lut[1454] = 8'd 10; long_chirp_lut[1455] = 8'd123;
|
||||
long_chirp_lut[1456] = 8'd242; long_chirp_lut[1457] = 8'd225; long_chirp_lut[1458] = 8'd 94; long_chirp_lut[1459] = 8'd 2; long_chirp_lut[1460] = 8'd 58; long_chirp_lut[1461] = 8'd195; long_chirp_lut[1462] = 8'd253; long_chirp_lut[1463] = 8'd163; long_chirp_lut[1464] = 8'd 31; long_chirp_lut[1465] = 8'd 12; long_chirp_lut[1466] = 8'd128; long_chirp_lut[1467] = 8'd243; long_chirp_lut[1468] = 8'd223; long_chirp_lut[1469] = 8'd 90; long_chirp_lut[1470] = 8'd 2; long_chirp_lut[1471] = 8'd 60;
|
||||
long_chirp_lut[1472] = 8'd198; long_chirp_lut[1473] = 8'd253; long_chirp_lut[1474] = 8'd162; long_chirp_lut[1475] = 8'd 31; long_chirp_lut[1476] = 8'd 13; long_chirp_lut[1477] = 8'd129; long_chirp_lut[1478] = 8'd243; long_chirp_lut[1479] = 8'd223; long_chirp_lut[1480] = 8'd 91; long_chirp_lut[1481] = 8'd 2; long_chirp_lut[1482] = 8'd 59; long_chirp_lut[1483] = 8'd196; long_chirp_lut[1484] = 8'd253; long_chirp_lut[1485] = 8'd164; long_chirp_lut[1486] = 8'd 33; long_chirp_lut[1487] = 8'd 11;
|
||||
long_chirp_lut[1488] = 8'd125; long_chirp_lut[1489] = 8'd242; long_chirp_lut[1490] = 8'd226; long_chirp_lut[1491] = 8'd 96; long_chirp_lut[1492] = 8'd 3; long_chirp_lut[1493] = 8'd 54; long_chirp_lut[1494] = 8'd190; long_chirp_lut[1495] = 8'd254; long_chirp_lut[1496] = 8'd171; long_chirp_lut[1497] = 8'd 38; long_chirp_lut[1498] = 8'd 8; long_chirp_lut[1499] = 8'd116; long_chirp_lut[1500] = 8'd237; long_chirp_lut[1501] = 8'd232; long_chirp_lut[1502] = 8'd106; long_chirp_lut[1503] = 8'd 5;
|
||||
long_chirp_lut[1504] = 8'd 46; long_chirp_lut[1505] = 8'd181; long_chirp_lut[1506] = 8'd254; long_chirp_lut[1507] = 8'd182; long_chirp_lut[1508] = 8'd 47; long_chirp_lut[1509] = 8'd 4; long_chirp_lut[1510] = 8'd104; long_chirp_lut[1511] = 8'd230; long_chirp_lut[1512] = 8'd239; long_chirp_lut[1513] = 8'd120; long_chirp_lut[1514] = 8'd 9; long_chirp_lut[1515] = 8'd 35; long_chirp_lut[1516] = 8'd166; long_chirp_lut[1517] = 8'd253; long_chirp_lut[1518] = 8'd196; long_chirp_lut[1519] = 8'd 60;
|
||||
long_chirp_lut[1520] = 8'd 1; long_chirp_lut[1521] = 8'd 87; long_chirp_lut[1522] = 8'd219; long_chirp_lut[1523] = 8'd246; long_chirp_lut[1524] = 8'd138; long_chirp_lut[1525] = 8'd 18; long_chirp_lut[1526] = 8'd 23; long_chirp_lut[1527] = 8'd147; long_chirp_lut[1528] = 8'd249; long_chirp_lut[1529] = 8'd212; long_chirp_lut[1530] = 8'd 79; long_chirp_lut[1531] = 8'd 1; long_chirp_lut[1532] = 8'd 67; long_chirp_lut[1533] = 8'd202; long_chirp_lut[1534] = 8'd252; long_chirp_lut[1535] = 8'd161;
|
||||
long_chirp_lut[1536] = 8'd 31; long_chirp_lut[1537] = 8'd 11; long_chirp_lut[1538] = 8'd123; long_chirp_lut[1539] = 8'd240; long_chirp_lut[1540] = 8'd229; long_chirp_lut[1541] = 8'd103; long_chirp_lut[1542] = 8'd 5; long_chirp_lut[1543] = 8'd 45; long_chirp_lut[1544] = 8'd179; long_chirp_lut[1545] = 8'd254; long_chirp_lut[1546] = 8'd186; long_chirp_lut[1547] = 8'd 52; long_chirp_lut[1548] = 8'd 3; long_chirp_lut[1549] = 8'd 95; long_chirp_lut[1550] = 8'd224; long_chirp_lut[1551] = 8'd244;
|
||||
long_chirp_lut[1552] = 8'd133; long_chirp_lut[1553] = 8'd 16; long_chirp_lut[1554] = 8'd 24; long_chirp_lut[1555] = 8'd149; long_chirp_lut[1556] = 8'd249; long_chirp_lut[1557] = 8'd213; long_chirp_lut[1558] = 8'd 80; long_chirp_lut[1559] = 8'd 1; long_chirp_lut[1560] = 8'd 64; long_chirp_lut[1561] = 8'd199; long_chirp_lut[1562] = 8'd253; long_chirp_lut[1563] = 8'd167; long_chirp_lut[1564] = 8'd 36; long_chirp_lut[1565] = 8'd 8; long_chirp_lut[1566] = 8'd114; long_chirp_lut[1567] = 8'd235;
|
||||
long_chirp_lut[1568] = 8'd236; long_chirp_lut[1569] = 8'd116; long_chirp_lut[1570] = 8'd 9; long_chirp_lut[1571] = 8'd 35; long_chirp_lut[1572] = 8'd164; long_chirp_lut[1573] = 8'd253; long_chirp_lut[1574] = 8'd201; long_chirp_lut[1575] = 8'd 68; long_chirp_lut[1576] = 8'd 1; long_chirp_lut[1577] = 8'd 75; long_chirp_lut[1578] = 8'd208; long_chirp_lut[1579] = 8'd251; long_chirp_lut[1580] = 8'd157; long_chirp_lut[1581] = 8'd 30; long_chirp_lut[1582] = 8'd 11; long_chirp_lut[1583] = 8'd122;
|
||||
long_chirp_lut[1584] = 8'd239; long_chirp_lut[1585] = 8'd232; long_chirp_lut[1586] = 8'd109; long_chirp_lut[1587] = 8'd 7; long_chirp_lut[1588] = 8'd 38; long_chirp_lut[1589] = 8'd169; long_chirp_lut[1590] = 8'd253; long_chirp_lut[1591] = 8'd199; long_chirp_lut[1592] = 8'd 65; long_chirp_lut[1593] = 8'd 1; long_chirp_lut[1594] = 8'd 77; long_chirp_lut[1595] = 8'd209; long_chirp_lut[1596] = 8'd251; long_chirp_lut[1597] = 8'd157; long_chirp_lut[1598] = 8'd 30; long_chirp_lut[1599] = 8'd 11;
|
||||
long_chirp_lut[1600] = 8'd120; long_chirp_lut[1601] = 8'd237; long_chirp_lut[1602] = 8'd234; long_chirp_lut[1603] = 8'd113; long_chirp_lut[1604] = 8'd 8; long_chirp_lut[1605] = 8'd 35; long_chirp_lut[1606] = 8'd163; long_chirp_lut[1607] = 8'd252; long_chirp_lut[1608] = 8'd204; long_chirp_lut[1609] = 8'd 72; long_chirp_lut[1610] = 8'd 1; long_chirp_lut[1611] = 8'd 69; long_chirp_lut[1612] = 8'd201; long_chirp_lut[1613] = 8'd253; long_chirp_lut[1614] = 8'd167; long_chirp_lut[1615] = 8'd 38;
|
||||
long_chirp_lut[1616] = 8'd 7; long_chirp_lut[1617] = 8'd107; long_chirp_lut[1618] = 8'd230; long_chirp_lut[1619] = 8'd241; long_chirp_lut[1620] = 8'd127; long_chirp_lut[1621] = 8'd 14; long_chirp_lut[1622] = 8'd 25; long_chirp_lut[1623] = 8'd147; long_chirp_lut[1624] = 8'd248; long_chirp_lut[1625] = 8'd218; long_chirp_lut[1626] = 8'd 89; long_chirp_lut[1627] = 8'd 2; long_chirp_lut[1628] = 8'd 52; long_chirp_lut[1629] = 8'd184; long_chirp_lut[1630] = 8'd254; long_chirp_lut[1631] = 8'd187;
|
||||
long_chirp_lut[1632] = 8'd 55; long_chirp_lut[1633] = 8'd 2; long_chirp_lut[1634] = 8'd 85; long_chirp_lut[1635] = 8'd214; long_chirp_lut[1636] = 8'd250; long_chirp_lut[1637] = 8'd153; long_chirp_lut[1638] = 8'd 28; long_chirp_lut[1639] = 8'd 11; long_chirp_lut[1640] = 8'd120; long_chirp_lut[1641] = 8'd237; long_chirp_lut[1642] = 8'd235; long_chirp_lut[1643] = 8'd117; long_chirp_lut[1644] = 8'd 10; long_chirp_lut[1645] = 8'd 30; long_chirp_lut[1646] = 8'd155; long_chirp_lut[1647] = 8'd250;
|
||||
long_chirp_lut[1648] = 8'd213; long_chirp_lut[1649] = 8'd 84; long_chirp_lut[1650] = 8'd 2; long_chirp_lut[1651] = 8'd 55; long_chirp_lut[1652] = 8'd186; long_chirp_lut[1653] = 8'd254; long_chirp_lut[1654] = 8'd186; long_chirp_lut[1655] = 8'd 55; long_chirp_lut[1656] = 8'd 2; long_chirp_lut[1657] = 8'd 83; long_chirp_lut[1658] = 8'd212; long_chirp_lut[1659] = 8'd251; long_chirp_lut[1660] = 8'd157; long_chirp_lut[1661] = 8'd 32; long_chirp_lut[1662] = 8'd 9; long_chirp_lut[1663] = 8'd113;
|
||||
long_chirp_lut[1664] = 8'd233; long_chirp_lut[1665] = 8'd240; long_chirp_lut[1666] = 8'd127; long_chirp_lut[1667] = 8'd 15; long_chirp_lut[1668] = 8'd 23; long_chirp_lut[1669] = 8'd143; long_chirp_lut[1670] = 8'd246; long_chirp_lut[1671] = 8'd223; long_chirp_lut[1672] = 8'd 98; long_chirp_lut[1673] = 8'd 4; long_chirp_lut[1674] = 8'd 42; long_chirp_lut[1675] = 8'd171; long_chirp_lut[1676] = 8'd253; long_chirp_lut[1677] = 8'd202; long_chirp_lut[1678] = 8'd 72; long_chirp_lut[1679] = 8'd 1;
|
||||
long_chirp_lut[1680] = 8'd 64; long_chirp_lut[1681] = 8'd195; long_chirp_lut[1682] = 8'd254; long_chirp_lut[1683] = 8'd179; long_chirp_lut[1684] = 8'd 50; long_chirp_lut[1685] = 8'd 2; long_chirp_lut[1686] = 8'd 88; long_chirp_lut[1687] = 8'd215; long_chirp_lut[1688] = 8'd250; long_chirp_lut[1689] = 8'd155; long_chirp_lut[1690] = 8'd 31; long_chirp_lut[1691] = 8'd 9; long_chirp_lut[1692] = 8'd112; long_chirp_lut[1693] = 8'd231; long_chirp_lut[1694] = 8'd241; long_chirp_lut[1695] = 8'd132;
|
||||
long_chirp_lut[1696] = 8'd 18; long_chirp_lut[1697] = 8'd 19; long_chirp_lut[1698] = 8'd135; long_chirp_lut[1699] = 8'd243; long_chirp_lut[1700] = 8'd229; long_chirp_lut[1701] = 8'd109; long_chirp_lut[1702] = 8'd 8; long_chirp_lut[1703] = 8'd 33; long_chirp_lut[1704] = 8'd157; long_chirp_lut[1705] = 8'd250; long_chirp_lut[1706] = 8'd215; long_chirp_lut[1707] = 8'd 88; long_chirp_lut[1708] = 8'd 3; long_chirp_lut[1709] = 8'd 48; long_chirp_lut[1710] = 8'd176; long_chirp_lut[1711] = 8'd254;
|
||||
long_chirp_lut[1712] = 8'd199; long_chirp_lut[1713] = 8'd 70; long_chirp_lut[1714] = 8'd 1; long_chirp_lut[1715] = 8'd 64; long_chirp_lut[1716] = 8'd193; long_chirp_lut[1717] = 8'd254; long_chirp_lut[1718] = 8'd183; long_chirp_lut[1719] = 8'd 54; long_chirp_lut[1720] = 8'd 1; long_chirp_lut[1721] = 8'd 80; long_chirp_lut[1722] = 8'd208; long_chirp_lut[1723] = 8'd252; long_chirp_lut[1724] = 8'd167; long_chirp_lut[1725] = 8'd 41; long_chirp_lut[1726] = 8'd 4; long_chirp_lut[1727] = 8'd 96;
|
||||
long_chirp_lut[1728] = 8'd220; long_chirp_lut[1729] = 8'd248; long_chirp_lut[1730] = 8'd151; long_chirp_lut[1731] = 8'd 30; long_chirp_lut[1732] = 8'd 9; long_chirp_lut[1733] = 8'd111; long_chirp_lut[1734] = 8'd230; long_chirp_lut[1735] = 8'd243; long_chirp_lut[1736] = 8'd137; long_chirp_lut[1737] = 8'd 21; long_chirp_lut[1738] = 8'd 15; long_chirp_lut[1739] = 8'd125; long_chirp_lut[1740] = 8'd237; long_chirp_lut[1741] = 8'd236; long_chirp_lut[1742] = 8'd123; long_chirp_lut[1743] = 8'd 14;
|
||||
long_chirp_lut[1744] = 8'd 22; long_chirp_lut[1745] = 8'd138; long_chirp_lut[1746] = 8'd243; long_chirp_lut[1747] = 8'd229; long_chirp_lut[1748] = 8'd111; long_chirp_lut[1749] = 8'd 9; long_chirp_lut[1750] = 8'd 29; long_chirp_lut[1751] = 8'd150; long_chirp_lut[1752] = 8'd247; long_chirp_lut[1753] = 8'd222; long_chirp_lut[1754] = 8'd100; long_chirp_lut[1755] = 8'd 6; long_chirp_lut[1756] = 8'd 36; long_chirp_lut[1757] = 8'd159; long_chirp_lut[1758] = 8'd250; long_chirp_lut[1759] = 8'd216;
|
||||
long_chirp_lut[1760] = 8'd 91; long_chirp_lut[1761] = 8'd 4; long_chirp_lut[1762] = 8'd 42; long_chirp_lut[1763] = 8'd168; long_chirp_lut[1764] = 8'd252; long_chirp_lut[1765] = 8'd209; long_chirp_lut[1766] = 8'd 83; long_chirp_lut[1767] = 8'd 2; long_chirp_lut[1768] = 8'd 48; long_chirp_lut[1769] = 8'd175; long_chirp_lut[1770] = 8'd253; long_chirp_lut[1771] = 8'd204; long_chirp_lut[1772] = 8'd 77; long_chirp_lut[1773] = 8'd 1; long_chirp_lut[1774] = 8'd 54; long_chirp_lut[1775] = 8'd181;
|
||||
long_chirp_lut[1776] = 8'd254; long_chirp_lut[1777] = 8'd199; long_chirp_lut[1778] = 8'd 72; long_chirp_lut[1779] = 8'd 1; long_chirp_lut[1780] = 8'd 58; long_chirp_lut[1781] = 8'd185; long_chirp_lut[1782] = 8'd254; long_chirp_lut[1783] = 8'd196; long_chirp_lut[1784] = 8'd 68; long_chirp_lut[1785] = 8'd 1; long_chirp_lut[1786] = 8'd 61; long_chirp_lut[1787] = 8'd188; long_chirp_lut[1788] = 8'd254; long_chirp_lut[1789] = 8'd193; long_chirp_lut[1790] = 8'd 66; long_chirp_lut[1791] = 8'd 1;
|
||||
long_chirp_lut[1792] = 8'd 63; long_chirp_lut[1793] = 8'd190; long_chirp_lut[1794] = 8'd254; long_chirp_lut[1795] = 8'd191; long_chirp_lut[1796] = 8'd 64; long_chirp_lut[1797] = 8'd 1; long_chirp_lut[1798] = 8'd 64; long_chirp_lut[1799] = 8'd191; long_chirp_lut[1800] = 8'd255; long_chirp_lut[1801] = 8'd191; long_chirp_lut[1802] = 8'd 64; long_chirp_lut[1803] = 8'd 1; long_chirp_lut[1804] = 8'd 64; long_chirp_lut[1805] = 8'd191; long_chirp_lut[1806] = 8'd254; long_chirp_lut[1807] = 8'd192;
|
||||
long_chirp_lut[1808] = 8'd 65; long_chirp_lut[1809] = 8'd 1; long_chirp_lut[1810] = 8'd 62; long_chirp_lut[1811] = 8'd189; long_chirp_lut[1812] = 8'd254; long_chirp_lut[1813] = 8'd194; long_chirp_lut[1814] = 8'd 67; long_chirp_lut[1815] = 8'd 1; long_chirp_lut[1816] = 8'd 60; long_chirp_lut[1817] = 8'd186; long_chirp_lut[1818] = 8'd254; long_chirp_lut[1819] = 8'd197; long_chirp_lut[1820] = 8'd 71; long_chirp_lut[1821] = 8'd 1; long_chirp_lut[1822] = 8'd 56; long_chirp_lut[1823] = 8'd182;
|
||||
long_chirp_lut[1824] = 8'd254; long_chirp_lut[1825] = 8'd201; long_chirp_lut[1826] = 8'd 75; long_chirp_lut[1827] = 8'd 1; long_chirp_lut[1828] = 8'd 52; long_chirp_lut[1829] = 8'd177; long_chirp_lut[1830] = 8'd253; long_chirp_lut[1831] = 8'd206; long_chirp_lut[1832] = 8'd 81; long_chirp_lut[1833] = 8'd 2; long_chirp_lut[1834] = 8'd 46; long_chirp_lut[1835] = 8'd171; long_chirp_lut[1836] = 8'd252; long_chirp_lut[1837] = 8'd212; long_chirp_lut[1838] = 8'd 88; long_chirp_lut[1839] = 8'd 4;
|
||||
long_chirp_lut[1840] = 8'd 40; long_chirp_lut[1841] = 8'd162; long_chirp_lut[1842] = 8'd250; long_chirp_lut[1843] = 8'd218; long_chirp_lut[1844] = 8'd 97; long_chirp_lut[1845] = 8'd 6; long_chirp_lut[1846] = 8'd 34; long_chirp_lut[1847] = 8'd153; long_chirp_lut[1848] = 8'd247; long_chirp_lut[1849] = 8'd225; long_chirp_lut[1850] = 8'd107; long_chirp_lut[1851] = 8'd 9; long_chirp_lut[1852] = 8'd 27; long_chirp_lut[1853] = 8'd142; long_chirp_lut[1854] = 8'd243; long_chirp_lut[1855] = 8'd232;
|
||||
long_chirp_lut[1856] = 8'd119; long_chirp_lut[1857] = 8'd 14; long_chirp_lut[1858] = 8'd 20; long_chirp_lut[1859] = 8'd130; long_chirp_lut[1860] = 8'd237; long_chirp_lut[1861] = 8'd239; long_chirp_lut[1862] = 8'd132; long_chirp_lut[1863] = 8'd 21; long_chirp_lut[1864] = 8'd 13; long_chirp_lut[1865] = 8'd116; long_chirp_lut[1866] = 8'd230; long_chirp_lut[1867] = 8'd245; long_chirp_lut[1868] = 8'd146; long_chirp_lut[1869] = 8'd 30; long_chirp_lut[1870] = 8'd 8; long_chirp_lut[1871] = 8'd101;
|
||||
long_chirp_lut[1872] = 8'd220; long_chirp_lut[1873] = 8'd250; long_chirp_lut[1874] = 8'd162; long_chirp_lut[1875] = 8'd 41; long_chirp_lut[1876] = 8'd 3; long_chirp_lut[1877] = 8'd 85; long_chirp_lut[1878] = 8'd208; long_chirp_lut[1879] = 8'd253; long_chirp_lut[1880] = 8'd178; long_chirp_lut[1881] = 8'd 54; long_chirp_lut[1882] = 8'd 1; long_chirp_lut[1883] = 8'd 69; long_chirp_lut[1884] = 8'd193; long_chirp_lut[1885] = 8'd254; long_chirp_lut[1886] = 8'd194; long_chirp_lut[1887] = 8'd 70;
|
||||
long_chirp_lut[1888] = 8'd 1; long_chirp_lut[1889] = 8'd 53; long_chirp_lut[1890] = 8'd176; long_chirp_lut[1891] = 8'd253; long_chirp_lut[1892] = 8'd210; long_chirp_lut[1893] = 8'd 88; long_chirp_lut[1894] = 8'd 4; long_chirp_lut[1895] = 8'd 37; long_chirp_lut[1896] = 8'd157; long_chirp_lut[1897] = 8'd248; long_chirp_lut[1898] = 8'd225; long_chirp_lut[1899] = 8'd109; long_chirp_lut[1900] = 8'd 11; long_chirp_lut[1901] = 8'd 23; long_chirp_lut[1902] = 8'd135; long_chirp_lut[1903] = 8'd239;
|
||||
long_chirp_lut[1904] = 8'd238; long_chirp_lut[1905] = 8'd132; long_chirp_lut[1906] = 8'd 22; long_chirp_lut[1907] = 8'd 12; long_chirp_lut[1908] = 8'd112; long_chirp_lut[1909] = 8'd226; long_chirp_lut[1910] = 8'd247; long_chirp_lut[1911] = 8'd155; long_chirp_lut[1912] = 8'd 37; long_chirp_lut[1913] = 8'd 4; long_chirp_lut[1914] = 8'd 88; long_chirp_lut[1915] = 8'd209; long_chirp_lut[1916] = 8'd253; long_chirp_lut[1917] = 8'd179; long_chirp_lut[1918] = 8'd 57; long_chirp_lut[1919] = 8'd 1;
|
||||
long_chirp_lut[1920] = 8'd 64; long_chirp_lut[1921] = 8'd187; long_chirp_lut[1922] = 8'd254; long_chirp_lut[1923] = 8'd202; long_chirp_lut[1924] = 8'd 80; long_chirp_lut[1925] = 8'd 3; long_chirp_lut[1926] = 8'd 42; long_chirp_lut[1927] = 8'd162; long_chirp_lut[1928] = 8'd249; long_chirp_lut[1929] = 8'd223; long_chirp_lut[1930] = 8'd107; long_chirp_lut[1931] = 8'd 11; long_chirp_lut[1932] = 8'd 23; long_chirp_lut[1933] = 8'd133; long_chirp_lut[1934] = 8'd238; long_chirp_lut[1935] = 8'd240;
|
||||
long_chirp_lut[1936] = 8'd137; long_chirp_lut[1937] = 8'd 25; long_chirp_lut[1938] = 8'd 9; long_chirp_lut[1939] = 8'd103; long_chirp_lut[1940] = 8'd220; long_chirp_lut[1941] = 8'd251; long_chirp_lut[1942] = 8'd167; long_chirp_lut[1943] = 8'd 47; long_chirp_lut[1944] = 8'd 2; long_chirp_lut[1945] = 8'd 73; long_chirp_lut[1946] = 8'd195; long_chirp_lut[1947] = 8'd254; long_chirp_lut[1948] = 8'd196; long_chirp_lut[1949] = 8'd 74; long_chirp_lut[1950] = 8'd 2; long_chirp_lut[1951] = 8'd 46;
|
||||
long_chirp_lut[1952] = 8'd166; long_chirp_lut[1953] = 8'd250; long_chirp_lut[1954] = 8'd221; long_chirp_lut[1955] = 8'd106; long_chirp_lut[1956] = 8'd 10; long_chirp_lut[1957] = 8'd 23; long_chirp_lut[1958] = 8'd132; long_chirp_lut[1959] = 8'd237; long_chirp_lut[1960] = 8'd241; long_chirp_lut[1961] = 8'd141; long_chirp_lut[1962] = 8'd 28; long_chirp_lut[1963] = 8'd 7; long_chirp_lut[1964] = 8'd 96; long_chirp_lut[1965] = 8'd214; long_chirp_lut[1966] = 8'd252; long_chirp_lut[1967] = 8'd176;
|
||||
long_chirp_lut[1968] = 8'd 55; long_chirp_lut[1969] = 8'd 1; long_chirp_lut[1970] = 8'd 62; long_chirp_lut[1971] = 8'd184; long_chirp_lut[1972] = 8'd254; long_chirp_lut[1973] = 8'd208; long_chirp_lut[1974] = 8'd 89; long_chirp_lut[1975] = 8'd 5; long_chirp_lut[1976] = 8'd 33; long_chirp_lut[1977] = 8'd147; long_chirp_lut[1978] = 8'd243; long_chirp_lut[1979] = 8'd234; long_chirp_lut[1980] = 8'd127; long_chirp_lut[1981] = 8'd 21; long_chirp_lut[1982] = 8'd 11; long_chirp_lut[1983] = 8'd107;
|
||||
long_chirp_lut[1984] = 8'd222; long_chirp_lut[1985] = 8'd250; long_chirp_lut[1986] = 8'd167; long_chirp_lut[1987] = 8'd 48; long_chirp_lut[1988] = 8'd 1; long_chirp_lut[1989] = 8'd 69; long_chirp_lut[1990] = 8'd189; long_chirp_lut[1991] = 8'd254; long_chirp_lut[1992] = 8'd204; long_chirp_lut[1993] = 8'd 85; long_chirp_lut[1994] = 8'd 4; long_chirp_lut[1995] = 8'd 35; long_chirp_lut[1996] = 8'd149; long_chirp_lut[1997] = 8'd244; long_chirp_lut[1998] = 8'd234; long_chirp_lut[1999] = 8'd128;
|
||||
long_chirp_lut[2000] = 8'd 21; long_chirp_lut[2001] = 8'd 11; long_chirp_lut[2002] = 8'd105; long_chirp_lut[2003] = 8'd220; long_chirp_lut[2004] = 8'd251; long_chirp_lut[2005] = 8'd171; long_chirp_lut[2006] = 8'd 52; long_chirp_lut[2007] = 8'd 1; long_chirp_lut[2008] = 8'd 63; long_chirp_lut[2009] = 8'd183; long_chirp_lut[2010] = 8'd253; long_chirp_lut[2011] = 8'd211; long_chirp_lut[2012] = 8'd 94; long_chirp_lut[2013] = 8'd 7; long_chirp_lut[2014] = 8'd 28; long_chirp_lut[2015] = 8'd138;
|
||||
long_chirp_lut[2016] = 8'd239; long_chirp_lut[2017] = 8'd240; long_chirp_lut[2018] = 8'd141; long_chirp_lut[2019] = 8'd 30; long_chirp_lut[2020] = 8'd 6; long_chirp_lut[2021] = 8'd 90; long_chirp_lut[2022] = 8'd208; long_chirp_lut[2023] = 8'd254; long_chirp_lut[2024] = 8'd187; long_chirp_lut[2025] = 8'd 68; long_chirp_lut[2026] = 8'd 1; long_chirp_lut[2027] = 8'd 47; long_chirp_lut[2028] = 8'd164; long_chirp_lut[2029] = 8'd249; long_chirp_lut[2030] = 8'd226; long_chirp_lut[2031] = 8'd116;
|
||||
long_chirp_lut[2032] = 8'd 16; long_chirp_lut[2033] = 8'd 15; long_chirp_lut[2034] = 8'd114; long_chirp_lut[2035] = 8'd224; long_chirp_lut[2036] = 8'd250; long_chirp_lut[2037] = 8'd167; long_chirp_lut[2038] = 8'd 49; long_chirp_lut[2039] = 8'd 1; long_chirp_lut[2040] = 8'd 64; long_chirp_lut[2041] = 8'd183; long_chirp_lut[2042] = 8'd253; long_chirp_lut[2043] = 8'd213; long_chirp_lut[2044] = 8'd 97; long_chirp_lut[2045] = 8'd 8; long_chirp_lut[2046] = 8'd 24; long_chirp_lut[2047] = 8'd131;
|
||||
long_chirp_lut[2048] = 8'd235; long_chirp_lut[2049] = 8'd244; long_chirp_lut[2050] = 8'd151; long_chirp_lut[2051] = 8'd 38; long_chirp_lut[2052] = 8'd 3; long_chirp_lut[2053] = 8'd 77; long_chirp_lut[2054] = 8'd195; long_chirp_lut[2055] = 8'd254; long_chirp_lut[2056] = 8'd202; long_chirp_lut[2057] = 8'd 85; long_chirp_lut[2058] = 8'd 5; long_chirp_lut[2059] = 8'd 32; long_chirp_lut[2060] = 8'd142; long_chirp_lut[2061] = 8'd240; long_chirp_lut[2062] = 8'd240; long_chirp_lut[2063] = 8'd142;
|
||||
long_chirp_lut[2064] = 8'd 31; long_chirp_lut[2065] = 8'd 5; long_chirp_lut[2066] = 8'd 85; long_chirp_lut[2067] = 8'd202; long_chirp_lut[2068] = 8'd254; long_chirp_lut[2069] = 8'd197; long_chirp_lut[2070] = 8'd 79; long_chirp_lut[2071] = 8'd 3; long_chirp_lut[2072] = 8'd 35; long_chirp_lut[2073] = 8'd147; long_chirp_lut[2074] = 8'd242; long_chirp_lut[2075] = 8'd238; long_chirp_lut[2076] = 8'd138; long_chirp_lut[2077] = 8'd 29; long_chirp_lut[2078] = 8'd 5; long_chirp_lut[2079] = 8'd 87;
|
||||
long_chirp_lut[2080] = 8'd203; long_chirp_lut[2081] = 8'd254; long_chirp_lut[2082] = 8'd196; long_chirp_lut[2083] = 8'd 79; long_chirp_lut[2084] = 8'd 3; long_chirp_lut[2085] = 8'd 35; long_chirp_lut[2086] = 8'd146; long_chirp_lut[2087] = 8'd241; long_chirp_lut[2088] = 8'd239; long_chirp_lut[2089] = 8'd141; long_chirp_lut[2090] = 8'd 31; long_chirp_lut[2091] = 8'd 4; long_chirp_lut[2092] = 8'd 83; long_chirp_lut[2093] = 8'd200; long_chirp_lut[2094] = 8'd254; long_chirp_lut[2095] = 8'd201;
|
||||
long_chirp_lut[2096] = 8'd 84; long_chirp_lut[2097] = 8'd 5; long_chirp_lut[2098] = 8'd 30; long_chirp_lut[2099] = 8'd139; long_chirp_lut[2100] = 8'd237; long_chirp_lut[2101] = 8'd243; long_chirp_lut[2102] = 8'd150; long_chirp_lut[2103] = 8'd 38; long_chirp_lut[2104] = 8'd 2; long_chirp_lut[2105] = 8'd 73; long_chirp_lut[2106] = 8'd190; long_chirp_lut[2107] = 8'd254; long_chirp_lut[2108] = 8'd210; long_chirp_lut[2109] = 8'd 96; long_chirp_lut[2110] = 8'd 9; long_chirp_lut[2111] = 8'd 22;
|
||||
long_chirp_lut[2112] = 8'd125; long_chirp_lut[2113] = 8'd230; long_chirp_lut[2114] = 8'd248; long_chirp_lut[2115] = 8'd164; long_chirp_lut[2116] = 8'd 50; long_chirp_lut[2117] = 8'd 1; long_chirp_lut[2118] = 8'd 59; long_chirp_lut[2119] = 8'd175; long_chirp_lut[2120] = 8'd251; long_chirp_lut[2121] = 8'd223; long_chirp_lut[2122] = 8'd114; long_chirp_lut[2123] = 8'd 17; long_chirp_lut[2124] = 8'd 13; long_chirp_lut[2125] = 8'd105; long_chirp_lut[2126] = 8'd216; long_chirp_lut[2127] = 8'd253;
|
||||
long_chirp_lut[2128] = 8'd184; long_chirp_lut[2129] = 8'd 68; long_chirp_lut[2130] = 8'd 2; long_chirp_lut[2131] = 8'd 41; long_chirp_lut[2132] = 8'd153; long_chirp_lut[2133] = 8'd243; long_chirp_lut[2134] = 8'd237; long_chirp_lut[2135] = 8'd139; long_chirp_lut[2136] = 8'd 31; long_chirp_lut[2137] = 8'd 4; long_chirp_lut[2138] = 8'd 80; long_chirp_lut[2139] = 8'd195; long_chirp_lut[2140] = 8'd254; long_chirp_lut[2141] = 8'd207; long_chirp_lut[2142] = 8'd 94; long_chirp_lut[2143] = 8'd 8;
|
||||
long_chirp_lut[2144] = 8'd 22; long_chirp_lut[2145] = 8'd123; long_chirp_lut[2146] = 8'd228; long_chirp_lut[2147] = 8'd249; long_chirp_lut[2148] = 8'd169; long_chirp_lut[2149] = 8'd 55; long_chirp_lut[2150] = 8'd 1; long_chirp_lut[2151] = 8'd 52; long_chirp_lut[2152] = 8'd166; long_chirp_lut[2153] = 8'd248; long_chirp_lut[2154] = 8'd231; long_chirp_lut[2155] = 8'd128; long_chirp_lut[2156] = 8'd 25; long_chirp_lut[2157] = 8'd 7; long_chirp_lut[2158] = 8'd 88; long_chirp_lut[2159] = 8'd202;
|
||||
long_chirp_lut[2160] = 8'd255; long_chirp_lut[2161] = 8'd202; long_chirp_lut[2162] = 8'd 88; long_chirp_lut[2163] = 8'd 7; long_chirp_lut[2164] = 8'd 25; long_chirp_lut[2165] = 8'd127; long_chirp_lut[2166] = 8'd230; long_chirp_lut[2167] = 8'd249; long_chirp_lut[2168] = 8'd168; long_chirp_lut[2169] = 8'd 54; long_chirp_lut[2170] = 8'd 1; long_chirp_lut[2171] = 8'd 51; long_chirp_lut[2172] = 8'd164; long_chirp_lut[2173] = 8'd247; long_chirp_lut[2174] = 8'd232; long_chirp_lut[2175] = 8'd132;
|
||||
long_chirp_lut[2176] = 8'd 28; long_chirp_lut[2177] = 8'd 5; long_chirp_lut[2178] = 8'd 83; long_chirp_lut[2179] = 8'd197; long_chirp_lut[2180] = 8'd254; long_chirp_lut[2181] = 8'd209; long_chirp_lut[2182] = 8'd 97; long_chirp_lut[2183] = 8'd 10; long_chirp_lut[2184] = 8'd 19; long_chirp_lut[2185] = 8'd116; long_chirp_lut[2186] = 8'd222; long_chirp_lut[2187] = 8'd252; long_chirp_lut[2188] = 8'd180; long_chirp_lut[2189] = 8'd 66; long_chirp_lut[2190] = 8'd 2; long_chirp_lut[2191] = 8'd 39;
|
||||
long_chirp_lut[2192] = 8'd148; long_chirp_lut[2193] = 8'd241; long_chirp_lut[2194] = 8'd241; long_chirp_lut[2195] = 8'd150; long_chirp_lut[2196] = 8'd 41; long_chirp_lut[2197] = 8'd 1; long_chirp_lut[2198] = 8'd 64; long_chirp_lut[2199] = 8'd178; long_chirp_lut[2200] = 8'd251; long_chirp_lut[2201] = 8'd225; long_chirp_lut[2202] = 8'd120; long_chirp_lut[2203] = 8'd 21; long_chirp_lut[2204] = 8'd 8; long_chirp_lut[2205] = 8'd 91; long_chirp_lut[2206] = 8'd203; long_chirp_lut[2207] = 8'd254;
|
||||
long_chirp_lut[2208] = 8'd204; long_chirp_lut[2209] = 8'd 93; long_chirp_lut[2210] = 8'd 9; long_chirp_lut[2211] = 8'd 20; long_chirp_lut[2212] = 8'd117; long_chirp_lut[2213] = 8'd223; long_chirp_lut[2214] = 8'd252; long_chirp_lut[2215] = 8'd182; long_chirp_lut[2216] = 8'd 68; long_chirp_lut[2217] = 8'd 2; long_chirp_lut[2218] = 8'd 36; long_chirp_lut[2219] = 8'd143; long_chirp_lut[2220] = 8'd237; long_chirp_lut[2221] = 8'd244; long_chirp_lut[2222] = 8'd158; long_chirp_lut[2223] = 8'd 48;
|
||||
long_chirp_lut[2224] = 8'd 1; long_chirp_lut[2225] = 8'd 54; long_chirp_lut[2226] = 8'd166; long_chirp_lut[2227] = 8'd247; long_chirp_lut[2228] = 8'd233; long_chirp_lut[2229] = 8'd136; long_chirp_lut[2230] = 8'd 31; long_chirp_lut[2231] = 8'd 3; long_chirp_lut[2232] = 8'd 73; long_chirp_lut[2233] = 8'd186; long_chirp_lut[2234] = 8'd253; long_chirp_lut[2235] = 8'd220; long_chirp_lut[2236] = 8'd115; long_chirp_lut[2237] = 8'd 19; long_chirp_lut[2238] = 8'd 9; long_chirp_lut[2239] = 8'd 92;
|
||||
long_chirp_lut[2240] = 8'd203; long_chirp_lut[2241] = 8'd254; long_chirp_lut[2242] = 8'd206; long_chirp_lut[2243] = 8'd 96; long_chirp_lut[2244] = 8'd 10; long_chirp_lut[2245] = 8'd 17; long_chirp_lut[2246] = 8'd111; long_chirp_lut[2247] = 8'd217; long_chirp_lut[2248] = 8'd253; long_chirp_lut[2249] = 8'd191; long_chirp_lut[2250] = 8'd 79; long_chirp_lut[2251] = 8'd 5; long_chirp_lut[2252] = 8'd 27; long_chirp_lut[2253] = 8'd127; long_chirp_lut[2254] = 8'd228; long_chirp_lut[2255] = 8'd250;
|
||||
long_chirp_lut[2256] = 8'd177; long_chirp_lut[2257] = 8'd 65; long_chirp_lut[2258] = 8'd 2; long_chirp_lut[2259] = 8'd 37; long_chirp_lut[2260] = 8'd142; long_chirp_lut[2261] = 8'd236; long_chirp_lut[2262] = 8'd246; long_chirp_lut[2263] = 8'd163; long_chirp_lut[2264] = 8'd 53; long_chirp_lut[2265] = 8'd 1; long_chirp_lut[2266] = 8'd 46; long_chirp_lut[2267] = 8'd155; long_chirp_lut[2268] = 8'd242; long_chirp_lut[2269] = 8'd241; long_chirp_lut[2270] = 8'd151; long_chirp_lut[2271] = 8'd 44;
|
||||
long_chirp_lut[2272] = 8'd 1; long_chirp_lut[2273] = 8'd 56; long_chirp_lut[2274] = 8'd166; long_chirp_lut[2275] = 8'd247; long_chirp_lut[2276] = 8'd235; long_chirp_lut[2277] = 8'd141; long_chirp_lut[2278] = 8'd 36; long_chirp_lut[2279] = 8'd 2; long_chirp_lut[2280] = 8'd 64; long_chirp_lut[2281] = 8'd175; long_chirp_lut[2282] = 8'd250; long_chirp_lut[2283] = 8'd230; long_chirp_lut[2284] = 8'd132; long_chirp_lut[2285] = 8'd 31; long_chirp_lut[2286] = 8'd 3; long_chirp_lut[2287] = 8'd 71;
|
||||
long_chirp_lut[2288] = 8'd182; long_chirp_lut[2289] = 8'd251; long_chirp_lut[2290] = 8'd226; long_chirp_lut[2291] = 8'd125; long_chirp_lut[2292] = 8'd 26; long_chirp_lut[2293] = 8'd 5; long_chirp_lut[2294] = 8'd 77; long_chirp_lut[2295] = 8'd187; long_chirp_lut[2296] = 8'd253; long_chirp_lut[2297] = 8'd222; long_chirp_lut[2298] = 8'd120; long_chirp_lut[2299] = 8'd 23; long_chirp_lut[2300] = 8'd 6; long_chirp_lut[2301] = 8'd 81; long_chirp_lut[2302] = 8'd191; long_chirp_lut[2303] = 8'd253;
|
||||
long_chirp_lut[2304] = 8'd220; long_chirp_lut[2305] = 8'd117; long_chirp_lut[2306] = 8'd 22; long_chirp_lut[2307] = 8'd 7; long_chirp_lut[2308] = 8'd 83; long_chirp_lut[2309] = 8'd193; long_chirp_lut[2310] = 8'd253; long_chirp_lut[2311] = 8'd219; long_chirp_lut[2312] = 8'd115; long_chirp_lut[2313] = 8'd 21; long_chirp_lut[2314] = 8'd 7; long_chirp_lut[2315] = 8'd 84; long_chirp_lut[2316] = 8'd193; long_chirp_lut[2317] = 8'd253; long_chirp_lut[2318] = 8'd219; long_chirp_lut[2319] = 8'd116;
|
||||
long_chirp_lut[2320] = 8'd 21; long_chirp_lut[2321] = 8'd 7; long_chirp_lut[2322] = 8'd 83; long_chirp_lut[2323] = 8'd192; long_chirp_lut[2324] = 8'd253; long_chirp_lut[2325] = 8'd220; long_chirp_lut[2326] = 8'd118; long_chirp_lut[2327] = 8'd 23; long_chirp_lut[2328] = 8'd 6; long_chirp_lut[2329] = 8'd 80; long_chirp_lut[2330] = 8'd189; long_chirp_lut[2331] = 8'd253; long_chirp_lut[2332] = 8'd223; long_chirp_lut[2333] = 8'd122; long_chirp_lut[2334] = 8'd 25; long_chirp_lut[2335] = 8'd 5;
|
||||
long_chirp_lut[2336] = 8'd 76; long_chirp_lut[2337] = 8'd185; long_chirp_lut[2338] = 8'd252; long_chirp_lut[2339] = 8'd226; long_chirp_lut[2340] = 8'd128; long_chirp_lut[2341] = 8'd 29; long_chirp_lut[2342] = 8'd 3; long_chirp_lut[2343] = 8'd 70; long_chirp_lut[2344] = 8'd179; long_chirp_lut[2345] = 8'd250; long_chirp_lut[2346] = 8'd231; long_chirp_lut[2347] = 8'd135; long_chirp_lut[2348] = 8'd 34; long_chirp_lut[2349] = 8'd 2; long_chirp_lut[2350] = 8'd 62; long_chirp_lut[2351] = 8'd171;
|
||||
long_chirp_lut[2352] = 8'd247; long_chirp_lut[2353] = 8'd236; long_chirp_lut[2354] = 8'd144; long_chirp_lut[2355] = 8'd 41; long_chirp_lut[2356] = 8'd 1; long_chirp_lut[2357] = 8'd 54; long_chirp_lut[2358] = 8'd161; long_chirp_lut[2359] = 8'd244; long_chirp_lut[2360] = 8'd241; long_chirp_lut[2361] = 8'd155; long_chirp_lut[2362] = 8'd 49; long_chirp_lut[2363] = 8'd 1; long_chirp_lut[2364] = 8'd 45; long_chirp_lut[2365] = 8'd149; long_chirp_lut[2366] = 8'd238; long_chirp_lut[2367] = 8'd246;
|
||||
long_chirp_lut[2368] = 8'd168; long_chirp_lut[2369] = 8'd 60; long_chirp_lut[2370] = 8'd 2; long_chirp_lut[2371] = 8'd 35; long_chirp_lut[2372] = 8'd135; long_chirp_lut[2373] = 8'd230; long_chirp_lut[2374] = 8'd251; long_chirp_lut[2375] = 8'd182; long_chirp_lut[2376] = 8'd 73; long_chirp_lut[2377] = 8'd 4; long_chirp_lut[2378] = 8'd 25; long_chirp_lut[2379] = 8'd119; long_chirp_lut[2380] = 8'd220; long_chirp_lut[2381] = 8'd254; long_chirp_lut[2382] = 8'd196; long_chirp_lut[2383] = 8'd 89;
|
||||
long_chirp_lut[2384] = 8'd 10; long_chirp_lut[2385] = 8'd 15; long_chirp_lut[2386] = 8'd102; long_chirp_lut[2387] = 8'd207; long_chirp_lut[2388] = 8'd254; long_chirp_lut[2389] = 8'd211; long_chirp_lut[2390] = 8'd107; long_chirp_lut[2391] = 8'd 18; long_chirp_lut[2392] = 8'd 8; long_chirp_lut[2393] = 8'd 83; long_chirp_lut[2394] = 8'd190; long_chirp_lut[2395] = 8'd252; long_chirp_lut[2396] = 8'd225; long_chirp_lut[2397] = 8'd128; long_chirp_lut[2398] = 8'd 30; long_chirp_lut[2399] = 8'd 2;
|
||||
long_chirp_lut[2400] = 8'd 64; long_chirp_lut[2401] = 8'd171; long_chirp_lut[2402] = 8'd247; long_chirp_lut[2403] = 8'd238; long_chirp_lut[2404] = 8'd150; long_chirp_lut[2405] = 8'd 46; long_chirp_lut[2406] = 8'd 1; long_chirp_lut[2407] = 8'd 45; long_chirp_lut[2408] = 8'd148; long_chirp_lut[2409] = 8'd237; long_chirp_lut[2410] = 8'd247; long_chirp_lut[2411] = 8'd173; long_chirp_lut[2412] = 8'd 66; long_chirp_lut[2413] = 8'd 3; long_chirp_lut[2414] = 8'd 28; long_chirp_lut[2415] = 8'd123;
|
||||
long_chirp_lut[2416] = 8'd222; long_chirp_lut[2417] = 8'd253; long_chirp_lut[2418] = 8'd196; long_chirp_lut[2419] = 8'd 90; long_chirp_lut[2420] = 8'd 11; long_chirp_lut[2421] = 8'd 14; long_chirp_lut[2422] = 8'd 97; long_chirp_lut[2423] = 8'd201; long_chirp_lut[2424] = 8'd254; long_chirp_lut[2425] = 8'd218; long_chirp_lut[2426] = 8'd118; long_chirp_lut[2427] = 8'd 25; long_chirp_lut[2428] = 8'd 4; long_chirp_lut[2429] = 8'd 70; long_chirp_lut[2430] = 8'd176; long_chirp_lut[2431] = 8'd248;
|
||||
long_chirp_lut[2432] = 8'd236; long_chirp_lut[2433] = 8'd148; long_chirp_lut[2434] = 8'd 45; long_chirp_lut[2435] = 8'd 1; long_chirp_lut[2436] = 8'd 45; long_chirp_lut[2437] = 8'd146; long_chirp_lut[2438] = 8'd235; long_chirp_lut[2439] = 8'd249; long_chirp_lut[2440] = 8'd178; long_chirp_lut[2441] = 8'd 72; long_chirp_lut[2442] = 8'd 5; long_chirp_lut[2443] = 8'd 23; long_chirp_lut[2444] = 8'd114; long_chirp_lut[2445] = 8'd214; long_chirp_lut[2446] = 8'd254; long_chirp_lut[2447] = 8'd206;
|
||||
long_chirp_lut[2448] = 8'd104; long_chirp_lut[2449] = 8'd 18; long_chirp_lut[2450] = 8'd 8; long_chirp_lut[2451] = 8'd 81; long_chirp_lut[2452] = 8'd186; long_chirp_lut[2453] = 8'd251; long_chirp_lut[2454] = 8'd231; long_chirp_lut[2455] = 8'd139; long_chirp_lut[2456] = 8'd 39; long_chirp_lut[2457] = 8'd 1; long_chirp_lut[2458] = 8'd 49; long_chirp_lut[2459] = 8'd152; long_chirp_lut[2460] = 8'd237; long_chirp_lut[2461] = 8'd248; long_chirp_lut[2462] = 8'd175; long_chirp_lut[2463] = 8'd 70;
|
||||
long_chirp_lut[2464] = 8'd 4; long_chirp_lut[2465] = 8'd 23; long_chirp_lut[2466] = 8'd114; long_chirp_lut[2467] = 8'd213; long_chirp_lut[2468] = 8'd254; long_chirp_lut[2469] = 8'd209; long_chirp_lut[2470] = 8'd107; long_chirp_lut[2471] = 8'd 20; long_chirp_lut[2472] = 8'd 6; long_chirp_lut[2473] = 8'd 75; long_chirp_lut[2474] = 8'd180; long_chirp_lut[2475] = 8'd249; long_chirp_lut[2476] = 8'd235; long_chirp_lut[2477] = 8'd148; long_chirp_lut[2478] = 8'd 47; long_chirp_lut[2479] = 8'd 1;
|
||||
long_chirp_lut[2480] = 8'd 40; long_chirp_lut[2481] = 8'd139; long_chirp_lut[2482] = 8'd230; long_chirp_lut[2483] = 8'd251; long_chirp_lut[2484] = 8'd189; long_chirp_lut[2485] = 8'd 84; long_chirp_lut[2486] = 8'd 9; long_chirp_lut[2487] = 8'd 14; long_chirp_lut[2488] = 8'd 96; long_chirp_lut[2489] = 8'd199; long_chirp_lut[2490] = 8'd253; long_chirp_lut[2491] = 8'd223; long_chirp_lut[2492] = 8'd129; long_chirp_lut[2493] = 8'd 33; long_chirp_lut[2494] = 8'd 1; long_chirp_lut[2495] = 8'd 54;
|
||||
long_chirp_lut[2496] = 8'd157; long_chirp_lut[2497] = 8'd239; long_chirp_lut[2498] = 8'd247; long_chirp_lut[2499] = 8'd174; long_chirp_lut[2500] = 8'd 71; long_chirp_lut[2501] = 8'd 5; long_chirp_lut[2502] = 8'd 21; long_chirp_lut[2503] = 8'd109; long_chirp_lut[2504] = 8'd209; long_chirp_lut[2505] = 8'd254; long_chirp_lut[2506] = 8'd215; long_chirp_lut[2507] = 8'd117; long_chirp_lut[2508] = 8'd 26; long_chirp_lut[2509] = 8'd 3; long_chirp_lut[2510] = 8'd 62; long_chirp_lut[2511] = 8'd165;
|
||||
long_chirp_lut[2512] = 8'd243; long_chirp_lut[2513] = 8'd244; long_chirp_lut[2514] = 8'd167; long_chirp_lut[2515] = 8'd 64; long_chirp_lut[2516] = 8'd 3; long_chirp_lut[2517] = 8'd 25; long_chirp_lut[2518] = 8'd114; long_chirp_lut[2519] = 8'd212; long_chirp_lut[2520] = 8'd255; long_chirp_lut[2521] = 8'd212; long_chirp_lut[2522] = 8'd114; long_chirp_lut[2523] = 8'd 25; long_chirp_lut[2524] = 8'd 3; long_chirp_lut[2525] = 8'd 64; long_chirp_lut[2526] = 8'd166; long_chirp_lut[2527] = 8'd243;
|
||||
long_chirp_lut[2528] = 8'd244; long_chirp_lut[2529] = 8'd168; long_chirp_lut[2530] = 8'd 66; long_chirp_lut[2531] = 8'd 4; long_chirp_lut[2532] = 8'd 23; long_chirp_lut[2533] = 8'd111; long_chirp_lut[2534] = 8'd210; long_chirp_lut[2535] = 8'd254; long_chirp_lut[2536] = 8'd216; long_chirp_lut[2537] = 8'd120; long_chirp_lut[2538] = 8'd 28; long_chirp_lut[2539] = 8'd 2; long_chirp_lut[2540] = 8'd 58; long_chirp_lut[2541] = 8'd159; long_chirp_lut[2542] = 8'd240; long_chirp_lut[2543] = 8'd247;
|
||||
long_chirp_lut[2544] = 8'd177; long_chirp_lut[2545] = 8'd 74; long_chirp_lut[2546] = 8'd 6; long_chirp_lut[2547] = 8'd 17; long_chirp_lut[2548] = 8'd100; long_chirp_lut[2549] = 8'd200; long_chirp_lut[2550] = 8'd253; long_chirp_lut[2551] = 8'd225; long_chirp_lut[2552] = 8'd133; long_chirp_lut[2553] = 8'd 38; long_chirp_lut[2554] = 8'd 1; long_chirp_lut[2555] = 8'd 46; long_chirp_lut[2556] = 8'd143; long_chirp_lut[2557] = 8'd231; long_chirp_lut[2558] = 8'd252; long_chirp_lut[2559] = 8'd192;
|
||||
long_chirp_lut[2560] = 8'd 91; long_chirp_lut[2561] = 8'd 13; long_chirp_lut[2562] = 8'd 9; long_chirp_lut[2563] = 8'd 81; long_chirp_lut[2564] = 8'd183; long_chirp_lut[2565] = 8'd249; long_chirp_lut[2566] = 8'd237; long_chirp_lut[2567] = 8'd155; long_chirp_lut[2568] = 8'd 55; long_chirp_lut[2569] = 8'd 2; long_chirp_lut[2570] = 8'd 29; long_chirp_lut[2571] = 8'd119; long_chirp_lut[2572] = 8'd215; long_chirp_lut[2573] = 8'd254; long_chirp_lut[2574] = 8'd213; long_chirp_lut[2575] = 8'd117;
|
||||
long_chirp_lut[2576] = 8'd 28; long_chirp_lut[2577] = 8'd 2; long_chirp_lut[2578] = 8'd 56; long_chirp_lut[2579] = 8'd156; long_chirp_lut[2580] = 8'd237; long_chirp_lut[2581] = 8'd249; long_chirp_lut[2582] = 8'd183; long_chirp_lut[2583] = 8'd 82; long_chirp_lut[2584] = 8'd 10; long_chirp_lut[2585] = 8'd 12; long_chirp_lut[2586] = 8'd 88; long_chirp_lut[2587] = 8'd188; long_chirp_lut[2588] = 8'd250; long_chirp_lut[2589] = 8'd235; long_chirp_lut[2590] = 8'd151; long_chirp_lut[2591] = 8'd 53;
|
||||
long_chirp_lut[2592] = 8'd 2; long_chirp_lut[2593] = 8'd 30; long_chirp_lut[2594] = 8'd119; long_chirp_lut[2595] = 8'd214; long_chirp_lut[2596] = 8'd254; long_chirp_lut[2597] = 8'd215; long_chirp_lut[2598] = 8'd120; long_chirp_lut[2599] = 8'd 30; long_chirp_lut[2600] = 8'd 1; long_chirp_lut[2601] = 8'd 52; long_chirp_lut[2602] = 8'd149; long_chirp_lut[2603] = 8'd234; long_chirp_lut[2604] = 8'd251; long_chirp_lut[2605] = 8'd191; long_chirp_lut[2606] = 8'd 92; long_chirp_lut[2607] = 8'd 14;
|
||||
long_chirp_lut[2608] = 8'd 8; long_chirp_lut[2609] = 8'd 76; long_chirp_lut[2610] = 8'd176; long_chirp_lut[2611] = 8'd246; long_chirp_lut[2612] = 8'd242; long_chirp_lut[2613] = 8'd167; long_chirp_lut[2614] = 8'd 67; long_chirp_lut[2615] = 8'd 5; long_chirp_lut[2616] = 8'd 19; long_chirp_lut[2617] = 8'd100; long_chirp_lut[2618] = 8'd198; long_chirp_lut[2619] = 8'd253; long_chirp_lut[2620] = 8'd229; long_chirp_lut[2621] = 8'd143; long_chirp_lut[2622] = 8'd 47; long_chirp_lut[2623] = 8'd 1;
|
||||
long_chirp_lut[2624] = 8'd 33; long_chirp_lut[2625] = 8'd123; long_chirp_lut[2626] = 8'd216; long_chirp_lut[2627] = 8'd254; long_chirp_lut[2628] = 8'd214; long_chirp_lut[2629] = 8'd121; long_chirp_lut[2630] = 8'd 31; long_chirp_lut[2631] = 8'd 1; long_chirp_lut[2632] = 8'd 48; long_chirp_lut[2633] = 8'd144; long_chirp_lut[2634] = 8'd230; long_chirp_lut[2635] = 8'd253; long_chirp_lut[2636] = 8'd199; long_chirp_lut[2637] = 8'd101; long_chirp_lut[2638] = 8'd 20; long_chirp_lut[2639] = 8'd 4;
|
||||
long_chirp_lut[2640] = 8'd 64; long_chirp_lut[2641] = 8'd162; long_chirp_lut[2642] = 8'd240; long_chirp_lut[2643] = 8'd248; long_chirp_lut[2644] = 8'd183; long_chirp_lut[2645] = 8'd 84; long_chirp_lut[2646] = 8'd 12; long_chirp_lut[2647] = 8'd 9; long_chirp_lut[2648] = 8'd 79; long_chirp_lut[2649] = 8'd178; long_chirp_lut[2650] = 8'd246; long_chirp_lut[2651] = 8'd243; long_chirp_lut[2652] = 8'd169; long_chirp_lut[2653] = 8'd 71; long_chirp_lut[2654] = 8'd 6; long_chirp_lut[2655] = 8'd 15;
|
||||
long_chirp_lut[2656] = 8'd 92; long_chirp_lut[2657] = 8'd190; long_chirp_lut[2658] = 8'd250; long_chirp_lut[2659] = 8'd236; long_chirp_lut[2660] = 8'd157; long_chirp_lut[2661] = 8'd 60; long_chirp_lut[2662] = 8'd 3; long_chirp_lut[2663] = 8'd 22; long_chirp_lut[2664] = 8'd104; long_chirp_lut[2665] = 8'd200; long_chirp_lut[2666] = 8'd253; long_chirp_lut[2667] = 8'd230; long_chirp_lut[2668] = 8'd146; long_chirp_lut[2669] = 8'd 51; long_chirp_lut[2670] = 8'd 2; long_chirp_lut[2671] = 8'd 27;
|
||||
long_chirp_lut[2672] = 8'd113; long_chirp_lut[2673] = 8'd207; long_chirp_lut[2674] = 8'd254; long_chirp_lut[2675] = 8'd225; long_chirp_lut[2676] = 8'd138; long_chirp_lut[2677] = 8'd 45; long_chirp_lut[2678] = 8'd 1; long_chirp_lut[2679] = 8'd 32; long_chirp_lut[2680] = 8'd120; long_chirp_lut[2681] = 8'd212; long_chirp_lut[2682] = 8'd254; long_chirp_lut[2683] = 8'd221; long_chirp_lut[2684] = 8'd132; long_chirp_lut[2685] = 8'd 41; long_chirp_lut[2686] = 8'd 1; long_chirp_lut[2687] = 8'd 36;
|
||||
long_chirp_lut[2688] = 8'd125; long_chirp_lut[2689] = 8'd216; long_chirp_lut[2690] = 8'd254; long_chirp_lut[2691] = 8'd218; long_chirp_lut[2692] = 8'd129; long_chirp_lut[2693] = 8'd 38; long_chirp_lut[2694] = 8'd 1; long_chirp_lut[2695] = 8'd 37; long_chirp_lut[2696] = 8'd127; long_chirp_lut[2697] = 8'd217; long_chirp_lut[2698] = 8'd254; long_chirp_lut[2699] = 8'd217; long_chirp_lut[2700] = 8'd128; long_chirp_lut[2701] = 8'd 38; long_chirp_lut[2702] = 8'd 1; long_chirp_lut[2703] = 8'd 38;
|
||||
long_chirp_lut[2704] = 8'd127; long_chirp_lut[2705] = 8'd217; long_chirp_lut[2706] = 8'd254; long_chirp_lut[2707] = 8'd218; long_chirp_lut[2708] = 8'd129; long_chirp_lut[2709] = 8'd 39; long_chirp_lut[2710] = 8'd 1; long_chirp_lut[2711] = 8'd 36; long_chirp_lut[2712] = 8'd125; long_chirp_lut[2713] = 8'd215; long_chirp_lut[2714] = 8'd254; long_chirp_lut[2715] = 8'd220; long_chirp_lut[2716] = 8'd132; long_chirp_lut[2717] = 8'd 42; long_chirp_lut[2718] = 8'd 1; long_chirp_lut[2719] = 8'd 33;
|
||||
long_chirp_lut[2720] = 8'd120; long_chirp_lut[2721] = 8'd211; long_chirp_lut[2722] = 8'd254; long_chirp_lut[2723] = 8'd224; long_chirp_lut[2724] = 8'd138; long_chirp_lut[2725] = 8'd 46; long_chirp_lut[2726] = 8'd 1; long_chirp_lut[2727] = 8'd 29; long_chirp_lut[2728] = 8'd113; long_chirp_lut[2729] = 8'd206; long_chirp_lut[2730] = 8'd253; long_chirp_lut[2731] = 8'd229; long_chirp_lut[2732] = 8'd146; long_chirp_lut[2733] = 8'd 53; long_chirp_lut[2734] = 8'd 2; long_chirp_lut[2735] = 8'd 23;
|
||||
long_chirp_lut[2736] = 8'd104; long_chirp_lut[2737] = 8'd198; long_chirp_lut[2738] = 8'd252; long_chirp_lut[2739] = 8'd235; long_chirp_lut[2740] = 8'd157; long_chirp_lut[2741] = 8'd 62; long_chirp_lut[2742] = 8'd 5; long_chirp_lut[2743] = 8'd 17; long_chirp_lut[2744] = 8'd 92; long_chirp_lut[2745] = 8'd187; long_chirp_lut[2746] = 8'd249; long_chirp_lut[2747] = 8'd241; long_chirp_lut[2748] = 8'd169; long_chirp_lut[2749] = 8'd 74; long_chirp_lut[2750] = 8'd 9; long_chirp_lut[2751] = 8'd 11;
|
||||
long_chirp_lut[2752] = 8'd 79; long_chirp_lut[2753] = 8'd174; long_chirp_lut[2754] = 8'd243; long_chirp_lut[2755] = 8'd247; long_chirp_lut[2756] = 8'd183; long_chirp_lut[2757] = 8'd 88; long_chirp_lut[2758] = 8'd 15; long_chirp_lut[2759] = 8'd 5; long_chirp_lut[2760] = 8'd 64; long_chirp_lut[2761] = 8'd158; long_chirp_lut[2762] = 8'd235; long_chirp_lut[2763] = 8'd252; long_chirp_lut[2764] = 8'd199; long_chirp_lut[2765] = 8'd106; long_chirp_lut[2766] = 8'd 25; long_chirp_lut[2767] = 8'd 2;
|
||||
long_chirp_lut[2768] = 8'd 48; long_chirp_lut[2769] = 8'd139; long_chirp_lut[2770] = 8'd224; long_chirp_lut[2771] = 8'd254; long_chirp_lut[2772] = 8'd214; long_chirp_lut[2773] = 8'd126; long_chirp_lut[2774] = 8'd 39; long_chirp_lut[2775] = 8'd 1; long_chirp_lut[2776] = 8'd 33; long_chirp_lut[2777] = 8'd118; long_chirp_lut[2778] = 8'd208; long_chirp_lut[2779] = 8'd254; long_chirp_lut[2780] = 8'd229; long_chirp_lut[2781] = 8'd149; long_chirp_lut[2782] = 8'd 57; long_chirp_lut[2783] = 8'd 3;
|
||||
long_chirp_lut[2784] = 8'd 19; long_chirp_lut[2785] = 8'd 94; long_chirp_lut[2786] = 8'd188; long_chirp_lut[2787] = 8'd248; long_chirp_lut[2788] = 8'd242; long_chirp_lut[2789] = 8'd173; long_chirp_lut[2790] = 8'd 79; long_chirp_lut[2791] = 8'd 11; long_chirp_lut[2792] = 8'd 8; long_chirp_lut[2793] = 8'd 70; long_chirp_lut[2794] = 8'd163; long_chirp_lut[2795] = 8'd237; long_chirp_lut[2796] = 8'd251; long_chirp_lut[2797] = 8'd197; long_chirp_lut[2798] = 8'd106; long_chirp_lut[2799] = 8'd 26;
|
||||
long_chirp_lut[2800] = 8'd 1; long_chirp_lut[2801] = 8'd 46; long_chirp_lut[2802] = 8'd135; long_chirp_lut[2803] = 8'd220; long_chirp_lut[2804] = 8'd254; long_chirp_lut[2805] = 8'd220; long_chirp_lut[2806] = 8'd136; long_chirp_lut[2807] = 8'd 47; long_chirp_lut[2808] = 8'd 2; long_chirp_lut[2809] = 8'd 25; long_chirp_lut[2810] = 8'd104; long_chirp_lut[2811] = 8'd195; long_chirp_lut[2812] = 8'd250; long_chirp_lut[2813] = 8'd239; long_chirp_lut[2814] = 8'd167; long_chirp_lut[2815] = 8'd 74;
|
||||
long_chirp_lut[2816] = 8'd 10; long_chirp_lut[2817] = 8'd 9; long_chirp_lut[2818] = 8'd 72; long_chirp_lut[2819] = 8'd165; long_chirp_lut[2820] = 8'd237; long_chirp_lut[2821] = 8'd251; long_chirp_lut[2822] = 8'd199; long_chirp_lut[2823] = 8'd108; long_chirp_lut[2824] = 8'd 28; long_chirp_lut[2825] = 8'd 1; long_chirp_lut[2826] = 8'd 42; long_chirp_lut[2827] = 8'd129; long_chirp_lut[2828] = 8'd215; long_chirp_lut[2829] = 8'd254; long_chirp_lut[2830] = 8'd226; long_chirp_lut[2831] = 8'd145;
|
||||
long_chirp_lut[2832] = 8'd 55; long_chirp_lut[2833] = 8'd 3; long_chirp_lut[2834] = 8'd 18; long_chirp_lut[2835] = 8'd 91; long_chirp_lut[2836] = 8'd183; long_chirp_lut[2837] = 8'd246; long_chirp_lut[2838] = 8'd246; long_chirp_lut[2839] = 8'd183; long_chirp_lut[2840] = 8'd 91; long_chirp_lut[2841] = 8'd 18; long_chirp_lut[2842] = 8'd 3; long_chirp_lut[2843] = 8'd 54; long_chirp_lut[2844] = 8'd143; long_chirp_lut[2845] = 8'd224; long_chirp_lut[2846] = 8'd254; long_chirp_lut[2847] = 8'd217;
|
||||
long_chirp_lut[2848] = 8'd133; long_chirp_lut[2849] = 8'd 46; long_chirp_lut[2850] = 8'd 2; long_chirp_lut[2851] = 8'd 23; long_chirp_lut[2852] = 8'd100; long_chirp_lut[2853] = 8'd191; long_chirp_lut[2854] = 8'd249; long_chirp_lut[2855] = 8'd243; long_chirp_lut[2856] = 8'd177; long_chirp_lut[2857] = 8'd 85; long_chirp_lut[2858] = 8'd 15; long_chirp_lut[2859] = 8'd 4; long_chirp_lut[2860] = 8'd 58; long_chirp_lut[2861] = 8'd147; long_chirp_lut[2862] = 8'd227; long_chirp_lut[2863] = 8'd254;
|
||||
long_chirp_lut[2864] = 8'd216; long_chirp_lut[2865] = 8'd132; long_chirp_lut[2866] = 8'd 45; long_chirp_lut[2867] = 8'd 2; long_chirp_lut[2868] = 8'd 23; long_chirp_lut[2869] = 8'd 99; long_chirp_lut[2870] = 8'd189; long_chirp_lut[2871] = 8'd248; long_chirp_lut[2872] = 8'd244; long_chirp_lut[2873] = 8'd180; long_chirp_lut[2874] = 8'd 89; long_chirp_lut[2875] = 8'd 18; long_chirp_lut[2876] = 8'd 3; long_chirp_lut[2877] = 8'd 53; long_chirp_lut[2878] = 8'd141; long_chirp_lut[2879] = 8'd222;
|
||||
long_chirp_lut[2880] = 8'd255; long_chirp_lut[2881] = 8'd222; long_chirp_lut[2882] = 8'd141; long_chirp_lut[2883] = 8'd 53; long_chirp_lut[2884] = 8'd 3; long_chirp_lut[2885] = 8'd 17; long_chirp_lut[2886] = 8'd 88; long_chirp_lut[2887] = 8'd178; long_chirp_lut[2888] = 8'd243; long_chirp_lut[2889] = 8'd249; long_chirp_lut[2890] = 8'd193; long_chirp_lut[2891] = 8'd103; long_chirp_lut[2892] = 8'd 26; long_chirp_lut[2893] = 8'd 1; long_chirp_lut[2894] = 8'd 40; long_chirp_lut[2895] = 8'd123;
|
||||
long_chirp_lut[2896] = 8'd209; long_chirp_lut[2897] = 8'd253; long_chirp_lut[2898] = 8'd234; long_chirp_lut[2899] = 8'd160; long_chirp_lut[2900] = 8'd 71; long_chirp_lut[2901] = 8'd 9; long_chirp_lut[2902] = 8'd 8; long_chirp_lut[2903] = 8'd 67; long_chirp_lut[2904] = 8'd157; long_chirp_lut[2905] = 8'd231; long_chirp_lut[2906] = 8'd254; long_chirp_lut[2907] = 8'd213; long_chirp_lut[2908] = 8'd129; long_chirp_lut[2909] = 8'd 44; long_chirp_lut[2910] = 8'd 2; long_chirp_lut[2911] = 8'd 22;
|
||||
long_chirp_lut[2912] = 8'd 96; long_chirp_lut[2913] = 8'd185; long_chirp_lut[2914] = 8'd246; long_chirp_lut[2915] = 8'd247; long_chirp_lut[2916] = 8'd189; long_chirp_lut[2917] = 8'd100; long_chirp_lut[2918] = 8'd 25; long_chirp_lut[2919] = 8'd 1; long_chirp_lut[2920] = 8'd 40; long_chirp_lut[2921] = 8'd123; long_chirp_lut[2922] = 8'd208; long_chirp_lut[2923] = 8'd253; long_chirp_lut[2924] = 8'd235; long_chirp_lut[2925] = 8'd164; long_chirp_lut[2926] = 8'd 75; long_chirp_lut[2927] = 8'd 12;
|
||||
long_chirp_lut[2928] = 8'd 6; long_chirp_lut[2929] = 8'd 60; long_chirp_lut[2930] = 8'd148; long_chirp_lut[2931] = 8'd225; long_chirp_lut[2932] = 8'd254; long_chirp_lut[2933] = 8'd221; long_chirp_lut[2934] = 8'd141; long_chirp_lut[2935] = 8'd 55; long_chirp_lut[2936] = 8'd 4; long_chirp_lut[2937] = 8'd 14; long_chirp_lut[2938] = 8'd 80; long_chirp_lut[2939] = 8'd169; long_chirp_lut[2940] = 8'd237; long_chirp_lut[2941] = 8'd252; long_chirp_lut[2942] = 8'd206; long_chirp_lut[2943] = 8'd121;
|
||||
long_chirp_lut[2944] = 8'd 39; long_chirp_lut[2945] = 8'd 1; long_chirp_lut[2946] = 8'd 24; long_chirp_lut[2947] = 8'd 98; long_chirp_lut[2948] = 8'd186; long_chirp_lut[2949] = 8'd246; long_chirp_lut[2950] = 8'd247; long_chirp_lut[2951] = 8'd191; long_chirp_lut[2952] = 8'd104; long_chirp_lut[2953] = 8'd 28; long_chirp_lut[2954] = 8'd 1; long_chirp_lut[2955] = 8'd 35; long_chirp_lut[2956] = 8'd114; long_chirp_lut[2957] = 8'd200; long_chirp_lut[2958] = 8'd250; long_chirp_lut[2959] = 8'd242;
|
||||
long_chirp_lut[2960] = 8'd178; long_chirp_lut[2961] = 8'd 90; long_chirp_lut[2962] = 8'd 20; long_chirp_lut[2963] = 8'd 2; long_chirp_lut[2964] = 8'd 45; long_chirp_lut[2965] = 8'd127; long_chirp_lut[2966] = 8'd210; long_chirp_lut[2967] = 8'd253; long_chirp_lut[2968] = 8'd236; long_chirp_lut[2969] = 8'd167; long_chirp_lut[2970] = 8'd 79; long_chirp_lut[2971] = 8'd 14; long_chirp_lut[2972] = 8'd 4; long_chirp_lut[2973] = 8'd 53; long_chirp_lut[2974] = 8'd137; long_chirp_lut[2975] = 8'd217;
|
||||
long_chirp_lut[2976] = 8'd254; long_chirp_lut[2977] = 8'd231; long_chirp_lut[2978] = 8'd158; long_chirp_lut[2979] = 8'd 71; long_chirp_lut[2980] = 8'd 11; long_chirp_lut[2981] = 8'd 6; long_chirp_lut[2982] = 8'd 59; long_chirp_lut[2983] = 8'd144; long_chirp_lut[2984] = 8'd222; long_chirp_lut[2985] = 8'd254; long_chirp_lut[2986] = 8'd227; long_chirp_lut[2987] = 8'd153; long_chirp_lut[2988] = 8'd 66; long_chirp_lut[2989] = 8'd 9; long_chirp_lut[2990] = 8'd 8; long_chirp_lut[2991] = 8'd 63;
|
||||
long_chirp_lut[2992] = 8'd148; long_chirp_lut[2993] = 8'd224; long_chirp_lut[2994] = 8'd254; long_chirp_lut[2995] = 8'd225; long_chirp_lut[2996] = 8'd150; long_chirp_lut[2997] = 8'd 64; long_chirp_lut[2998] = 8'd 8; long_chirp_lut[2999] = 8'd 8; long_chirp_lut[3000] = 8'd 64; long_chirp_lut[3001] = 8'd150; long_chirp_lut[3002] = 8'd225; long_chirp_lut[3003] = 8'd254; long_chirp_lut[3004] = 8'd225; long_chirp_lut[3005] = 8'd150; long_chirp_lut[3006] = 8'd 65; long_chirp_lut[3007] = 8'd 8;
|
||||
long_chirp_lut[3008] = 8'd 8; long_chirp_lut[3009] = 8'd 63; long_chirp_lut[3010] = 8'd148; long_chirp_lut[3011] = 8'd223; long_chirp_lut[3012] = 8'd254; long_chirp_lut[3013] = 8'd227; long_chirp_lut[3014] = 8'd153; long_chirp_lut[3015] = 8'd 68; long_chirp_lut[3016] = 8'd 10; long_chirp_lut[3017] = 8'd 6; long_chirp_lut[3018] = 8'd 59; long_chirp_lut[3019] = 8'd143; long_chirp_lut[3020] = 8'd220; long_chirp_lut[3021] = 8'd254; long_chirp_lut[3022] = 8'd230; long_chirp_lut[3023] = 8'd159;
|
||||
long_chirp_lut[3024] = 8'd 73; long_chirp_lut[3025] = 8'd 13; long_chirp_lut[3026] = 8'd 4; long_chirp_lut[3027] = 8'd 53; long_chirp_lut[3028] = 8'd135; long_chirp_lut[3029] = 8'd214; long_chirp_lut[3030] = 8'd253; long_chirp_lut[3031] = 8'd235; long_chirp_lut[3032] = 8'd168; long_chirp_lut[3033] = 8'd 82; long_chirp_lut[3034] = 8'd 17; long_chirp_lut[3035] = 8'd 2; long_chirp_lut[3036] = 8'd 45; long_chirp_lut[3037] = 8'd124; long_chirp_lut[3038] = 8'd206; long_chirp_lut[3039] = 8'd251;
|
||||
long_chirp_lut[3040] = 8'd241; long_chirp_lut[3041] = 8'd179; long_chirp_lut[3042] = 8'd 94; long_chirp_lut[3043] = 8'd 24; long_chirp_lut[3044] = 8'd 1; long_chirp_lut[3045] = 8'd 35; long_chirp_lut[3046] = 8'd111; long_chirp_lut[3047] = 8'd194; long_chirp_lut[3048] = 8'd247; long_chirp_lut[3049] = 8'd247; long_chirp_lut[3050] = 8'd193; long_chirp_lut[3051] = 8'd109; long_chirp_lut[3052] = 8'd 34; long_chirp_lut[3053] = 8'd 1; long_chirp_lut[3054] = 8'd 24; long_chirp_lut[3055] = 8'd 94;
|
||||
long_chirp_lut[3056] = 8'd179; long_chirp_lut[3057] = 8'd241; long_chirp_lut[3058] = 8'd252; long_chirp_lut[3059] = 8'd207; long_chirp_lut[3060] = 8'd128; long_chirp_lut[3061] = 8'd 48; long_chirp_lut[3062] = 8'd 3; long_chirp_lut[3063] = 8'd 14; long_chirp_lut[3064] = 8'd 76; long_chirp_lut[3065] = 8'd160; long_chirp_lut[3066] = 8'd230; long_chirp_lut[3067] = 8'd254; long_chirp_lut[3068] = 8'd223; long_chirp_lut[3069] = 8'd149; long_chirp_lut[3070] = 8'd 66; long_chirp_lut[3071] = 8'd 10;
|
||||
long_chirp_lut[3072] = 8'd 6; long_chirp_lut[3073] = 8'd 56; long_chirp_lut[3074] = 8'd137; long_chirp_lut[3075] = 8'd214; long_chirp_lut[3076] = 8'd253; long_chirp_lut[3077] = 8'd237; long_chirp_lut[3078] = 8'd172; long_chirp_lut[3079] = 8'd 88; long_chirp_lut[3080] = 8'd 21; long_chirp_lut[3081] = 8'd 1; long_chirp_lut[3082] = 8'd 36; long_chirp_lut[3083] = 8'd111; long_chirp_lut[3084] = 8'd193; long_chirp_lut[3085] = 8'd247; long_chirp_lut[3086] = 8'd248; long_chirp_lut[3087] = 8'd197;
|
||||
long_chirp_lut[3088] = 8'd115; long_chirp_lut[3089] = 8'd 39; long_chirp_lut[3090] = 8'd 2; long_chirp_lut[3091] = 8'd 19; long_chirp_lut[3092] = 8'd 83; long_chirp_lut[3093] = 8'd167; long_chirp_lut[3094] = 8'd233; long_chirp_lut[3095] = 8'd254; long_chirp_lut[3096] = 8'd220; long_chirp_lut[3097] = 8'd146; long_chirp_lut[3098] = 8'd 64; long_chirp_lut[3099] = 8'd 9; long_chirp_lut[3100] = 8'd 6; long_chirp_lut[3101] = 8'd 55; long_chirp_lut[3102] = 8'd135; long_chirp_lut[3103] = 8'd212;
|
||||
long_chirp_lut[3104] = 8'd253; long_chirp_lut[3105] = 8'd240; long_chirp_lut[3106] = 8'd178; long_chirp_lut[3107] = 8'd 96; long_chirp_lut[3108] = 8'd 26; long_chirp_lut[3109] = 8'd 1; long_chirp_lut[3110] = 8'd 29; long_chirp_lut[3111] = 8'd100; long_chirp_lut[3112] = 8'd182; long_chirp_lut[3113] = 8'd241; long_chirp_lut[3114] = 8'd252; long_chirp_lut[3115] = 8'd209; long_chirp_lut[3116] = 8'd132; long_chirp_lut[3117] = 8'd 53; long_chirp_lut[3118] = 8'd 5; long_chirp_lut[3119] = 8'd 10;
|
||||
long_chirp_lut[3120] = 8'd 64; long_chirp_lut[3121] = 8'd145; long_chirp_lut[3122] = 8'd219; long_chirp_lut[3123] = 8'd254; long_chirp_lut[3124] = 8'd235; long_chirp_lut[3125] = 8'd171; long_chirp_lut[3126] = 8'd 89; long_chirp_lut[3127] = 8'd 23; long_chirp_lut[3128] = 8'd 1; long_chirp_lut[3129] = 8'd 32; long_chirp_lut[3130] = 8'd104; long_chirp_lut[3131] = 8'd185; long_chirp_lut[3132] = 8'd242; long_chirp_lut[3133] = 8'd251; long_chirp_lut[3134] = 8'd209; long_chirp_lut[3135] = 8'd132;
|
||||
long_chirp_lut[3136] = 8'd 53; long_chirp_lut[3137] = 8'd 6; long_chirp_lut[3138] = 8'd 9; long_chirp_lut[3139] = 8'd 62; long_chirp_lut[3140] = 8'd142; long_chirp_lut[3141] = 8'd216; long_chirp_lut[3142] = 8'd253; long_chirp_lut[3143] = 8'd238; long_chirp_lut[3144] = 8'd177; long_chirp_lut[3145] = 8'd 95; long_chirp_lut[3146] = 8'd 27; long_chirp_lut[3147] = 8'd 1; long_chirp_lut[3148] = 8'd 27; long_chirp_lut[3149] = 8'd 95; long_chirp_lut[3150] = 8'd176; long_chirp_lut[3151] = 8'd237;
|
||||
long_chirp_lut[3152] = 8'd253; long_chirp_lut[3153] = 8'd217; long_chirp_lut[3154] = 8'd144; long_chirp_lut[3155] = 8'd 64; long_chirp_lut[3156] = 8'd 10; long_chirp_lut[3157] = 8'd 5; long_chirp_lut[3158] = 8'd 49; long_chirp_lut[3159] = 8'd126; long_chirp_lut[3160] = 8'd203; long_chirp_lut[3161] = 8'd250; long_chirp_lut[3162] = 8'd246; long_chirp_lut[3163] = 8'd194; long_chirp_lut[3164] = 8'd115; long_chirp_lut[3165] = 8'd 41; long_chirp_lut[3166] = 8'd 2; long_chirp_lut[3167] = 8'd 15;
|
||||
long_chirp_lut[3168] = 8'd 73; long_chirp_lut[3169] = 8'd154; long_chirp_lut[3170] = 8'd224; long_chirp_lut[3171] = 8'd254; long_chirp_lut[3172] = 8'd233; long_chirp_lut[3173] = 8'd170; long_chirp_lut[3174] = 8'd 89; long_chirp_lut[3175] = 8'd 24; long_chirp_lut[3176] = 8'd 1; long_chirp_lut[3177] = 8'd 29; long_chirp_lut[3178] = 8'd 97; long_chirp_lut[3179] = 8'd177; long_chirp_lut[3180] = 8'd237; long_chirp_lut[3181] = 8'd254; long_chirp_lut[3182] = 8'd219; long_chirp_lut[3183] = 8'd148;
|
||||
long_chirp_lut[3184] = 8'd 68; long_chirp_lut[3185] = 8'd 13; long_chirp_lut[3186] = 8'd 3; long_chirp_lut[3187] = 8'd 43; long_chirp_lut[3188] = 8'd117; long_chirp_lut[3189] = 8'd195; long_chirp_lut[3190] = 8'd246; long_chirp_lut[3191] = 8'd250; long_chirp_lut[3192] = 8'd204; long_chirp_lut[3193] = 8'd128; long_chirp_lut[3194] = 8'd 52; long_chirp_lut[3195] = 8'd 6; long_chirp_lut[3196] = 8'd 8; long_chirp_lut[3197] = 8'd 58; long_chirp_lut[3198] = 8'd135; long_chirp_lut[3199] = 8'd209;
|
||||
long_chirp_lut[3200] = 8'd251; long_chirp_lut[3201] = 8'd244; long_chirp_lut[3202] = 8'd191; long_chirp_lut[3203] = 8'd113; long_chirp_lut[3204] = 8'd 41; long_chirp_lut[3205] = 8'd 3; long_chirp_lut[3206] = 8'd 14; long_chirp_lut[3207] = 8'd 70; long_chirp_lut[3208] = 8'd148; long_chirp_lut[3209] = 8'd219; long_chirp_lut[3210] = 8'd253; long_chirp_lut[3211] = 8'd239; long_chirp_lut[3212] = 8'd180; long_chirp_lut[3213] = 8'd101; long_chirp_lut[3214] = 8'd 33; long_chirp_lut[3215] = 8'd 1;
|
||||
long_chirp_lut[3216] = 8'd 19; long_chirp_lut[3217] = 8'd 79; long_chirp_lut[3218] = 8'd158; long_chirp_lut[3219] = 8'd225; long_chirp_lut[3220] = 8'd254; long_chirp_lut[3221] = 8'd234; long_chirp_lut[3222] = 8'd172; long_chirp_lut[3223] = 8'd 93; long_chirp_lut[3224] = 8'd 28; long_chirp_lut[3225] = 8'd 1; long_chirp_lut[3226] = 8'd 23; long_chirp_lut[3227] = 8'd 85; long_chirp_lut[3228] = 8'd164; long_chirp_lut[3229] = 8'd229; long_chirp_lut[3230] = 8'd254; long_chirp_lut[3231] = 8'd231;
|
||||
long_chirp_lut[3232] = 8'd168; long_chirp_lut[3233] = 8'd 89; long_chirp_lut[3234] = 8'd 25; long_chirp_lut[3235] = 8'd 1; long_chirp_lut[3236] = 8'd 25; long_chirp_lut[3237] = 8'd 88; long_chirp_lut[3238] = 8'd167; long_chirp_lut[3239] = 8'd230; long_chirp_lut[3240] = 8'd255; long_chirp_lut[3241] = 8'd230; long_chirp_lut[3242] = 8'd167; long_chirp_lut[3243] = 8'd 88; long_chirp_lut[3244] = 8'd 25; long_chirp_lut[3245] = 8'd 1; long_chirp_lut[3246] = 8'd 24; long_chirp_lut[3247] = 8'd 87;
|
||||
long_chirp_lut[3248] = 8'd166; long_chirp_lut[3249] = 8'd229; long_chirp_lut[3250] = 8'd254; long_chirp_lut[3251] = 8'd232; long_chirp_lut[3252] = 8'd169; long_chirp_lut[3253] = 8'd 91; long_chirp_lut[3254] = 8'd 27; long_chirp_lut[3255] = 8'd 1; long_chirp_lut[3256] = 8'd 22; long_chirp_lut[3257] = 8'd 83; long_chirp_lut[3258] = 8'd161; long_chirp_lut[3259] = 8'd226; long_chirp_lut[3260] = 8'd254; long_chirp_lut[3261] = 8'd235; long_chirp_lut[3262] = 8'd175; long_chirp_lut[3263] = 8'd 98;
|
||||
long_chirp_lut[3264] = 8'd 31; long_chirp_lut[3265] = 8'd 1; long_chirp_lut[3266] = 8'd 18; long_chirp_lut[3267] = 8'd 76; long_chirp_lut[3268] = 8'd153; long_chirp_lut[3269] = 8'd220; long_chirp_lut[3270] = 8'd253; long_chirp_lut[3271] = 8'd240; long_chirp_lut[3272] = 8'd184; long_chirp_lut[3273] = 8'd108; long_chirp_lut[3274] = 8'd 39; long_chirp_lut[3275] = 8'd 3; long_chirp_lut[3276] = 8'd 13; long_chirp_lut[3277] = 8'd 65; long_chirp_lut[3278] = 8'd141; long_chirp_lut[3279] = 8'd211;
|
||||
long_chirp_lut[3280] = 8'd251; long_chirp_lut[3281] = 8'd245; long_chirp_lut[3282] = 8'd196; long_chirp_lut[3283] = 8'd122; long_chirp_lut[3284] = 8'd 50; long_chirp_lut[3285] = 8'd 6; long_chirp_lut[3286] = 8'd 7; long_chirp_lut[3287] = 8'd 52; long_chirp_lut[3288] = 8'd125; long_chirp_lut[3289] = 8'd199; long_chirp_lut[3290] = 8'd246; long_chirp_lut[3291] = 8'd251; long_chirp_lut[3292] = 8'd210; long_chirp_lut[3293] = 8'd139; long_chirp_lut[3294] = 8'd 65; long_chirp_lut[3295] = 8'd 13;
|
||||
long_chirp_lut[3296] = 8'd 2; long_chirp_lut[3297] = 8'd 38; long_chirp_lut[3298] = 8'd105; long_chirp_lut[3299] = 8'd181; long_chirp_lut[3300] = 8'd237; long_chirp_lut[3301] = 8'd254; long_chirp_lut[3302] = 8'd225; long_chirp_lut[3303] = 8'd161; long_chirp_lut[3304] = 8'd 84; long_chirp_lut[3305] = 8'd 24; long_chirp_lut[3306] = 8'd 1; long_chirp_lut[3307] = 8'd 23; long_chirp_lut[3308] = 8'd 83; long_chirp_lut[3309] = 8'd159; long_chirp_lut[3310] = 8'd224; long_chirp_lut[3311] = 8'd254;
|
||||
long_chirp_lut[3312] = 8'd239; long_chirp_lut[3313] = 8'd184; long_chirp_lut[3314] = 8'd109; long_chirp_lut[3315] = 8'd 41; long_chirp_lut[3316] = 8'd 3; long_chirp_lut[3317] = 8'd 10; long_chirp_lut[3318] = 8'd 59; long_chirp_lut[3319] = 8'd132; long_chirp_lut[3320] = 8'd203; long_chirp_lut[3321] = 8'd248; long_chirp_lut[3322] = 8'd250; long_chirp_lut[3323] = 8'd208; long_chirp_lut[3324] = 8'd138; long_chirp_lut[3325] = 8'd 64; long_chirp_lut[3326] = 8'd 13; long_chirp_lut[3327] = 8'd 2;
|
||||
long_chirp_lut[3328] = 8'd 35; long_chirp_lut[3329] = 8'd101; long_chirp_lut[3330] = 8'd176; long_chirp_lut[3331] = 8'd234; long_chirp_lut[3332] = 8'd254; long_chirp_lut[3333] = 8'd230; long_chirp_lut[3334] = 8'd170; long_chirp_lut[3335] = 8'd 95; long_chirp_lut[3336] = 8'd 31; long_chirp_lut[3337] = 8'd 1; long_chirp_lut[3338] = 8'd 15; long_chirp_lut[3339] = 8'd 69; long_chirp_lut[3340] = 8'd142; long_chirp_lut[3341] = 8'd211; long_chirp_lut[3342] = 8'd250; long_chirp_lut[3343] = 8'd247;
|
||||
long_chirp_lut[3344] = 8'd202; long_chirp_lut[3345] = 8'd132; long_chirp_lut[3346] = 8'd 60; long_chirp_lut[3347] = 8'd 11; long_chirp_lut[3348] = 8'd 3; long_chirp_lut[3349] = 8'd 38; long_chirp_lut[3350] = 8'd104; long_chirp_lut[3351] = 8'd178; long_chirp_lut[3352] = 8'd235; long_chirp_lut[3353] = 8'd254; long_chirp_lut[3354] = 8'd231; long_chirp_lut[3355] = 8'd171; long_chirp_lut[3356] = 8'd 97; long_chirp_lut[3357] = 8'd 33; long_chirp_lut[3358] = 8'd 2; long_chirp_lut[3359] = 8'd 13;
|
||||
long_chirp_lut[3360] = 8'd 64; long_chirp_lut[3361] = 8'd136; long_chirp_lut[3362] = 8'd206; long_chirp_lut[3363] = 8'd248; long_chirp_lut[3364] = 8'd250; long_chirp_lut[3365] = 8'd209; long_chirp_lut[3366] = 8'd141; long_chirp_lut[3367] = 8'd 69; long_chirp_lut[3368] = 8'd 16; long_chirp_lut[3369] = 8'd 1; long_chirp_lut[3370] = 8'd 29; long_chirp_lut[3371] = 8'd 90; long_chirp_lut[3372] = 8'd164; long_chirp_lut[3373] = 8'd226; long_chirp_lut[3374] = 8'd254; long_chirp_lut[3375] = 8'd240;
|
||||
long_chirp_lut[3376] = 8'd187; long_chirp_lut[3377] = 8'd115; long_chirp_lut[3378] = 8'd 47; long_chirp_lut[3379] = 8'd 6; long_chirp_lut[3380] = 8'd 6; long_chirp_lut[3381] = 8'd 46; long_chirp_lut[3382] = 8'd114; long_chirp_lut[3383] = 8'd186; long_chirp_lut[3384] = 8'd239; long_chirp_lut[3385] = 8'd254; long_chirp_lut[3386] = 8'd227; long_chirp_lut[3387] = 8'd167; long_chirp_lut[3388] = 8'd 94; long_chirp_lut[3389] = 8'd 32; long_chirp_lut[3390] = 8'd 2; long_chirp_lut[3391] = 8'd 13;
|
||||
long_chirp_lut[3392] = 8'd 63; long_chirp_lut[3393] = 8'd134; long_chirp_lut[3394] = 8'd203; long_chirp_lut[3395] = 8'd247; long_chirp_lut[3396] = 8'd251; long_chirp_lut[3397] = 8'd215; long_chirp_lut[3398] = 8'd150; long_chirp_lut[3399] = 8'd 77; long_chirp_lut[3400] = 8'd 21; long_chirp_lut[3401] = 8'd 1; long_chirp_lut[3402] = 8'd 21; long_chirp_lut[3403] = 8'd 77; long_chirp_lut[3404] = 8'd149; long_chirp_lut[3405] = 8'd214; long_chirp_lut[3406] = 8'd251; long_chirp_lut[3407] = 8'd247;
|
||||
long_chirp_lut[3408] = 8'd204; long_chirp_lut[3409] = 8'd136; long_chirp_lut[3410] = 8'd 66; long_chirp_lut[3411] = 8'd 15; long_chirp_lut[3412] = 8'd 1; long_chirp_lut[3413] = 8'd 28; long_chirp_lut[3414] = 8'd 88; long_chirp_lut[3415] = 8'd160; long_chirp_lut[3416] = 8'd222; long_chirp_lut[3417] = 8'd253; long_chirp_lut[3418] = 8'd244; long_chirp_lut[3419] = 8'd197; long_chirp_lut[3420] = 8'd128; long_chirp_lut[3421] = 8'd 58; long_chirp_lut[3422] = 8'd 12; long_chirp_lut[3423] = 8'd 2;
|
||||
long_chirp_lut[3424] = 8'd 33; long_chirp_lut[3425] = 8'd 94; long_chirp_lut[3426] = 8'd166; long_chirp_lut[3427] = 8'd226; long_chirp_lut[3428] = 8'd254; long_chirp_lut[3429] = 8'd241; long_chirp_lut[3430] = 8'd193; long_chirp_lut[3431] = 8'd123; long_chirp_lut[3432] = 8'd 55; long_chirp_lut[3433] = 8'd 10; long_chirp_lut[3434] = 8'd 3; long_chirp_lut[3435] = 8'd 35; long_chirp_lut[3436] = 8'd 96; long_chirp_lut[3437] = 8'd168; long_chirp_lut[3438] = 8'd227; long_chirp_lut[3439] = 8'd254;
|
||||
long_chirp_lut[3440] = 8'd241; long_chirp_lut[3441] = 8'd192; long_chirp_lut[3442] = 8'd123; long_chirp_lut[3443] = 8'd 55; long_chirp_lut[3444] = 8'd 10; long_chirp_lut[3445] = 8'd 2; long_chirp_lut[3446] = 8'd 34; long_chirp_lut[3447] = 8'd 94; long_chirp_lut[3448] = 8'd166; long_chirp_lut[3449] = 8'd225; long_chirp_lut[3450] = 8'd253; long_chirp_lut[3451] = 8'd243; long_chirp_lut[3452] = 8'd196; long_chirp_lut[3453] = 8'd128; long_chirp_lut[3454] = 8'd 60; long_chirp_lut[3455] = 8'd 13;
|
||||
long_chirp_lut[3456] = 8'd 2; long_chirp_lut[3457] = 8'd 30; long_chirp_lut[3458] = 8'd 88; long_chirp_lut[3459] = 8'd159; long_chirp_lut[3460] = 8'd220; long_chirp_lut[3461] = 8'd252; long_chirp_lut[3462] = 8'd246; long_chirp_lut[3463] = 8'd203; long_chirp_lut[3464] = 8'd137; long_chirp_lut[3465] = 8'd 68; long_chirp_lut[3466] = 8'd 17; long_chirp_lut[3467] = 8'd 1; long_chirp_lut[3468] = 8'd 23; long_chirp_lut[3469] = 8'd 78; long_chirp_lut[3470] = 8'd148; long_chirp_lut[3471] = 8'd211;
|
||||
long_chirp_lut[3472] = 8'd249; long_chirp_lut[3473] = 8'd250; long_chirp_lut[3474] = 8'd213; long_chirp_lut[3475] = 8'd150; long_chirp_lut[3476] = 8'd 80; long_chirp_lut[3477] = 8'd 25; long_chirp_lut[3478] = 8'd 1; long_chirp_lut[3479] = 8'd 15; long_chirp_lut[3480] = 8'd 64; long_chirp_lut[3481] = 8'd132; long_chirp_lut[3482] = 8'd198; long_chirp_lut[3483] = 8'd243; long_chirp_lut[3484] = 8'd253; long_chirp_lut[3485] = 8'd225; long_chirp_lut[3486] = 8'd167; long_chirp_lut[3487] = 8'd 98;
|
||||
long_chirp_lut[3488] = 8'd 37; long_chirp_lut[3489] = 8'd 4; long_chirp_lut[3490] = 8'd 8; long_chirp_lut[3491] = 8'd 48; long_chirp_lut[3492] = 8'd112; long_chirp_lut[3493] = 8'd180; long_chirp_lut[3494] = 8'd233; long_chirp_lut[3495] = 8'd254; long_chirp_lut[3496] = 8'd238; long_chirp_lut[3497] = 8'd188; long_chirp_lut[3498] = 8'd120; long_chirp_lut[3499] = 8'd 55; long_chirp_lut[3500] = 8'd 11; long_chirp_lut[3501] = 8'd 2; long_chirp_lut[3502] = 8'd 30; long_chirp_lut[3503] = 8'd 87;
|
||||
long_chirp_lut[3504] = 8'd157; long_chirp_lut[3505] = 8'd217; long_chirp_lut[3506] = 8'd251; long_chirp_lut[3507] = 8'd248; long_chirp_lut[3508] = 8'd210; long_chirp_lut[3509] = 8'd147; long_chirp_lut[3510] = 8'd 79; long_chirp_lut[3511] = 8'd 25; long_chirp_lut[3512] = 8'd 1; long_chirp_lut[3513] = 8'd 14; long_chirp_lut[3514] = 8'd 61; long_chirp_lut[3515] = 8'd127; long_chirp_lut[3516] = 8'd193; long_chirp_lut[3517] = 8'd240; long_chirp_lut[3518] = 8'd254; long_chirp_lut[3519] = 8'd231;
|
||||
long_chirp_lut[3520] = 8'd178; long_chirp_lut[3521] = 8'd110; long_chirp_lut[3522] = 8'd 47; long_chirp_lut[3523] = 8'd 8; long_chirp_lut[3524] = 8'd 3; long_chirp_lut[3525] = 8'd 35; long_chirp_lut[3526] = 8'd 93; long_chirp_lut[3527] = 8'd162; long_chirp_lut[3528] = 8'd220; long_chirp_lut[3529] = 8'd252; long_chirp_lut[3530] = 8'd247; long_chirp_lut[3531] = 8'd209; long_chirp_lut[3532] = 8'd146; long_chirp_lut[3533] = 8'd 79; long_chirp_lut[3534] = 8'd 25; long_chirp_lut[3535] = 8'd 1;
|
||||
long_chirp_lut[3536] = 8'd 13; long_chirp_lut[3537] = 8'd 58; long_chirp_lut[3538] = 8'd123; long_chirp_lut[3539] = 8'd189; long_chirp_lut[3540] = 8'd237; long_chirp_lut[3541] = 8'd254; long_chirp_lut[3542] = 8'd235; long_chirp_lut[3543] = 8'd185; long_chirp_lut[3544] = 8'd119; long_chirp_lut[3545] = 8'd 55; long_chirp_lut[3546] = 8'd 12; long_chirp_lut[3547] = 8'd 1; long_chirp_lut[3548] = 8'd 27; long_chirp_lut[3549] = 8'd 81; long_chirp_lut[3550] = 8'd148; long_chirp_lut[3551] = 8'd209;
|
||||
long_chirp_lut[3552] = 8'd247; long_chirp_lut[3553] = 8'd252; long_chirp_lut[3554] = 8'd221; long_chirp_lut[3555] = 8'd164; long_chirp_lut[3556] = 8'd 97; long_chirp_lut[3557] = 8'd 38; long_chirp_lut[3558] = 8'd 5; long_chirp_lut[3559] = 8'd 5; long_chirp_lut[3560] = 8'd 40; long_chirp_lut[3561] = 8'd100; long_chirp_lut[3562] = 8'd167; long_chirp_lut[3563] = 8'd223; long_chirp_lut[3564] = 8'd252; long_chirp_lut[3565] = 8'd247; long_chirp_lut[3566] = 8'd209; long_chirp_lut[3567] = 8'd148;
|
||||
long_chirp_lut[3568] = 8'd 81; long_chirp_lut[3569] = 8'd 27; long_chirp_lut[3570] = 8'd 2; long_chirp_lut[3571] = 8'd 11; long_chirp_lut[3572] = 8'd 52; long_chirp_lut[3573] = 8'd114; long_chirp_lut[3574] = 8'd180; long_chirp_lut[3575] = 8'd231; long_chirp_lut[3576] = 8'd254; long_chirp_lut[3577] = 8'd242; long_chirp_lut[3578] = 8'd199; long_chirp_lut[3579] = 8'd136; long_chirp_lut[3580] = 8'd 71; long_chirp_lut[3581] = 8'd 21; long_chirp_lut[3582] = 8'd 1; long_chirp_lut[3583] = 8'd 15;
|
||||
long_chirp_lut[3584] = 8'd 60; long_chirp_lut[3585] = 8'd123; long_chirp_lut[3586] = 8'd188; long_chirp_lut[3587] = 8'd236; long_chirp_lut[3588] = 8'd254; long_chirp_lut[3589] = 8'd239; long_chirp_lut[3590] = 8'd193; long_chirp_lut[3591] = 8'd129; long_chirp_lut[3592] = 8'd 65; long_chirp_lut[3593] = 8'd 18; long_chirp_lut[3594] = 8'd 1; long_chirp_lut[3595] = 8'd 17; long_chirp_lut[3596] = 8'd 64; long_chirp_lut[3597] = 8'd127; long_chirp_lut[3598] = 8'd191; long_chirp_lut[3599] = 8'd237;
|
||||
end
|
||||
|
||||
// Short PLFM chirp LUT (0.5us, 30MHz to 10MHz)
|
||||
initial begin
|
||||
short_chirp_lut[ 0] = 8'd255; short_chirp_lut[ 1] = 8'd129; short_chirp_lut[ 2] = 8'd 1; short_chirp_lut[ 3] = 8'd118; short_chirp_lut[ 4] = 8'd253; short_chirp_lut[ 5] = 8'd155; short_chirp_lut[ 6] = 8'd 7; short_chirp_lut[ 7] = 8'd 75;
|
||||
short_chirp_lut[ 8] = 8'd235; short_chirp_lut[ 9] = 8'd210; short_chirp_lut[10] = 8'd 46; short_chirp_lut[11] = 8'd 17; short_chirp_lut[12] = 8'd167; short_chirp_lut[13] = 8'd254; short_chirp_lut[14] = 8'd145; short_chirp_lut[15] = 8'd 10;
|
||||
short_chirp_lut[16] = 8'd 49; short_chirp_lut[17] = 8'd201; short_chirp_lut[18] = 8'd248; short_chirp_lut[19] = 8'd129; short_chirp_lut[20] = 8'd 8; short_chirp_lut[21] = 8'd 45; short_chirp_lut[22] = 8'd187; short_chirp_lut[23] = 8'd254;
|
||||
short_chirp_lut[24] = 8'd167; short_chirp_lut[25] = 8'd 34; short_chirp_lut[26] = 8'd 10; short_chirp_lut[27] = 8'd118; short_chirp_lut[28] = 8'd235; short_chirp_lut[29] = 8'd238; short_chirp_lut[30] = 8'd127; short_chirp_lut[31] = 8'd 18;
|
||||
short_chirp_lut[32] = 8'd 15; short_chirp_lut[33] = 8'd118; short_chirp_lut[34] = 8'd228; short_chirp_lut[35] = 8'd249; short_chirp_lut[36] = 8'd167; short_chirp_lut[37] = 8'd 54; short_chirp_lut[38] = 8'd 1; short_chirp_lut[39] = 8'd 45;
|
||||
short_chirp_lut[40] = 8'd150; short_chirp_lut[41] = 8'd237; short_chirp_lut[42] = 8'd248; short_chirp_lut[43] = 8'd180; short_chirp_lut[44] = 8'd 80; short_chirp_lut[45] = 8'd 10; short_chirp_lut[46] = 8'd 10; short_chirp_lut[47] = 8'd 75;
|
||||
short_chirp_lut[48] = 8'd167; short_chirp_lut[49] = 8'd237; short_chirp_lut[50] = 8'd253; short_chirp_lut[51] = 8'd210; short_chirp_lut[52] = 8'd132; short_chirp_lut[53] = 8'd 54; short_chirp_lut[54] = 8'd 7; short_chirp_lut[55] = 8'd 6;
|
||||
short_chirp_lut[56] = 8'd 49; short_chirp_lut[57] = 8'd118; short_chirp_lut[58] = 8'd187; short_chirp_lut[59] = 8'd237;
|
||||
end
|
||||
@@ -0,0 +1,130 @@
|
||||
`timescale 1ns / 1ps
|
||||
module chirp_memory_loader_param #(
|
||||
parameter LONG_I_FILE_SEG0 = "C:/Users/dell/Desktop/ASUS/RADAR_V5/Firmware/FPGA/PLFM_RADAR_Xilinx_ISE_V2/Python/mem_files/fpga_mem_files/long_chirp_seg0_i.mem",
|
||||
parameter LONG_Q_FILE_SEG0 = "C:/Users/dell/Desktop/ASUS/RADAR_V5/Firmware/FPGA/PLFM_RADAR_Xilinx_ISE_V2/Python/mem_files/fpga_mem_files/long_chirp_seg0_q.mem",
|
||||
parameter LONG_I_FILE_SEG1 = "C:/Users/dell/Desktop/ASUS/RADAR_V5/Firmware/FPGA/PLFM_RADAR_Xilinx_ISE_V2/Python/mem_files/fpga_mem_files/long_chirp_seg1_i.mem",
|
||||
parameter LONG_Q_FILE_SEG1 = "C:/Users/dell/Desktop/ASUS/RADAR_V5/Firmware/FPGA/PLFM_RADAR_Xilinx_ISE_V2/Python/mem_files/fpga_mem_files/long_chirp_seg1_q.mem",
|
||||
parameter LONG_I_FILE_SEG2 = "C:/Users/dell/Desktop/ASUS/RADAR_V5/Firmware/FPGA/PLFM_RADAR_Xilinx_ISE_V2/Python/mem_files/fpga_mem_files/long_chirp_seg2_i.mem",
|
||||
parameter LONG_Q_FILE_SEG2 = "C:/Users/dell/Desktop/ASUS/RADAR_V5/Firmware/FPGA/PLFM_RADAR_Xilinx_ISE_V2/Python/mem_files/fpga_mem_files/long_chirp_seg2_q.mem",
|
||||
parameter LONG_I_FILE_SEG3 = "C:/Users/dell/Desktop/ASUS/RADAR_V5/Firmware/FPGA/PLFM_RADAR_Xilinx_ISE_V2/Python/mem_files/fpga_mem_files/long_chirp_seg3_i.mem",
|
||||
parameter LONG_Q_FILE_SEG3 = "C:/Users/dell/Desktop/ASUS/RADAR_V5/Firmware/FPGA/PLFM_RADAR_Xilinx_ISE_V2/Python/mem_files/fpga_mem_files/long_chirp_seg3_q.mem",
|
||||
parameter SHORT_I_FILE = "C:/Users/dell/Desktop/ASUS/RADAR_V5/Firmware/FPGA/PLFM_RADAR_Xilinx_ISE_V2/Python/mem_files/fpga_mem_files/short_chirp_i.mem",
|
||||
parameter SHORT_Q_FILE = "C:/Users/dell/Desktop/ASUS/RADAR_V5/Firmware/FPGA/PLFM_RADAR_Xilinx_ISE_V2/Python/mem_files/fpga_mem_files/short_chirp_q.mem",
|
||||
parameter DEBUG = 1
|
||||
)(
|
||||
input wire clk,
|
||||
input wire reset_n,
|
||||
input wire [1:0] segment_select,
|
||||
input wire mem_request,
|
||||
input wire use_long_chirp,
|
||||
input wire [9:0] sample_addr,
|
||||
output reg [15:0] ref_i,
|
||||
output reg [15:0] ref_q,
|
||||
output reg mem_ready
|
||||
);
|
||||
|
||||
// Memory declarations - now 4096 samples for 4 segments
|
||||
(* ram_style = "block" *) reg [15:0] long_chirp_i [0:4095];
|
||||
(* ram_style = "block" *) reg [15:0] long_chirp_q [0:4095];
|
||||
(* ram_style = "block" *) reg [15:0] short_chirp_i [0:1023];
|
||||
(* ram_style = "block" *) reg [15:0] short_chirp_q [0:1023];
|
||||
|
||||
// Initialize memory
|
||||
integer i;
|
||||
reg [799:0] debug_msg;
|
||||
|
||||
initial begin
|
||||
if (DEBUG) begin
|
||||
$display("[MEM] Starting memory initialization for 4 long chirp segments");
|
||||
end
|
||||
|
||||
// === LOAD LONG CHIRP - 4 SEGMENTS ===
|
||||
// Segment 0 (addresses 0-1023)
|
||||
$readmemh(LONG_I_FILE_SEG0, long_chirp_i, 0, 1023);
|
||||
$readmemh(LONG_Q_FILE_SEG0, long_chirp_q, 0, 1023);
|
||||
if (DEBUG) $display("[MEM] Loaded long chirp segment 0 (0-1023)");
|
||||
|
||||
// Segment 1 (addresses 1024-2047)
|
||||
$readmemh(LONG_I_FILE_SEG1, long_chirp_i, 1024, 2047);
|
||||
$readmemh(LONG_Q_FILE_SEG1, long_chirp_q, 1024, 2047);
|
||||
if (DEBUG) $display("[MEM] Loaded long chirp segment 1 (1024-2047)");
|
||||
|
||||
// Segment 2 (addresses 2048-3071)
|
||||
$readmemh(LONG_I_FILE_SEG2, long_chirp_i, 2048, 3071);
|
||||
$readmemh(LONG_Q_FILE_SEG2, long_chirp_q, 2048, 3071);
|
||||
if (DEBUG) $display("[MEM] Loaded long chirp segment 2 (2048-3071)");
|
||||
|
||||
// Segment 3 (addresses 3072-4095)
|
||||
$readmemh(LONG_I_FILE_SEG3, long_chirp_i, 3072, 4095);
|
||||
$readmemh(LONG_Q_FILE_SEG3, long_chirp_q, 3072, 4095);
|
||||
if (DEBUG) $display("[MEM] Loaded long chirp segment 3 (3072-4095)");
|
||||
|
||||
// === LOAD SHORT CHIRP ===
|
||||
// Load first 50 samples (0-49)
|
||||
$readmemh(SHORT_I_FILE, short_chirp_i);
|
||||
$readmemh(SHORT_Q_FILE, short_chirp_q);
|
||||
if (DEBUG) $display("[MEM] Loaded short chirp (0-49)");
|
||||
|
||||
// Zero pad remaining 974 samples (50-1023)
|
||||
for (i = 50; i < 1024; i = i + 1) begin
|
||||
short_chirp_i[i] = 16'h0000;
|
||||
short_chirp_q[i] = 16'h0000;
|
||||
end
|
||||
if (DEBUG) $display("[MEM] Zero-padded short chirp from 50-1023");
|
||||
|
||||
// === VERIFICATION ===
|
||||
if (DEBUG) begin
|
||||
$display("[MEM] Memory loading complete. Verification samples:");
|
||||
$display(" Long[0]: I=%h Q=%h", long_chirp_i[0], long_chirp_q[0]);
|
||||
$display(" Long[1023]: I=%h Q=%h", long_chirp_i[1023], long_chirp_q[1023]);
|
||||
$display(" Long[1024]: I=%h Q=%h", long_chirp_i[1024], long_chirp_q[1024]);
|
||||
$display(" Long[2047]: I=%h Q=%h", long_chirp_i[2047], long_chirp_q[2047]);
|
||||
$display(" Long[2048]: I=%h Q=%h", long_chirp_i[2048], long_chirp_q[2048]);
|
||||
$display(" Long[3071]: I=%h Q=%h", long_chirp_i[3071], long_chirp_q[3071]);
|
||||
$display(" Long[3072]: I=%h Q=%h", long_chirp_i[3072], long_chirp_q[3072]);
|
||||
$display(" Long[4095]: I=%h Q=%h", long_chirp_i[4095], long_chirp_q[4095]);
|
||||
$display(" Short[0]: I=%h Q=%h", short_chirp_i[0], short_chirp_q[0]);
|
||||
$display(" Short[49]: I=%h Q=%h", short_chirp_i[49], short_chirp_q[49]);
|
||||
$display(" Short[50]: I=%h Q=%h (zero-padded)", short_chirp_i[50], short_chirp_q[50]);
|
||||
end
|
||||
end
|
||||
|
||||
// Memory access logic
|
||||
reg [11:0] long_addr;
|
||||
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
ref_i <= 16'd0;
|
||||
ref_q <= 16'd0;
|
||||
mem_ready <= 1'b0;
|
||||
end else begin
|
||||
if (mem_request) begin
|
||||
if (use_long_chirp) begin
|
||||
// Direct addressing for 4 segments
|
||||
long_addr = {segment_select, sample_addr}; // segment_select[1:0] + sample_addr[9:0]
|
||||
ref_i <= long_chirp_i[long_addr];
|
||||
ref_q <= long_chirp_q[long_addr];
|
||||
|
||||
if (DEBUG && $time < 100) begin
|
||||
$display("[MEM @%0t] Long chirp: seg=%b, addr=%d, I=%h, Q=%h",
|
||||
$time, segment_select, long_addr,
|
||||
long_chirp_i[long_addr], long_chirp_q[long_addr]);
|
||||
end
|
||||
end else begin
|
||||
// Short chirp (0-1023)
|
||||
ref_i <= short_chirp_i[sample_addr];
|
||||
ref_q <= short_chirp_q[sample_addr];
|
||||
|
||||
if (DEBUG && $time < 100) begin
|
||||
$display("[MEM @%0t] Short chirp: addr=%d, I=%h, Q=%h",
|
||||
$time, sample_addr, short_chirp_i[sample_addr], short_chirp_q[sample_addr]);
|
||||
end
|
||||
end
|
||||
mem_ready <= 1'b1;
|
||||
end else begin
|
||||
mem_ready <= 1'b0;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,300 @@
|
||||
module cic_decimator_4x_enhanced (
|
||||
input wire clk, // 400MHz input clock
|
||||
input wire reset_n,
|
||||
input wire signed [17:0] data_in, // 18-bit input
|
||||
input wire data_valid,
|
||||
output reg signed [17:0] data_out, // 18-bit output
|
||||
output reg data_out_valid, // Valid at 100MHz
|
||||
// Enhanced monitoring outputs
|
||||
output reg saturation_detected, // Latched saturation indicator
|
||||
output reg [7:0] max_value_monitor, // For gain control
|
||||
input wire reset_monitors // Clear saturation and max value
|
||||
);
|
||||
|
||||
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
|
||||
|
||||
// Diagnostic registers
|
||||
reg [7:0] saturation_event_count;
|
||||
reg [31:0] sample_count;
|
||||
|
||||
// Temporary signals for calculations
|
||||
reg signed [35:0] abs_integrator_value;
|
||||
reg signed [35:0] temp_scaled_output;
|
||||
reg signed [17:0] temp_output; // Temporary output for proper range checking
|
||||
|
||||
integer i, j;
|
||||
|
||||
// Initialize
|
||||
initial begin
|
||||
for (i = 0; i < STAGES; i = i + 1) begin
|
||||
integrator[i] = 0;
|
||||
comb[i] = 0;
|
||||
for (j = 0; j < COMB_DELAY; j = j + 1) begin
|
||||
comb_delay[i][j] = 0;
|
||||
end
|
||||
end
|
||||
decimation_counter = 0;
|
||||
data_valid_delayed = 0;
|
||||
data_valid_comb = 0;
|
||||
output_counter = 0;
|
||||
max_integrator_value = 0;
|
||||
overflow_detected = 0;
|
||||
overflow_latched = 0;
|
||||
saturation_detected = 0;
|
||||
saturation_event_count = 0;
|
||||
sample_count = 0;
|
||||
max_value_monitor = 0;
|
||||
data_out = 0;
|
||||
data_out_valid = 0;
|
||||
abs_integrator_value = 0;
|
||||
temp_scaled_output = 0;
|
||||
temp_output = 0;
|
||||
end
|
||||
|
||||
// Enhanced integrator section with proper saturation monitoring
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
for (i = 0; i < STAGES; i = i + 1) begin
|
||||
integrator[i] <= 0;
|
||||
end
|
||||
decimation_counter <= 0;
|
||||
data_valid_delayed <= 0;
|
||||
data_valid_comb <= 0;
|
||||
max_integrator_value <= 0;
|
||||
overflow_detected <= 0;
|
||||
sample_count <= 0;
|
||||
abs_integrator_value <= 0;
|
||||
|
||||
if (reset_monitors) begin
|
||||
overflow_latched <= 0;
|
||||
saturation_detected <= 0;
|
||||
saturation_event_count <= 0;
|
||||
max_value_monitor <= 0;
|
||||
end
|
||||
end else 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;
|
||||
$display("CIC_SATURATION: Positive overflow at sample %0d", sample_count);
|
||||
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;
|
||||
$display("CIC_SATURATION: Negative overflow at sample %0d", sample_count);
|
||||
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
|
||||
|
||||
// Calculate absolute value for monitoring
|
||||
abs_integrator_value <= (integrator[0][35]) ? -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]; // Fixed: use the calculated absolute value
|
||||
end
|
||||
|
||||
// Remaining integrator stages with saturation protection
|
||||
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
|
||||
end
|
||||
|
||||
// Enhanced decimation control
|
||||
if (decimation_counter == DECIMATION - 1) begin
|
||||
decimation_counter <= 0;
|
||||
data_valid_delayed <= 1;
|
||||
output_counter <= output_counter + 1;
|
||||
|
||||
/*// Debug output for first few samples
|
||||
if (output_counter < 10) begin
|
||||
$display("CIC_DECIM: sample=%0d, integrator[%0d]=%h, max_val=%h, sat=%b",
|
||||
output_counter, STAGES-1, integrator[STAGES-1],
|
||||
max_integrator_value, saturation_detected);
|
||||
end
|
||||
*/
|
||||
end else begin
|
||||
decimation_counter <= decimation_counter + 1;
|
||||
data_valid_delayed <= 0;
|
||||
end
|
||||
end else begin
|
||||
data_valid_delayed <= 0;
|
||||
overflow_detected <= 1'b0; // Clear immediate detection when no data
|
||||
end
|
||||
|
||||
// Monitor control - clear latched saturation on reset_monitors
|
||||
if (reset_monitors) begin
|
||||
overflow_latched <= 0;
|
||||
saturation_detected <= 0;
|
||||
max_integrator_value <= 0;
|
||||
max_value_monitor <= 0;
|
||||
saturation_event_count <= 0;
|
||||
end
|
||||
end
|
||||
|
||||
// Pipeline the valid signal for comb section
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
data_valid_comb <= 0;
|
||||
end else begin
|
||||
data_valid_comb <= data_valid_delayed;
|
||||
end
|
||||
end
|
||||
|
||||
// Enhanced comb section with FIXED scaling and saturation monitoring
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
for (i = 0; i < STAGES; i = i + 1) begin
|
||||
comb[i] <= 0;
|
||||
for (j = 0; j < COMB_DELAY; j = j + 1) begin
|
||||
comb_delay[i][j] <= 0;
|
||||
end
|
||||
end
|
||||
data_out <= 0;
|
||||
data_out_valid <= 0;
|
||||
temp_scaled_output <= 0;
|
||||
temp_output <= 0;
|
||||
end else if (data_valid_comb) begin
|
||||
// Enhanced comb processing with saturation check
|
||||
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);
|
||||
overflow_latched <= 1'b1;
|
||||
saturation_detected <= 1'b1;
|
||||
end else if (integrator[STAGES-1] - comb_delay[0][COMB_DELAY-1] < -(2**35)) begin
|
||||
comb[0] <= -(2**35);
|
||||
overflow_latched <= 1'b1;
|
||||
saturation_detected <= 1'b1;
|
||||
end else begin
|
||||
comb[0] <= integrator[STAGES-1] - comb_delay[0][COMB_DELAY-1];
|
||||
end
|
||||
|
||||
// Update delay line for first stage
|
||||
for (j = COMB_DELAY-1; j > 0; j = j - 1) begin
|
||||
comb_delay[0][j] <= comb_delay[0][j-1];
|
||||
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);
|
||||
overflow_latched <= 1'b1;
|
||||
saturation_detected <= 1'b1;
|
||||
end else if (comb[i-1] - comb_delay[i][COMB_DELAY-1] < -(2**35)) begin
|
||||
comb[i] <= -(2**35);
|
||||
overflow_latched <= 1'b1;
|
||||
saturation_detected <= 1'b1;
|
||||
end else begin
|
||||
comb[i] <= comb[i-1] - comb_delay[i][COMB_DELAY-1];
|
||||
end
|
||||
|
||||
// Update delay line
|
||||
for (j = COMB_DELAY-1; j > 0; j = j - 1) begin
|
||||
comb_delay[i][j] <= comb_delay[i][j-1];
|
||||
end
|
||||
comb_delay[i][0] <= comb[i-1];
|
||||
end
|
||||
end
|
||||
|
||||
// FIXED: Use proper scaling for 5 stages and decimation by 4
|
||||
// Gain = (4^5) = 1024 = 2^10, so scale by 2^10 to normalize
|
||||
temp_scaled_output <= comb[STAGES-1] >>> 10;
|
||||
|
||||
// FIXED: Extract 18-bit output properly
|
||||
temp_output <= temp_scaled_output[17:0];
|
||||
|
||||
// FIXED: Proper saturation detection for 18-bit signed range
|
||||
// Check if the 18-bit truncated value matches the intended value
|
||||
if (temp_scaled_output > 131071) begin // 2^17 - 1
|
||||
data_out <= 131071;
|
||||
overflow_latched <= 1'b1;
|
||||
saturation_detected <= 1'b1;
|
||||
saturation_event_count <= saturation_event_count + 1;
|
||||
$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);
|
||||
end else if (temp_scaled_output < -131072) begin // -2^17
|
||||
data_out <= -131072;
|
||||
overflow_latched <= 1'b1;
|
||||
saturation_detected <= 1'b1;
|
||||
saturation_event_count <= saturation_event_count + 1;
|
||||
$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);
|
||||
end else begin
|
||||
// FIXED: Use the properly truncated 18-bit value
|
||||
data_out <= temp_output;
|
||||
overflow_latched <= 1'b0;
|
||||
saturation_detected <= 1'b0;
|
||||
if (output_counter < 20) begin
|
||||
//$display("CIC_OUTPUT_GOOD: raw=%h, scaled=%h, temp_out=%d, final_out=%d",
|
||||
// comb[STAGES-1], temp_scaled_output, temp_output, data_out);
|
||||
end
|
||||
end
|
||||
|
||||
data_out_valid <= 1;
|
||||
|
||||
// Debug output for first samples
|
||||
if (output_counter < 10) begin
|
||||
// $display("CIC_DEBUG: sample=%0d, raw=%h, scaled=%h, out=%d, sat=%b",
|
||||
// output_counter, comb[STAGES-1], temp_scaled_output, data_out, saturation_detected);
|
||||
end
|
||||
end else begin
|
||||
data_out_valid <= 0;
|
||||
end
|
||||
end
|
||||
|
||||
// Continuous monitoring of saturation status
|
||||
always @(posedge clk) begin
|
||||
if (overflow_detected && sample_count < 100) begin
|
||||
$display("CIC_OVERFLOW: Immediate detection at sample %0d", sample_count);
|
||||
end
|
||||
end
|
||||
|
||||
// Clear saturation on external reset
|
||||
always @(posedge reset_monitors) begin
|
||||
if (reset_monitors) begin
|
||||
overflow_latched <= 0;
|
||||
saturation_detected <= 0;
|
||||
saturation_event_count <= 0;
|
||||
//$display("CIC_MONITORS: All monitors reset");
|
||||
end
|
||||
end
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,26 @@
|
||||
module dac_interface_enhanced (
|
||||
input wire clk_120m,
|
||||
input wire reset_n,
|
||||
input wire [7:0] chirp_data,
|
||||
input wire chirp_valid,
|
||||
output reg [7:0] dac_data,
|
||||
output wire dac_clk,
|
||||
output wire dac_sleep
|
||||
);
|
||||
|
||||
// Register DAC data to meet timing
|
||||
always @(posedge clk_120m or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
dac_data <= 8'd128; // Center value
|
||||
end else if (chirp_valid) begin
|
||||
dac_data <= chirp_data;
|
||||
end else begin
|
||||
dac_data <= 8'd128; // Default to center when no chirp
|
||||
end
|
||||
end
|
||||
|
||||
// DAC clock is same as input clock (120MHz)
|
||||
assign dac_clk = clk_120m;
|
||||
assign dac_sleep = 1'b0;
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,425 @@
|
||||
`timescale 1ns / 1ps
|
||||
|
||||
module ddc_400m_enhanced (
|
||||
input wire clk_400m, // 400MHz clock from ADC DCO
|
||||
input wire clk_100m, // 100MHz system clock
|
||||
input wire reset_n,
|
||||
input wire mixers_enable,
|
||||
input wire [7:0] adc_data, // ADC data at 400MHz
|
||||
input wire adc_data_valid_i, // Valid at 400MHz
|
||||
input wire adc_data_valid_q,
|
||||
output wire signed [17:0] baseband_i,
|
||||
output wire signed [17:0] baseband_q,
|
||||
output wire baseband_valid_i,
|
||||
output wire baseband_valid_q,
|
||||
|
||||
output wire [1:0] ddc_status,
|
||||
// Enhanced interfaces
|
||||
output wire [7:0] ddc_diagnostics,
|
||||
output wire mixer_saturation,
|
||||
output wire filter_overflow,
|
||||
input wire bypass_mode, // Test mode
|
||||
|
||||
input wire [1:0] test_mode,
|
||||
input wire [15:0] test_phase_inc,
|
||||
input wire force_saturation,
|
||||
input wire reset_monitors,
|
||||
output wire [31:0] debug_sample_count,
|
||||
output wire [17:0] debug_internal_i,
|
||||
output wire [17:0] debug_internal_q
|
||||
);
|
||||
|
||||
// Parameters for numerical precision
|
||||
parameter ADC_WIDTH = 8;
|
||||
parameter NCO_WIDTH = 16;
|
||||
parameter MIXER_WIDTH = 18;
|
||||
parameter OUTPUT_WIDTH = 18;
|
||||
|
||||
// IF frequency parameters
|
||||
parameter IF_FREQ = 120000000;
|
||||
parameter FS = 400000000;
|
||||
parameter PHASE_WIDTH = 32;
|
||||
|
||||
// Internal signals
|
||||
wire signed [15:0] sin_out, cos_out;
|
||||
wire nco_ready;
|
||||
wire cic_valid;
|
||||
wire fir_valid;
|
||||
wire [17:0] cic_i_out, cic_q_out;
|
||||
wire signed [17:0] fir_i_out, fir_q_out;
|
||||
|
||||
|
||||
// Diagnostic registers
|
||||
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
|
||||
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;
|
||||
|
||||
// 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;
|
||||
|
||||
|
||||
|
||||
// ============================================================================
|
||||
// Debug Signal Assignments
|
||||
// ============================================================================
|
||||
assign debug_internal_i = mixed_i[25:8];
|
||||
assign debug_internal_q = mixed_q[25:8];
|
||||
assign debug_sample_count = sample_counter;
|
||||
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
|
||||
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;
|
||||
error_counter <= 0;
|
||||
end else if (adc_data_valid_i && adc_data_valid_q ) begin
|
||||
sample_counter <= sample_counter + 1;
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
// ============================================================================
|
||||
// Enhanced Phase Dithering Instance
|
||||
// ============================================================================
|
||||
lfsr_dither_enhanced #(
|
||||
.DITHER_WIDTH(8)
|
||||
) phase_dither_gen (
|
||||
.clk(clk_400m),
|
||||
.reset_n(reset_n),
|
||||
.enable(nco_ready),
|
||||
.dither_out(phase_dither_bits)
|
||||
);
|
||||
|
||||
// ============================================================================
|
||||
// Phase Increment Calculation with Dithering
|
||||
// ============================================================================
|
||||
// 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};
|
||||
|
||||
// ============================================================================
|
||||
// Enhanced NCO with Diagnostics
|
||||
// ============================================================================
|
||||
nco_400m_enhanced nco_core (
|
||||
.clk_400m(clk_400m),
|
||||
.reset_n(reset_n),
|
||||
.frequency_tuning_word(phase_inc_dithered),
|
||||
.phase_valid(mixers_enable),
|
||||
.phase_offset(16'h0000),
|
||||
.sin_out(sin_out),
|
||||
.cos_out(cos_out),
|
||||
.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
|
||||
end
|
||||
|
||||
// ============================================================================
|
||||
// Enhanced CIC Decimators
|
||||
// ============================================================================
|
||||
wire cic_valid_i, cic_valid_q;
|
||||
|
||||
cic_decimator_4x_enhanced cic_i_inst (
|
||||
.clk(clk_400m),
|
||||
.reset_n(reset_n),
|
||||
.data_in(mixed_i[33:16]),
|
||||
.data_valid(mixed_valid),
|
||||
.data_out(cic_i_out),
|
||||
.data_out_valid(cic_valid_i)
|
||||
);
|
||||
|
||||
cic_decimator_4x_enhanced cic_q_inst (
|
||||
.clk(clk_400m),
|
||||
.reset_n(reset_n),
|
||||
.data_in(mixed_q[33:16]),
|
||||
.data_valid(mixed_valid),
|
||||
.data_out(cic_q_out),
|
||||
.data_out_valid(cic_valid_q)
|
||||
);
|
||||
|
||||
assign cic_valid = cic_valid_i & cic_valid_q;
|
||||
|
||||
cdc_adc_to_processing #(
|
||||
.WIDTH(18),
|
||||
.STAGES(3)
|
||||
)CDC_FIR_i(
|
||||
.src_clk(clk_400m),
|
||||
.dst_clk(clk_100m),
|
||||
.reset_n(reset_n),
|
||||
.src_data(cic_i_out),
|
||||
.src_valid(cic_valid_i),
|
||||
.dst_data(fir_d_in_i),
|
||||
.dst_valid(fir_in_valid_i)
|
||||
);
|
||||
|
||||
cdc_adc_to_processing #(
|
||||
.WIDTH(18),
|
||||
.STAGES(3)
|
||||
)CDC_FIR_q(
|
||||
.src_clk(clk_400m),
|
||||
.dst_clk(clk_100m),
|
||||
.reset_n(reset_n),
|
||||
.src_data(cic_q_out),
|
||||
.src_valid(cic_valid_q),
|
||||
.dst_data(fir_d_in_q),
|
||||
.dst_valid(fir_in_valid_q)
|
||||
);
|
||||
|
||||
// ============================================================================
|
||||
// Enhanced FIR Filters with FIXED valid signal handling
|
||||
// ============================================================================
|
||||
wire fir_in_valid_i, fir_in_valid_q;
|
||||
wire fir_valid_i, fir_valid_q;
|
||||
wire fir_i_ready, fir_q_ready;
|
||||
wire [17:0] fir_d_in_i, fir_d_in_q;
|
||||
|
||||
// FIR I channel
|
||||
fir_lowpass_parallel_enhanced fir_i_inst (
|
||||
.clk(clk_100m),
|
||||
.reset_n(reset_n),
|
||||
.data_in(fir_d_in_i), // Use synchronized data
|
||||
.data_valid(fir_in_valid_i), // Use synchronized valid
|
||||
.data_out(fir_i_out),
|
||||
.data_out_valid(fir_valid_i),
|
||||
.fir_ready(fir_i_ready),
|
||||
.filter_overflow()
|
||||
);
|
||||
|
||||
// FIR Q channel
|
||||
fir_lowpass_parallel_enhanced fir_q_inst (
|
||||
.clk(clk_100m),
|
||||
.reset_n(reset_n),
|
||||
.data_in(fir_d_in_q), // Use synchronized data
|
||||
.data_valid(fir_in_valid_q), // Use synchronized valid
|
||||
.data_out(fir_q_out),
|
||||
.data_out_valid(fir_valid_q),
|
||||
.fir_ready(fir_q_ready),
|
||||
.filter_overflow()
|
||||
);
|
||||
|
||||
assign fir_valid = fir_valid_i & fir_valid_q;
|
||||
|
||||
// ============================================================================
|
||||
// Enhanced Output Stage
|
||||
// ============================================================================
|
||||
always @(negedge clk_100m or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
baseband_i_reg <= 0;
|
||||
baseband_q_reg <= 0;
|
||||
baseband_valid_reg <= 0;
|
||||
end else if (fir_valid) begin
|
||||
baseband_i_reg <= fir_i_out;
|
||||
baseband_q_reg <= fir_q_out;
|
||||
baseband_valid_reg <= 1;
|
||||
end else begin
|
||||
baseband_valid_reg <= 0;
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
// ============================================================================
|
||||
// Output Assignments
|
||||
// ============================================================================
|
||||
assign baseband_i = baseband_i_reg;
|
||||
assign baseband_q = baseband_q_reg;
|
||||
assign baseband_valid_i = baseband_valid_reg;
|
||||
assign baseband_valid_q = baseband_valid_reg;
|
||||
assign ddc_status = {mixer_overflow_i | mixer_overflow_q, nco_ready};
|
||||
assign mixer_saturation = overflow_detected;
|
||||
assign ddc_diagnostics = {saturation_count, error_counter[4:0]};
|
||||
|
||||
// ============================================================================
|
||||
// Enhanced Debug and Monitoring
|
||||
// ============================================================================
|
||||
reg [31:0] debug_cic_count, debug_fir_count, debug_bb_count;
|
||||
|
||||
always @(posedge clk_100m) begin
|
||||
|
||||
if (fir_valid_i && debug_fir_count < 20) begin
|
||||
debug_fir_count <= debug_fir_count + 1;
|
||||
$display("FIR_OUTPUT: fir_i=%6d, fir_q=%6d", fir_i_out, fir_q_out);
|
||||
end
|
||||
|
||||
if (adc_data_valid_i && adc_data_valid_q && debug_bb_count < 20) begin
|
||||
debug_bb_count <= debug_bb_count + 1;
|
||||
$display("BASEBAND_OUT: i=%6d, q=%6d, count=%0d",
|
||||
baseband_i, baseband_q, debug_bb_count);
|
||||
end
|
||||
end
|
||||
|
||||
// In ddc_400m.v, add these debug signals:
|
||||
|
||||
// Debug monitoring
|
||||
reg [31:0] debug_adc_count = 0;
|
||||
reg [31:0] debug_baseband_count = 0;
|
||||
|
||||
always @(posedge clk_400m) begin
|
||||
if (adc_data_valid_i && adc_data_valid_q && debug_adc_count < 10) begin
|
||||
debug_adc_count <= debug_adc_count + 1;
|
||||
$display("DDC_ADC: data=%0d, count=%0d, time=%t",
|
||||
adc_data, debug_adc_count, $time);
|
||||
end
|
||||
end
|
||||
|
||||
always @(posedge clk_100m) begin
|
||||
if (baseband_valid_i && baseband_valid_q && debug_baseband_count < 10) begin
|
||||
debug_baseband_count <= debug_baseband_count + 1;
|
||||
$display("DDC_BASEBAND: i=%0d, q=%0d, count=%0d, time=%t",
|
||||
baseband_i, baseband_q, debug_baseband_count, $time);
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
endmodule
|
||||
|
||||
// ============================================================================
|
||||
// Enhanced Phase Dithering Module
|
||||
// ============================================================================
|
||||
`timescale 1ns / 1ps
|
||||
|
||||
module lfsr_dither_enhanced #(
|
||||
parameter DITHER_WIDTH = 8 // Increased for better dithering
|
||||
)(
|
||||
input wire clk,
|
||||
input wire reset_n,
|
||||
input wire enable,
|
||||
output wire [DITHER_WIDTH-1:0] dither_out
|
||||
);
|
||||
|
||||
reg [DITHER_WIDTH-1:0] lfsr_reg;
|
||||
reg [15:0] cycle_counter;
|
||||
reg lock_detected;
|
||||
|
||||
// Polynomial for better randomness: x^8 + x^6 + x^5 + x^4 + 1
|
||||
wire feedback;
|
||||
|
||||
generate
|
||||
if (DITHER_WIDTH == 4) begin
|
||||
assign feedback = lfsr_reg[3] ^ lfsr_reg[2];
|
||||
end else if (DITHER_WIDTH == 8) begin
|
||||
assign feedback = lfsr_reg[7] ^ lfsr_reg[5] ^ lfsr_reg[4] ^ lfsr_reg[3];
|
||||
end else begin
|
||||
assign feedback = lfsr_reg[DITHER_WIDTH-1] ^ lfsr_reg[DITHER_WIDTH-2];
|
||||
end
|
||||
endgenerate
|
||||
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
lfsr_reg <= {DITHER_WIDTH{1'b1}}; // Non-zero initial state
|
||||
cycle_counter <= 0;
|
||||
lock_detected <= 0;
|
||||
end else if (enable) begin
|
||||
lfsr_reg <= {lfsr_reg[DITHER_WIDTH-2:0], feedback};
|
||||
cycle_counter <= cycle_counter + 1;
|
||||
|
||||
// Detect LFSR lock after sufficient cycles
|
||||
if (cycle_counter > (2**DITHER_WIDTH * 8)) begin
|
||||
lock_detected <= 1'b1;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
assign dither_out = lfsr_reg;
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,55 @@
|
||||
`timescale 1ns / 1ps
|
||||
// ddc_input_interface.v
|
||||
module ddc_input_interface (
|
||||
input wire clk, // 100MHz
|
||||
input wire reset_n,
|
||||
|
||||
// DDC Input (18-bit)
|
||||
input wire signed [17:0] ddc_i,
|
||||
input wire signed [17:0] ddc_q,
|
||||
input wire valid_i,
|
||||
input wire valid_q,
|
||||
|
||||
// Scaled output (16-bit)
|
||||
output reg signed [15:0] adc_i,
|
||||
output reg signed [15:0] adc_q,
|
||||
output reg adc_valid,
|
||||
|
||||
// Status
|
||||
output wire data_sync_error
|
||||
);
|
||||
|
||||
// Synchronize valid signals
|
||||
reg valid_i_reg, valid_q_reg;
|
||||
reg valid_sync;
|
||||
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
valid_i_reg <= 1'b0;
|
||||
valid_q_reg <= 1'b0;
|
||||
valid_sync <= 1'b0;
|
||||
adc_valid <= 1'b0;
|
||||
end else begin
|
||||
valid_i_reg <= valid_i;
|
||||
valid_q_reg <= valid_q;
|
||||
|
||||
// Require both I and Q valid simultaneously
|
||||
valid_sync <= valid_i_reg && valid_q_reg;
|
||||
adc_valid <= valid_sync;
|
||||
end
|
||||
end
|
||||
|
||||
// Scale 18-bit to 16-bit with rounding
|
||||
// Option: Keep most significant 16 bits with rounding
|
||||
always @(posedge clk) begin
|
||||
if (valid_sync) begin
|
||||
// Round to nearest: add 0.5 LSB before truncation
|
||||
adc_i <= ddc_i[17:2] + ddc_i[1]; // Rounding
|
||||
adc_q <= ddc_q[17:2] + ddc_q[1]; // Rounding
|
||||
end
|
||||
end
|
||||
|
||||
// Error detection
|
||||
assign data_sync_error = (valid_i_reg ^ valid_q_reg);
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,305 @@
|
||||
`timescale 1ns / 1ps
|
||||
|
||||
module doppler_processor_optimized #(
|
||||
parameter DOPPLER_FFT_SIZE = 32,
|
||||
parameter RANGE_BINS = 64,
|
||||
parameter CHIRPS_PER_FRAME = 32,
|
||||
parameter WINDOW_TYPE = 0, // 0=Hamming, 1=Rectangular
|
||||
parameter DATA_WIDTH = 16
|
||||
)(
|
||||
input wire clk,
|
||||
input wire reset_n,
|
||||
input wire [31:0] range_data,
|
||||
input wire data_valid,
|
||||
input wire new_chirp_frame,
|
||||
output reg [31:0] doppler_output,
|
||||
output reg doppler_valid,
|
||||
output reg [4:0] doppler_bin,
|
||||
output reg [5:0] range_bin,
|
||||
output wire processing_active,
|
||||
output wire frame_complete,
|
||||
output reg [3:0] status
|
||||
);
|
||||
|
||||
// ==============================================
|
||||
// Window Coefficients (Simple Implementation)
|
||||
// ==============================================
|
||||
reg [DATA_WIDTH-1:0] window_coeff [0:31];
|
||||
|
||||
// Generate window coefficients
|
||||
integer w;
|
||||
initial begin
|
||||
if (WINDOW_TYPE == 0) begin
|
||||
// Pre-calculated Hamming window (Q15 format)
|
||||
window_coeff[0] = 16'h0800; window_coeff[1] = 16'h0862;
|
||||
window_coeff[2] = 16'h09CB; window_coeff[3] = 16'h0C3B;
|
||||
window_coeff[4] = 16'h0FB2; window_coeff[5] = 16'h142F;
|
||||
window_coeff[6] = 16'h19B2; window_coeff[7] = 16'h2039;
|
||||
window_coeff[8] = 16'h27C4; window_coeff[9] = 16'h3050;
|
||||
window_coeff[10] = 16'h39DB; window_coeff[11] = 16'h4462;
|
||||
window_coeff[12] = 16'h4FE3; window_coeff[13] = 16'h5C5A;
|
||||
window_coeff[14] = 16'h69C4; window_coeff[15] = 16'h781D;
|
||||
window_coeff[16] = 16'h7FFF; // Peak
|
||||
window_coeff[17] = 16'h781D; window_coeff[18] = 16'h69C4;
|
||||
window_coeff[19] = 16'h5C5A; window_coeff[20] = 16'h4FE3;
|
||||
window_coeff[21] = 16'h4462; window_coeff[22] = 16'h39DB;
|
||||
window_coeff[23] = 16'h3050; window_coeff[24] = 16'h27C4;
|
||||
window_coeff[25] = 16'h2039; window_coeff[26] = 16'h19B2;
|
||||
window_coeff[27] = 16'h142F; window_coeff[28] = 16'h0FB2;
|
||||
window_coeff[29] = 16'h0C3B; window_coeff[30] = 16'h09CB;
|
||||
window_coeff[31] = 16'h0862;
|
||||
end else begin
|
||||
// Rectangular window (all ones)
|
||||
for (w = 0; w < 32; w = w + 1) begin
|
||||
window_coeff[w] = 16'h7FFF;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
// ==============================================
|
||||
// Memory Declaration - FIXED SIZE
|
||||
// ==============================================
|
||||
localparam MEM_DEPTH = RANGE_BINS * CHIRPS_PER_FRAME;
|
||||
(* ram_style = "block" *) reg [DATA_WIDTH-1:0] doppler_i_mem [0:MEM_DEPTH-1];
|
||||
(* ram_style = "block" *) reg [DATA_WIDTH-1:0] doppler_q_mem [0:MEM_DEPTH-1];
|
||||
|
||||
// ==============================================
|
||||
// Control Registers
|
||||
// ==============================================
|
||||
reg [5:0] write_range_bin; // Changed to match RANGE_BINS width
|
||||
reg [4:0] write_chirp_index; // Changed to match CHIRPS_PER_FRAME width
|
||||
reg [5:0] read_range_bin;
|
||||
reg [4:0] read_doppler_index; // Changed name for clarity
|
||||
reg frame_buffer_full;
|
||||
reg [9:0] chirps_received; // Enough for up to 1024 chirps
|
||||
reg [1:0] chirp_state; // Track chirp accumulation state
|
||||
|
||||
|
||||
// ==============================================
|
||||
// FFT Interface
|
||||
// ==============================================
|
||||
reg fft_start;
|
||||
wire fft_ready;
|
||||
reg [DATA_WIDTH-1:0] fft_input_i;
|
||||
reg [DATA_WIDTH-1:0] fft_input_q;
|
||||
reg signed [31:0] mult_i, mult_q; // 32-bit to avoid overflow
|
||||
|
||||
reg fft_input_valid;
|
||||
reg fft_input_last;
|
||||
wire [DATA_WIDTH-1:0] fft_output_i;
|
||||
wire [DATA_WIDTH-1:0] fft_output_q;
|
||||
wire fft_output_valid;
|
||||
wire fft_output_last;
|
||||
|
||||
// ==============================================
|
||||
// Addressing
|
||||
// ==============================================
|
||||
wire [10:0] mem_write_addr;
|
||||
wire [10:0] mem_read_addr;
|
||||
|
||||
// Proper address calculation using parameters
|
||||
assign mem_write_addr = (write_chirp_index * RANGE_BINS) + write_range_bin;
|
||||
assign mem_read_addr = (read_doppler_index * RANGE_BINS) + read_range_bin;
|
||||
|
||||
// Alternative organization (choose one):
|
||||
// If you want range-major organization (all chirps for one range bin together):
|
||||
// assign mem_write_addr = (write_range_bin * CHIRPS_PER_FRAME) + write_chirp_index;
|
||||
// assign mem_read_addr = (read_range_bin * CHIRPS_PER_FRAME) + read_doppler_index;
|
||||
|
||||
// ==============================================
|
||||
// State Machine
|
||||
// ==============================================
|
||||
reg [2:0] state;
|
||||
localparam S_IDLE = 3'b000;
|
||||
localparam S_ACCUMULATE = 3'b001;
|
||||
localparam S_LOAD_FFT = 3'b010;
|
||||
localparam S_FFT_WAIT = 3'b011;
|
||||
localparam S_OUTPUT = 3'b100;
|
||||
|
||||
// Frame sync detection
|
||||
reg new_chirp_frame_d1;
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) new_chirp_frame_d1 <= 0;
|
||||
else new_chirp_frame_d1 <= new_chirp_frame;
|
||||
end
|
||||
wire frame_start_pulse = new_chirp_frame & ~new_chirp_frame_d1;
|
||||
|
||||
// ==============================================
|
||||
// Main State Machine - FIXED
|
||||
// ==============================================
|
||||
reg [5:0] fft_sample_counter;
|
||||
reg [9:0] processing_timeout;
|
||||
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
state <= S_IDLE;
|
||||
write_range_bin <= 0;
|
||||
write_chirp_index <= 0;
|
||||
read_range_bin <= 0;
|
||||
read_doppler_index <= 0;
|
||||
frame_buffer_full <= 0;
|
||||
doppler_valid <= 0;
|
||||
fft_start <= 0;
|
||||
fft_input_valid <= 0;
|
||||
fft_input_last <= 0;
|
||||
fft_sample_counter <= 0;
|
||||
processing_timeout <= 0;
|
||||
status <= 0;
|
||||
chirps_received <= 0;
|
||||
chirp_state <= 0;
|
||||
end else begin
|
||||
doppler_valid <= 0;
|
||||
fft_input_valid <= 0;
|
||||
fft_input_last <= 0;
|
||||
|
||||
if (processing_timeout > 0) begin
|
||||
processing_timeout <= processing_timeout - 1;
|
||||
end
|
||||
|
||||
case (state)
|
||||
S_IDLE: begin
|
||||
if (frame_start_pulse) begin
|
||||
// Start new frame
|
||||
write_chirp_index <= 0;
|
||||
write_range_bin <= 0;
|
||||
frame_buffer_full <= 0;
|
||||
chirps_received <= 0;
|
||||
//chirp_state <= 1; // Start accumulating
|
||||
end
|
||||
|
||||
if (data_valid && !frame_buffer_full) begin
|
||||
state <= S_ACCUMULATE;
|
||||
write_range_bin <= 0;
|
||||
end
|
||||
end
|
||||
|
||||
S_ACCUMULATE: begin
|
||||
if (data_valid) begin
|
||||
// Store with proper addressing
|
||||
doppler_i_mem[mem_write_addr] <= range_data[15:0];
|
||||
doppler_q_mem[mem_write_addr] <= range_data[31:16];
|
||||
|
||||
// Debug output to see what's being written
|
||||
// $display("Time=%t: Write addr=%d (chirp=%d, range=%d), Data=%h",
|
||||
// $time, mem_write_addr, write_chirp_index, write_range_bin, range_data);
|
||||
|
||||
// Increment range bin
|
||||
if (write_range_bin < RANGE_BINS - 1) begin
|
||||
write_range_bin <= write_range_bin + 1;
|
||||
end else begin
|
||||
// Completed one chirp
|
||||
write_range_bin <= 0;
|
||||
write_chirp_index <= write_chirp_index + 1;
|
||||
chirps_received <= chirps_received + 1;
|
||||
|
||||
// Check if frame is complete
|
||||
if (write_chirp_index >= CHIRPS_PER_FRAME - 1) begin
|
||||
frame_buffer_full <= 1;
|
||||
chirp_state <= 0; // Stop accumulating
|
||||
// Could automatically start processing here:
|
||||
state <= S_LOAD_FFT;
|
||||
read_range_bin <= 0;
|
||||
read_doppler_index <= 0;
|
||||
fft_sample_counter <= 0;
|
||||
fft_start <= 1;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
// [Rest of S_LOAD_FFT, S_FFT_WAIT, S_OUTPUT states remain similar]
|
||||
// But with fixed addressing in S_LOAD_FFT:
|
||||
S_LOAD_FFT: begin
|
||||
fft_start <= 0;
|
||||
|
||||
if (fft_sample_counter < DOPPLER_FFT_SIZE) begin
|
||||
// Use correct addressing for reading
|
||||
mult_i <= $signed(doppler_i_mem[mem_read_addr]) *
|
||||
$signed(window_coeff[read_doppler_index]);
|
||||
mult_q <= $signed(doppler_q_mem[mem_read_addr]) *
|
||||
$signed(window_coeff[read_doppler_index]);
|
||||
|
||||
// Round instead of truncate
|
||||
fft_input_i <= (mult_i + (1 << 14)) >>> 15; // Round to nearest
|
||||
fft_input_q <= (mult_q + (1 << 14)) >>> 15;
|
||||
|
||||
fft_input_valid <= 1;
|
||||
|
||||
if (fft_sample_counter == DOPPLER_FFT_SIZE - 1) begin
|
||||
fft_input_last <= 1;
|
||||
end
|
||||
|
||||
// Increment chirp index for next sample
|
||||
read_doppler_index <= read_doppler_index + 1;
|
||||
fft_sample_counter <= fft_sample_counter + 1;
|
||||
end else begin
|
||||
state <= S_FFT_WAIT;
|
||||
fft_sample_counter <= 0;
|
||||
processing_timeout <= 100;
|
||||
end
|
||||
end
|
||||
|
||||
S_FFT_WAIT: begin
|
||||
if (fft_output_valid) begin
|
||||
doppler_output <= {fft_output_q[15:0], fft_output_i[15:0]};
|
||||
doppler_bin <= fft_sample_counter;
|
||||
range_bin <= read_range_bin;
|
||||
doppler_valid <= 1;
|
||||
|
||||
fft_sample_counter <= fft_sample_counter + 1;
|
||||
|
||||
if (fft_output_last) begin
|
||||
state <= S_OUTPUT;
|
||||
fft_sample_counter <= 0;
|
||||
end
|
||||
end
|
||||
|
||||
if (processing_timeout == 0) begin
|
||||
state <= S_OUTPUT;
|
||||
end
|
||||
end
|
||||
|
||||
S_OUTPUT: begin
|
||||
if (read_range_bin < RANGE_BINS - 1) begin
|
||||
read_range_bin <= read_range_bin + 1;
|
||||
read_doppler_index <= 0;
|
||||
state <= S_LOAD_FFT;
|
||||
fft_start <= 1;
|
||||
end else begin
|
||||
state <= S_IDLE;
|
||||
frame_buffer_full <= 0;
|
||||
end
|
||||
end
|
||||
|
||||
endcase
|
||||
|
||||
status <= {state, frame_buffer_full};
|
||||
end
|
||||
end
|
||||
|
||||
// ==============================================
|
||||
// FFT Module
|
||||
// ==============================================
|
||||
xfft_32 fft_inst (
|
||||
.aclk(clk),
|
||||
.aresetn(reset_n),
|
||||
.s_axis_config_tdata(8'h01),
|
||||
.s_axis_config_tvalid(fft_start),
|
||||
.s_axis_config_tready(fft_ready),
|
||||
.s_axis_data_tdata({fft_input_q, fft_input_i}),
|
||||
.s_axis_data_tvalid(fft_input_valid),
|
||||
.s_axis_data_tlast(fft_input_last),
|
||||
.m_axis_data_tdata({fft_output_q, fft_output_i}),
|
||||
.m_axis_data_tvalid(fft_output_valid),
|
||||
.m_axis_data_tlast(fft_output_last),
|
||||
.m_axis_data_tready(1'b1)
|
||||
);
|
||||
|
||||
// ==============================================
|
||||
// Status Outputs
|
||||
// ==============================================
|
||||
assign processing_active = (state != S_IDLE);
|
||||
assign frame_complete = (state == S_IDLE && frame_buffer_full == 0);
|
||||
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,26 @@
|
||||
module edge_detector_enhanced (
|
||||
input wire clk,
|
||||
input wire reset_n,
|
||||
input wire signal_in,
|
||||
output wire rising_falling_edge
|
||||
);
|
||||
|
||||
reg signal_in_prev;
|
||||
reg signal_in_prev2;
|
||||
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
signal_in_prev <= 1'b0;
|
||||
signal_in_prev2 <= 1'b0;
|
||||
end else begin
|
||||
signal_in_prev <= signal_in;
|
||||
signal_in_prev2 <= signal_in_prev;
|
||||
end
|
||||
end
|
||||
|
||||
// Rising edge: was low, now high (with synchronization) signal_in_prev & ~signal_in_prev2;
|
||||
//Falling edge: was high, now low (with synchronization) falling_edge = ~signal_in_prev & signal_in_prev2
|
||||
assign rising_falling_edge = (signal_in_prev & ~signal_in_prev2)|(~signal_in_prev & signal_in_prev2);
|
||||
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,124 @@
|
||||
`timescale 1ns / 1ps
|
||||
|
||||
module fft_1024_forward_enhanced (
|
||||
input wire clk,
|
||||
input wire reset_n,
|
||||
input wire [15:0] data_i,
|
||||
input wire [15:0] data_q,
|
||||
input wire data_valid,
|
||||
output wire [15:0] fft_i,
|
||||
output wire [15:0] fft_q,
|
||||
output wire fft_valid
|
||||
);
|
||||
|
||||
// ========== MATCH YOUR FFT IP CONFIGURATION ==========
|
||||
wire [15:0] s_axis_config_tdata; // 16-bit for your IP
|
||||
wire s_axis_config_tvalid;
|
||||
wire s_axis_config_tready;
|
||||
wire [31:0] s_axis_data_tdata; // 32-bit for your IP {Q[15:0],I[15:0]}
|
||||
wire s_axis_data_tvalid;
|
||||
wire s_axis_data_tready;
|
||||
wire s_axis_data_tlast;
|
||||
wire [31:0] m_axis_data_tdata; // 32-bit for your IP
|
||||
wire m_axis_data_tvalid;
|
||||
wire m_axis_data_tready;
|
||||
wire m_axis_data_tlast;
|
||||
|
||||
// Configuration: 16-bit, bit 0 = 1 for forward FFT...
|
||||
assign s_axis_config_tdata = 16'h0001;
|
||||
assign s_axis_config_tvalid = 1'b1; // Keep valid until accepted
|
||||
|
||||
|
||||
assign s_axis_data_tdata = {data_q, data_i}; // {Q, I}
|
||||
assign s_axis_data_tvalid = data_valid;
|
||||
|
||||
// Frame counter for tlast
|
||||
reg [9:0] sample_count;
|
||||
reg frame_active;
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
sample_count <= 0;
|
||||
frame_active <= 0;
|
||||
end else begin
|
||||
if (data_valid && !frame_active) begin
|
||||
frame_active <= 1'b1;
|
||||
sample_count <= 0;
|
||||
end
|
||||
|
||||
if (frame_active && data_valid) begin
|
||||
if (sample_count == 1023) begin
|
||||
sample_count <= 0;
|
||||
frame_active <= 0;
|
||||
end else begin
|
||||
sample_count <= sample_count + 1;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
assign s_axis_data_tlast = (sample_count == 1023) && data_valid;
|
||||
|
||||
// Output: Extract from 64-bit output
|
||||
// Assuming output format is also {Q[31:0], I[31:0]}
|
||||
assign fft_i = m_axis_data_tdata[15:0]; // Lower 16 bits = I
|
||||
assign fft_q = m_axis_data_tdata[31:16]; // Upper 16 bits = Q
|
||||
assign fft_valid = m_axis_data_tvalid;
|
||||
assign m_axis_data_tready = 1'b1;
|
||||
|
||||
// ========== DEBUG ==========
|
||||
/*
|
||||
reg [31:0] debug_counter = 0;
|
||||
always @(posedge clk) begin
|
||||
debug_counter <= debug_counter + 1;
|
||||
|
||||
// Monitor first 2000 cycles
|
||||
if (debug_counter < 2000) begin
|
||||
// Configuration
|
||||
if (s_axis_config_tvalid && s_axis_config_tready) begin
|
||||
$display("[FFT_CORRECTED @%d] CONFIG ACCEPTED! tdata=%h",
|
||||
debug_counter, s_axis_config_tdata);
|
||||
end
|
||||
|
||||
// Data input
|
||||
if (s_axis_data_tvalid && s_axis_data_tready && debug_counter < 1050) begin
|
||||
$display("[FFT_CORRECTED @%d] Data in: I=%h Q=%h count=%d tlast=%b",
|
||||
debug_counter, data_i, data_q, sample_count, s_axis_data_tlast);
|
||||
end
|
||||
|
||||
// Data output
|
||||
if (m_axis_data_tvalid && debug_counter < 3000) begin
|
||||
$display("[FFT_CORRECTED @%d] FFT OUT: I=%h Q=%h",
|
||||
debug_counter, fft_i, fft_q);
|
||||
end
|
||||
|
||||
// Stuck detection
|
||||
if (debug_counter == 100 && !s_axis_config_tready) begin
|
||||
$display("[FFT_CORRECTED] WARNING: config_tready still 0 after 100 cycles");
|
||||
end
|
||||
end
|
||||
end
|
||||
*/
|
||||
// ========== FFT IP INSTANCE ==========
|
||||
// This must match the name in your project
|
||||
FFT_enhanced fft_forward_inst (
|
||||
.aclk(clk),
|
||||
.aresetn(reset_n), // Active-low reset
|
||||
|
||||
// Configuration (16-bit)
|
||||
.s_axis_config_tdata(s_axis_config_tdata),
|
||||
.s_axis_config_tvalid(s_axis_config_tvalid),
|
||||
.s_axis_config_tready(s_axis_config_tready),
|
||||
|
||||
// Data input (64-bit)
|
||||
.s_axis_data_tdata(s_axis_data_tdata),
|
||||
.s_axis_data_tvalid(s_axis_data_tvalid),
|
||||
.s_axis_data_tready(s_axis_data_tready),
|
||||
.s_axis_data_tlast(s_axis_data_tlast),
|
||||
|
||||
// Data output (64-bit)
|
||||
.m_axis_data_tdata(m_axis_data_tdata),
|
||||
.m_axis_data_tvalid(m_axis_data_tvalid),
|
||||
.m_axis_data_tlast(m_axis_data_tlast)
|
||||
|
||||
);
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,97 @@
|
||||
`timescale 1ns / 1ps
|
||||
|
||||
module fft_1024_inverse_enhanced (
|
||||
input wire clk,
|
||||
input wire reset_n,
|
||||
input wire [15:0] data_i,
|
||||
input wire [15:0] data_q,
|
||||
input wire data_valid,
|
||||
output wire [15:0] ifft_i,
|
||||
output wire [15:0] ifft_q,
|
||||
output wire ifft_valid
|
||||
);
|
||||
|
||||
// ========== MATCH YOUR FFT IP CONFIGURATION ==========
|
||||
wire [15:0] s_axis_config_tdata; // 16-bit
|
||||
wire s_axis_config_tvalid;
|
||||
wire s_axis_config_tready;
|
||||
wire [31:0] s_axis_data_tdata; // 32-bit for your IP {Q[15:0],I[15:0]}
|
||||
wire s_axis_data_tvalid;
|
||||
wire s_axis_data_tready;
|
||||
wire s_axis_data_tlast;
|
||||
wire [31:0] m_axis_data_tdata; // 32-bit
|
||||
wire m_axis_data_tvalid;
|
||||
wire m_axis_data_tready;
|
||||
wire m_axis_data_tlast;
|
||||
|
||||
// Configuration: bit 0 = 0 for inverse FFT
|
||||
assign s_axis_config_tdata = 16'h0000;
|
||||
assign s_axis_config_tvalid = 1'b1;
|
||||
|
||||
|
||||
assign s_axis_data_tdata = {data_q, data_i};
|
||||
assign s_axis_data_tvalid = data_valid;
|
||||
|
||||
// Frame counter
|
||||
reg [9:0] sample_count;
|
||||
reg frame_active;
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
sample_count <= 0;
|
||||
frame_active <= 0;
|
||||
end else begin
|
||||
if (data_valid && !frame_active) begin
|
||||
frame_active <= 1'b1;
|
||||
sample_count <= 0;
|
||||
end
|
||||
|
||||
if (frame_active && data_valid) begin
|
||||
if (sample_count == 1023) begin
|
||||
sample_count <= 0;
|
||||
frame_active <= 0;
|
||||
end else begin
|
||||
sample_count <= sample_count + 1;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
assign s_axis_data_tlast = (sample_count == 1023) && data_valid;
|
||||
// Output
|
||||
assign ifft_i = m_axis_data_tdata[15:0]; // I = lower 16 bits
|
||||
assign ifft_q = m_axis_data_tdata[31:16]; // Q = upper 16 bits
|
||||
assign ifft_valid = m_axis_data_tvalid;
|
||||
assign m_axis_data_tready = 1'b1;
|
||||
|
||||
// Debug
|
||||
reg [31:0] debug_counter;
|
||||
always @(posedge clk) begin
|
||||
debug_counter <= debug_counter + 1;
|
||||
|
||||
if (debug_counter < 1000) begin
|
||||
if (s_axis_config_tvalid && s_axis_config_tready) begin
|
||||
$display("[IFFT_CORRECTED @%d] CONFIG ACCEPTED!", debug_counter);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
// IFFT IP instance
|
||||
FFT_enhanced ifft_inverse_inst ( // Same IP core, different configuration
|
||||
.aclk(clk),
|
||||
.aresetn(reset_n),
|
||||
|
||||
.s_axis_config_tdata(s_axis_config_tdata),
|
||||
.s_axis_config_tvalid(s_axis_config_tvalid),
|
||||
.s_axis_config_tready(s_axis_config_tready),
|
||||
|
||||
.s_axis_data_tdata(s_axis_data_tdata),
|
||||
.s_axis_data_tvalid(s_axis_data_tvalid),
|
||||
.s_axis_data_tready(s_axis_data_tready),
|
||||
.s_axis_data_tlast(s_axis_data_tlast),
|
||||
|
||||
.m_axis_data_tdata(m_axis_data_tdata),
|
||||
.m_axis_data_tvalid(m_axis_data_tvalid),
|
||||
.m_axis_data_tlast(m_axis_data_tlast)
|
||||
|
||||
);
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,124 @@
|
||||
`timescale 1ns / 1ps
|
||||
|
||||
module fir_lowpass_parallel_enhanced (
|
||||
input wire clk,
|
||||
input wire reset_n,
|
||||
input wire signed [17:0] data_in,
|
||||
input wire data_valid,
|
||||
output reg signed [17:0] data_out,
|
||||
output reg data_out_valid,
|
||||
output wire fir_ready,
|
||||
output wire filter_overflow
|
||||
);
|
||||
|
||||
parameter TAPS = 32;
|
||||
parameter COEFF_WIDTH = 18;
|
||||
parameter DATA_WIDTH = 18;
|
||||
parameter ACCUM_WIDTH = 36;
|
||||
|
||||
// Filter coefficients
|
||||
reg signed [COEFF_WIDTH-1:0] coeff [0:TAPS-1];
|
||||
|
||||
// Parallel delay line
|
||||
reg signed [DATA_WIDTH-1:0] delay_line [0:TAPS-1];
|
||||
|
||||
// Parallel multiply-accumulate structure
|
||||
wire signed [DATA_WIDTH+COEFF_WIDTH-1:0] mult_result [0:TAPS-1];
|
||||
|
||||
// Wires for parallel addition (combinatorial)
|
||||
wire signed [ACCUM_WIDTH-1:0] sum_stage1_0, sum_stage1_1, sum_stage1_2, sum_stage1_3;
|
||||
wire signed [ACCUM_WIDTH-1:0] sum_stage2_0, sum_stage2_1;
|
||||
wire signed [ACCUM_WIDTH-1:0] sum_stage3;
|
||||
|
||||
// Registered accumulator
|
||||
reg signed [ACCUM_WIDTH-1:0] accumulator_reg;
|
||||
|
||||
// Initialize coefficients
|
||||
initial begin
|
||||
// Proper low-pass filter coefficients
|
||||
coeff[ 0] = 18'sh00AD; coeff[ 1] = 18'sh00CE; coeff[ 2] = 18'sh3FD87; coeff[ 3] = 18'sh02A6;
|
||||
coeff[ 4] = 18'sh00E0; coeff[ 5] = 18'sh3F8C0; coeff[ 6] = 18'sh0A45; coeff[ 7] = 18'sh3FD82;
|
||||
coeff[ 8] = 18'sh3F0B5; coeff[ 9] = 18'sh1CAD; coeff[10] = 18'sh3EE59; coeff[11] = 18'sh3E821;
|
||||
coeff[12] = 18'sh4841; coeff[13] = 18'sh3B340; coeff[14] = 18'sh3E299; coeff[15] = 18'sh1FFFF;
|
||||
coeff[16] = 18'sh1FFFF; coeff[17] = 18'sh3E299; coeff[18] = 18'sh3B340; coeff[19] = 18'sh4841;
|
||||
coeff[20] = 18'sh3E821; coeff[21] = 18'sh3EE59; coeff[22] = 18'sh1CAD; coeff[23] = 18'sh3F0B5;
|
||||
coeff[24] = 18'sh3FD82; coeff[25] = 18'sh0A45; coeff[26] = 18'sh3F8C0; coeff[27] = 18'sh00E0;
|
||||
coeff[28] = 18'sh02A6; coeff[29] = 18'sh3FD87; coeff[30] = 18'sh00CE; coeff[31] = 18'sh00AD;
|
||||
end
|
||||
|
||||
// Generate parallel multipliers
|
||||
genvar k;
|
||||
generate
|
||||
for (k = 0; k < TAPS; k = k + 1) begin : mult_gen
|
||||
assign mult_result[k] = delay_line[k] * coeff[k];
|
||||
end
|
||||
endgenerate
|
||||
|
||||
// COMBINATORIAL PARALLEL ADDITION TREE
|
||||
// Stage 1: Group of 8
|
||||
assign sum_stage1_0 = mult_result[0] + mult_result[1] + mult_result[2] + mult_result[3] +
|
||||
mult_result[4] + mult_result[5] + mult_result[6] + mult_result[7];
|
||||
assign sum_stage1_1 = mult_result[8] + mult_result[9] + mult_result[10] + mult_result[11] +
|
||||
mult_result[12] + mult_result[13] + mult_result[14] + mult_result[15];
|
||||
assign sum_stage1_2 = mult_result[16] + mult_result[17] + mult_result[18] + mult_result[19] +
|
||||
mult_result[20] + mult_result[21] + mult_result[22] + mult_result[23];
|
||||
assign sum_stage1_3 = mult_result[24] + mult_result[25] + mult_result[26] + mult_result[27] +
|
||||
mult_result[28] + mult_result[29] + mult_result[30] + mult_result[31];
|
||||
|
||||
// Stage 2: Combine groups of 2
|
||||
assign sum_stage2_0 = sum_stage1_0 + sum_stage1_1;
|
||||
assign sum_stage2_1 = sum_stage1_2 + sum_stage1_3;
|
||||
|
||||
// Stage 3: Final sum
|
||||
assign sum_stage3 = sum_stage2_0 + sum_stage2_1;
|
||||
|
||||
integer i;
|
||||
|
||||
// SINGLE-CYCLE PIPELINE PROCESSING
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
// Reset delay line
|
||||
for (i = 0; i < TAPS; i = i + 1) begin
|
||||
delay_line[i] <= 0;
|
||||
end
|
||||
accumulator_reg <= 0;
|
||||
data_out <= 0;
|
||||
data_out_valid <= 0;
|
||||
end else begin
|
||||
// Always shift in new data when valid
|
||||
if (data_valid) begin
|
||||
// Shift delay line
|
||||
for (i = TAPS-1; i > 0; i = i - 1) begin
|
||||
delay_line[i] <= delay_line[i-1];
|
||||
end
|
||||
delay_line[0] <= data_in;
|
||||
|
||||
// Register the combinatorial sum
|
||||
accumulator_reg <= sum_stage3;
|
||||
|
||||
// Output with 1-cycle latency
|
||||
data_out_valid <= 1'b1;
|
||||
end else begin
|
||||
data_out_valid <= 1'b0;
|
||||
end
|
||||
|
||||
// Output saturation logic (registered)
|
||||
if (accumulator_reg > (2**(ACCUM_WIDTH-2)-1)) begin
|
||||
data_out <= (2**(DATA_WIDTH-1))-1;
|
||||
end else if (accumulator_reg < -(2**(ACCUM_WIDTH-2))) begin
|
||||
data_out <= -(2**(DATA_WIDTH-1));
|
||||
end else begin
|
||||
// Round and truncate (keep middle bits)
|
||||
data_out <= accumulator_reg[ACCUM_WIDTH-2:DATA_WIDTH-1];
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
// Always ready to accept new data
|
||||
assign fir_ready = 1'b1;
|
||||
|
||||
// Overflow detection (simplified)
|
||||
assign filter_overflow = (accumulator_reg > (2**(ACCUM_WIDTH-2)-1)) ||
|
||||
(accumulator_reg < -(2**(ACCUM_WIDTH-2)));
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,137 @@
|
||||
`timescale 1ns / 1ps
|
||||
|
||||
// frequency_matched_filter_conjugate.v
|
||||
module frequency_matched_filter (
|
||||
input wire clk,
|
||||
input wire reset_n,
|
||||
|
||||
// Input from Forward FFT (16-bit Q15)
|
||||
input wire signed [15:0] fft_real_in,
|
||||
input wire signed [15:0] fft_imag_in,
|
||||
input wire fft_valid_in,
|
||||
|
||||
// Reference Chirp (16-bit Q15) - assumed to be FFT of transmitted chirp
|
||||
|
||||
input wire signed [15:0] ref_chirp_real,
|
||||
input wire signed [15:0] ref_chirp_imag,
|
||||
|
||||
// Output (16-bit Q15) - FFT(input) ? conj(FFT(reference))
|
||||
output wire signed [15:0] filtered_real,
|
||||
output wire signed [15:0] filtered_imag,
|
||||
output wire filtered_valid,
|
||||
|
||||
output wire [1:0] state
|
||||
);
|
||||
|
||||
// Complex multiplication: (a + jb) ? (c - jd) = (ac + bd) + j(bc - ad)
|
||||
// Note: We use CONJUGATE of reference for matched filter
|
||||
|
||||
// Pipeline registers
|
||||
reg signed [15:0] a_reg, b_reg, c_reg, d_reg;
|
||||
reg valid_p1;
|
||||
reg signed [31:0] ac_reg, bd_reg, bc_reg, ad_reg;
|
||||
reg valid_p2;
|
||||
reg signed [31:0] real_sum, imag_sum;
|
||||
reg valid_p3;
|
||||
reg signed [15:0] real_out, imag_out;
|
||||
reg valid_out;
|
||||
|
||||
// Address counter
|
||||
reg [9:0] addr_counter;
|
||||
|
||||
|
||||
// ========== PIPELINE STAGE 1: REGISTER INPUTS ==========
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
a_reg <= 16'd0; b_reg <= 16'd0;
|
||||
c_reg <= 16'd0; d_reg <= 16'd0;
|
||||
valid_p1 <= 1'b0;
|
||||
end else begin
|
||||
if (fft_valid_in) begin
|
||||
a_reg <= fft_real_in; // a
|
||||
b_reg <= fft_imag_in; // b
|
||||
c_reg <= ref_chirp_real; // c
|
||||
d_reg <= ref_chirp_imag; // d
|
||||
end
|
||||
valid_p1 <= fft_valid_in;
|
||||
end
|
||||
end
|
||||
|
||||
// ========== PIPELINE STAGE 2: MULTIPLICATIONS ==========
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
ac_reg <= 32'd0; bd_reg <= 32'd0;
|
||||
bc_reg <= 32'd0; ad_reg <= 32'd0;
|
||||
valid_p2 <= 1'b0;
|
||||
end else begin
|
||||
// Q15 ? Q15 = Q30
|
||||
ac_reg <= a_reg * c_reg; // ac
|
||||
bd_reg <= b_reg * d_reg; // bd
|
||||
bc_reg <= b_reg * c_reg; // bc
|
||||
ad_reg <= a_reg * d_reg; // ad
|
||||
|
||||
valid_p2 <= valid_p1;
|
||||
end
|
||||
end
|
||||
|
||||
// ========== PIPELINE STAGE 3: ADDITIONS ==========
|
||||
// For conjugate multiplication: (ac + bd) + j(bc - ad)
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
real_sum <= 32'd0;
|
||||
imag_sum <= 32'd0;
|
||||
valid_p3 <= 1'b0;
|
||||
end else begin
|
||||
real_sum <= ac_reg + bd_reg; // ac + bd
|
||||
imag_sum <= bc_reg - ad_reg; // bc - ad
|
||||
|
||||
valid_p3 <= valid_p2;
|
||||
end
|
||||
end
|
||||
|
||||
// ========== PIPELINE STAGE 4: SATURATION ==========
|
||||
function automatic signed [15:0] saturate_and_scale;
|
||||
input signed [31:0] q30_value;
|
||||
reg signed [15:0] result;
|
||||
reg signed [31:0] rounded;
|
||||
begin
|
||||
// Round to nearest: add 0.5 LSB (bit 14)
|
||||
rounded = q30_value + (1 << 14);
|
||||
|
||||
// Check for overflow
|
||||
if (rounded > 32'sh3FFF8000) begin // > 32767.5 in Q30
|
||||
result = 16'h7FFF;
|
||||
end else if (rounded < 32'shC0008000) begin // < -32768.5 in Q30
|
||||
result = 16'h8000;
|
||||
end else begin
|
||||
// Take bits [30:15] for Q15
|
||||
result = rounded[30:15];
|
||||
end
|
||||
|
||||
saturate_and_scale = result;
|
||||
end
|
||||
endfunction
|
||||
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
real_out <= 16'd0;
|
||||
imag_out <= 16'd0;
|
||||
valid_out <= 1'b0;
|
||||
end else begin
|
||||
if (valid_p3) begin
|
||||
real_out <= saturate_and_scale(real_sum);
|
||||
imag_out <= saturate_and_scale(imag_sum);
|
||||
end
|
||||
valid_out <= valid_p3;
|
||||
end
|
||||
end
|
||||
|
||||
// ========== OUTPUT ASSIGNMENTS ==========
|
||||
assign filtered_real = real_out;
|
||||
assign filtered_imag = imag_out;
|
||||
assign filtered_valid = valid_out;
|
||||
|
||||
// Simple state output
|
||||
assign state = {valid_out, valid_p3};
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,107 @@
|
||||
`timescale 1ns / 1ps
|
||||
|
||||
// latency_buffer_2159_fixed.v
|
||||
module latency_buffer_2159 #(
|
||||
parameter DATA_WIDTH = 32,
|
||||
parameter LATENCY = 3187
|
||||
) (
|
||||
input wire clk,
|
||||
input wire reset_n,
|
||||
input wire [DATA_WIDTH-1:0] data_in,
|
||||
input wire valid_in,
|
||||
output wire [DATA_WIDTH-1:0] data_out,
|
||||
output wire valid_out
|
||||
);
|
||||
|
||||
// ========== FIXED PARAMETERS ==========
|
||||
localparam ADDR_WIDTH = 12; // Enough for 4096 entries (>2159)
|
||||
|
||||
// ========== FIXED LOGIC ==========
|
||||
(* ram_style = "block" *) reg [DATA_WIDTH-1:0] bram [0:4095];
|
||||
reg [ADDR_WIDTH-1:0] write_ptr;
|
||||
reg [ADDR_WIDTH-1:0] read_ptr;
|
||||
reg valid_out_reg;
|
||||
|
||||
// Delay counter to track when LATENCY cycles have passed
|
||||
reg [ADDR_WIDTH-1:0] delay_counter;
|
||||
reg buffer_has_data; // Flag when buffer has accumulated LATENCY samples
|
||||
|
||||
// ========== FIXED INITIALIZATION ==========
|
||||
integer k;
|
||||
initial begin
|
||||
for (k = 0; k < 4096; k = k + 1) begin
|
||||
bram[k] = {DATA_WIDTH{1'b0}};
|
||||
end
|
||||
write_ptr = 0;
|
||||
read_ptr = 0;
|
||||
valid_out_reg = 0;
|
||||
delay_counter = 0;
|
||||
buffer_has_data = 0;
|
||||
end
|
||||
|
||||
// ========== FIXED STATE MACHINE ==========
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
write_ptr <= 0;
|
||||
read_ptr <= 0;
|
||||
valid_out_reg <= 0;
|
||||
delay_counter <= 0;
|
||||
buffer_has_data <= 0;
|
||||
end else begin
|
||||
// Default: no valid output
|
||||
valid_out_reg <= 0;
|
||||
|
||||
// ===== WRITE SIDE =====
|
||||
if (valid_in) begin
|
||||
// Store data
|
||||
bram[write_ptr] <= data_in;
|
||||
|
||||
// Increment write pointer (wrap at 4095)
|
||||
if (write_ptr == 4095) begin
|
||||
write_ptr <= 0;
|
||||
end else begin
|
||||
write_ptr <= write_ptr + 1;
|
||||
end
|
||||
|
||||
// Count how many samples we've written
|
||||
if (delay_counter < LATENCY) begin
|
||||
delay_counter <= delay_counter + 1;
|
||||
|
||||
// When we've written LATENCY samples, buffer is "primed"
|
||||
if (delay_counter == LATENCY - 1) begin
|
||||
buffer_has_data <= 1'b1;
|
||||
// $display("[LAT_BUF] Buffer now has %d samples (primed)", LATENCY);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
// ===== READ SIDE =====
|
||||
// Only start reading after we have LATENCY samples in buffer
|
||||
if (buffer_has_data && valid_in) begin
|
||||
// Read pointer follows write pointer with LATENCY delay
|
||||
// Calculate: read_ptr = (write_ptr - LATENCY) mod 4096
|
||||
|
||||
// Handle wrap-around correctly
|
||||
if (write_ptr >= LATENCY) begin
|
||||
read_ptr <= write_ptr - LATENCY;
|
||||
end else begin
|
||||
// Wrap around: 4096 + write_ptr - LATENCY
|
||||
read_ptr <= 4096 + write_ptr - LATENCY;
|
||||
end
|
||||
|
||||
// Output is valid
|
||||
valid_out_reg <= 1'b1;
|
||||
|
||||
//$display("[LAT_BUF] Reading: write_ptr=%d, read_ptr=%d, data=%h",
|
||||
// write_ptr, read_ptr, bram[read_ptr]);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
// ========== OUTPUTS ==========
|
||||
assign data_out = bram[read_ptr];
|
||||
assign valid_out = valid_out_reg;
|
||||
|
||||
|
||||
|
||||
endmodule
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,45 @@
|
||||
`timescale 1ns / 1ps
|
||||
module lvds_to_cmos_400m (
|
||||
// ADC Physical Interface (LVDS Inputs)
|
||||
input wire clk_400m_p, // Data Clock Output P (400MHz LVDS, 2.5V)
|
||||
input wire clk_400m_n, // Data Clock Output N (400MHz LVDS, 2.5V)
|
||||
input wire reset_n, // Active-low reset
|
||||
|
||||
// CMOS Output Interface (400MHz Domain)
|
||||
output reg clk_400m_cmos // ADC data clock (CMOS, 3.3V)
|
||||
);
|
||||
|
||||
// LVDS to single-ended conversion
|
||||
wire clk_400m_se; // Single-ended DCO from ADC
|
||||
|
||||
|
||||
// IBUFDS for DCO clock (LVDS to CMOS conversion)
|
||||
IBUFDS #(
|
||||
.DIFF_TERM("FALSE"), // DISABLE internal termination (using external 100O)
|
||||
.IOSTANDARD("LVDS_25") // 2.5V LVDS standard
|
||||
) ibufds_dco (
|
||||
.O(clk_400m_se), // Single-ended 400MHz clock
|
||||
.I(clk_400m_p),
|
||||
.IB(clk_400m_n)
|
||||
);
|
||||
|
||||
// Optional: Global clock buffer for better clock distribution
|
||||
wire clk_400m_buffered;
|
||||
BUFG bufg_dco (
|
||||
.I(clk_400m_se),
|
||||
.O(clk_400m_buffered)
|
||||
);
|
||||
|
||||
|
||||
// Main processing: Capture on rising edge only
|
||||
always @(posedge clk_400m_buffered or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
// Reset state
|
||||
clk_400m_cmos <= 1'b0;
|
||||
end else begin
|
||||
// Output buffered DCO clock
|
||||
clk_400m_cmos <= clk_400m_buffered;
|
||||
end
|
||||
end
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,410 @@
|
||||
`timescale 1ns / 1ps
|
||||
// matched_filter_multi_segment.v
|
||||
module matched_filter_multi_segment (
|
||||
input wire clk, // 100MHz
|
||||
input wire reset_n,
|
||||
|
||||
// Input from DDC (100 MSPS)
|
||||
input wire signed [17:0] ddc_i,
|
||||
input wire signed [17:0] ddc_q,
|
||||
input wire ddc_valid,
|
||||
|
||||
// Chirp control (from sequence controller)
|
||||
input wire use_long_chirp, //
|
||||
input wire [5:0] chirp_counter, //
|
||||
|
||||
// Microcontroller sync signals
|
||||
input wire mc_new_chirp, // Toggle for new chirp (32)
|
||||
input wire mc_new_elevation, // Toggle for new elevation (32)
|
||||
input wire mc_new_azimuth, // Toggle for new azimuth (50)
|
||||
|
||||
input wire [15:0] long_chirp_real,
|
||||
input wire [15:0] long_chirp_imag,
|
||||
input wire [15:0] short_chirp_real,
|
||||
input wire [15:0] short_chirp_imag,
|
||||
|
||||
// Memory system interface
|
||||
output reg [1:0] segment_request,
|
||||
output wire [9:0] sample_addr_out, // Tell memory which sample we need
|
||||
output reg mem_request,
|
||||
input wire mem_ready,
|
||||
|
||||
// Output: Pulse compressed
|
||||
output wire signed [15:0] pc_i_w,
|
||||
output wire signed [15:0] pc_q_w,
|
||||
output wire pc_valid_w,
|
||||
|
||||
// Status
|
||||
output reg [3:0] status
|
||||
);
|
||||
|
||||
// ========== FIXED PARAMETERS ==========
|
||||
parameter BUFFER_SIZE = 1024;
|
||||
parameter LONG_CHIRP_SAMPLES = 3000; // Still 3000 samples total
|
||||
parameter SHORT_CHIRP_SAMPLES = 50; // 0.5µs @ 100MHz
|
||||
parameter OVERLAP_SAMPLES = 128; // Standard for 1024-pt FFT
|
||||
parameter SEGMENT_ADVANCE = BUFFER_SIZE - OVERLAP_SAMPLES; // 896 samples
|
||||
parameter DEBUG = 1; // Debug output control
|
||||
|
||||
// Calculate segments needed with overlap
|
||||
// For 3072 samples with 128 overlap:
|
||||
// Segments = ceil((3072 - 128) / 896) = ceil(2944/896) = 4
|
||||
parameter LONG_SEGMENTS = 4; // Now exactly 4 segments!
|
||||
parameter SHORT_SEGMENTS = 1; // 50 samples padded to 1024
|
||||
|
||||
// ========== FIXED INTERNAL SIGNALS ==========
|
||||
reg signed [31:0] pc_i, pc_q;
|
||||
reg pc_valid;
|
||||
|
||||
// Dual buffer for overlap-save
|
||||
reg signed [15:0] input_buffer_i [0:BUFFER_SIZE-1];
|
||||
reg signed [15:0] input_buffer_q [0:BUFFER_SIZE-1];
|
||||
reg [10:0] buffer_write_ptr;
|
||||
reg [10:0] buffer_read_ptr;
|
||||
reg buffer_has_data;
|
||||
reg buffer_processing;
|
||||
reg [15:0] chirp_samples_collected;
|
||||
|
||||
// State machine
|
||||
reg [3:0] state;
|
||||
localparam ST_IDLE = 0;
|
||||
localparam ST_COLLECT_DATA = 1;
|
||||
localparam ST_ZERO_PAD = 2;
|
||||
localparam ST_WAIT_REF = 3;
|
||||
localparam ST_PROCESSING = 4;
|
||||
localparam ST_WAIT_FFT = 5;
|
||||
localparam ST_OUTPUT = 6;
|
||||
localparam ST_NEXT_SEGMENT = 7;
|
||||
|
||||
// Segment tracking
|
||||
reg [2:0] current_segment; // 0-3
|
||||
reg [2:0] total_segments;
|
||||
reg segment_done;
|
||||
reg chirp_complete;
|
||||
|
||||
// Microcontroller sync detection
|
||||
reg mc_new_chirp_prev, mc_new_elevation_prev, mc_new_azimuth_prev;
|
||||
wire chirp_start_pulse = mc_new_chirp && !mc_new_chirp_prev;
|
||||
wire elevation_change_pulse = mc_new_elevation && !mc_new_elevation_prev;
|
||||
wire azimuth_change_pulse = mc_new_azimuth && !mc_new_azimuth_prev;
|
||||
|
||||
// Processing chain signals
|
||||
wire [15:0] fft_pc_i, fft_pc_q;
|
||||
wire fft_pc_valid;
|
||||
wire [3:0] fft_chain_state;
|
||||
|
||||
// Buffer for FFT input
|
||||
reg [15:0] fft_input_i, fft_input_q;
|
||||
reg fft_input_valid;
|
||||
reg fft_start;
|
||||
|
||||
// ========== SAMPLE ADDRESS OUTPUT ==========
|
||||
assign sample_addr_out = buffer_read_ptr;
|
||||
|
||||
// ========== MICROCONTROLLER SYNC ==========
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
mc_new_chirp_prev <= 1'b0;
|
||||
mc_new_elevation_prev <= 1'b0;
|
||||
mc_new_azimuth_prev <= 1'b0;
|
||||
end else begin
|
||||
mc_new_chirp_prev <= mc_new_chirp;
|
||||
mc_new_elevation_prev <= mc_new_elevation;
|
||||
mc_new_azimuth_prev <= mc_new_azimuth;
|
||||
end
|
||||
end
|
||||
|
||||
// ========== BUFFER INITIALIZATION ==========
|
||||
integer buf_init;
|
||||
initial begin
|
||||
for (buf_init = 0; buf_init < BUFFER_SIZE; buf_init = buf_init + 1) begin
|
||||
input_buffer_i[buf_init] = 16'd0;
|
||||
input_buffer_q[buf_init] = 16'd0;
|
||||
end
|
||||
end
|
||||
|
||||
// ========== FIXED STATE MACHINE WITH OVERLAP-SAVE ==========
|
||||
integer i;
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
state <= ST_IDLE;
|
||||
buffer_write_ptr <= 0;
|
||||
buffer_read_ptr <= 0;
|
||||
buffer_has_data <= 0;
|
||||
buffer_processing <= 0;
|
||||
current_segment <= 0;
|
||||
segment_done <= 0;
|
||||
segment_request <= 0;
|
||||
mem_request <= 0;
|
||||
pc_valid <= 0;
|
||||
status <= 0;
|
||||
chirp_samples_collected <= 0;
|
||||
chirp_complete <= 0;
|
||||
fft_input_valid <= 0;
|
||||
fft_start <= 0;
|
||||
end else begin
|
||||
pc_valid <= 0;
|
||||
mem_request <= 0;
|
||||
fft_input_valid <= 0;
|
||||
|
||||
case (state)
|
||||
ST_IDLE: begin
|
||||
// Reset for new chirp
|
||||
buffer_write_ptr <= 0;
|
||||
buffer_read_ptr <= 0;
|
||||
buffer_has_data <= 0;
|
||||
buffer_processing <= 0;
|
||||
current_segment <= 0;
|
||||
segment_done <= 0;
|
||||
chirp_samples_collected <= 0;
|
||||
chirp_complete <= 0;
|
||||
|
||||
// Wait for chirp start from microcontroller
|
||||
if (chirp_start_pulse) begin
|
||||
state <= ST_COLLECT_DATA;
|
||||
total_segments <= use_long_chirp ? LONG_SEGMENTS[2:0] : SHORT_SEGMENTS[2:0];
|
||||
|
||||
$display("[MULTI_SEG_FIXED] Starting %s chirp, segments: %d",
|
||||
use_long_chirp ? "LONG" : "SHORT",
|
||||
use_long_chirp ? LONG_SEGMENTS : SHORT_SEGMENTS);
|
||||
$display("[MULTI_SEG_FIXED] Overlap: %d samples, Advance: %d samples",
|
||||
OVERLAP_SAMPLES, SEGMENT_ADVANCE);
|
||||
end
|
||||
end
|
||||
|
||||
ST_COLLECT_DATA: begin
|
||||
// Collect samples for current segment with overlap-save
|
||||
if (ddc_valid) begin
|
||||
// Store in buffer
|
||||
input_buffer_i[buffer_write_ptr] <= ddc_i[17:2] + ddc_i[1];
|
||||
input_buffer_q[buffer_write_ptr] <= ddc_q[17:2] + ddc_q[1];
|
||||
|
||||
buffer_write_ptr <= buffer_write_ptr + 1;
|
||||
chirp_samples_collected <= chirp_samples_collected + 1;
|
||||
|
||||
// Debug: Show first few samples
|
||||
if (chirp_samples_collected < 10 && buffer_write_ptr < 10) begin
|
||||
$display("[MULTI_SEG_FIXED] Store[%0d]: I=%h Q=%h",
|
||||
buffer_write_ptr,
|
||||
ddc_i[17:2] + ddc_i[1],
|
||||
ddc_q[17:2] + ddc_q[1]);
|
||||
end
|
||||
|
||||
// Check conditions based on chirp type
|
||||
if (use_long_chirp) begin
|
||||
// LONG CHIRP: Process when we have SEGMENT_ADVANCE new samples
|
||||
// (buffer contains overlap from previous segment + new data)
|
||||
|
||||
// Check if we have enough NEW data to process
|
||||
if (buffer_write_ptr >= SEGMENT_ADVANCE) begin
|
||||
buffer_has_data <= 1;
|
||||
state <= ST_WAIT_REF;
|
||||
segment_request <= current_segment[1:0]; // Use lower 2 bits
|
||||
mem_request <= 1;
|
||||
|
||||
$display("[MULTI_SEG_FIXED] Segment %d ready: %d samples collected",
|
||||
current_segment, chirp_samples_collected);
|
||||
end
|
||||
|
||||
// Check if end of chirp reached
|
||||
if (chirp_samples_collected >= LONG_CHIRP_SAMPLES - 1) begin
|
||||
chirp_complete <= 1;
|
||||
$display("[MULTI_SEG_FIXED] End of long chirp reached");
|
||||
end
|
||||
end else begin
|
||||
// SHORT CHIRP: Only 50 samples, then zero-pad
|
||||
if (chirp_samples_collected >= SHORT_CHIRP_SAMPLES - 1) begin
|
||||
state <= ST_ZERO_PAD;
|
||||
$display("[MULTI_SEG_FIXED] Short chirp: collected %d samples, starting zero-pad",
|
||||
chirp_samples_collected + 1);
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
ST_ZERO_PAD: begin
|
||||
// For short chirp: zero-pad remaining buffer
|
||||
input_buffer_i[buffer_write_ptr] <= 16'd0;
|
||||
input_buffer_q[buffer_write_ptr] <= 16'd0;
|
||||
buffer_write_ptr <= buffer_write_ptr + 1;
|
||||
|
||||
if (buffer_write_ptr >= BUFFER_SIZE - 1) begin
|
||||
// Done zero-padding
|
||||
buffer_has_data <= 1;
|
||||
buffer_write_ptr <= 0;
|
||||
state <= ST_WAIT_REF;
|
||||
segment_request <= 0; // Only one segment for short chirp
|
||||
mem_request <= 1;
|
||||
$display("[MULTI_SEG_FIXED] Zero-pad complete, buffer full");
|
||||
end
|
||||
end
|
||||
|
||||
ST_WAIT_REF: begin
|
||||
// Wait for memory to provide reference coefficients
|
||||
if (mem_ready) begin
|
||||
// Start processing
|
||||
buffer_processing <= 1;
|
||||
buffer_read_ptr <= 0;
|
||||
fft_start <= 1;
|
||||
state <= ST_PROCESSING;
|
||||
|
||||
$display("[MULTI_SEG_FIXED] Reference ready, starting processing segment %d",
|
||||
current_segment);
|
||||
end
|
||||
end
|
||||
|
||||
ST_PROCESSING: begin
|
||||
// Feed data to FFT chain
|
||||
if ((buffer_processing) && (buffer_read_ptr < BUFFER_SIZE)) begin
|
||||
// 1. Feed ADC data to FFT
|
||||
fft_input_i <= input_buffer_i[buffer_read_ptr];
|
||||
fft_input_q <= input_buffer_q[buffer_read_ptr];
|
||||
fft_input_valid <= 1;
|
||||
|
||||
// 2. Request corresponding reference sample
|
||||
mem_request <= 1'b1;
|
||||
|
||||
// Debug every 100 samples
|
||||
if (buffer_read_ptr % 100 == 0) begin
|
||||
$display("[MULTI_SEG_FIXED] Processing[%0d]: ADC I=%h Q=%h",
|
||||
buffer_read_ptr,
|
||||
input_buffer_i[buffer_read_ptr],
|
||||
input_buffer_q[buffer_read_ptr]);
|
||||
end
|
||||
|
||||
buffer_read_ptr <= buffer_read_ptr + 1;
|
||||
|
||||
end else if (buffer_read_ptr >= BUFFER_SIZE) begin
|
||||
// Done feeding buffer
|
||||
fft_input_valid <= 0;
|
||||
mem_request <= 0;
|
||||
buffer_processing <= 0;
|
||||
buffer_has_data <= 0;
|
||||
state <= ST_WAIT_FFT; // CRITICAL: Wait for FFT completion
|
||||
|
||||
$display("[MULTI_SEG_FIXED] Finished feeding %d samples to FFT, waiting...",
|
||||
BUFFER_SIZE);
|
||||
end
|
||||
end
|
||||
|
||||
ST_WAIT_FFT: begin
|
||||
// Wait for the processing chain to complete (2159 cycles latency)
|
||||
if (fft_pc_valid) begin
|
||||
state <= ST_OUTPUT;
|
||||
$display("[MULTI_SEG_FIXED] FFT processing complete for segment %d",
|
||||
current_segment);
|
||||
end
|
||||
end
|
||||
|
||||
ST_OUTPUT: begin
|
||||
// Store FFT output
|
||||
pc_i <= fft_pc_i;
|
||||
pc_q <= fft_pc_q;
|
||||
pc_valid <= 1;
|
||||
segment_done <= 1;
|
||||
|
||||
$display("[MULTI_SEG_FIXED] Output segment %d: I=%h Q=%h",
|
||||
current_segment, fft_pc_i, fft_pc_q);
|
||||
|
||||
// Check if we need more segments
|
||||
if (current_segment < total_segments - 1 || !chirp_complete) begin
|
||||
state <= ST_NEXT_SEGMENT;
|
||||
end else begin
|
||||
// All segments complete
|
||||
state <= ST_IDLE;
|
||||
$display("[MULTI_SEG_FIXED] All %d segments complete",
|
||||
total_segments);
|
||||
end
|
||||
end
|
||||
|
||||
ST_NEXT_SEGMENT: begin
|
||||
// Prepare for next segment with OVERLAP-SAVE
|
||||
current_segment <= current_segment + 1;
|
||||
segment_done <= 0;
|
||||
|
||||
if (use_long_chirp) begin
|
||||
// OVERLAP-SAVE: Keep last OVERLAP_SAMPLES for next segment
|
||||
// Shift data in buffer to preserve overlap
|
||||
|
||||
for (i = 0; i < OVERLAP_SAMPLES; i = i + 1) begin
|
||||
input_buffer_i[i] <= input_buffer_i[i + SEGMENT_ADVANCE];
|
||||
input_buffer_q[i] <= input_buffer_q[i + SEGMENT_ADVANCE];
|
||||
end
|
||||
|
||||
// Start writing after the overlap
|
||||
buffer_write_ptr <= OVERLAP_SAMPLES;
|
||||
|
||||
$display("[MULTI_SEG_FIXED] Overlap-save: kept %d samples, write_ptr=%d",
|
||||
OVERLAP_SAMPLES, OVERLAP_SAMPLES);
|
||||
end else begin
|
||||
// Short chirp: only one segment
|
||||
buffer_write_ptr <= 0;
|
||||
end
|
||||
|
||||
// Continue collecting or finish
|
||||
if (!chirp_complete) begin
|
||||
state <= ST_COLLECT_DATA;
|
||||
$display("[MULTI_SEG_FIXED] Starting segment %d/%d",
|
||||
current_segment + 1, total_segments);
|
||||
end else begin
|
||||
state <= ST_IDLE;
|
||||
end
|
||||
end
|
||||
endcase
|
||||
|
||||
// Update status
|
||||
status <= {state[2:0], use_long_chirp};
|
||||
end
|
||||
end
|
||||
|
||||
// ========== PROCESSING CHAIN INSTANTIATION ==========
|
||||
matched_filter_processing_chain m_f_p_c(
|
||||
.clk(clk),
|
||||
.reset_n(reset_n),
|
||||
|
||||
// Input ADC Data
|
||||
.adc_data_i(fft_input_i),
|
||||
.adc_data_q(fft_input_q),
|
||||
.adc_valid(fft_input_valid),// && buffer_processing),
|
||||
|
||||
// Chirp Selection
|
||||
.chirp_counter(chirp_counter),
|
||||
|
||||
// Reference Chirp Memory Interfaces
|
||||
.long_chirp_real(long_chirp_real),
|
||||
.long_chirp_imag(long_chirp_imag),
|
||||
.short_chirp_real(short_chirp_real),
|
||||
.short_chirp_imag(short_chirp_imag),
|
||||
|
||||
// Output
|
||||
.range_profile_i(fft_pc_i),
|
||||
.range_profile_q(fft_pc_q),
|
||||
.range_profile_valid(fft_pc_valid),
|
||||
|
||||
// Status
|
||||
.chain_state(fft_chain_state)
|
||||
);
|
||||
|
||||
// ========== DEBUG MONITOR ==========
|
||||
reg [31:0] dbg_cycles;
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
dbg_cycles <= 0;
|
||||
end else begin
|
||||
dbg_cycles <= dbg_cycles + 1;
|
||||
|
||||
// Monitor state transitions
|
||||
if (dbg_cycles % 1000 == 0 && state != ST_IDLE) begin
|
||||
$display("[MULTI_SEG_MONITOR @%0d] state=%0d, segment=%0d/%0d, samples=%0d",
|
||||
dbg_cycles, state, current_segment, total_segments,
|
||||
chirp_samples_collected);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
// ========== OUTPUT CONNECTIONS ==========
|
||||
assign pc_i_w = fft_pc_i;
|
||||
assign pc_q_w = fft_pc_q;
|
||||
assign pc_valid_w = fft_pc_valid;
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,117 @@
|
||||
`timescale 1ns / 1ps
|
||||
|
||||
module nco_400m_enhanced (
|
||||
input wire clk_400m,
|
||||
input wire reset_n,
|
||||
input wire [31:0] frequency_tuning_word,
|
||||
input wire phase_valid,
|
||||
input wire [15:0] phase_offset,
|
||||
output reg signed [15:0] sin_out,
|
||||
output reg signed [15:0] cos_out,
|
||||
output reg dds_ready
|
||||
);
|
||||
|
||||
// Phase accumulator with registered outputs for better timing
|
||||
reg [31:0] phase_accumulator;
|
||||
reg [31:0] phase_accumulator_reg;
|
||||
reg [31:0] phase_with_offset;
|
||||
reg phase_valid_delayed;
|
||||
|
||||
// Use only the top 8 bits for LUT addressing (256-entry LUT equivalent)
|
||||
wire [7:0] lut_address = phase_with_offset[31:24];
|
||||
|
||||
// Quarter-wave sine LUT (0-90 degrees only)
|
||||
reg [15:0] sin_lut [0:63]; // 64 entries for 0-90 degrees
|
||||
|
||||
// Initialize sine LUT
|
||||
integer lut_init_i;
|
||||
initial begin
|
||||
for (lut_init_i = 0; lut_init_i < 64; lut_init_i = lut_init_i + 1) begin
|
||||
sin_lut[lut_init_i] = 16'h0000;
|
||||
end
|
||||
|
||||
// Initialize quarter-wave sine LUT (0-90 degrees)
|
||||
sin_lut[0] = 16'h0000; sin_lut[1] = 16'h0324; sin_lut[2] = 16'h0647; sin_lut[3] = 16'h096A;
|
||||
sin_lut[4] = 16'h0C8B; sin_lut[5] = 16'h0FA9; sin_lut[6] = 16'h12C4; sin_lut[7] = 16'h15DB;
|
||||
sin_lut[8] = 16'h18EC; sin_lut[9] = 16'h1BF8; sin_lut[10] = 16'h1EFC; sin_lut[11] = 16'h21F8;
|
||||
sin_lut[12] = 16'h24EB; sin_lut[13] = 16'h27D4; sin_lut[14] = 16'h2AB1; sin_lut[15] = 16'h2D82;
|
||||
sin_lut[16] = 16'h3045; sin_lut[17] = 16'h32F9; sin_lut[18] = 16'h359D; sin_lut[19] = 16'h3830;
|
||||
sin_lut[20] = 16'h3AB1; sin_lut[21] = 16'h3D1E; sin_lut[22] = 16'h3F76; sin_lut[23] = 16'h41B8;
|
||||
sin_lut[24] = 16'h43E3; sin_lut[25] = 16'h45F5; sin_lut[26] = 16'h47EE; sin_lut[27] = 16'h49CD;
|
||||
sin_lut[28] = 16'h4B90; sin_lut[29] = 16'h4D37; sin_lut[30] = 16'h4EC1; sin_lut[31] = 16'h502D;
|
||||
sin_lut[32] = 16'h517A; sin_lut[33] = 16'h52A8; sin_lut[34] = 16'h53B6; sin_lut[35] = 16'h54A4;
|
||||
sin_lut[36] = 16'h5572; sin_lut[37] = 16'h561F; sin_lut[38] = 16'h56AA; sin_lut[39] = 16'h5715;
|
||||
sin_lut[40] = 16'h575E; sin_lut[41] = 16'h5785; sin_lut[42] = 16'h578B; sin_lut[43] = 16'h576E;
|
||||
sin_lut[44] = 16'h5730; sin_lut[45] = 16'h56D0; sin_lut[46] = 16'h564E; sin_lut[47] = 16'h55AB;
|
||||
sin_lut[48] = 16'h54E7; sin_lut[49] = 16'h5403; sin_lut[50] = 16'h52FE; sin_lut[51] = 16'h51DA;
|
||||
sin_lut[52] = 16'h5096; sin_lut[53] = 16'h4F34; sin_lut[54] = 16'h4DB4; sin_lut[55] = 16'h4C17;
|
||||
sin_lut[56] = 16'h4A5E; sin_lut[57] = 16'h4889; sin_lut[58] = 16'h4699; sin_lut[59] = 16'h448F;
|
||||
sin_lut[60] = 16'h426B; sin_lut[61] = 16'h402F; sin_lut[62] = 16'h3DDB; sin_lut[63] = 16'h3B71;
|
||||
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
|
||||
|
||||
// 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
|
||||
|
||||
// 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;
|
||||
sin_out <= 16'h0000;
|
||||
cos_out <= 16'h7FFF;
|
||||
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
|
||||
end
|
||||
end
|
||||
|
||||
// Add this to ensure LUT is properly loaded:
|
||||
initial begin
|
||||
// Wait a small amount of time for LUT initialization
|
||||
#10;
|
||||
$display("NCO: Sine LUT initialized with %0d entries", 64);
|
||||
end
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,801 @@
|
||||
`timescale 1ns / 1ps
|
||||
|
||||
module plfm_chirp_controller_enhanced (
|
||||
input wire clk_120m,
|
||||
input wire clk_100m,
|
||||
input wire reset_n,
|
||||
input wire new_chirp,
|
||||
input wire new_elevation,
|
||||
input wire new_azimuth,
|
||||
input wire mixers_enable,
|
||||
output reg [7:0] chirp_data,
|
||||
output reg chirp_valid,
|
||||
output wire new_chirp_frame,
|
||||
output reg chirp_done,
|
||||
output reg rf_switch_ctrl,
|
||||
output wire rx_mixer_en,
|
||||
output wire tx_mixer_en,
|
||||
output wire adar_tx_load_1,
|
||||
output wire adar_rx_load_1,
|
||||
output wire adar_tx_load_2,
|
||||
output wire adar_rx_load_2,
|
||||
output wire adar_tx_load_3,
|
||||
output wire adar_rx_load_3,
|
||||
output wire adar_tx_load_4,
|
||||
output wire adar_rx_load_4,
|
||||
output reg adar_tr_1,
|
||||
output reg adar_tr_2,
|
||||
output reg adar_tr_3,
|
||||
output reg adar_tr_4,
|
||||
output reg [5:0] chirp_counter,
|
||||
output reg [5:0] elevation_counter,
|
||||
output reg [5:0] azimuth_counter
|
||||
);
|
||||
|
||||
// Chirp parameters
|
||||
parameter F_START = 30000000; // 30 MHz (starting frequency)
|
||||
parameter F_END = 10000000; // 10 MHz (ending frequency)
|
||||
parameter FS = 120000000; // 120 MHz
|
||||
|
||||
// Timing parameters
|
||||
parameter T1_SAMPLES = 3600; // 30us at 120MHz
|
||||
parameter T1_RADAR_LISTENING = 16440; //137us at 120MHz
|
||||
parameter T2_SAMPLES = 60; // 0.5us at 120MHz
|
||||
parameter T2_RADAR_LISTENING = 20940; //174.5us at 120MHz
|
||||
parameter GUARD_SAMPLES = 21048; // 175.4us at 120MHz
|
||||
|
||||
// Chirp and beam parameters
|
||||
parameter CHIRP_MAX = 32;
|
||||
parameter ELEVATION_MAX = 31;
|
||||
parameter AZIMUTH_MAX = 50;
|
||||
|
||||
// State parameters
|
||||
parameter IDLE = 3'b000;
|
||||
parameter LONG_CHIRP = 3'b001;
|
||||
parameter LONG_LISTEN = 3'b010;
|
||||
parameter GUARD_TIME = 3'b011;
|
||||
parameter SHORT_CHIRP = 3'b100;
|
||||
parameter SHORT_LISTEN = 3'b101;
|
||||
parameter DONE = 3'b110;
|
||||
|
||||
reg [2:0] current_state;
|
||||
reg [2:0] next_state;
|
||||
|
||||
// Control registers
|
||||
reg [15:0] sample_counter;
|
||||
|
||||
// Edge detection for input signals
|
||||
wire chirp__toggling, elevation__toggling, azimuth__toggling;
|
||||
|
||||
// LUTs for chirp waveforms
|
||||
reg [7:0] long_chirp_lut [0:3599]; // T1_SAMPLES-1
|
||||
reg [7:0] short_chirp_lut [0:59]; // T2_SAMPLES-1
|
||||
|
||||
// Edge detection
|
||||
assign chirp__toggling = new_chirp;
|
||||
assign elevation__toggling = new_elevation;
|
||||
assign azimuth__toggling = new_azimuth;
|
||||
assign new_chirp_frame = (current_state == IDLE && next_state == LONG_CHIRP);
|
||||
|
||||
// Mixers Enabling
|
||||
assign rx_mixer_en = mixers_enable;
|
||||
assign tx_mixer_en = mixers_enable;
|
||||
|
||||
// ADTR1000 pull to ground tx and rx load pins if not used
|
||||
assign adar_tx_load_1 = 1'b0;
|
||||
assign adar_rx_load_1 = 1'b0;
|
||||
assign adar_tx_load_2 = 1'b0;
|
||||
assign adar_rx_load_2 = 1'b0;
|
||||
assign adar_tx_load_3 = 1'b0;
|
||||
assign adar_rx_load_3 = 1'b0;
|
||||
assign adar_tx_load_4 = 1'b0;
|
||||
assign adar_rx_load_4 = 1'b0;
|
||||
|
||||
|
||||
|
||||
|
||||
// LUT Initialization - Complete short chirp LUT
|
||||
// Long PLFM chirp LUT (30us, 30MHz to 10MHz)
|
||||
initial begin
|
||||
long_chirp_lut[ 0] = 8'd255; long_chirp_lut[ 1] = 8'd237; long_chirp_lut[ 2] = 8'd191; long_chirp_lut[ 3] = 8'd127; long_chirp_lut[ 4] = 8'd 64; long_chirp_lut[ 5] = 8'd 17; long_chirp_lut[ 6] = 8'd 1; long_chirp_lut[ 7] = 8'd 18;
|
||||
long_chirp_lut[ 8] = 8'd 65; long_chirp_lut[ 9] = 8'd129; long_chirp_lut[ 10] = 8'd193; long_chirp_lut[ 11] = 8'd239; long_chirp_lut[ 12] = 8'd254; long_chirp_lut[ 13] = 8'd236; long_chirp_lut[ 14] = 8'd188; long_chirp_lut[ 15] = 8'd123;
|
||||
long_chirp_lut[ 16] = 8'd 60; long_chirp_lut[ 17] = 8'd 15; long_chirp_lut[ 18] = 8'd 1; long_chirp_lut[ 19] = 8'd 21; long_chirp_lut[ 20] = 8'd 71; long_chirp_lut[ 21] = 8'd136; long_chirp_lut[ 22] = 8'd199; long_chirp_lut[ 23] = 8'd242;
|
||||
long_chirp_lut[ 24] = 8'd254; long_chirp_lut[ 25] = 8'd231; long_chirp_lut[ 26] = 8'd180; long_chirp_lut[ 27] = 8'd114; long_chirp_lut[ 28] = 8'd 52; long_chirp_lut[ 29] = 8'd 11; long_chirp_lut[ 30] = 8'd 2; long_chirp_lut[ 31] = 8'd 27;
|
||||
long_chirp_lut[ 32] = 8'd 81; long_chirp_lut[ 33] = 8'd148; long_chirp_lut[ 34] = 8'd209; long_chirp_lut[ 35] = 8'd247; long_chirp_lut[ 36] = 8'd252; long_chirp_lut[ 37] = 8'd223; long_chirp_lut[ 38] = 8'd167; long_chirp_lut[ 39] = 8'd100;
|
||||
long_chirp_lut[ 40] = 8'd 40; long_chirp_lut[ 41] = 8'd 5; long_chirp_lut[ 42] = 8'd 5; long_chirp_lut[ 43] = 8'd 38; long_chirp_lut[ 44] = 8'd 97; long_chirp_lut[ 45] = 8'd164; long_chirp_lut[ 46] = 8'd221; long_chirp_lut[ 47] = 8'd252;
|
||||
long_chirp_lut[ 48] = 8'd247; long_chirp_lut[ 49] = 8'd209; long_chirp_lut[ 50] = 8'd148; long_chirp_lut[ 51] = 8'd 81; long_chirp_lut[ 52] = 8'd 27; long_chirp_lut[ 53] = 8'd 1; long_chirp_lut[ 54] = 8'd 12; long_chirp_lut[ 55] = 8'd 55;
|
||||
long_chirp_lut[ 56] = 8'd119; long_chirp_lut[ 57] = 8'd185; long_chirp_lut[ 58] = 8'd235; long_chirp_lut[ 59] = 8'd254; long_chirp_lut[ 60] = 8'd237; long_chirp_lut[ 61] = 8'd189; long_chirp_lut[ 62] = 8'd123; long_chirp_lut[ 63] = 8'd 58;
|
||||
long_chirp_lut[ 64] = 8'd 13; long_chirp_lut[ 65] = 8'd 1; long_chirp_lut[ 66] = 8'd 25; long_chirp_lut[ 67] = 8'd 79; long_chirp_lut[ 68] = 8'd146; long_chirp_lut[ 69] = 8'd209; long_chirp_lut[ 70] = 8'd247; long_chirp_lut[ 71] = 8'd252;
|
||||
long_chirp_lut[ 72] = 8'd220; long_chirp_lut[ 73] = 8'd162; long_chirp_lut[ 74] = 8'd 93; long_chirp_lut[ 75] = 8'd 35; long_chirp_lut[ 76] = 8'd 3; long_chirp_lut[ 77] = 8'd 8; long_chirp_lut[ 78] = 8'd 47; long_chirp_lut[ 79] = 8'd110;
|
||||
long_chirp_lut[ 80] = 8'd178; long_chirp_lut[ 81] = 8'd231; long_chirp_lut[ 82] = 8'd254; long_chirp_lut[ 83] = 8'd240; long_chirp_lut[ 84] = 8'd193; long_chirp_lut[ 85] = 8'd127; long_chirp_lut[ 86] = 8'd 61; long_chirp_lut[ 87] = 8'd 14;
|
||||
long_chirp_lut[ 88] = 8'd 1; long_chirp_lut[ 89] = 8'd 25; long_chirp_lut[ 90] = 8'd 79; long_chirp_lut[ 91] = 8'd147; long_chirp_lut[ 92] = 8'd210; long_chirp_lut[ 93] = 8'd248; long_chirp_lut[ 94] = 8'd251; long_chirp_lut[ 95] = 8'd217;
|
||||
long_chirp_lut[ 96] = 8'd157; long_chirp_lut[ 97] = 8'd 87; long_chirp_lut[ 98] = 8'd 30; long_chirp_lut[ 99] = 8'd 2; long_chirp_lut[ 100] = 8'd 11; long_chirp_lut[ 101] = 8'd 55; long_chirp_lut[ 102] = 8'd120; long_chirp_lut[ 103] = 8'd188;
|
||||
long_chirp_lut[ 104] = 8'd238; long_chirp_lut[ 105] = 8'd254; long_chirp_lut[ 106] = 8'd233; long_chirp_lut[ 107] = 8'd180; long_chirp_lut[ 108] = 8'd112; long_chirp_lut[ 109] = 8'd 48; long_chirp_lut[ 110] = 8'd 8; long_chirp_lut[ 111] = 8'd 4;
|
||||
long_chirp_lut[ 112] = 8'd 37; long_chirp_lut[ 113] = 8'd 98; long_chirp_lut[ 114] = 8'd167; long_chirp_lut[ 115] = 8'd225; long_chirp_lut[ 116] = 8'd253; long_chirp_lut[ 117] = 8'd243; long_chirp_lut[ 118] = 8'd198; long_chirp_lut[ 119] = 8'd132;
|
||||
long_chirp_lut[ 120] = 8'd 64; long_chirp_lut[ 121] = 8'd 15; long_chirp_lut[ 122] = 8'd 1; long_chirp_lut[ 123] = 8'd 25; long_chirp_lut[ 124] = 8'd 80; long_chirp_lut[ 125] = 8'd150; long_chirp_lut[ 126] = 8'd213; long_chirp_lut[ 127] = 8'd250;
|
||||
long_chirp_lut[ 128] = 8'd249; long_chirp_lut[ 129] = 8'd211; long_chirp_lut[ 130] = 8'd148; long_chirp_lut[ 131] = 8'd 78; long_chirp_lut[ 132] = 8'd 23; long_chirp_lut[ 133] = 8'd 1; long_chirp_lut[ 134] = 8'd 17; long_chirp_lut[ 135] = 8'd 68;
|
||||
long_chirp_lut[ 136] = 8'd137; long_chirp_lut[ 137] = 8'd203; long_chirp_lut[ 138] = 8'd246; long_chirp_lut[ 139] = 8'd252; long_chirp_lut[ 140] = 8'd220; long_chirp_lut[ 141] = 8'd159; long_chirp_lut[ 142] = 8'd 88; long_chirp_lut[ 143] = 8'd 30;
|
||||
long_chirp_lut[ 144] = 8'd 2; long_chirp_lut[ 145] = 8'd 13; long_chirp_lut[ 146] = 8'd 60; long_chirp_lut[ 147] = 8'd128; long_chirp_lut[ 148] = 8'd196; long_chirp_lut[ 149] = 8'd243; long_chirp_lut[ 150] = 8'd253; long_chirp_lut[ 151] = 8'd225;
|
||||
long_chirp_lut[ 152] = 8'd166; long_chirp_lut[ 153] = 8'd 94; long_chirp_lut[ 154] = 8'd 34; long_chirp_lut[ 155] = 8'd 2; long_chirp_lut[ 156] = 8'd 10; long_chirp_lut[ 157] = 8'd 55; long_chirp_lut[ 158] = 8'd123; long_chirp_lut[ 159] = 8'd192;
|
||||
long_chirp_lut[ 160] = 8'd241; long_chirp_lut[ 161] = 8'd254; long_chirp_lut[ 162] = 8'd227; long_chirp_lut[ 163] = 8'd168; long_chirp_lut[ 164] = 8'd 96; long_chirp_lut[ 165] = 8'd 35; long_chirp_lut[ 166] = 8'd 3; long_chirp_lut[ 167] = 8'd 10;
|
||||
long_chirp_lut[ 168] = 8'd 55; long_chirp_lut[ 169] = 8'd123; long_chirp_lut[ 170] = 8'd193; long_chirp_lut[ 171] = 8'd241; long_chirp_lut[ 172] = 8'd254; long_chirp_lut[ 173] = 8'd226; long_chirp_lut[ 174] = 8'd166; long_chirp_lut[ 175] = 8'd 94;
|
||||
long_chirp_lut[ 176] = 8'd 33; long_chirp_lut[ 177] = 8'd 2; long_chirp_lut[ 178] = 8'd 12; long_chirp_lut[ 179] = 8'd 58; long_chirp_lut[ 180] = 8'd128; long_chirp_lut[ 181] = 8'd197; long_chirp_lut[ 182] = 8'd244; long_chirp_lut[ 183] = 8'd253;
|
||||
long_chirp_lut[ 184] = 8'd222; long_chirp_lut[ 185] = 8'd160; long_chirp_lut[ 186] = 8'd 88; long_chirp_lut[ 187] = 8'd 28; long_chirp_lut[ 188] = 8'd 1; long_chirp_lut[ 189] = 8'd 15; long_chirp_lut[ 190] = 8'd 66; long_chirp_lut[ 191] = 8'd136;
|
||||
long_chirp_lut[ 192] = 8'd204; long_chirp_lut[ 193] = 8'd247; long_chirp_lut[ 194] = 8'd251; long_chirp_lut[ 195] = 8'd214; long_chirp_lut[ 196] = 8'd149; long_chirp_lut[ 197] = 8'd 77; long_chirp_lut[ 198] = 8'd 21; long_chirp_lut[ 199] = 8'd 1;
|
||||
long_chirp_lut[ 200] = 8'd 21; long_chirp_lut[ 201] = 8'd 77; long_chirp_lut[ 202] = 8'd150; long_chirp_lut[ 203] = 8'd215; long_chirp_lut[ 204] = 8'd251; long_chirp_lut[ 205] = 8'd247; long_chirp_lut[ 206] = 8'd203; long_chirp_lut[ 207] = 8'd134;
|
||||
long_chirp_lut[ 208] = 8'd 63; long_chirp_lut[ 209] = 8'd 13; long_chirp_lut[ 210] = 8'd 2; long_chirp_lut[ 211] = 8'd 32; long_chirp_lut[ 212] = 8'd 94; long_chirp_lut[ 213] = 8'd167; long_chirp_lut[ 214] = 8'd227; long_chirp_lut[ 215] = 8'd254;
|
||||
long_chirp_lut[ 216] = 8'd239; long_chirp_lut[ 217] = 8'd186; long_chirp_lut[ 218] = 8'd114; long_chirp_lut[ 219] = 8'd 46; long_chirp_lut[ 220] = 8'd 6; long_chirp_lut[ 221] = 8'd 6; long_chirp_lut[ 222] = 8'd 47; long_chirp_lut[ 223] = 8'd115;
|
||||
long_chirp_lut[ 224] = 8'd187; long_chirp_lut[ 225] = 8'd240; long_chirp_lut[ 226] = 8'd254; long_chirp_lut[ 227] = 8'd226; long_chirp_lut[ 228] = 8'd164; long_chirp_lut[ 229] = 8'd 90; long_chirp_lut[ 230] = 8'd 29; long_chirp_lut[ 231] = 8'd 1;
|
||||
long_chirp_lut[ 232] = 8'd 16; long_chirp_lut[ 233] = 8'd 69; long_chirp_lut[ 234] = 8'd141; long_chirp_lut[ 235] = 8'd209; long_chirp_lut[ 236] = 8'd250; long_chirp_lut[ 237] = 8'd248; long_chirp_lut[ 238] = 8'd206; long_chirp_lut[ 239] = 8'd136;
|
||||
long_chirp_lut[ 240] = 8'd 64; long_chirp_lut[ 241] = 8'd 13; long_chirp_lut[ 242] = 8'd 2; long_chirp_lut[ 243] = 8'd 33; long_chirp_lut[ 244] = 8'd 97; long_chirp_lut[ 245] = 8'd171; long_chirp_lut[ 246] = 8'd231; long_chirp_lut[ 247] = 8'd254;
|
||||
long_chirp_lut[ 248] = 8'd235; long_chirp_lut[ 249] = 8'd178; long_chirp_lut[ 250] = 8'd104; long_chirp_lut[ 251] = 8'd 38; long_chirp_lut[ 252] = 8'd 3; long_chirp_lut[ 253] = 8'd 11; long_chirp_lut[ 254] = 8'd 60; long_chirp_lut[ 255] = 8'd132;
|
||||
long_chirp_lut[ 256] = 8'd202; long_chirp_lut[ 257] = 8'd247; long_chirp_lut[ 258] = 8'd250; long_chirp_lut[ 259] = 8'd211; long_chirp_lut[ 260] = 8'd142; long_chirp_lut[ 261] = 8'd 69; long_chirp_lut[ 262] = 8'd 15; long_chirp_lut[ 263] = 8'd 1;
|
||||
long_chirp_lut[ 264] = 8'd 31; long_chirp_lut[ 265] = 8'd 95; long_chirp_lut[ 266] = 8'd170; long_chirp_lut[ 267] = 8'd230; long_chirp_lut[ 268] = 8'd254; long_chirp_lut[ 269] = 8'd234; long_chirp_lut[ 270] = 8'd176; long_chirp_lut[ 271] = 8'd101;
|
||||
long_chirp_lut[ 272] = 8'd 35; long_chirp_lut[ 273] = 8'd 2; long_chirp_lut[ 274] = 8'd 13; long_chirp_lut[ 275] = 8'd 64; long_chirp_lut[ 276] = 8'd138; long_chirp_lut[ 277] = 8'd208; long_chirp_lut[ 278] = 8'd250; long_chirp_lut[ 279] = 8'd248;
|
||||
long_chirp_lut[ 280] = 8'd203; long_chirp_lut[ 281] = 8'd132; long_chirp_lut[ 282] = 8'd 59; long_chirp_lut[ 283] = 8'd 10; long_chirp_lut[ 284] = 8'd 3; long_chirp_lut[ 285] = 8'd 41; long_chirp_lut[ 286] = 8'd109; long_chirp_lut[ 287] = 8'd184;
|
||||
long_chirp_lut[ 288] = 8'd239; long_chirp_lut[ 289] = 8'd254; long_chirp_lut[ 290] = 8'd224; long_chirp_lut[ 291] = 8'd159; long_chirp_lut[ 292] = 8'd 83; long_chirp_lut[ 293] = 8'd 23; long_chirp_lut[ 294] = 8'd 1; long_chirp_lut[ 295] = 8'd 24;
|
||||
long_chirp_lut[ 296] = 8'd 84; long_chirp_lut[ 297] = 8'd161; long_chirp_lut[ 298] = 8'd225; long_chirp_lut[ 299] = 8'd254; long_chirp_lut[ 300] = 8'd237; long_chirp_lut[ 301] = 8'd181; long_chirp_lut[ 302] = 8'd105; long_chirp_lut[ 303] = 8'd 38;
|
||||
long_chirp_lut[ 304] = 8'd 2; long_chirp_lut[ 305] = 8'd 13; long_chirp_lut[ 306] = 8'd 65; long_chirp_lut[ 307] = 8'd139; long_chirp_lut[ 308] = 8'd210; long_chirp_lut[ 309] = 8'd251; long_chirp_lut[ 310] = 8'd246; long_chirp_lut[ 311] = 8'd199;
|
||||
long_chirp_lut[ 312] = 8'd125; long_chirp_lut[ 313] = 8'd 52; long_chirp_lut[ 314] = 8'd 7; long_chirp_lut[ 315] = 8'd 6; long_chirp_lut[ 316] = 8'd 50; long_chirp_lut[ 317] = 8'd122; long_chirp_lut[ 318] = 8'd196; long_chirp_lut[ 319] = 8'd245;
|
||||
long_chirp_lut[ 320] = 8'd251; long_chirp_lut[ 321] = 8'd211; long_chirp_lut[ 322] = 8'd141; long_chirp_lut[ 323] = 8'd 65; long_chirp_lut[ 324] = 8'd 13; long_chirp_lut[ 325] = 8'd 3; long_chirp_lut[ 326] = 8'd 39; long_chirp_lut[ 327] = 8'd108;
|
||||
long_chirp_lut[ 328] = 8'd184; long_chirp_lut[ 329] = 8'd240; long_chirp_lut[ 330] = 8'd253; long_chirp_lut[ 331] = 8'd220; long_chirp_lut[ 332] = 8'd153; long_chirp_lut[ 333] = 8'd 76; long_chirp_lut[ 334] = 8'd 18; long_chirp_lut[ 335] = 8'd 1;
|
||||
long_chirp_lut[ 336] = 8'd 31; long_chirp_lut[ 337] = 8'd 98; long_chirp_lut[ 338] = 8'd175; long_chirp_lut[ 339] = 8'd235; long_chirp_lut[ 340] = 8'd254; long_chirp_lut[ 341] = 8'd226; long_chirp_lut[ 342] = 8'd161; long_chirp_lut[ 343] = 8'd 83;
|
||||
long_chirp_lut[ 344] = 8'd 22; long_chirp_lut[ 345] = 8'd 1; long_chirp_lut[ 346] = 8'd 27; long_chirp_lut[ 347] = 8'd 91; long_chirp_lut[ 348] = 8'd169; long_chirp_lut[ 349] = 8'd232; long_chirp_lut[ 350] = 8'd254; long_chirp_lut[ 351] = 8'd229;
|
||||
long_chirp_lut[ 352] = 8'd166; long_chirp_lut[ 353] = 8'd 87; long_chirp_lut[ 354] = 8'd 24; long_chirp_lut[ 355] = 8'd 1; long_chirp_lut[ 356] = 8'd 25; long_chirp_lut[ 357] = 8'd 88; long_chirp_lut[ 358] = 8'd167; long_chirp_lut[ 359] = 8'd230;
|
||||
long_chirp_lut[ 360] = 8'd255; long_chirp_lut[ 361] = 8'd230; long_chirp_lut[ 362] = 8'd167; long_chirp_lut[ 363] = 8'd 88; long_chirp_lut[ 364] = 8'd 25; long_chirp_lut[ 365] = 8'd 1; long_chirp_lut[ 366] = 8'd 25; long_chirp_lut[ 367] = 8'd 89;
|
||||
long_chirp_lut[ 368] = 8'd168; long_chirp_lut[ 369] = 8'd231; long_chirp_lut[ 370] = 8'd254; long_chirp_lut[ 371] = 8'd229; long_chirp_lut[ 372] = 8'd164; long_chirp_lut[ 373] = 8'd 85; long_chirp_lut[ 374] = 8'd 23; long_chirp_lut[ 375] = 8'd 1;
|
||||
long_chirp_lut[ 376] = 8'd 28; long_chirp_lut[ 377] = 8'd 93; long_chirp_lut[ 378] = 8'd172; long_chirp_lut[ 379] = 8'd234; long_chirp_lut[ 380] = 8'd254; long_chirp_lut[ 381] = 8'd225; long_chirp_lut[ 382] = 8'd158; long_chirp_lut[ 383] = 8'd 79;
|
||||
long_chirp_lut[ 384] = 8'd 19; long_chirp_lut[ 385] = 8'd 1; long_chirp_lut[ 386] = 8'd 33; long_chirp_lut[ 387] = 8'd101; long_chirp_lut[ 388] = 8'd180; long_chirp_lut[ 389] = 8'd239; long_chirp_lut[ 390] = 8'd253; long_chirp_lut[ 391] = 8'd219;
|
||||
long_chirp_lut[ 392] = 8'd148; long_chirp_lut[ 393] = 8'd 70; long_chirp_lut[ 394] = 8'd 14; long_chirp_lut[ 395] = 8'd 3; long_chirp_lut[ 396] = 8'd 41; long_chirp_lut[ 397] = 8'd113; long_chirp_lut[ 398] = 8'd191; long_chirp_lut[ 399] = 8'd244;
|
||||
long_chirp_lut[ 400] = 8'd251; long_chirp_lut[ 401] = 8'd209; long_chirp_lut[ 402] = 8'd135; long_chirp_lut[ 403] = 8'd 58; long_chirp_lut[ 404] = 8'd 8; long_chirp_lut[ 405] = 8'd 6; long_chirp_lut[ 406] = 8'd 52; long_chirp_lut[ 407] = 8'd128;
|
||||
long_chirp_lut[ 408] = 8'd204; long_chirp_lut[ 409] = 8'd250; long_chirp_lut[ 410] = 8'd246; long_chirp_lut[ 411] = 8'd195; long_chirp_lut[ 412] = 8'd117; long_chirp_lut[ 413] = 8'd 43; long_chirp_lut[ 414] = 8'd 3; long_chirp_lut[ 415] = 8'd 13;
|
||||
long_chirp_lut[ 416] = 8'd 68; long_chirp_lut[ 417] = 8'd148; long_chirp_lut[ 418] = 8'd219; long_chirp_lut[ 419] = 8'd254; long_chirp_lut[ 420] = 8'd237; long_chirp_lut[ 421] = 8'd177; long_chirp_lut[ 422] = 8'd 97; long_chirp_lut[ 423] = 8'd 29;
|
||||
long_chirp_lut[ 424] = 8'd 1; long_chirp_lut[ 425] = 8'd 24; long_chirp_lut[ 426] = 8'd 89; long_chirp_lut[ 427] = 8'd170; long_chirp_lut[ 428] = 8'd233; long_chirp_lut[ 429] = 8'd254; long_chirp_lut[ 430] = 8'd224; long_chirp_lut[ 431] = 8'd154;
|
||||
long_chirp_lut[ 432] = 8'd 73; long_chirp_lut[ 433] = 8'd 15; long_chirp_lut[ 434] = 8'd 2; long_chirp_lut[ 435] = 8'd 41; long_chirp_lut[ 436] = 8'd115; long_chirp_lut[ 437] = 8'd194; long_chirp_lut[ 438] = 8'd246; long_chirp_lut[ 439] = 8'd250;
|
||||
long_chirp_lut[ 440] = 8'd203; long_chirp_lut[ 441] = 8'd126; long_chirp_lut[ 442] = 8'd 49; long_chirp_lut[ 443] = 8'd 5; long_chirp_lut[ 444] = 8'd 10; long_chirp_lut[ 445] = 8'd 64; long_chirp_lut[ 446] = 8'd144; long_chirp_lut[ 447] = 8'd217;
|
||||
long_chirp_lut[ 448] = 8'd253; long_chirp_lut[ 449] = 8'd237; long_chirp_lut[ 450] = 8'd176; long_chirp_lut[ 451] = 8'd 95; long_chirp_lut[ 452] = 8'd 27; long_chirp_lut[ 453] = 8'd 1; long_chirp_lut[ 454] = 8'd 27; long_chirp_lut[ 455] = 8'd 95;
|
||||
long_chirp_lut[ 456] = 8'd177; long_chirp_lut[ 457] = 8'd238; long_chirp_lut[ 458] = 8'd253; long_chirp_lut[ 459] = 8'd216; long_chirp_lut[ 460] = 8'd142; long_chirp_lut[ 461] = 8'd 62; long_chirp_lut[ 462] = 8'd 9; long_chirp_lut[ 463] = 8'd 6;
|
||||
long_chirp_lut[ 464] = 8'd 53; long_chirp_lut[ 465] = 8'd132; long_chirp_lut[ 466] = 8'd209; long_chirp_lut[ 467] = 8'd251; long_chirp_lut[ 468] = 8'd242; long_chirp_lut[ 469] = 8'd185; long_chirp_lut[ 470] = 8'd104; long_chirp_lut[ 471] = 8'd 32;
|
||||
long_chirp_lut[ 472] = 8'd 1; long_chirp_lut[ 473] = 8'd 23; long_chirp_lut[ 474] = 8'd 89; long_chirp_lut[ 475] = 8'd171; long_chirp_lut[ 476] = 8'd235; long_chirp_lut[ 477] = 8'd254; long_chirp_lut[ 478] = 8'd219; long_chirp_lut[ 479] = 8'd145;
|
||||
long_chirp_lut[ 480] = 8'd 64; long_chirp_lut[ 481] = 8'd 10; long_chirp_lut[ 482] = 8'd 5; long_chirp_lut[ 483] = 8'd 53; long_chirp_lut[ 484] = 8'd132; long_chirp_lut[ 485] = 8'd209; long_chirp_lut[ 486] = 8'd252; long_chirp_lut[ 487] = 8'd241;
|
||||
long_chirp_lut[ 488] = 8'd182; long_chirp_lut[ 489] = 8'd100; long_chirp_lut[ 490] = 8'd 29; long_chirp_lut[ 491] = 8'd 1; long_chirp_lut[ 492] = 8'd 26; long_chirp_lut[ 493] = 8'd 96; long_chirp_lut[ 494] = 8'd178; long_chirp_lut[ 495] = 8'd240;
|
||||
long_chirp_lut[ 496] = 8'd253; long_chirp_lut[ 497] = 8'd212; long_chirp_lut[ 498] = 8'd135; long_chirp_lut[ 499] = 8'd 55; long_chirp_lut[ 500] = 8'd 6; long_chirp_lut[ 501] = 8'd 9; long_chirp_lut[ 502] = 8'd 64; long_chirp_lut[ 503] = 8'd146;
|
||||
long_chirp_lut[ 504] = 8'd220; long_chirp_lut[ 505] = 8'd254; long_chirp_lut[ 506] = 8'd233; long_chirp_lut[ 507] = 8'd167; long_chirp_lut[ 508] = 8'd 83; long_chirp_lut[ 509] = 8'd 19; long_chirp_lut[ 510] = 8'd 2; long_chirp_lut[ 511] = 8'd 39;
|
||||
long_chirp_lut[ 512] = 8'd115; long_chirp_lut[ 513] = 8'd197; long_chirp_lut[ 514] = 8'd248; long_chirp_lut[ 515] = 8'd247; long_chirp_lut[ 516] = 8'd193; long_chirp_lut[ 517] = 8'd111; long_chirp_lut[ 518] = 8'd 36; long_chirp_lut[ 519] = 8'd 1;
|
||||
long_chirp_lut[ 520] = 8'd 21; long_chirp_lut[ 521] = 8'd 88; long_chirp_lut[ 522] = 8'd172; long_chirp_lut[ 523] = 8'd237; long_chirp_lut[ 524] = 8'd253; long_chirp_lut[ 525] = 8'd214; long_chirp_lut[ 526] = 8'd137; long_chirp_lut[ 527] = 8'd 56;
|
||||
long_chirp_lut[ 528] = 8'd 6; long_chirp_lut[ 529] = 8'd 10; long_chirp_lut[ 530] = 8'd 66; long_chirp_lut[ 531] = 8'd149; long_chirp_lut[ 532] = 8'd223; long_chirp_lut[ 533] = 8'd254; long_chirp_lut[ 534] = 8'd230; long_chirp_lut[ 535] = 8'd160;
|
||||
long_chirp_lut[ 536] = 8'd 76; long_chirp_lut[ 537] = 8'd 14; long_chirp_lut[ 538] = 8'd 3; long_chirp_lut[ 539] = 8'd 48; long_chirp_lut[ 540] = 8'd127; long_chirp_lut[ 541] = 8'd207; long_chirp_lut[ 542] = 8'd252; long_chirp_lut[ 543] = 8'd241;
|
||||
long_chirp_lut[ 544] = 8'd179; long_chirp_lut[ 545] = 8'd 94; long_chirp_lut[ 546] = 8'd 24; long_chirp_lut[ 547] = 8'd 1; long_chirp_lut[ 548] = 8'd 34; long_chirp_lut[ 549] = 8'd109; long_chirp_lut[ 550] = 8'd193; long_chirp_lut[ 551] = 8'd247;
|
||||
long_chirp_lut[ 552] = 8'd247; long_chirp_lut[ 553] = 8'd194; long_chirp_lut[ 554] = 8'd111; long_chirp_lut[ 555] = 8'd 35; long_chirp_lut[ 556] = 8'd 1; long_chirp_lut[ 557] = 8'd 24; long_chirp_lut[ 558] = 8'd 94; long_chirp_lut[ 559] = 8'd179;
|
||||
long_chirp_lut[ 560] = 8'd241; long_chirp_lut[ 561] = 8'd251; long_chirp_lut[ 562] = 8'd206; long_chirp_lut[ 563] = 8'd124; long_chirp_lut[ 564] = 8'd 45; long_chirp_lut[ 565] = 8'd 2; long_chirp_lut[ 566] = 8'd 17; long_chirp_lut[ 567] = 8'd 82;
|
||||
long_chirp_lut[ 568] = 8'd168; long_chirp_lut[ 569] = 8'd235; long_chirp_lut[ 570] = 8'd253; long_chirp_lut[ 571] = 8'd214; long_chirp_lut[ 572] = 8'd135; long_chirp_lut[ 573] = 8'd 53; long_chirp_lut[ 574] = 8'd 4; long_chirp_lut[ 575] = 8'd 13;
|
||||
long_chirp_lut[ 576] = 8'd 73; long_chirp_lut[ 577] = 8'd159; long_chirp_lut[ 578] = 8'd230; long_chirp_lut[ 579] = 8'd254; long_chirp_lut[ 580] = 8'd220; long_chirp_lut[ 581] = 8'd143; long_chirp_lut[ 582] = 8'd 59; long_chirp_lut[ 583] = 8'd 6;
|
||||
long_chirp_lut[ 584] = 8'd 10; long_chirp_lut[ 585] = 8'd 68; long_chirp_lut[ 586] = 8'd153; long_chirp_lut[ 587] = 8'd227; long_chirp_lut[ 588] = 8'd254; long_chirp_lut[ 589] = 8'd223; long_chirp_lut[ 590] = 8'd148; long_chirp_lut[ 591] = 8'd 63;
|
||||
long_chirp_lut[ 592] = 8'd 8; long_chirp_lut[ 593] = 8'd 8; long_chirp_lut[ 594] = 8'd 65; long_chirp_lut[ 595] = 8'd150; long_chirp_lut[ 596] = 8'd225; long_chirp_lut[ 597] = 8'd254; long_chirp_lut[ 598] = 8'd225; long_chirp_lut[ 599] = 8'd150;
|
||||
long_chirp_lut[ 600] = 8'd 64; long_chirp_lut[ 601] = 8'd 8; long_chirp_lut[ 602] = 8'd 8; long_chirp_lut[ 603] = 8'd 64; long_chirp_lut[ 604] = 8'd150; long_chirp_lut[ 605] = 8'd225; long_chirp_lut[ 606] = 8'd254; long_chirp_lut[ 607] = 8'd224;
|
||||
long_chirp_lut[ 608] = 8'd148; long_chirp_lut[ 609] = 8'd 63; long_chirp_lut[ 610] = 8'd 8; long_chirp_lut[ 611] = 8'd 9; long_chirp_lut[ 612] = 8'd 66; long_chirp_lut[ 613] = 8'd153; long_chirp_lut[ 614] = 8'd227; long_chirp_lut[ 615] = 8'd254;
|
||||
long_chirp_lut[ 616] = 8'd222; long_chirp_lut[ 617] = 8'd144; long_chirp_lut[ 618] = 8'd 59; long_chirp_lut[ 619] = 8'd 6; long_chirp_lut[ 620] = 8'd 11; long_chirp_lut[ 621] = 8'd 71; long_chirp_lut[ 622] = 8'd158; long_chirp_lut[ 623] = 8'd231;
|
||||
long_chirp_lut[ 624] = 8'd254; long_chirp_lut[ 625] = 8'd217; long_chirp_lut[ 626] = 8'd137; long_chirp_lut[ 627] = 8'd 53; long_chirp_lut[ 628] = 8'd 4; long_chirp_lut[ 629] = 8'd 14; long_chirp_lut[ 630] = 8'd 79; long_chirp_lut[ 631] = 8'd167;
|
||||
long_chirp_lut[ 632] = 8'd236; long_chirp_lut[ 633] = 8'd253; long_chirp_lut[ 634] = 8'd210; long_chirp_lut[ 635] = 8'd127; long_chirp_lut[ 636] = 8'd 45; long_chirp_lut[ 637] = 8'd 2; long_chirp_lut[ 638] = 8'd 20; long_chirp_lut[ 639] = 8'd 90;
|
||||
long_chirp_lut[ 640] = 8'd178; long_chirp_lut[ 641] = 8'd242; long_chirp_lut[ 642] = 8'd250; long_chirp_lut[ 643] = 8'd200; long_chirp_lut[ 644] = 8'd114; long_chirp_lut[ 645] = 8'd 35; long_chirp_lut[ 646] = 8'd 1; long_chirp_lut[ 647] = 8'd 28;
|
||||
long_chirp_lut[ 648] = 8'd104; long_chirp_lut[ 649] = 8'd191; long_chirp_lut[ 650] = 8'd247; long_chirp_lut[ 651] = 8'd246; long_chirp_lut[ 652] = 8'd186; long_chirp_lut[ 653] = 8'd 98; long_chirp_lut[ 654] = 8'd 24; long_chirp_lut[ 655] = 8'd 1;
|
||||
long_chirp_lut[ 656] = 8'd 39; long_chirp_lut[ 657] = 8'd121; long_chirp_lut[ 658] = 8'd206; long_chirp_lut[ 659] = 8'd252; long_chirp_lut[ 660] = 8'd237; long_chirp_lut[ 661] = 8'd169; long_chirp_lut[ 662] = 8'd 80; long_chirp_lut[ 663] = 8'd 14;
|
||||
long_chirp_lut[ 664] = 8'd 4; long_chirp_lut[ 665] = 8'd 55; long_chirp_lut[ 666] = 8'd141; long_chirp_lut[ 667] = 8'd221; long_chirp_lut[ 668] = 8'd254; long_chirp_lut[ 669] = 8'd225; long_chirp_lut[ 670] = 8'd148; long_chirp_lut[ 671] = 8'd 60;
|
||||
long_chirp_lut[ 672] = 8'd 6; long_chirp_lut[ 673] = 8'd 12; long_chirp_lut[ 674] = 8'd 75; long_chirp_lut[ 675] = 8'd164; long_chirp_lut[ 676] = 8'd235; long_chirp_lut[ 677] = 8'd253; long_chirp_lut[ 678] = 8'd208; long_chirp_lut[ 679] = 8'd123;
|
||||
long_chirp_lut[ 680] = 8'd 40; long_chirp_lut[ 681] = 8'd 1; long_chirp_lut[ 682] = 8'd 25; long_chirp_lut[ 683] = 8'd100; long_chirp_lut[ 684] = 8'd189; long_chirp_lut[ 685] = 8'd247; long_chirp_lut[ 686] = 8'd246; long_chirp_lut[ 687] = 8'd185;
|
||||
long_chirp_lut[ 688] = 8'd 96; long_chirp_lut[ 689] = 8'd 22; long_chirp_lut[ 690] = 8'd 2; long_chirp_lut[ 691] = 8'd 44; long_chirp_lut[ 692] = 8'd129; long_chirp_lut[ 693] = 8'd213; long_chirp_lut[ 694] = 8'd254; long_chirp_lut[ 695] = 8'd231;
|
||||
long_chirp_lut[ 696] = 8'd157; long_chirp_lut[ 697] = 8'd 67; long_chirp_lut[ 698] = 8'd 8; long_chirp_lut[ 699] = 8'd 9; long_chirp_lut[ 700] = 8'd 71; long_chirp_lut[ 701] = 8'd160; long_chirp_lut[ 702] = 8'd234; long_chirp_lut[ 703] = 8'd253;
|
||||
long_chirp_lut[ 704] = 8'd209; long_chirp_lut[ 705] = 8'd123; long_chirp_lut[ 706] = 8'd 40; long_chirp_lut[ 707] = 8'd 1; long_chirp_lut[ 708] = 8'd 26; long_chirp_lut[ 709] = 8'd103; long_chirp_lut[ 710] = 8'd193; long_chirp_lut[ 711] = 8'd249;
|
||||
long_chirp_lut[ 712] = 8'd243; long_chirp_lut[ 713] = 8'd178; long_chirp_lut[ 714] = 8'd 88; long_chirp_lut[ 715] = 8'd 17; long_chirp_lut[ 716] = 8'd 3; long_chirp_lut[ 717] = 8'd 53; long_chirp_lut[ 718] = 8'd141; long_chirp_lut[ 719] = 8'd222;
|
||||
long_chirp_lut[ 720] = 8'd255; long_chirp_lut[ 721] = 8'd222; long_chirp_lut[ 722] = 8'd141; long_chirp_lut[ 723] = 8'd 53; long_chirp_lut[ 724] = 8'd 3; long_chirp_lut[ 725] = 8'd 18; long_chirp_lut[ 726] = 8'd 89; long_chirp_lut[ 727] = 8'd180;
|
||||
long_chirp_lut[ 728] = 8'd244; long_chirp_lut[ 729] = 8'd248; long_chirp_lut[ 730] = 8'd189; long_chirp_lut[ 731] = 8'd 99; long_chirp_lut[ 732] = 8'd 23; long_chirp_lut[ 733] = 8'd 2; long_chirp_lut[ 734] = 8'd 45; long_chirp_lut[ 735] = 8'd132;
|
||||
long_chirp_lut[ 736] = 8'd216; long_chirp_lut[ 737] = 8'd254; long_chirp_lut[ 738] = 8'd227; long_chirp_lut[ 739] = 8'd147; long_chirp_lut[ 740] = 8'd 58; long_chirp_lut[ 741] = 8'd 4; long_chirp_lut[ 742] = 8'd 15; long_chirp_lut[ 743] = 8'd 85;
|
||||
long_chirp_lut[ 744] = 8'd177; long_chirp_lut[ 745] = 8'd243; long_chirp_lut[ 746] = 8'd249; long_chirp_lut[ 747] = 8'd191; long_chirp_lut[ 748] = 8'd100; long_chirp_lut[ 749] = 8'd 23; long_chirp_lut[ 750] = 8'd 2; long_chirp_lut[ 751] = 8'd 46;
|
||||
long_chirp_lut[ 752] = 8'd133; long_chirp_lut[ 753] = 8'd217; long_chirp_lut[ 754] = 8'd254; long_chirp_lut[ 755] = 8'd224; long_chirp_lut[ 756] = 8'd143; long_chirp_lut[ 757] = 8'd 54; long_chirp_lut[ 758] = 8'd 3; long_chirp_lut[ 759] = 8'd 18;
|
||||
long_chirp_lut[ 760] = 8'd 91; long_chirp_lut[ 761] = 8'd183; long_chirp_lut[ 762] = 8'd246; long_chirp_lut[ 763] = 8'd246; long_chirp_lut[ 764] = 8'd183; long_chirp_lut[ 765] = 8'd 91; long_chirp_lut[ 766] = 8'd 18; long_chirp_lut[ 767] = 8'd 3;
|
||||
long_chirp_lut[ 768] = 8'd 55; long_chirp_lut[ 769] = 8'd145; long_chirp_lut[ 770] = 8'd226; long_chirp_lut[ 771] = 8'd254; long_chirp_lut[ 772] = 8'd215; long_chirp_lut[ 773] = 8'd129; long_chirp_lut[ 774] = 8'd 42; long_chirp_lut[ 775] = 8'd 1;
|
||||
long_chirp_lut[ 776] = 8'd 28; long_chirp_lut[ 777] = 8'd108; long_chirp_lut[ 778] = 8'd199; long_chirp_lut[ 779] = 8'd251; long_chirp_lut[ 780] = 8'd237; long_chirp_lut[ 781] = 8'd165; long_chirp_lut[ 782] = 8'd 72; long_chirp_lut[ 783] = 8'd 9;
|
||||
long_chirp_lut[ 784] = 8'd 10; long_chirp_lut[ 785] = 8'd 74; long_chirp_lut[ 786] = 8'd167; long_chirp_lut[ 787] = 8'd239; long_chirp_lut[ 788] = 8'd250; long_chirp_lut[ 789] = 8'd195; long_chirp_lut[ 790] = 8'd104; long_chirp_lut[ 791] = 8'd 25;
|
||||
long_chirp_lut[ 792] = 8'd 2; long_chirp_lut[ 793] = 8'd 47; long_chirp_lut[ 794] = 8'd136; long_chirp_lut[ 795] = 8'd220; long_chirp_lut[ 796] = 8'd254; long_chirp_lut[ 797] = 8'd220; long_chirp_lut[ 798] = 8'd135; long_chirp_lut[ 799] = 8'd 46;
|
||||
long_chirp_lut[ 800] = 8'd 1; long_chirp_lut[ 801] = 8'd 26; long_chirp_lut[ 802] = 8'd106; long_chirp_lut[ 803] = 8'd197; long_chirp_lut[ 804] = 8'd251; long_chirp_lut[ 805] = 8'd237; long_chirp_lut[ 806] = 8'd163; long_chirp_lut[ 807] = 8'd 70;
|
||||
long_chirp_lut[ 808] = 8'd 8; long_chirp_lut[ 809] = 8'd 11; long_chirp_lut[ 810] = 8'd 79; long_chirp_lut[ 811] = 8'd173; long_chirp_lut[ 812] = 8'd242; long_chirp_lut[ 813] = 8'd248; long_chirp_lut[ 814] = 8'd188; long_chirp_lut[ 815] = 8'd 94;
|
||||
long_chirp_lut[ 816] = 8'd 19; long_chirp_lut[ 817] = 8'd 3; long_chirp_lut[ 818] = 8'd 57; long_chirp_lut[ 819] = 8'd149; long_chirp_lut[ 820] = 8'd229; long_chirp_lut[ 821] = 8'd254; long_chirp_lut[ 822] = 8'd208; long_chirp_lut[ 823] = 8'd118;
|
||||
long_chirp_lut[ 824] = 8'd 33; long_chirp_lut[ 825] = 8'd 1; long_chirp_lut[ 826] = 8'd 39; long_chirp_lut[ 827] = 8'd126; long_chirp_lut[ 828] = 8'd214; long_chirp_lut[ 829] = 8'd254; long_chirp_lut[ 830] = 8'd224; long_chirp_lut[ 831] = 8'd139;
|
||||
long_chirp_lut[ 832] = 8'd 48; long_chirp_lut[ 833] = 8'd 2; long_chirp_lut[ 834] = 8'd 25; long_chirp_lut[ 835] = 8'd106; long_chirp_lut[ 836] = 8'd199; long_chirp_lut[ 837] = 8'd252; long_chirp_lut[ 838] = 8'd235; long_chirp_lut[ 839] = 8'd158;
|
||||
long_chirp_lut[ 840] = 8'd 64; long_chirp_lut[ 841] = 8'd 5; long_chirp_lut[ 842] = 8'd 15; long_chirp_lut[ 843] = 8'd 88; long_chirp_lut[ 844] = 8'd183; long_chirp_lut[ 845] = 8'd247; long_chirp_lut[ 846] = 8'd243; long_chirp_lut[ 847] = 8'd174;
|
||||
long_chirp_lut[ 848] = 8'd 79; long_chirp_lut[ 849] = 8'd 11; long_chirp_lut[ 850] = 8'd 9; long_chirp_lut[ 851] = 8'd 74; long_chirp_lut[ 852] = 8'd169; long_chirp_lut[ 853] = 8'd241; long_chirp_lut[ 854] = 8'd249; long_chirp_lut[ 855] = 8'd187;
|
||||
long_chirp_lut[ 856] = 8'd 92; long_chirp_lut[ 857] = 8'd 17; long_chirp_lut[ 858] = 8'd 5; long_chirp_lut[ 859] = 8'd 62; long_chirp_lut[ 860] = 8'd157; long_chirp_lut[ 861] = 8'd235; long_chirp_lut[ 862] = 8'd252; long_chirp_lut[ 863] = 8'd198;
|
||||
long_chirp_lut[ 864] = 8'd104; long_chirp_lut[ 865] = 8'd 23; long_chirp_lut[ 866] = 8'd 2; long_chirp_lut[ 867] = 8'd 53; long_chirp_lut[ 868] = 8'd146; long_chirp_lut[ 869] = 8'd229; long_chirp_lut[ 870] = 8'd253; long_chirp_lut[ 871] = 8'd206;
|
||||
long_chirp_lut[ 872] = 8'd113; long_chirp_lut[ 873] = 8'd 29; long_chirp_lut[ 874] = 8'd 1; long_chirp_lut[ 875] = 8'd 46; long_chirp_lut[ 876] = 8'd138; long_chirp_lut[ 877] = 8'd224; long_chirp_lut[ 878] = 8'd254; long_chirp_lut[ 879] = 8'd211;
|
||||
long_chirp_lut[ 880] = 8'd120; long_chirp_lut[ 881] = 8'd 33; long_chirp_lut[ 882] = 8'd 1; long_chirp_lut[ 883] = 8'd 42; long_chirp_lut[ 884] = 8'd132; long_chirp_lut[ 885] = 8'd220; long_chirp_lut[ 886] = 8'd254; long_chirp_lut[ 887] = 8'd215;
|
||||
long_chirp_lut[ 888] = 8'd125; long_chirp_lut[ 889] = 8'd 36; long_chirp_lut[ 890] = 8'd 1; long_chirp_lut[ 891] = 8'd 39; long_chirp_lut[ 892] = 8'd129; long_chirp_lut[ 893] = 8'd218; long_chirp_lut[ 894] = 8'd254; long_chirp_lut[ 895] = 8'd217;
|
||||
long_chirp_lut[ 896] = 8'd127; long_chirp_lut[ 897] = 8'd 38; long_chirp_lut[ 898] = 8'd 1; long_chirp_lut[ 899] = 8'd 38; long_chirp_lut[ 900] = 8'd127; long_chirp_lut[ 901] = 8'd217; long_chirp_lut[ 902] = 8'd254; long_chirp_lut[ 903] = 8'd217;
|
||||
long_chirp_lut[ 904] = 8'd127; long_chirp_lut[ 905] = 8'd 37; long_chirp_lut[ 906] = 8'd 1; long_chirp_lut[ 907] = 8'd 38; long_chirp_lut[ 908] = 8'd129; long_chirp_lut[ 909] = 8'd218; long_chirp_lut[ 910] = 8'd254; long_chirp_lut[ 911] = 8'd216;
|
||||
long_chirp_lut[ 912] = 8'd125; long_chirp_lut[ 913] = 8'd 36; long_chirp_lut[ 914] = 8'd 1; long_chirp_lut[ 915] = 8'd 41; long_chirp_lut[ 916] = 8'd132; long_chirp_lut[ 917] = 8'd221; long_chirp_lut[ 918] = 8'd254; long_chirp_lut[ 919] = 8'd212;
|
||||
long_chirp_lut[ 920] = 8'd120; long_chirp_lut[ 921] = 8'd 32; long_chirp_lut[ 922] = 8'd 1; long_chirp_lut[ 923] = 8'd 45; long_chirp_lut[ 924] = 8'd138; long_chirp_lut[ 925] = 8'd225; long_chirp_lut[ 926] = 8'd254; long_chirp_lut[ 927] = 8'd207;
|
||||
long_chirp_lut[ 928] = 8'd113; long_chirp_lut[ 929] = 8'd 27; long_chirp_lut[ 930] = 8'd 2; long_chirp_lut[ 931] = 8'd 51; long_chirp_lut[ 932] = 8'd146; long_chirp_lut[ 933] = 8'd230; long_chirp_lut[ 934] = 8'd253; long_chirp_lut[ 935] = 8'd200;
|
||||
long_chirp_lut[ 936] = 8'd104; long_chirp_lut[ 937] = 8'd 22; long_chirp_lut[ 938] = 8'd 3; long_chirp_lut[ 939] = 8'd 60; long_chirp_lut[ 940] = 8'd157; long_chirp_lut[ 941] = 8'd236; long_chirp_lut[ 942] = 8'd250; long_chirp_lut[ 943] = 8'd190;
|
||||
long_chirp_lut[ 944] = 8'd 92; long_chirp_lut[ 945] = 8'd 15; long_chirp_lut[ 946] = 8'd 6; long_chirp_lut[ 947] = 8'd 71; long_chirp_lut[ 948] = 8'd169; long_chirp_lut[ 949] = 8'd243; long_chirp_lut[ 950] = 8'd246; long_chirp_lut[ 951] = 8'd178;
|
||||
long_chirp_lut[ 952] = 8'd 79; long_chirp_lut[ 953] = 8'd 9; long_chirp_lut[ 954] = 8'd 12; long_chirp_lut[ 955] = 8'd 84; long_chirp_lut[ 956] = 8'd183; long_chirp_lut[ 957] = 8'd248; long_chirp_lut[ 958] = 8'd240; long_chirp_lut[ 959] = 8'd162;
|
||||
long_chirp_lut[ 960] = 8'd 64; long_chirp_lut[ 961] = 8'd 4; long_chirp_lut[ 962] = 8'd 20; long_chirp_lut[ 963] = 8'd101; long_chirp_lut[ 964] = 8'd199; long_chirp_lut[ 965] = 8'd253; long_chirp_lut[ 966] = 8'd230; long_chirp_lut[ 967] = 8'd144;
|
||||
long_chirp_lut[ 968] = 8'd 48; long_chirp_lut[ 969] = 8'd 1; long_chirp_lut[ 970] = 8'd 31; long_chirp_lut[ 971] = 8'd121; long_chirp_lut[ 972] = 8'd214; long_chirp_lut[ 973] = 8'd254; long_chirp_lut[ 974] = 8'd216; long_chirp_lut[ 975] = 8'd123;
|
||||
long_chirp_lut[ 976] = 8'd 33; long_chirp_lut[ 977] = 8'd 1; long_chirp_lut[ 978] = 8'd 47; long_chirp_lut[ 979] = 8'd143; long_chirp_lut[ 980] = 8'd229; long_chirp_lut[ 981] = 8'd253; long_chirp_lut[ 982] = 8'd198; long_chirp_lut[ 983] = 8'd100;
|
||||
long_chirp_lut[ 984] = 8'd 19; long_chirp_lut[ 985] = 8'd 5; long_chirp_lut[ 986] = 8'd 67; long_chirp_lut[ 987] = 8'd167; long_chirp_lut[ 988] = 8'd242; long_chirp_lut[ 989] = 8'd246; long_chirp_lut[ 990] = 8'd176; long_chirp_lut[ 991] = 8'd 76;
|
||||
long_chirp_lut[ 992] = 8'd 8; long_chirp_lut[ 993] = 8'd 14; long_chirp_lut[ 994] = 8'd 92; long_chirp_lut[ 995] = 8'd191; long_chirp_lut[ 996] = 8'd251; long_chirp_lut[ 997] = 8'd234; long_chirp_lut[ 998] = 8'd149; long_chirp_lut[ 999] = 8'd 52;
|
||||
long_chirp_lut[1000] = 8'd 1; long_chirp_lut[1001] = 8'd 30; long_chirp_lut[1002] = 8'd120; long_chirp_lut[1003] = 8'd215; long_chirp_lut[1004] = 8'd254; long_chirp_lut[1005] = 8'd214; long_chirp_lut[1006] = 8'd119; long_chirp_lut[1007] = 8'd 30;
|
||||
long_chirp_lut[1008] = 8'd 2; long_chirp_lut[1009] = 8'd 53; long_chirp_lut[1010] = 8'd151; long_chirp_lut[1011] = 8'd235; long_chirp_lut[1012] = 8'd250; long_chirp_lut[1013] = 8'd188; long_chirp_lut[1014] = 8'd 88; long_chirp_lut[1015] = 8'd 12;
|
||||
long_chirp_lut[1016] = 8'd 10; long_chirp_lut[1017] = 8'd 82; long_chirp_lut[1018] = 8'd183; long_chirp_lut[1019] = 8'd249; long_chirp_lut[1020] = 8'd237; long_chirp_lut[1021] = 8'd156; long_chirp_lut[1022] = 8'd 56; long_chirp_lut[1023] = 8'd 2;
|
||||
long_chirp_lut[1024] = 8'd 28; long_chirp_lut[1025] = 8'd117; long_chirp_lut[1026] = 8'd213; long_chirp_lut[1027] = 8'd254; long_chirp_lut[1028] = 8'd215; long_chirp_lut[1029] = 8'd119; long_chirp_lut[1030] = 8'd 29; long_chirp_lut[1031] = 8'd 2;
|
||||
long_chirp_lut[1032] = 8'd 55; long_chirp_lut[1033] = 8'd155; long_chirp_lut[1034] = 8'd237; long_chirp_lut[1035] = 8'd249; long_chirp_lut[1036] = 8'd183; long_chirp_lut[1037] = 8'd 81; long_chirp_lut[1038] = 8'd 9; long_chirp_lut[1039] = 8'd 13;
|
||||
long_chirp_lut[1040] = 8'd 91; long_chirp_lut[1041] = 8'd192; long_chirp_lut[1042] = 8'd252; long_chirp_lut[1043] = 8'd231; long_chirp_lut[1044] = 8'd143; long_chirp_lut[1045] = 8'd 46; long_chirp_lut[1046] = 8'd 1; long_chirp_lut[1047] = 8'd 38;
|
||||
long_chirp_lut[1048] = 8'd133; long_chirp_lut[1049] = 8'd225; long_chirp_lut[1050] = 8'd253; long_chirp_lut[1051] = 8'd200; long_chirp_lut[1052] = 8'd100; long_chirp_lut[1053] = 8'd 17; long_chirp_lut[1054] = 8'd 6; long_chirp_lut[1055] = 8'd 74;
|
||||
long_chirp_lut[1056] = 8'd177; long_chirp_lut[1057] = 8'd247; long_chirp_lut[1058] = 8'd240; long_chirp_lut[1059] = 8'd159; long_chirp_lut[1060] = 8'd 58; long_chirp_lut[1061] = 8'd 2; long_chirp_lut[1062] = 8'd 28; long_chirp_lut[1063] = 8'd120;
|
||||
long_chirp_lut[1064] = 8'd216; long_chirp_lut[1065] = 8'd254; long_chirp_lut[1066] = 8'd210; long_chirp_lut[1067] = 8'd111; long_chirp_lut[1068] = 8'd 23; long_chirp_lut[1069] = 8'd 4; long_chirp_lut[1070] = 8'd 66; long_chirp_lut[1071] = 8'd168;
|
||||
long_chirp_lut[1072] = 8'd244; long_chirp_lut[1073] = 8'd243; long_chirp_lut[1074] = 8'd166; long_chirp_lut[1075] = 8'd 64; long_chirp_lut[1076] = 8'd 3; long_chirp_lut[1077] = 8'd 25; long_chirp_lut[1078] = 8'd114; long_chirp_lut[1079] = 8'd212;
|
||||
long_chirp_lut[1080] = 8'd255; long_chirp_lut[1081] = 8'd212; long_chirp_lut[1082] = 8'd114; long_chirp_lut[1083] = 8'd 25; long_chirp_lut[1084] = 8'd 3; long_chirp_lut[1085] = 8'd 64; long_chirp_lut[1086] = 8'd167; long_chirp_lut[1087] = 8'd244;
|
||||
long_chirp_lut[1088] = 8'd243; long_chirp_lut[1089] = 8'd165; long_chirp_lut[1090] = 8'd 62; long_chirp_lut[1091] = 8'd 3; long_chirp_lut[1092] = 8'd 26; long_chirp_lut[1093] = 8'd117; long_chirp_lut[1094] = 8'd215; long_chirp_lut[1095] = 8'd254;
|
||||
long_chirp_lut[1096] = 8'd209; long_chirp_lut[1097] = 8'd109; long_chirp_lut[1098] = 8'd 21; long_chirp_lut[1099] = 8'd 5; long_chirp_lut[1100] = 8'd 71; long_chirp_lut[1101] = 8'd174; long_chirp_lut[1102] = 8'd247; long_chirp_lut[1103] = 8'd239;
|
||||
long_chirp_lut[1104] = 8'd157; long_chirp_lut[1105] = 8'd 54; long_chirp_lut[1106] = 8'd 1; long_chirp_lut[1107] = 8'd 33; long_chirp_lut[1108] = 8'd129; long_chirp_lut[1109] = 8'd223; long_chirp_lut[1110] = 8'd253; long_chirp_lut[1111] = 8'd199;
|
||||
long_chirp_lut[1112] = 8'd 96; long_chirp_lut[1113] = 8'd 14; long_chirp_lut[1114] = 8'd 9; long_chirp_lut[1115] = 8'd 84; long_chirp_lut[1116] = 8'd189; long_chirp_lut[1117] = 8'd251; long_chirp_lut[1118] = 8'd230; long_chirp_lut[1119] = 8'd139;
|
||||
long_chirp_lut[1120] = 8'd 40; long_chirp_lut[1121] = 8'd 1; long_chirp_lut[1122] = 8'd 47; long_chirp_lut[1123] = 8'd148; long_chirp_lut[1124] = 8'd235; long_chirp_lut[1125] = 8'd249; long_chirp_lut[1126] = 8'd180; long_chirp_lut[1127] = 8'd 75;
|
||||
long_chirp_lut[1128] = 8'd 6; long_chirp_lut[1129] = 8'd 20; long_chirp_lut[1130] = 8'd107; long_chirp_lut[1131] = 8'd209; long_chirp_lut[1132] = 8'd254; long_chirp_lut[1133] = 8'd213; long_chirp_lut[1134] = 8'd114; long_chirp_lut[1135] = 8'd 23;
|
||||
long_chirp_lut[1136] = 8'd 4; long_chirp_lut[1137] = 8'd 70; long_chirp_lut[1138] = 8'd175; long_chirp_lut[1139] = 8'd248; long_chirp_lut[1140] = 8'd237; long_chirp_lut[1141] = 8'd152; long_chirp_lut[1142] = 8'd 49; long_chirp_lut[1143] = 8'd 1;
|
||||
long_chirp_lut[1144] = 8'd 39; long_chirp_lut[1145] = 8'd139; long_chirp_lut[1146] = 8'd231; long_chirp_lut[1147] = 8'd251; long_chirp_lut[1148] = 8'd186; long_chirp_lut[1149] = 8'd 81; long_chirp_lut[1150] = 8'd 8; long_chirp_lut[1151] = 8'd 18;
|
||||
long_chirp_lut[1152] = 8'd104; long_chirp_lut[1153] = 8'd206; long_chirp_lut[1154] = 8'd254; long_chirp_lut[1155] = 8'd214; long_chirp_lut[1156] = 8'd114; long_chirp_lut[1157] = 8'd 23; long_chirp_lut[1158] = 8'd 5; long_chirp_lut[1159] = 8'd 72;
|
||||
long_chirp_lut[1160] = 8'd178; long_chirp_lut[1161] = 8'd249; long_chirp_lut[1162] = 8'd235; long_chirp_lut[1163] = 8'd146; long_chirp_lut[1164] = 8'd 45; long_chirp_lut[1165] = 8'd 1; long_chirp_lut[1166] = 8'd 45; long_chirp_lut[1167] = 8'd148;
|
||||
long_chirp_lut[1168] = 8'd236; long_chirp_lut[1169] = 8'd248; long_chirp_lut[1170] = 8'd176; long_chirp_lut[1171] = 8'd 70; long_chirp_lut[1172] = 8'd 4; long_chirp_lut[1173] = 8'd 25; long_chirp_lut[1174] = 8'd118; long_chirp_lut[1175] = 8'd218;
|
||||
long_chirp_lut[1176] = 8'd254; long_chirp_lut[1177] = 8'd201; long_chirp_lut[1178] = 8'd 97; long_chirp_lut[1179] = 8'd 14; long_chirp_lut[1180] = 8'd 11; long_chirp_lut[1181] = 8'd 90; long_chirp_lut[1182] = 8'd196; long_chirp_lut[1183] = 8'd253;
|
||||
long_chirp_lut[1184] = 8'd222; long_chirp_lut[1185] = 8'd123; long_chirp_lut[1186] = 8'd 28; long_chirp_lut[1187] = 8'd 3; long_chirp_lut[1188] = 8'd 66; long_chirp_lut[1189] = 8'd173; long_chirp_lut[1190] = 8'd247; long_chirp_lut[1191] = 8'd237;
|
||||
long_chirp_lut[1192] = 8'd148; long_chirp_lut[1193] = 8'd 45; long_chirp_lut[1194] = 8'd 1; long_chirp_lut[1195] = 8'd 46; long_chirp_lut[1196] = 8'd150; long_chirp_lut[1197] = 8'd238; long_chirp_lut[1198] = 8'd247; long_chirp_lut[1199] = 8'd171;
|
||||
long_chirp_lut[1200] = 8'd 64; long_chirp_lut[1201] = 8'd 2; long_chirp_lut[1202] = 8'd 30; long_chirp_lut[1203] = 8'd128; long_chirp_lut[1204] = 8'd225; long_chirp_lut[1205] = 8'd252; long_chirp_lut[1206] = 8'd190; long_chirp_lut[1207] = 8'd 83;
|
||||
long_chirp_lut[1208] = 8'd 8; long_chirp_lut[1209] = 8'd 18; long_chirp_lut[1210] = 8'd107; long_chirp_lut[1211] = 8'd211; long_chirp_lut[1212] = 8'd254; long_chirp_lut[1213] = 8'd207; long_chirp_lut[1214] = 8'd102; long_chirp_lut[1215] = 8'd 15;
|
||||
long_chirp_lut[1216] = 8'd 10; long_chirp_lut[1217] = 8'd 89; long_chirp_lut[1218] = 8'd196; long_chirp_lut[1219] = 8'd254; long_chirp_lut[1220] = 8'd220; long_chirp_lut[1221] = 8'd119; long_chirp_lut[1222] = 8'd 25; long_chirp_lut[1223] = 8'd 4;
|
||||
long_chirp_lut[1224] = 8'd 73; long_chirp_lut[1225] = 8'd182; long_chirp_lut[1226] = 8'd251; long_chirp_lut[1227] = 8'd230; long_chirp_lut[1228] = 8'd135; long_chirp_lut[1229] = 8'd 35; long_chirp_lut[1230] = 8'd 2; long_chirp_lut[1231] = 8'd 60;
|
||||
long_chirp_lut[1232] = 8'd168; long_chirp_lut[1233] = 8'd246; long_chirp_lut[1234] = 8'd238; long_chirp_lut[1235] = 8'd149; long_chirp_lut[1236] = 8'd 45; long_chirp_lut[1237] = 8'd 1; long_chirp_lut[1238] = 8'd 49; long_chirp_lut[1239] = 8'd155;
|
||||
long_chirp_lut[1240] = 8'd241; long_chirp_lut[1241] = 8'd244; long_chirp_lut[1242] = 8'd161; long_chirp_lut[1243] = 8'd 54; long_chirp_lut[1244] = 8'd 1; long_chirp_lut[1245] = 8'd 41; long_chirp_lut[1246] = 8'd144; long_chirp_lut[1247] = 8'd236;
|
||||
long_chirp_lut[1248] = 8'd247; long_chirp_lut[1249] = 8'd171; long_chirp_lut[1250] = 8'd 62; long_chirp_lut[1251] = 8'd 2; long_chirp_lut[1252] = 8'd 34; long_chirp_lut[1253] = 8'd135; long_chirp_lut[1254] = 8'd231; long_chirp_lut[1255] = 8'd250;
|
||||
long_chirp_lut[1256] = 8'd179; long_chirp_lut[1257] = 8'd 70; long_chirp_lut[1258] = 8'd 3; long_chirp_lut[1259] = 8'd 29; long_chirp_lut[1260] = 8'd127; long_chirp_lut[1261] = 8'd226; long_chirp_lut[1262] = 8'd252; long_chirp_lut[1263] = 8'd185;
|
||||
long_chirp_lut[1264] = 8'd 76; long_chirp_lut[1265] = 8'd 5; long_chirp_lut[1266] = 8'd 25; long_chirp_lut[1267] = 8'd122; long_chirp_lut[1268] = 8'd223; long_chirp_lut[1269] = 8'd253; long_chirp_lut[1270] = 8'd189; long_chirp_lut[1271] = 8'd 80;
|
||||
long_chirp_lut[1272] = 8'd 6; long_chirp_lut[1273] = 8'd 23; long_chirp_lut[1274] = 8'd118; long_chirp_lut[1275] = 8'd220; long_chirp_lut[1276] = 8'd253; long_chirp_lut[1277] = 8'd192; long_chirp_lut[1278] = 8'd 83; long_chirp_lut[1279] = 8'd 7;
|
||||
long_chirp_lut[1280] = 8'd 21; long_chirp_lut[1281] = 8'd116; long_chirp_lut[1282] = 8'd219; long_chirp_lut[1283] = 8'd253; long_chirp_lut[1284] = 8'd193; long_chirp_lut[1285] = 8'd 84; long_chirp_lut[1286] = 8'd 7; long_chirp_lut[1287] = 8'd 21;
|
||||
long_chirp_lut[1288] = 8'd115; long_chirp_lut[1289] = 8'd219; long_chirp_lut[1290] = 8'd253; long_chirp_lut[1291] = 8'd193; long_chirp_lut[1292] = 8'd 83; long_chirp_lut[1293] = 8'd 7; long_chirp_lut[1294] = 8'd 22; long_chirp_lut[1295] = 8'd117;
|
||||
long_chirp_lut[1296] = 8'd220; long_chirp_lut[1297] = 8'd253; long_chirp_lut[1298] = 8'd191; long_chirp_lut[1299] = 8'd 81; long_chirp_lut[1300] = 8'd 6; long_chirp_lut[1301] = 8'd 23; long_chirp_lut[1302] = 8'd120; long_chirp_lut[1303] = 8'd222;
|
||||
long_chirp_lut[1304] = 8'd253; long_chirp_lut[1305] = 8'd187; long_chirp_lut[1306] = 8'd 77; long_chirp_lut[1307] = 8'd 5; long_chirp_lut[1308] = 8'd 26; long_chirp_lut[1309] = 8'd125; long_chirp_lut[1310] = 8'd226; long_chirp_lut[1311] = 8'd251;
|
||||
long_chirp_lut[1312] = 8'd182; long_chirp_lut[1313] = 8'd 71; long_chirp_lut[1314] = 8'd 3; long_chirp_lut[1315] = 8'd 31; long_chirp_lut[1316] = 8'd132; long_chirp_lut[1317] = 8'd230; long_chirp_lut[1318] = 8'd250; long_chirp_lut[1319] = 8'd175;
|
||||
long_chirp_lut[1320] = 8'd 64; long_chirp_lut[1321] = 8'd 2; long_chirp_lut[1322] = 8'd 36; long_chirp_lut[1323] = 8'd141; long_chirp_lut[1324] = 8'd235; long_chirp_lut[1325] = 8'd247; long_chirp_lut[1326] = 8'd166; long_chirp_lut[1327] = 8'd 56;
|
||||
long_chirp_lut[1328] = 8'd 1; long_chirp_lut[1329] = 8'd 44; long_chirp_lut[1330] = 8'd151; long_chirp_lut[1331] = 8'd241; long_chirp_lut[1332] = 8'd242; long_chirp_lut[1333] = 8'd155; long_chirp_lut[1334] = 8'd 46; long_chirp_lut[1335] = 8'd 1;
|
||||
long_chirp_lut[1336] = 8'd 53; long_chirp_lut[1337] = 8'd163; long_chirp_lut[1338] = 8'd246; long_chirp_lut[1339] = 8'd236; long_chirp_lut[1340] = 8'd142; long_chirp_lut[1341] = 8'd 37; long_chirp_lut[1342] = 8'd 2; long_chirp_lut[1343] = 8'd 65;
|
||||
long_chirp_lut[1344] = 8'd177; long_chirp_lut[1345] = 8'd250; long_chirp_lut[1346] = 8'd228; long_chirp_lut[1347] = 8'd127; long_chirp_lut[1348] = 8'd 27; long_chirp_lut[1349] = 8'd 5; long_chirp_lut[1350] = 8'd 79; long_chirp_lut[1351] = 8'd191;
|
||||
long_chirp_lut[1352] = 8'd253; long_chirp_lut[1353] = 8'd217; long_chirp_lut[1354] = 8'd111; long_chirp_lut[1355] = 8'd 17; long_chirp_lut[1356] = 8'd 10; long_chirp_lut[1357] = 8'd 96; long_chirp_lut[1358] = 8'd206; long_chirp_lut[1359] = 8'd254;
|
||||
long_chirp_lut[1360] = 8'd203; long_chirp_lut[1361] = 8'd 92; long_chirp_lut[1362] = 8'd 9; long_chirp_lut[1363] = 8'd 19; long_chirp_lut[1364] = 8'd115; long_chirp_lut[1365] = 8'd220; long_chirp_lut[1366] = 8'd253; long_chirp_lut[1367] = 8'd186;
|
||||
long_chirp_lut[1368] = 8'd 73; long_chirp_lut[1369] = 8'd 3; long_chirp_lut[1370] = 8'd 31; long_chirp_lut[1371] = 8'd136; long_chirp_lut[1372] = 8'd233; long_chirp_lut[1373] = 8'd247; long_chirp_lut[1374] = 8'd166; long_chirp_lut[1375] = 8'd 54;
|
||||
long_chirp_lut[1376] = 8'd 1; long_chirp_lut[1377] = 8'd 48; long_chirp_lut[1378] = 8'd158; long_chirp_lut[1379] = 8'd244; long_chirp_lut[1380] = 8'd237; long_chirp_lut[1381] = 8'd143; long_chirp_lut[1382] = 8'd 36; long_chirp_lut[1383] = 8'd 2;
|
||||
long_chirp_lut[1384] = 8'd 68; long_chirp_lut[1385] = 8'd182; long_chirp_lut[1386] = 8'd252; long_chirp_lut[1387] = 8'd223; long_chirp_lut[1388] = 8'd117; long_chirp_lut[1389] = 8'd 20; long_chirp_lut[1390] = 8'd 9; long_chirp_lut[1391] = 8'd 93;
|
||||
long_chirp_lut[1392] = 8'd204; long_chirp_lut[1393] = 8'd254; long_chirp_lut[1394] = 8'd203; long_chirp_lut[1395] = 8'd 91; long_chirp_lut[1396] = 8'd 8; long_chirp_lut[1397] = 8'd 21; long_chirp_lut[1398] = 8'd120; long_chirp_lut[1399] = 8'd225;
|
||||
long_chirp_lut[1400] = 8'd251; long_chirp_lut[1401] = 8'd178; long_chirp_lut[1402] = 8'd 64; long_chirp_lut[1403] = 8'd 1; long_chirp_lut[1404] = 8'd 41; long_chirp_lut[1405] = 8'd150; long_chirp_lut[1406] = 8'd241; long_chirp_lut[1407] = 8'd241;
|
||||
long_chirp_lut[1408] = 8'd148; long_chirp_lut[1409] = 8'd 39; long_chirp_lut[1410] = 8'd 2; long_chirp_lut[1411] = 8'd 66; long_chirp_lut[1412] = 8'd180; long_chirp_lut[1413] = 8'd252; long_chirp_lut[1414] = 8'd222; long_chirp_lut[1415] = 8'd116;
|
||||
long_chirp_lut[1416] = 8'd 19; long_chirp_lut[1417] = 8'd 10; long_chirp_lut[1418] = 8'd 97; long_chirp_lut[1419] = 8'd209; long_chirp_lut[1420] = 8'd254; long_chirp_lut[1421] = 8'd197; long_chirp_lut[1422] = 8'd 83; long_chirp_lut[1423] = 8'd 5;
|
||||
long_chirp_lut[1424] = 8'd 28; long_chirp_lut[1425] = 8'd132; long_chirp_lut[1426] = 8'd232; long_chirp_lut[1427] = 8'd247; long_chirp_lut[1428] = 8'd164; long_chirp_lut[1429] = 8'd 51; long_chirp_lut[1430] = 8'd 1; long_chirp_lut[1431] = 8'd 54;
|
||||
long_chirp_lut[1432] = 8'd168; long_chirp_lut[1433] = 8'd249; long_chirp_lut[1434] = 8'd230; long_chirp_lut[1435] = 8'd127; long_chirp_lut[1436] = 8'd 25; long_chirp_lut[1437] = 8'd 7; long_chirp_lut[1438] = 8'd 88; long_chirp_lut[1439] = 8'd202;
|
||||
long_chirp_lut[1440] = 8'd255; long_chirp_lut[1441] = 8'd202; long_chirp_lut[1442] = 8'd 88; long_chirp_lut[1443] = 8'd 7; long_chirp_lut[1444] = 8'd 25; long_chirp_lut[1445] = 8'd128; long_chirp_lut[1446] = 8'd231; long_chirp_lut[1447] = 8'd248;
|
||||
long_chirp_lut[1448] = 8'd166; long_chirp_lut[1449] = 8'd 52; long_chirp_lut[1450] = 8'd 1; long_chirp_lut[1451] = 8'd 55; long_chirp_lut[1452] = 8'd169; long_chirp_lut[1453] = 8'd249; long_chirp_lut[1454] = 8'd228; long_chirp_lut[1455] = 8'd123;
|
||||
long_chirp_lut[1456] = 8'd 22; long_chirp_lut[1457] = 8'd 8; long_chirp_lut[1458] = 8'd 94; long_chirp_lut[1459] = 8'd207; long_chirp_lut[1460] = 8'd254; long_chirp_lut[1461] = 8'd195; long_chirp_lut[1462] = 8'd 80; long_chirp_lut[1463] = 8'd 4;
|
||||
long_chirp_lut[1464] = 8'd 31; long_chirp_lut[1465] = 8'd139; long_chirp_lut[1466] = 8'd237; long_chirp_lut[1467] = 8'd243; long_chirp_lut[1468] = 8'd153; long_chirp_lut[1469] = 8'd 41; long_chirp_lut[1470] = 8'd 2; long_chirp_lut[1471] = 8'd 68;
|
||||
long_chirp_lut[1472] = 8'd184; long_chirp_lut[1473] = 8'd253; long_chirp_lut[1474] = 8'd216; long_chirp_lut[1475] = 8'd105; long_chirp_lut[1476] = 8'd 13; long_chirp_lut[1477] = 8'd 17; long_chirp_lut[1478] = 8'd114; long_chirp_lut[1479] = 8'd223;
|
||||
long_chirp_lut[1480] = 8'd251; long_chirp_lut[1481] = 8'd175; long_chirp_lut[1482] = 8'd 59; long_chirp_lut[1483] = 8'd 1; long_chirp_lut[1484] = 8'd 50; long_chirp_lut[1485] = 8'd164; long_chirp_lut[1486] = 8'd248; long_chirp_lut[1487] = 8'd230;
|
||||
long_chirp_lut[1488] = 8'd125; long_chirp_lut[1489] = 8'd 22; long_chirp_lut[1490] = 8'd 9; long_chirp_lut[1491] = 8'd 96; long_chirp_lut[1492] = 8'd210; long_chirp_lut[1493] = 8'd254; long_chirp_lut[1494] = 8'd190; long_chirp_lut[1495] = 8'd 73;
|
||||
long_chirp_lut[1496] = 8'd 2; long_chirp_lut[1497] = 8'd 38; long_chirp_lut[1498] = 8'd150; long_chirp_lut[1499] = 8'd243; long_chirp_lut[1500] = 8'd237; long_chirp_lut[1501] = 8'd139; long_chirp_lut[1502] = 8'd 30; long_chirp_lut[1503] = 8'd 5;
|
||||
long_chirp_lut[1504] = 8'd 84; long_chirp_lut[1505] = 8'd201; long_chirp_lut[1506] = 8'd254; long_chirp_lut[1507] = 8'd200; long_chirp_lut[1508] = 8'd 83; long_chirp_lut[1509] = 8'd 4; long_chirp_lut[1510] = 8'd 31; long_chirp_lut[1511] = 8'd141;
|
||||
long_chirp_lut[1512] = 8'd239; long_chirp_lut[1513] = 8'd241; long_chirp_lut[1514] = 8'd146; long_chirp_lut[1515] = 8'd 35; long_chirp_lut[1516] = 8'd 3; long_chirp_lut[1517] = 8'd 79; long_chirp_lut[1518] = 8'd196; long_chirp_lut[1519] = 8'd254;
|
||||
long_chirp_lut[1520] = 8'd203; long_chirp_lut[1521] = 8'd 87; long_chirp_lut[1522] = 8'd 5; long_chirp_lut[1523] = 8'd 29; long_chirp_lut[1524] = 8'd138; long_chirp_lut[1525] = 8'd238; long_chirp_lut[1526] = 8'd242; long_chirp_lut[1527] = 8'd147;
|
||||
long_chirp_lut[1528] = 8'd 35; long_chirp_lut[1529] = 8'd 3; long_chirp_lut[1530] = 8'd 79; long_chirp_lut[1531] = 8'd197; long_chirp_lut[1532] = 8'd254; long_chirp_lut[1533] = 8'd202; long_chirp_lut[1534] = 8'd 85; long_chirp_lut[1535] = 8'd 5;
|
||||
long_chirp_lut[1536] = 8'd 31; long_chirp_lut[1537] = 8'd142; long_chirp_lut[1538] = 8'd240; long_chirp_lut[1539] = 8'd240; long_chirp_lut[1540] = 8'd142; long_chirp_lut[1541] = 8'd 32; long_chirp_lut[1542] = 8'd 5; long_chirp_lut[1543] = 8'd 85;
|
||||
long_chirp_lut[1544] = 8'd202; long_chirp_lut[1545] = 8'd254; long_chirp_lut[1546] = 8'd195; long_chirp_lut[1547] = 8'd 77; long_chirp_lut[1548] = 8'd 3; long_chirp_lut[1549] = 8'd 38; long_chirp_lut[1550] = 8'd151; long_chirp_lut[1551] = 8'd244;
|
||||
long_chirp_lut[1552] = 8'd235; long_chirp_lut[1553] = 8'd131; long_chirp_lut[1554] = 8'd 24; long_chirp_lut[1555] = 8'd 8; long_chirp_lut[1556] = 8'd 97; long_chirp_lut[1557] = 8'd213; long_chirp_lut[1558] = 8'd253; long_chirp_lut[1559] = 8'd183;
|
||||
long_chirp_lut[1560] = 8'd 64; long_chirp_lut[1561] = 8'd 1; long_chirp_lut[1562] = 8'd 49; long_chirp_lut[1563] = 8'd167; long_chirp_lut[1564] = 8'd250; long_chirp_lut[1565] = 8'd224; long_chirp_lut[1566] = 8'd114; long_chirp_lut[1567] = 8'd 15;
|
||||
long_chirp_lut[1568] = 8'd 16; long_chirp_lut[1569] = 8'd116; long_chirp_lut[1570] = 8'd226; long_chirp_lut[1571] = 8'd249; long_chirp_lut[1572] = 8'd164; long_chirp_lut[1573] = 8'd 47; long_chirp_lut[1574] = 8'd 1; long_chirp_lut[1575] = 8'd 68;
|
||||
long_chirp_lut[1576] = 8'd187; long_chirp_lut[1577] = 8'd254; long_chirp_lut[1578] = 8'd208; long_chirp_lut[1579] = 8'd 90; long_chirp_lut[1580] = 8'd 6; long_chirp_lut[1581] = 8'd 30; long_chirp_lut[1582] = 8'd141; long_chirp_lut[1583] = 8'd240;
|
||||
long_chirp_lut[1584] = 8'd239; long_chirp_lut[1585] = 8'd138; long_chirp_lut[1586] = 8'd 28; long_chirp_lut[1587] = 8'd 7; long_chirp_lut[1588] = 8'd 94; long_chirp_lut[1589] = 8'd211; long_chirp_lut[1590] = 8'd253; long_chirp_lut[1591] = 8'd183;
|
||||
long_chirp_lut[1592] = 8'd 63; long_chirp_lut[1593] = 8'd 1; long_chirp_lut[1594] = 8'd 52; long_chirp_lut[1595] = 8'd171; long_chirp_lut[1596] = 8'd251; long_chirp_lut[1597] = 8'd220; long_chirp_lut[1598] = 8'd105; long_chirp_lut[1599] = 8'd 11;
|
||||
long_chirp_lut[1600] = 8'd 21; long_chirp_lut[1601] = 8'd128; long_chirp_lut[1602] = 8'd234; long_chirp_lut[1603] = 8'd244; long_chirp_lut[1604] = 8'd149; long_chirp_lut[1605] = 8'd 35; long_chirp_lut[1606] = 8'd 4; long_chirp_lut[1607] = 8'd 85;
|
||||
long_chirp_lut[1608] = 8'd204; long_chirp_lut[1609] = 8'd254; long_chirp_lut[1610] = 8'd189; long_chirp_lut[1611] = 8'd 69; long_chirp_lut[1612] = 8'd 1; long_chirp_lut[1613] = 8'd 48; long_chirp_lut[1614] = 8'd167; long_chirp_lut[1615] = 8'd250;
|
||||
long_chirp_lut[1616] = 8'd222; long_chirp_lut[1617] = 8'd107; long_chirp_lut[1618] = 8'd 11; long_chirp_lut[1619] = 8'd 21; long_chirp_lut[1620] = 8'd127; long_chirp_lut[1621] = 8'd234; long_chirp_lut[1622] = 8'd243; long_chirp_lut[1623] = 8'd147;
|
||||
long_chirp_lut[1624] = 8'd 33; long_chirp_lut[1625] = 8'd 5; long_chirp_lut[1626] = 8'd 89; long_chirp_lut[1627] = 8'd208; long_chirp_lut[1628] = 8'd254; long_chirp_lut[1629] = 8'd184; long_chirp_lut[1630] = 8'd 62; long_chirp_lut[1631] = 8'd 1;
|
||||
long_chirp_lut[1632] = 8'd 55; long_chirp_lut[1633] = 8'd176; long_chirp_lut[1634] = 8'd252; long_chirp_lut[1635] = 8'd214; long_chirp_lut[1636] = 8'd 96; long_chirp_lut[1637] = 8'd 7; long_chirp_lut[1638] = 8'd 28; long_chirp_lut[1639] = 8'd141;
|
||||
long_chirp_lut[1640] = 8'd241; long_chirp_lut[1641] = 8'd237; long_chirp_lut[1642] = 8'd132; long_chirp_lut[1643] = 8'd 23; long_chirp_lut[1644] = 8'd 10; long_chirp_lut[1645] = 8'd106; long_chirp_lut[1646] = 8'd221; long_chirp_lut[1647] = 8'd250;
|
||||
long_chirp_lut[1648] = 8'd166; long_chirp_lut[1649] = 8'd 46; long_chirp_lut[1650] = 8'd 2; long_chirp_lut[1651] = 8'd 74; long_chirp_lut[1652] = 8'd196; long_chirp_lut[1653] = 8'd254; long_chirp_lut[1654] = 8'd195; long_chirp_lut[1655] = 8'd 73;
|
||||
long_chirp_lut[1656] = 8'd 2; long_chirp_lut[1657] = 8'd 47; long_chirp_lut[1658] = 8'd167; long_chirp_lut[1659] = 8'd251; long_chirp_lut[1660] = 8'd220; long_chirp_lut[1661] = 8'd103; long_chirp_lut[1662] = 8'd 9; long_chirp_lut[1663] = 8'd 25;
|
||||
long_chirp_lut[1664] = 8'd137; long_chirp_lut[1665] = 8'd240; long_chirp_lut[1666] = 8'd238; long_chirp_lut[1667] = 8'd133; long_chirp_lut[1668] = 8'd 23; long_chirp_lut[1669] = 8'd 11; long_chirp_lut[1670] = 8'd107; long_chirp_lut[1671] = 8'd223;
|
||||
long_chirp_lut[1672] = 8'd249; long_chirp_lut[1673] = 8'd162; long_chirp_lut[1674] = 8'd 42; long_chirp_lut[1675] = 8'd 3; long_chirp_lut[1676] = 8'd 80; long_chirp_lut[1677] = 8'd202; long_chirp_lut[1678] = 8'd254; long_chirp_lut[1679] = 8'd187;
|
||||
long_chirp_lut[1680] = 8'd 64; long_chirp_lut[1681] = 8'd 1; long_chirp_lut[1682] = 8'd 57; long_chirp_lut[1683] = 8'd179; long_chirp_lut[1684] = 8'd253; long_chirp_lut[1685] = 8'd209; long_chirp_lut[1686] = 8'd 88; long_chirp_lut[1687] = 8'd 4;
|
||||
long_chirp_lut[1688] = 8'd 37; long_chirp_lut[1689] = 8'd155; long_chirp_lut[1690] = 8'd247; long_chirp_lut[1691] = 8'd226; long_chirp_lut[1692] = 8'd112; long_chirp_lut[1693] = 8'd 12; long_chirp_lut[1694] = 8'd 22; long_chirp_lut[1695] = 8'd132;
|
||||
long_chirp_lut[1696] = 8'd238; long_chirp_lut[1697] = 8'd239; long_chirp_lut[1698] = 8'd135; long_chirp_lut[1699] = 8'd 23; long_chirp_lut[1700] = 8'd 11; long_chirp_lut[1701] = 8'd109; long_chirp_lut[1702] = 8'd225; long_chirp_lut[1703] = 8'd248;
|
||||
long_chirp_lut[1704] = 8'd157; long_chirp_lut[1705] = 8'd 37; long_chirp_lut[1706] = 8'd 4; long_chirp_lut[1707] = 8'd 88; long_chirp_lut[1708] = 8'd210; long_chirp_lut[1709] = 8'd253; long_chirp_lut[1710] = 8'd176; long_chirp_lut[1711] = 8'd 53;
|
||||
long_chirp_lut[1712] = 8'd 1; long_chirp_lut[1713] = 8'd 70; long_chirp_lut[1714] = 8'd194; long_chirp_lut[1715] = 8'd254; long_chirp_lut[1716] = 8'd193; long_chirp_lut[1717] = 8'd 69; long_chirp_lut[1718] = 8'd 1; long_chirp_lut[1719] = 8'd 54;
|
||||
long_chirp_lut[1720] = 8'd178; long_chirp_lut[1721] = 8'd253; long_chirp_lut[1722] = 8'd208; long_chirp_lut[1723] = 8'd 85; long_chirp_lut[1724] = 8'd 3; long_chirp_lut[1725] = 8'd 41; long_chirp_lut[1726] = 8'd162; long_chirp_lut[1727] = 8'd250;
|
||||
long_chirp_lut[1728] = 8'd220; long_chirp_lut[1729] = 8'd101; long_chirp_lut[1730] = 8'd 8; long_chirp_lut[1731] = 8'd 30; long_chirp_lut[1732] = 8'd146; long_chirp_lut[1733] = 8'd245; long_chirp_lut[1734] = 8'd230; long_chirp_lut[1735] = 8'd116;
|
||||
long_chirp_lut[1736] = 8'd 13; long_chirp_lut[1737] = 8'd 21; long_chirp_lut[1738] = 8'd132; long_chirp_lut[1739] = 8'd239; long_chirp_lut[1740] = 8'd237; long_chirp_lut[1741] = 8'd130; long_chirp_lut[1742] = 8'd 20; long_chirp_lut[1743] = 8'd 14;
|
||||
long_chirp_lut[1744] = 8'd119; long_chirp_lut[1745] = 8'd232; long_chirp_lut[1746] = 8'd243; long_chirp_lut[1747] = 8'd142; long_chirp_lut[1748] = 8'd 27; long_chirp_lut[1749] = 8'd 9; long_chirp_lut[1750] = 8'd107; long_chirp_lut[1751] = 8'd225;
|
||||
long_chirp_lut[1752] = 8'd247; long_chirp_lut[1753] = 8'd153; long_chirp_lut[1754] = 8'd 34; long_chirp_lut[1755] = 8'd 6; long_chirp_lut[1756] = 8'd 97; long_chirp_lut[1757] = 8'd218; long_chirp_lut[1758] = 8'd250; long_chirp_lut[1759] = 8'd162;
|
||||
long_chirp_lut[1760] = 8'd 40; long_chirp_lut[1761] = 8'd 4; long_chirp_lut[1762] = 8'd 88; long_chirp_lut[1763] = 8'd212; long_chirp_lut[1764] = 8'd252; long_chirp_lut[1765] = 8'd171; long_chirp_lut[1766] = 8'd 46; long_chirp_lut[1767] = 8'd 2;
|
||||
long_chirp_lut[1768] = 8'd 81; long_chirp_lut[1769] = 8'd206; long_chirp_lut[1770] = 8'd253; long_chirp_lut[1771] = 8'd177; long_chirp_lut[1772] = 8'd 52; long_chirp_lut[1773] = 8'd 1; long_chirp_lut[1774] = 8'd 75; long_chirp_lut[1775] = 8'd201;
|
||||
long_chirp_lut[1776] = 8'd254; long_chirp_lut[1777] = 8'd182; long_chirp_lut[1778] = 8'd 56; long_chirp_lut[1779] = 8'd 1; long_chirp_lut[1780] = 8'd 71; long_chirp_lut[1781] = 8'd197; long_chirp_lut[1782] = 8'd254; long_chirp_lut[1783] = 8'd186;
|
||||
long_chirp_lut[1784] = 8'd 60; long_chirp_lut[1785] = 8'd 1; long_chirp_lut[1786] = 8'd 67; long_chirp_lut[1787] = 8'd194; long_chirp_lut[1788] = 8'd254; long_chirp_lut[1789] = 8'd189; long_chirp_lut[1790] = 8'd 62; long_chirp_lut[1791] = 8'd 1;
|
||||
long_chirp_lut[1792] = 8'd 65; long_chirp_lut[1793] = 8'd192; long_chirp_lut[1794] = 8'd254; long_chirp_lut[1795] = 8'd191; long_chirp_lut[1796] = 8'd 64; long_chirp_lut[1797] = 8'd 1; long_chirp_lut[1798] = 8'd 64; long_chirp_lut[1799] = 8'd191;
|
||||
long_chirp_lut[1800] = 8'd255; long_chirp_lut[1801] = 8'd191; long_chirp_lut[1802] = 8'd 64; long_chirp_lut[1803] = 8'd 1; long_chirp_lut[1804] = 8'd 64; long_chirp_lut[1805] = 8'd191; long_chirp_lut[1806] = 8'd254; long_chirp_lut[1807] = 8'd190;
|
||||
long_chirp_lut[1808] = 8'd 63; long_chirp_lut[1809] = 8'd 1; long_chirp_lut[1810] = 8'd 66; long_chirp_lut[1811] = 8'd193; long_chirp_lut[1812] = 8'd254; long_chirp_lut[1813] = 8'd188; long_chirp_lut[1814] = 8'd 61; long_chirp_lut[1815] = 8'd 1;
|
||||
long_chirp_lut[1816] = 8'd 68; long_chirp_lut[1817] = 8'd196; long_chirp_lut[1818] = 8'd254; long_chirp_lut[1819] = 8'd185; long_chirp_lut[1820] = 8'd 58; long_chirp_lut[1821] = 8'd 1; long_chirp_lut[1822] = 8'd 72; long_chirp_lut[1823] = 8'd199;
|
||||
long_chirp_lut[1824] = 8'd254; long_chirp_lut[1825] = 8'd181; long_chirp_lut[1826] = 8'd 54; long_chirp_lut[1827] = 8'd 1; long_chirp_lut[1828] = 8'd 77; long_chirp_lut[1829] = 8'd204; long_chirp_lut[1830] = 8'd253; long_chirp_lut[1831] = 8'd175;
|
||||
long_chirp_lut[1832] = 8'd 48; long_chirp_lut[1833] = 8'd 2; long_chirp_lut[1834] = 8'd 83; long_chirp_lut[1835] = 8'd209; long_chirp_lut[1836] = 8'd252; long_chirp_lut[1837] = 8'd168; long_chirp_lut[1838] = 8'd 42; long_chirp_lut[1839] = 8'd 4;
|
||||
long_chirp_lut[1840] = 8'd 91; long_chirp_lut[1841] = 8'd216; long_chirp_lut[1842] = 8'd250; long_chirp_lut[1843] = 8'd159; long_chirp_lut[1844] = 8'd 36; long_chirp_lut[1845] = 8'd 6; long_chirp_lut[1846] = 8'd100; long_chirp_lut[1847] = 8'd222;
|
||||
long_chirp_lut[1848] = 8'd247; long_chirp_lut[1849] = 8'd150; long_chirp_lut[1850] = 8'd 29; long_chirp_lut[1851] = 8'd 9; long_chirp_lut[1852] = 8'd111; long_chirp_lut[1853] = 8'd229; long_chirp_lut[1854] = 8'd243; long_chirp_lut[1855] = 8'd138;
|
||||
long_chirp_lut[1856] = 8'd 22; long_chirp_lut[1857] = 8'd 14; long_chirp_lut[1858] = 8'd123; long_chirp_lut[1859] = 8'd236; long_chirp_lut[1860] = 8'd237; long_chirp_lut[1861] = 8'd125; long_chirp_lut[1862] = 8'd 15; long_chirp_lut[1863] = 8'd 21;
|
||||
long_chirp_lut[1864] = 8'd137; long_chirp_lut[1865] = 8'd243; long_chirp_lut[1866] = 8'd230; long_chirp_lut[1867] = 8'd111; long_chirp_lut[1868] = 8'd 9; long_chirp_lut[1869] = 8'd 30; long_chirp_lut[1870] = 8'd151; long_chirp_lut[1871] = 8'd248;
|
||||
long_chirp_lut[1872] = 8'd220; long_chirp_lut[1873] = 8'd 96; long_chirp_lut[1874] = 8'd 4; long_chirp_lut[1875] = 8'd 41; long_chirp_lut[1876] = 8'd167; long_chirp_lut[1877] = 8'd252; long_chirp_lut[1878] = 8'd208; long_chirp_lut[1879] = 8'd 80;
|
||||
long_chirp_lut[1880] = 8'd 1; long_chirp_lut[1881] = 8'd 54; long_chirp_lut[1882] = 8'd183; long_chirp_lut[1883] = 8'd254; long_chirp_lut[1884] = 8'd193; long_chirp_lut[1885] = 8'd 64; long_chirp_lut[1886] = 8'd 1; long_chirp_lut[1887] = 8'd 70;
|
||||
long_chirp_lut[1888] = 8'd199; long_chirp_lut[1889] = 8'd254; long_chirp_lut[1890] = 8'd176; long_chirp_lut[1891] = 8'd 48; long_chirp_lut[1892] = 8'd 3; long_chirp_lut[1893] = 8'd 88; long_chirp_lut[1894] = 8'd215; long_chirp_lut[1895] = 8'd250;
|
||||
long_chirp_lut[1896] = 8'd157; long_chirp_lut[1897] = 8'd 33; long_chirp_lut[1898] = 8'd 8; long_chirp_lut[1899] = 8'd109; long_chirp_lut[1900] = 8'd229; long_chirp_lut[1901] = 8'd243; long_chirp_lut[1902] = 8'd135; long_chirp_lut[1903] = 8'd 19;
|
||||
long_chirp_lut[1904] = 8'd 18; long_chirp_lut[1905] = 8'd132; long_chirp_lut[1906] = 8'd241; long_chirp_lut[1907] = 8'd231; long_chirp_lut[1908] = 8'd112; long_chirp_lut[1909] = 8'd 9; long_chirp_lut[1910] = 8'd 31; long_chirp_lut[1911] = 8'd155;
|
||||
long_chirp_lut[1912] = 8'd250; long_chirp_lut[1913] = 8'd215; long_chirp_lut[1914] = 8'd 88; long_chirp_lut[1915] = 8'd 2; long_chirp_lut[1916] = 8'd 50; long_chirp_lut[1917] = 8'd179; long_chirp_lut[1918] = 8'd254; long_chirp_lut[1919] = 8'd195;
|
||||
long_chirp_lut[1920] = 8'd 64; long_chirp_lut[1921] = 8'd 1; long_chirp_lut[1922] = 8'd 72; long_chirp_lut[1923] = 8'd202; long_chirp_lut[1924] = 8'd253; long_chirp_lut[1925] = 8'd171; long_chirp_lut[1926] = 8'd 42; long_chirp_lut[1927] = 8'd 4;
|
||||
long_chirp_lut[1928] = 8'd 98; long_chirp_lut[1929] = 8'd223; long_chirp_lut[1930] = 8'd246; long_chirp_lut[1931] = 8'd143; long_chirp_lut[1932] = 8'd 23; long_chirp_lut[1933] = 8'd 15; long_chirp_lut[1934] = 8'd127; long_chirp_lut[1935] = 8'd240;
|
||||
long_chirp_lut[1936] = 8'd233; long_chirp_lut[1937] = 8'd113; long_chirp_lut[1938] = 8'd 9; long_chirp_lut[1939] = 8'd 32; long_chirp_lut[1940] = 8'd157; long_chirp_lut[1941] = 8'd251; long_chirp_lut[1942] = 8'd212; long_chirp_lut[1943] = 8'd 83;
|
||||
long_chirp_lut[1944] = 8'd 2; long_chirp_lut[1945] = 8'd 55; long_chirp_lut[1946] = 8'd186; long_chirp_lut[1947] = 8'd254; long_chirp_lut[1948] = 8'd186; long_chirp_lut[1949] = 8'd 55; long_chirp_lut[1950] = 8'd 2; long_chirp_lut[1951] = 8'd 84;
|
||||
long_chirp_lut[1952] = 8'd213; long_chirp_lut[1953] = 8'd250; long_chirp_lut[1954] = 8'd155; long_chirp_lut[1955] = 8'd 30; long_chirp_lut[1956] = 8'd 10; long_chirp_lut[1957] = 8'd117; long_chirp_lut[1958] = 8'd235; long_chirp_lut[1959] = 8'd237;
|
||||
long_chirp_lut[1960] = 8'd120; long_chirp_lut[1961] = 8'd 11; long_chirp_lut[1962] = 8'd 28; long_chirp_lut[1963] = 8'd153; long_chirp_lut[1964] = 8'd250; long_chirp_lut[1965] = 8'd214; long_chirp_lut[1966] = 8'd 85; long_chirp_lut[1967] = 8'd 2;
|
||||
long_chirp_lut[1968] = 8'd 55; long_chirp_lut[1969] = 8'd187; long_chirp_lut[1970] = 8'd254; long_chirp_lut[1971] = 8'd184; long_chirp_lut[1972] = 8'd 52; long_chirp_lut[1973] = 8'd 2; long_chirp_lut[1974] = 8'd 89; long_chirp_lut[1975] = 8'd218;
|
||||
long_chirp_lut[1976] = 8'd248; long_chirp_lut[1977] = 8'd147; long_chirp_lut[1978] = 8'd 25; long_chirp_lut[1979] = 8'd 14; long_chirp_lut[1980] = 8'd127; long_chirp_lut[1981] = 8'd241; long_chirp_lut[1982] = 8'd230; long_chirp_lut[1983] = 8'd107;
|
||||
long_chirp_lut[1984] = 8'd 7; long_chirp_lut[1985] = 8'd 38; long_chirp_lut[1986] = 8'd167; long_chirp_lut[1987] = 8'd253; long_chirp_lut[1988] = 8'd201; long_chirp_lut[1989] = 8'd 69; long_chirp_lut[1990] = 8'd 1; long_chirp_lut[1991] = 8'd 72;
|
||||
long_chirp_lut[1992] = 8'd204; long_chirp_lut[1993] = 8'd252; long_chirp_lut[1994] = 8'd163; long_chirp_lut[1995] = 8'd 35; long_chirp_lut[1996] = 8'd 8; long_chirp_lut[1997] = 8'd113; long_chirp_lut[1998] = 8'd234; long_chirp_lut[1999] = 8'd237;
|
||||
long_chirp_lut[2000] = 8'd120; long_chirp_lut[2001] = 8'd 11; long_chirp_lut[2002] = 8'd 30; long_chirp_lut[2003] = 8'd157; long_chirp_lut[2004] = 8'd251; long_chirp_lut[2005] = 8'd209; long_chirp_lut[2006] = 8'd 77; long_chirp_lut[2007] = 8'd 1;
|
||||
long_chirp_lut[2008] = 8'd 65; long_chirp_lut[2009] = 8'd199; long_chirp_lut[2010] = 8'd253; long_chirp_lut[2011] = 8'd169; long_chirp_lut[2012] = 8'd 38; long_chirp_lut[2013] = 8'd 7; long_chirp_lut[2014] = 8'd109; long_chirp_lut[2015] = 8'd232;
|
||||
long_chirp_lut[2016] = 8'd239; long_chirp_lut[2017] = 8'd122; long_chirp_lut[2018] = 8'd 11; long_chirp_lut[2019] = 8'd 30; long_chirp_lut[2020] = 8'd157; long_chirp_lut[2021] = 8'd251; long_chirp_lut[2022] = 8'd208; long_chirp_lut[2023] = 8'd 75;
|
||||
long_chirp_lut[2024] = 8'd 1; long_chirp_lut[2025] = 8'd 68; long_chirp_lut[2026] = 8'd201; long_chirp_lut[2027] = 8'd253; long_chirp_lut[2028] = 8'd164; long_chirp_lut[2029] = 8'd 35; long_chirp_lut[2030] = 8'd 9; long_chirp_lut[2031] = 8'd116;
|
||||
long_chirp_lut[2032] = 8'd236; long_chirp_lut[2033] = 8'd235; long_chirp_lut[2034] = 8'd114; long_chirp_lut[2035] = 8'd 8; long_chirp_lut[2036] = 8'd 36; long_chirp_lut[2037] = 8'd167; long_chirp_lut[2038] = 8'd253; long_chirp_lut[2039] = 8'd199;
|
||||
long_chirp_lut[2040] = 8'd 64; long_chirp_lut[2041] = 8'd 1; long_chirp_lut[2042] = 8'd 80; long_chirp_lut[2043] = 8'd213; long_chirp_lut[2044] = 8'd249; long_chirp_lut[2045] = 8'd149; long_chirp_lut[2046] = 8'd 24; long_chirp_lut[2047] = 8'd 16;
|
||||
long_chirp_lut[2048] = 8'd133; long_chirp_lut[2049] = 8'd244; long_chirp_lut[2050] = 8'd224; long_chirp_lut[2051] = 8'd 95; long_chirp_lut[2052] = 8'd 3; long_chirp_lut[2053] = 8'd 52; long_chirp_lut[2054] = 8'd186; long_chirp_lut[2055] = 8'd254;
|
||||
long_chirp_lut[2056] = 8'd179; long_chirp_lut[2057] = 8'd 45; long_chirp_lut[2058] = 8'd 5; long_chirp_lut[2059] = 8'd103; long_chirp_lut[2060] = 8'd229; long_chirp_lut[2061] = 8'd240; long_chirp_lut[2062] = 8'd123; long_chirp_lut[2063] = 8'd 11;
|
||||
long_chirp_lut[2064] = 8'd 31; long_chirp_lut[2065] = 8'd161; long_chirp_lut[2066] = 8'd252; long_chirp_lut[2067] = 8'd202; long_chirp_lut[2068] = 8'd 67; long_chirp_lut[2069] = 8'd 1; long_chirp_lut[2070] = 8'd 79; long_chirp_lut[2071] = 8'd212;
|
||||
long_chirp_lut[2072] = 8'd249; long_chirp_lut[2073] = 8'd147; long_chirp_lut[2074] = 8'd 23; long_chirp_lut[2075] = 8'd 18; long_chirp_lut[2076] = 8'd138; long_chirp_lut[2077] = 8'd246; long_chirp_lut[2078] = 8'd219; long_chirp_lut[2079] = 8'd 87;
|
||||
long_chirp_lut[2080] = 8'd 1; long_chirp_lut[2081] = 8'd 60; long_chirp_lut[2082] = 8'd196; long_chirp_lut[2083] = 8'd253; long_chirp_lut[2084] = 8'd166; long_chirp_lut[2085] = 8'd 35; long_chirp_lut[2086] = 8'd 9; long_chirp_lut[2087] = 8'd120;
|
||||
long_chirp_lut[2088] = 8'd239; long_chirp_lut[2089] = 8'd230; long_chirp_lut[2090] = 8'd104; long_chirp_lut[2091] = 8'd 4; long_chirp_lut[2092] = 8'd 47; long_chirp_lut[2093] = 8'd182; long_chirp_lut[2094] = 8'd254; long_chirp_lut[2095] = 8'd181;
|
||||
long_chirp_lut[2096] = 8'd 46; long_chirp_lut[2097] = 8'd 5; long_chirp_lut[2098] = 8'd106; long_chirp_lut[2099] = 8'd232; long_chirp_lut[2100] = 8'd237; long_chirp_lut[2101] = 8'd116; long_chirp_lut[2102] = 8'd 8; long_chirp_lut[2103] = 8'd 38;
|
||||
long_chirp_lut[2104] = 8'd171; long_chirp_lut[2105] = 8'd254; long_chirp_lut[2106] = 8'd190; long_chirp_lut[2107] = 8'd 54; long_chirp_lut[2108] = 8'd 3; long_chirp_lut[2109] = 8'd 96; long_chirp_lut[2110] = 8'd226; long_chirp_lut[2111] = 8'd242;
|
||||
long_chirp_lut[2112] = 8'd125; long_chirp_lut[2113] = 8'd 11; long_chirp_lut[2114] = 8'd 33; long_chirp_lut[2115] = 8'd164; long_chirp_lut[2116] = 8'd253; long_chirp_lut[2117] = 8'd196; long_chirp_lut[2118] = 8'd 59; long_chirp_lut[2119] = 8'd 2;
|
||||
long_chirp_lut[2120] = 8'd 91; long_chirp_lut[2121] = 8'd223; long_chirp_lut[2122] = 8'd243; long_chirp_lut[2123] = 8'd129; long_chirp_lut[2124] = 8'd 13; long_chirp_lut[2125] = 8'd 31; long_chirp_lut[2126] = 8'd162; long_chirp_lut[2127] = 8'd253;
|
||||
long_chirp_lut[2128] = 8'd198; long_chirp_lut[2129] = 8'd 60; long_chirp_lut[2130] = 8'd 2; long_chirp_lut[2131] = 8'd 90; long_chirp_lut[2132] = 8'd223; long_chirp_lut[2133] = 8'd243; long_chirp_lut[2134] = 8'd128; long_chirp_lut[2135] = 8'd 12;
|
||||
long_chirp_lut[2136] = 8'd 31; long_chirp_lut[2137] = 8'd163; long_chirp_lut[2138] = 8'd253; long_chirp_lut[2139] = 8'd195; long_chirp_lut[2140] = 8'd 58; long_chirp_lut[2141] = 8'd 2; long_chirp_lut[2142] = 8'd 94; long_chirp_lut[2143] = 8'd225;
|
||||
long_chirp_lut[2144] = 8'd242; long_chirp_lut[2145] = 8'd123; long_chirp_lut[2146] = 8'd 10; long_chirp_lut[2147] = 8'd 35; long_chirp_lut[2148] = 8'd169; long_chirp_lut[2149] = 8'd254; long_chirp_lut[2150] = 8'd189; long_chirp_lut[2151] = 8'd 52;
|
||||
long_chirp_lut[2152] = 8'd 4; long_chirp_lut[2153] = 8'd102; long_chirp_lut[2154] = 8'd231; long_chirp_lut[2155] = 8'd237; long_chirp_lut[2156] = 8'd114; long_chirp_lut[2157] = 8'd 7; long_chirp_lut[2158] = 8'd 43; long_chirp_lut[2159] = 8'd179;
|
||||
long_chirp_lut[2160] = 8'd255; long_chirp_lut[2161] = 8'd179; long_chirp_lut[2162] = 8'd 42; long_chirp_lut[2163] = 8'd 7; long_chirp_lut[2164] = 8'd115; long_chirp_lut[2165] = 8'd238; long_chirp_lut[2166] = 8'd230; long_chirp_lut[2167] = 8'd100;
|
||||
long_chirp_lut[2168] = 8'd 3; long_chirp_lut[2169] = 8'd 54; long_chirp_lut[2170] = 8'd193; long_chirp_lut[2171] = 8'd254; long_chirp_lut[2172] = 8'd164; long_chirp_lut[2173] = 8'd 31; long_chirp_lut[2174] = 8'd 13; long_chirp_lut[2175] = 8'd132;
|
||||
long_chirp_lut[2176] = 8'd245; long_chirp_lut[2177] = 8'd218; long_chirp_lut[2178] = 8'd 83; long_chirp_lut[2179] = 8'd 1; long_chirp_lut[2180] = 8'd 71; long_chirp_lut[2181] = 8'd209; long_chirp_lut[2182] = 8'd250; long_chirp_lut[2183] = 8'd144;
|
||||
long_chirp_lut[2184] = 8'd 19; long_chirp_lut[2185] = 8'd 24; long_chirp_lut[2186] = 8'd153; long_chirp_lut[2187] = 8'd252; long_chirp_lut[2188] = 8'd201; long_chirp_lut[2189] = 8'd 62; long_chirp_lut[2190] = 8'd 2; long_chirp_lut[2191] = 8'd 93;
|
||||
long_chirp_lut[2192] = 8'd226; long_chirp_lut[2193] = 8'd241; long_chirp_lut[2194] = 8'd119; long_chirp_lut[2195] = 8'd 8; long_chirp_lut[2196] = 8'd 41; long_chirp_lut[2197] = 8'd178; long_chirp_lut[2198] = 8'd254; long_chirp_lut[2199] = 8'd178;
|
||||
long_chirp_lut[2200] = 8'd 40; long_chirp_lut[2201] = 8'd 8; long_chirp_lut[2202] = 8'd120; long_chirp_lut[2203] = 8'd241; long_chirp_lut[2204] = 8'd225; long_chirp_lut[2205] = 8'd 91; long_chirp_lut[2206] = 8'd 1; long_chirp_lut[2207] = 8'd 65;
|
||||
long_chirp_lut[2208] = 8'd204; long_chirp_lut[2209] = 8'd251; long_chirp_lut[2210] = 8'd148; long_chirp_lut[2211] = 8'd 20; long_chirp_lut[2212] = 8'd 23; long_chirp_lut[2213] = 8'd153; long_chirp_lut[2214] = 8'd252; long_chirp_lut[2215] = 8'd200;
|
||||
long_chirp_lut[2216] = 8'd 60; long_chirp_lut[2217] = 8'd 2; long_chirp_lut[2218] = 8'd 97; long_chirp_lut[2219] = 8'd229; long_chirp_lut[2220] = 8'd237; long_chirp_lut[2221] = 8'd112; long_chirp_lut[2222] = 8'd 5; long_chirp_lut[2223] = 8'd 48;
|
||||
long_chirp_lut[2224] = 8'd187; long_chirp_lut[2225] = 8'd254; long_chirp_lut[2226] = 8'd166; long_chirp_lut[2227] = 8'd 31; long_chirp_lut[2228] = 8'd 14; long_chirp_lut[2229] = 8'd136; long_chirp_lut[2230] = 8'd247; long_chirp_lut[2231] = 8'd212;
|
||||
long_chirp_lut[2232] = 8'd 73; long_chirp_lut[2233] = 8'd 1; long_chirp_lut[2234] = 8'd 83; long_chirp_lut[2235] = 8'd220; long_chirp_lut[2236] = 8'd243; long_chirp_lut[2237] = 8'd124; long_chirp_lut[2238] = 8'd 9; long_chirp_lut[2239] = 8'd 39;
|
||||
long_chirp_lut[2240] = 8'd178; long_chirp_lut[2241] = 8'd254; long_chirp_lut[2242] = 8'd175; long_chirp_lut[2243] = 8'd 37; long_chirp_lut[2244] = 8'd 10; long_chirp_lut[2245] = 8'd128; long_chirp_lut[2246] = 8'd245; long_chirp_lut[2247] = 8'd217;
|
||||
long_chirp_lut[2248] = 8'd 79; long_chirp_lut[2249] = 8'd 1; long_chirp_lut[2250] = 8'd 79; long_chirp_lut[2251] = 8'd217; long_chirp_lut[2252] = 8'd245; long_chirp_lut[2253] = 8'd127; long_chirp_lut[2254] = 8'd 10; long_chirp_lut[2255] = 8'd 38;
|
||||
long_chirp_lut[2256] = 8'd177; long_chirp_lut[2257] = 8'd254; long_chirp_lut[2258] = 8'd175; long_chirp_lut[2259] = 8'd 37; long_chirp_lut[2260] = 8'd 11; long_chirp_lut[2261] = 8'd130; long_chirp_lut[2262] = 8'd246; long_chirp_lut[2263] = 8'd215;
|
||||
long_chirp_lut[2264] = 8'd 76; long_chirp_lut[2265] = 8'd 1; long_chirp_lut[2266] = 8'd 83; long_chirp_lut[2267] = 8'd221; long_chirp_lut[2268] = 8'd242; long_chirp_lut[2269] = 8'd121; long_chirp_lut[2270] = 8'd 8; long_chirp_lut[2271] = 8'd 44;
|
||||
long_chirp_lut[2272] = 8'd184; long_chirp_lut[2273] = 8'd254; long_chirp_lut[2274] = 8'd166; long_chirp_lut[2275] = 8'd 30; long_chirp_lut[2276] = 8'd 16; long_chirp_lut[2277] = 8'd141; long_chirp_lut[2278] = 8'd250; long_chirp_lut[2279] = 8'd206;
|
||||
long_chirp_lut[2280] = 8'd 64; long_chirp_lut[2281] = 8'd 2; long_chirp_lut[2282] = 8'd 97; long_chirp_lut[2283] = 8'd230; long_chirp_lut[2284] = 8'd235; long_chirp_lut[2285] = 8'd105; long_chirp_lut[2286] = 8'd 3; long_chirp_lut[2287] = 8'd 57;
|
||||
long_chirp_lut[2288] = 8'd199; long_chirp_lut[2289] = 8'd251; long_chirp_lut[2290] = 8'd148; long_chirp_lut[2291] = 8'd 19; long_chirp_lut[2292] = 8'd 26; long_chirp_lut[2293] = 8'd161; long_chirp_lut[2294] = 8'd254; long_chirp_lut[2295] = 8'd187;
|
||||
long_chirp_lut[2296] = 8'd 46; long_chirp_lut[2297] = 8'd 7; long_chirp_lut[2298] = 8'd120; long_chirp_lut[2299] = 8'd243; long_chirp_lut[2300] = 8'd220; long_chirp_lut[2301] = 8'd 81; long_chirp_lut[2302] = 8'd 1; long_chirp_lut[2303] = 8'd 81;
|
||||
long_chirp_lut[2304] = 8'd220; long_chirp_lut[2305] = 8'd242; long_chirp_lut[2306] = 8'd119; long_chirp_lut[2307] = 8'd 7; long_chirp_lut[2308] = 8'd 47; long_chirp_lut[2309] = 8'd189; long_chirp_lut[2310] = 8'd253; long_chirp_lut[2311] = 8'd158;
|
||||
long_chirp_lut[2312] = 8'd 24; long_chirp_lut[2313] = 8'd 21; long_chirp_lut[2314] = 8'd153; long_chirp_lut[2315] = 8'd253; long_chirp_lut[2316] = 8'd193; long_chirp_lut[2317] = 8'd 50; long_chirp_lut[2318] = 8'd 5; long_chirp_lut[2319] = 8'd116;
|
||||
long_chirp_lut[2320] = 8'd241; long_chirp_lut[2321] = 8'd222; long_chirp_lut[2322] = 8'd 83; long_chirp_lut[2323] = 8'd 1; long_chirp_lut[2324] = 8'd 80; long_chirp_lut[2325] = 8'd220; long_chirp_lut[2326] = 8'd242; long_chirp_lut[2327] = 8'd118;
|
||||
long_chirp_lut[2328] = 8'd 6; long_chirp_lut[2329] = 8'd 49; long_chirp_lut[2330] = 8'd193; long_chirp_lut[2331] = 8'd253; long_chirp_lut[2332] = 8'd153; long_chirp_lut[2333] = 8'd 20; long_chirp_lut[2334] = 8'd 25; long_chirp_lut[2335] = 8'd161;
|
||||
long_chirp_lut[2336] = 8'd254; long_chirp_lut[2337] = 8'd185; long_chirp_lut[2338] = 8'd 42; long_chirp_lut[2339] = 8'd 9; long_chirp_lut[2340] = 8'd127; long_chirp_lut[2341] = 8'd246; long_chirp_lut[2342] = 8'd212; long_chirp_lut[2343] = 8'd 70;
|
||||
long_chirp_lut[2344] = 8'd 1; long_chirp_lut[2345] = 8'd 95; long_chirp_lut[2346] = 8'd231; long_chirp_lut[2347] = 8'd234; long_chirp_lut[2348] = 8'd100; long_chirp_lut[2349] = 8'd 2; long_chirp_lut[2350] = 8'd 66; long_chirp_lut[2351] = 8'd209;
|
||||
long_chirp_lut[2352] = 8'd247; long_chirp_lut[2353] = 8'd131; long_chirp_lut[2354] = 8'd 10; long_chirp_lut[2355] = 8'd 41; long_chirp_lut[2356] = 8'd183; long_chirp_lut[2357] = 8'd254; long_chirp_lut[2358] = 8'd161; long_chirp_lut[2359] = 8'd 25;
|
||||
long_chirp_lut[2360] = 8'd 21; long_chirp_lut[2361] = 8'd155; long_chirp_lut[2362] = 8'd253; long_chirp_lut[2363] = 8'd188; long_chirp_lut[2364] = 8'd 45; long_chirp_lut[2365] = 8'd 8; long_chirp_lut[2366] = 8'd127; long_chirp_lut[2367] = 8'd246;
|
||||
long_chirp_lut[2368] = 8'd212; long_chirp_lut[2369] = 8'd 68; long_chirp_lut[2370] = 8'd 2; long_chirp_lut[2371] = 8'd 99; long_chirp_lut[2372] = 8'd233; long_chirp_lut[2373] = 8'd230; long_chirp_lut[2374] = 8'd 93; long_chirp_lut[2375] = 8'd 1;
|
||||
long_chirp_lut[2376] = 8'd 73; long_chirp_lut[2377] = 8'd216; long_chirp_lut[2378] = 8'd243; long_chirp_lut[2379] = 8'd119; long_chirp_lut[2380] = 8'd 6; long_chirp_lut[2381] = 8'd 51; long_chirp_lut[2382] = 8'd196; long_chirp_lut[2383] = 8'd252;
|
||||
long_chirp_lut[2384] = 8'd145; long_chirp_lut[2385] = 8'd 15; long_chirp_lut[2386] = 8'd 33; long_chirp_lut[2387] = 8'd174; long_chirp_lut[2388] = 8'd254; long_chirp_lut[2389] = 8'd169; long_chirp_lut[2390] = 8'd 29; long_chirp_lut[2391] = 8'd 18;
|
||||
long_chirp_lut[2392] = 8'd151; long_chirp_lut[2393] = 8'd253; long_chirp_lut[2394] = 8'd190; long_chirp_lut[2395] = 8'd 46; long_chirp_lut[2396] = 8'd 8; long_chirp_lut[2397] = 8'd128; long_chirp_lut[2398] = 8'd247; long_chirp_lut[2399] = 8'd209;
|
||||
long_chirp_lut[2400] = 8'd 64; long_chirp_lut[2401] = 8'd 2; long_chirp_lut[2402] = 8'd106; long_chirp_lut[2403] = 8'd238; long_chirp_lut[2404] = 8'd225; long_chirp_lut[2405] = 8'd 84; long_chirp_lut[2406] = 8'd 1; long_chirp_lut[2407] = 8'd 85;
|
||||
long_chirp_lut[2408] = 8'd226; long_chirp_lut[2409] = 8'd237; long_chirp_lut[2410] = 8'd104; long_chirp_lut[2411] = 8'd 2; long_chirp_lut[2412] = 8'd 66; long_chirp_lut[2413] = 8'd212; long_chirp_lut[2414] = 8'd246; long_chirp_lut[2415] = 8'd123;
|
||||
long_chirp_lut[2416] = 8'd 7; long_chirp_lut[2417] = 8'd 50; long_chirp_lut[2418] = 8'd196; long_chirp_lut[2419] = 8'd251; long_chirp_lut[2420] = 8'd142; long_chirp_lut[2421] = 8'd 14; long_chirp_lut[2422] = 8'd 36; long_chirp_lut[2423] = 8'd180;
|
||||
long_chirp_lut[2424] = 8'd254; long_chirp_lut[2425] = 8'd160; long_chirp_lut[2426] = 8'd 23; long_chirp_lut[2427] = 8'd 25; long_chirp_lut[2428] = 8'd164; long_chirp_lut[2429] = 8'd254; long_chirp_lut[2430] = 8'd176; long_chirp_lut[2431] = 8'd 33;
|
||||
long_chirp_lut[2432] = 8'd 16; long_chirp_lut[2433] = 8'd148; long_chirp_lut[2434] = 8'd252; long_chirp_lut[2435] = 8'd191; long_chirp_lut[2436] = 8'd 45; long_chirp_lut[2437] = 8'd 9; long_chirp_lut[2438] = 8'd132; long_chirp_lut[2439] = 8'd249;
|
||||
long_chirp_lut[2440] = 8'd203; long_chirp_lut[2441] = 8'd 56; long_chirp_lut[2442] = 8'd 5; long_chirp_lut[2443] = 8'd117; long_chirp_lut[2444] = 8'd244; long_chirp_lut[2445] = 8'd214; long_chirp_lut[2446] = 8'd 69; long_chirp_lut[2447] = 8'd 2;
|
||||
long_chirp_lut[2448] = 8'd104; long_chirp_lut[2449] = 8'd237; long_chirp_lut[2450] = 8'd224; long_chirp_lut[2451] = 8'd 81; long_chirp_lut[2452] = 8'd 1; long_chirp_lut[2453] = 8'd 91; long_chirp_lut[2454] = 8'd231; long_chirp_lut[2455] = 8'd231;
|
||||
long_chirp_lut[2456] = 8'd 92; long_chirp_lut[2457] = 8'd 1; long_chirp_lut[2458] = 8'd 80; long_chirp_lut[2459] = 8'd223; long_chirp_lut[2460] = 8'd237; long_chirp_lut[2461] = 8'd103; long_chirp_lut[2462] = 8'd 2; long_chirp_lut[2463] = 8'd 70;
|
||||
long_chirp_lut[2464] = 8'd216; long_chirp_lut[2465] = 8'd242; long_chirp_lut[2466] = 8'd114; long_chirp_lut[2467] = 8'd 4; long_chirp_lut[2468] = 8'd 61; long_chirp_lut[2469] = 8'd209; long_chirp_lut[2470] = 8'd246; long_chirp_lut[2471] = 8'd123;
|
||||
long_chirp_lut[2472] = 8'd 6; long_chirp_lut[2473] = 8'd 54; long_chirp_lut[2474] = 8'd201; long_chirp_lut[2475] = 8'd249; long_chirp_lut[2476] = 8'd132; long_chirp_lut[2477] = 8'd 9; long_chirp_lut[2478] = 8'd 47; long_chirp_lut[2479] = 8'd195;
|
||||
long_chirp_lut[2480] = 8'd251; long_chirp_lut[2481] = 8'd139; long_chirp_lut[2482] = 8'd 11; long_chirp_lut[2483] = 8'd 42; long_chirp_lut[2484] = 8'd189; long_chirp_lut[2485] = 8'd252; long_chirp_lut[2486] = 8'd146; long_chirp_lut[2487] = 8'd 14;
|
||||
long_chirp_lut[2488] = 8'd 37; long_chirp_lut[2489] = 8'd183; long_chirp_lut[2490] = 8'd253; long_chirp_lut[2491] = 8'd152; long_chirp_lut[2492] = 8'd 17; long_chirp_lut[2493] = 8'd 33; long_chirp_lut[2494] = 8'd178; long_chirp_lut[2495] = 8'd254;
|
||||
long_chirp_lut[2496] = 8'd157; long_chirp_lut[2497] = 8'd 19; long_chirp_lut[2498] = 8'd 30; long_chirp_lut[2499] = 8'd174; long_chirp_lut[2500] = 8'd254; long_chirp_lut[2501] = 8'd160; long_chirp_lut[2502] = 8'd 21; long_chirp_lut[2503] = 8'd 28;
|
||||
long_chirp_lut[2504] = 8'd171; long_chirp_lut[2505] = 8'd254; long_chirp_lut[2506] = 8'd163; long_chirp_lut[2507] = 8'd 23; long_chirp_lut[2508] = 8'd 26; long_chirp_lut[2509] = 8'd169; long_chirp_lut[2510] = 8'd254; long_chirp_lut[2511] = 8'd165;
|
||||
long_chirp_lut[2512] = 8'd 24; long_chirp_lut[2513] = 8'd 25; long_chirp_lut[2514] = 8'd167; long_chirp_lut[2515] = 8'd254; long_chirp_lut[2516] = 8'd166; long_chirp_lut[2517] = 8'd 25; long_chirp_lut[2518] = 8'd 25; long_chirp_lut[2519] = 8'd167;
|
||||
long_chirp_lut[2520] = 8'd255; long_chirp_lut[2521] = 8'd167; long_chirp_lut[2522] = 8'd 25; long_chirp_lut[2523] = 8'd 25; long_chirp_lut[2524] = 8'd167; long_chirp_lut[2525] = 8'd254; long_chirp_lut[2526] = 8'd166; long_chirp_lut[2527] = 8'd 24;
|
||||
long_chirp_lut[2528] = 8'd 25; long_chirp_lut[2529] = 8'd168; long_chirp_lut[2530] = 8'd254; long_chirp_lut[2531] = 8'd165; long_chirp_lut[2532] = 8'd 23; long_chirp_lut[2533] = 8'd 27; long_chirp_lut[2534] = 8'd170; long_chirp_lut[2535] = 8'd254;
|
||||
long_chirp_lut[2536] = 8'd162; long_chirp_lut[2537] = 8'd 22; long_chirp_lut[2538] = 8'd 28; long_chirp_lut[2539] = 8'd173; long_chirp_lut[2540] = 8'd254; long_chirp_lut[2541] = 8'd159; long_chirp_lut[2542] = 8'd 20; long_chirp_lut[2543] = 8'd 31;
|
||||
long_chirp_lut[2544] = 8'd177; long_chirp_lut[2545] = 8'd254; long_chirp_lut[2546] = 8'd155; long_chirp_lut[2547] = 8'd 17; long_chirp_lut[2548] = 8'd 34; long_chirp_lut[2549] = 8'd181; long_chirp_lut[2550] = 8'd253; long_chirp_lut[2551] = 8'd150;
|
||||
long_chirp_lut[2552] = 8'd 15; long_chirp_lut[2553] = 8'd 38; long_chirp_lut[2554] = 8'd186; long_chirp_lut[2555] = 8'd252; long_chirp_lut[2556] = 8'd143; long_chirp_lut[2557] = 8'd 12; long_chirp_lut[2558] = 8'd 43; long_chirp_lut[2559] = 8'd192;
|
||||
long_chirp_lut[2560] = 8'd251; long_chirp_lut[2561] = 8'd136; long_chirp_lut[2562] = 8'd 9; long_chirp_lut[2563] = 8'd 48; long_chirp_lut[2564] = 8'd199; long_chirp_lut[2565] = 8'd249; long_chirp_lut[2566] = 8'd128; long_chirp_lut[2567] = 8'd 6;
|
||||
long_chirp_lut[2568] = 8'd 55; long_chirp_lut[2569] = 8'd206; long_chirp_lut[2570] = 8'd246; long_chirp_lut[2571] = 8'd119; long_chirp_lut[2572] = 8'd 4; long_chirp_lut[2573] = 8'd 63; long_chirp_lut[2574] = 8'd213; long_chirp_lut[2575] = 8'd242;
|
||||
long_chirp_lut[2576] = 8'd110; long_chirp_lut[2577] = 8'd 2; long_chirp_lut[2578] = 8'd 72; long_chirp_lut[2579] = 8'd220; long_chirp_lut[2580] = 8'd237; long_chirp_lut[2581] = 8'd 99; long_chirp_lut[2582] = 8'd 1; long_chirp_lut[2583] = 8'd 82;
|
||||
long_chirp_lut[2584] = 8'd228; long_chirp_lut[2585] = 8'd231; long_chirp_lut[2586] = 8'd 88; long_chirp_lut[2587] = 8'd 1; long_chirp_lut[2588] = 8'd 94; long_chirp_lut[2589] = 8'd235; long_chirp_lut[2590] = 8'd224; long_chirp_lut[2591] = 8'd 76;
|
||||
long_chirp_lut[2592] = 8'd 2; long_chirp_lut[2593] = 8'd106; long_chirp_lut[2594] = 8'd241; long_chirp_lut[2595] = 8'd214; long_chirp_lut[2596] = 8'd 64; long_chirp_lut[2597] = 8'd 4; long_chirp_lut[2598] = 8'd120; long_chirp_lut[2599] = 8'd247;
|
||||
long_chirp_lut[2600] = 8'd203; long_chirp_lut[2601] = 8'd 52; long_chirp_lut[2602] = 8'd 8; long_chirp_lut[2603] = 8'd135; long_chirp_lut[2604] = 8'd251; long_chirp_lut[2605] = 8'd191; long_chirp_lut[2606] = 8'd 40; long_chirp_lut[2607] = 8'd 14;
|
||||
long_chirp_lut[2608] = 8'd151; long_chirp_lut[2609] = 8'd254; long_chirp_lut[2610] = 8'd176; long_chirp_lut[2611] = 8'd 29; long_chirp_lut[2612] = 8'd 23; long_chirp_lut[2613] = 8'd167; long_chirp_lut[2614] = 8'd254; long_chirp_lut[2615] = 8'd160;
|
||||
long_chirp_lut[2616] = 8'd 19; long_chirp_lut[2617] = 8'd 34; long_chirp_lut[2618] = 8'd183; long_chirp_lut[2619] = 8'd253; long_chirp_lut[2620] = 8'd142; long_chirp_lut[2621] = 8'd 11; long_chirp_lut[2622] = 8'd 47; long_chirp_lut[2623] = 8'd199;
|
||||
long_chirp_lut[2624] = 8'd248; long_chirp_lut[2625] = 8'd123; long_chirp_lut[2626] = 8'd 4; long_chirp_lut[2627] = 8'd 63; long_chirp_lut[2628] = 8'd214; long_chirp_lut[2629] = 8'd241; long_chirp_lut[2630] = 8'd104; long_chirp_lut[2631] = 8'd 1;
|
||||
long_chirp_lut[2632] = 8'd 81; long_chirp_lut[2633] = 8'd228; long_chirp_lut[2634] = 8'd230; long_chirp_lut[2635] = 8'd 84; long_chirp_lut[2636] = 8'd 1; long_chirp_lut[2637] = 8'd101; long_chirp_lut[2638] = 8'd240; long_chirp_lut[2639] = 8'd216;
|
||||
long_chirp_lut[2640] = 8'd 64; long_chirp_lut[2641] = 8'd 4; long_chirp_lut[2642] = 8'd123; long_chirp_lut[2643] = 8'd248; long_chirp_lut[2644] = 8'd198; long_chirp_lut[2645] = 8'd 46; long_chirp_lut[2646] = 8'd 12; long_chirp_lut[2647] = 8'd146;
|
||||
long_chirp_lut[2648] = 8'd253; long_chirp_lut[2649] = 8'd178; long_chirp_lut[2650] = 8'd 29; long_chirp_lut[2651] = 8'd 23; long_chirp_lut[2652] = 8'd169; long_chirp_lut[2653] = 8'd254; long_chirp_lut[2654] = 8'd155; long_chirp_lut[2655] = 8'd 15;
|
||||
long_chirp_lut[2656] = 8'd 39; long_chirp_lut[2657] = 8'd192; long_chirp_lut[2658] = 8'd250; long_chirp_lut[2659] = 8'd130; long_chirp_lut[2660] = 8'd 6; long_chirp_lut[2661] = 8'd 60; long_chirp_lut[2662] = 8'd213; long_chirp_lut[2663] = 8'd241;
|
||||
long_chirp_lut[2664] = 8'd104; long_chirp_lut[2665] = 8'd 1; long_chirp_lut[2666] = 8'd 83; long_chirp_lut[2667] = 8'd230; long_chirp_lut[2668] = 8'd227; long_chirp_lut[2669] = 8'd 78; long_chirp_lut[2670] = 8'd 2; long_chirp_lut[2671] = 8'd110;
|
||||
long_chirp_lut[2672] = 8'd244; long_chirp_lut[2673] = 8'd207; long_chirp_lut[2674] = 8'd 54; long_chirp_lut[2675] = 8'd 8; long_chirp_lut[2676] = 8'd138; long_chirp_lut[2677] = 8'd252; long_chirp_lut[2678] = 8'd183; long_chirp_lut[2679] = 8'd 32;
|
||||
long_chirp_lut[2680] = 8'd 21; long_chirp_lut[2681] = 8'd167; long_chirp_lut[2682] = 8'd254; long_chirp_lut[2683] = 8'd155; long_chirp_lut[2684] = 8'd 15; long_chirp_lut[2685] = 8'd 41; long_chirp_lut[2686] = 8'd194; long_chirp_lut[2687] = 8'd249;
|
||||
long_chirp_lut[2688] = 8'd125; long_chirp_lut[2689] = 8'd 4; long_chirp_lut[2690] = 8'd 66; long_chirp_lut[2691] = 8'd218; long_chirp_lut[2692] = 8'd237; long_chirp_lut[2693] = 8'd 94; long_chirp_lut[2694] = 8'd 1; long_chirp_lut[2695] = 8'd 95;
|
||||
long_chirp_lut[2696] = 8'd238; long_chirp_lut[2697] = 8'd217; long_chirp_lut[2698] = 8'd 64; long_chirp_lut[2699] = 8'd 5; long_chirp_lut[2700] = 8'd127; long_chirp_lut[2701] = 8'd250; long_chirp_lut[2702] = 8'd191; long_chirp_lut[2703] = 8'd 38;
|
||||
long_chirp_lut[2704] = 8'd 18; long_chirp_lut[2705] = 8'd161; long_chirp_lut[2706] = 8'd254; long_chirp_lut[2707] = 8'd159; long_chirp_lut[2708] = 8'd 17; long_chirp_lut[2709] = 8'd 39; long_chirp_lut[2710] = 8'd193; long_chirp_lut[2711] = 8'd250;
|
||||
long_chirp_lut[2712] = 8'd125; long_chirp_lut[2713] = 8'd 4; long_chirp_lut[2714] = 8'd 67; long_chirp_lut[2715] = 8'd220; long_chirp_lut[2716] = 8'd235; long_chirp_lut[2717] = 8'd 90; long_chirp_lut[2718] = 8'd 1; long_chirp_lut[2719] = 8'd101;
|
||||
long_chirp_lut[2720] = 8'd241; long_chirp_lut[2721] = 8'd211; long_chirp_lut[2722] = 8'd 56; long_chirp_lut[2723] = 8'd 8; long_chirp_lut[2724] = 8'd138; long_chirp_lut[2725] = 8'd253; long_chirp_lut[2726] = 8'd180; long_chirp_lut[2727] = 8'd 29;
|
||||
long_chirp_lut[2728] = 8'd 25; long_chirp_lut[2729] = 8'd175; long_chirp_lut[2730] = 8'd253; long_chirp_lut[2731] = 8'd143; long_chirp_lut[2732] = 8'd 9; long_chirp_lut[2733] = 8'd 53; long_chirp_lut[2734] = 8'd209; long_chirp_lut[2735] = 8'd242;
|
||||
long_chirp_lut[2736] = 8'd104; long_chirp_lut[2737] = 8'd 1; long_chirp_lut[2738] = 8'd 88; long_chirp_lut[2739] = 8'd235; long_chirp_lut[2740] = 8'd220; long_chirp_lut[2741] = 8'd 66; long_chirp_lut[2742] = 8'd 5; long_chirp_lut[2743] = 8'd128;
|
||||
long_chirp_lut[2744] = 8'd251; long_chirp_lut[2745] = 8'd187; long_chirp_lut[2746] = 8'd 34; long_chirp_lut[2747] = 8'd 21; long_chirp_lut[2748] = 8'd169; long_chirp_lut[2749] = 8'd254; long_chirp_lut[2750] = 8'd148; long_chirp_lut[2751] = 8'd 11;
|
||||
long_chirp_lut[2752] = 8'd 50; long_chirp_lut[2753] = 8'd206; long_chirp_lut[2754] = 8'd243; long_chirp_lut[2755] = 8'd105; long_chirp_lut[2756] = 8'd 1; long_chirp_lut[2757] = 8'd 88; long_chirp_lut[2758] = 8'd235; long_chirp_lut[2759] = 8'd219;
|
||||
long_chirp_lut[2760] = 8'd 64; long_chirp_lut[2761] = 8'd 5; long_chirp_lut[2762] = 8'd132; long_chirp_lut[2763] = 8'd252; long_chirp_lut[2764] = 8'd183; long_chirp_lut[2765] = 8'd 30; long_chirp_lut[2766] = 8'd 25; long_chirp_lut[2767] = 8'd176;
|
||||
long_chirp_lut[2768] = 8'd253; long_chirp_lut[2769] = 8'd139; long_chirp_lut[2770] = 8'd 8; long_chirp_lut[2771] = 8'd 58; long_chirp_lut[2772] = 8'd214; long_chirp_lut[2773] = 8'd238; long_chirp_lut[2774] = 8'd 93; long_chirp_lut[2775] = 8'd 1;
|
||||
long_chirp_lut[2776] = 8'd101; long_chirp_lut[2777] = 8'd242; long_chirp_lut[2778] = 8'd208; long_chirp_lut[2779] = 8'd 51; long_chirp_lut[2780] = 8'd 11; long_chirp_lut[2781] = 8'd149; long_chirp_lut[2782] = 8'd254; long_chirp_lut[2783] = 8'd166;
|
||||
long_chirp_lut[2784] = 8'd 19; long_chirp_lut[2785] = 8'd 38; long_chirp_lut[2786] = 8'd194; long_chirp_lut[2787] = 8'd248; long_chirp_lut[2788] = 8'd117; long_chirp_lut[2789] = 8'd 2; long_chirp_lut[2790] = 8'd 79; long_chirp_lut[2791] = 8'd230;
|
||||
long_chirp_lut[2792] = 8'd224; long_chirp_lut[2793] = 8'd 70; long_chirp_lut[2794] = 8'd 4; long_chirp_lut[2795] = 8'd128; long_chirp_lut[2796] = 8'd251; long_chirp_lut[2797] = 8'd184; long_chirp_lut[2798] = 8'd 30; long_chirp_lut[2799] = 8'd 26;
|
||||
long_chirp_lut[2800] = 8'd178; long_chirp_lut[2801] = 8'd253; long_chirp_lut[2802] = 8'd135; long_chirp_lut[2803] = 8'd 6; long_chirp_lut[2804] = 8'd 64; long_chirp_lut[2805] = 8'd220; long_chirp_lut[2806] = 8'd233; long_chirp_lut[2807] = 8'd 83;
|
||||
long_chirp_lut[2808] = 8'd 2; long_chirp_lut[2809] = 8'd114; long_chirp_lut[2810] = 8'd247; long_chirp_lut[2811] = 8'd195; long_chirp_lut[2812] = 8'd 38; long_chirp_lut[2813] = 8'd 19; long_chirp_lut[2814] = 8'd167; long_chirp_lut[2815] = 8'd254;
|
||||
long_chirp_lut[2816] = 8'd145; long_chirp_lut[2817] = 8'd 9; long_chirp_lut[2818] = 8'd 57; long_chirp_lut[2819] = 8'd214; long_chirp_lut[2820] = 8'd237; long_chirp_lut[2821] = 8'd 90; long_chirp_lut[2822] = 8'd 1; long_chirp_lut[2823] = 8'd108;
|
||||
long_chirp_lut[2824] = 8'd245; long_chirp_lut[2825] = 8'd200; long_chirp_lut[2826] = 8'd 42; long_chirp_lut[2827] = 8'd 17; long_chirp_lut[2828] = 8'd164; long_chirp_lut[2829] = 8'd254; long_chirp_lut[2830] = 8'd148; long_chirp_lut[2831] = 8'd 10;
|
||||
long_chirp_lut[2832] = 8'd 55; long_chirp_lut[2833] = 8'd213; long_chirp_lut[2834] = 8'd238; long_chirp_lut[2835] = 8'd 91; long_chirp_lut[2836] = 8'd 1; long_chirp_lut[2837] = 8'd109; long_chirp_lut[2838] = 8'd246; long_chirp_lut[2839] = 8'd199;
|
||||
long_chirp_lut[2840] = 8'd 40; long_chirp_lut[2841] = 8'd 18; long_chirp_lut[2842] = 8'd167; long_chirp_lut[2843] = 8'd254; long_chirp_lut[2844] = 8'd143; long_chirp_lut[2845] = 8'd 8; long_chirp_lut[2846] = 8'd 60; long_chirp_lut[2847] = 8'd217;
|
||||
long_chirp_lut[2848] = 8'd235; long_chirp_lut[2849] = 8'd 84; long_chirp_lut[2850] = 8'd 2; long_chirp_lut[2851] = 8'd116; long_chirp_lut[2852] = 8'd249; long_chirp_lut[2853] = 8'd191; long_chirp_lut[2854] = 8'd 34; long_chirp_lut[2855] = 8'd 24;
|
||||
long_chirp_lut[2856] = 8'd177; long_chirp_lut[2857] = 8'd252; long_chirp_lut[2858] = 8'd132; long_chirp_lut[2859] = 8'd 4; long_chirp_lut[2860] = 8'd 71; long_chirp_lut[2861] = 8'd226; long_chirp_lut[2862] = 8'd227; long_chirp_lut[2863] = 8'd 71;
|
||||
long_chirp_lut[2864] = 8'd 4; long_chirp_lut[2865] = 8'd132; long_chirp_lut[2866] = 8'd252; long_chirp_lut[2867] = 8'd176; long_chirp_lut[2868] = 8'd 23; long_chirp_lut[2869] = 8'd 35; long_chirp_lut[2870] = 8'd193; long_chirp_lut[2871] = 8'd248;
|
||||
long_chirp_lut[2872] = 8'd113; long_chirp_lut[2873] = 8'd 1; long_chirp_lut[2874] = 8'd 89; long_chirp_lut[2875] = 8'd238; long_chirp_lut[2876] = 8'd212; long_chirp_lut[2877] = 8'd 53; long_chirp_lut[2878] = 8'd 12; long_chirp_lut[2879] = 8'd154;
|
||||
long_chirp_lut[2880] = 8'd255; long_chirp_lut[2881] = 8'd154; long_chirp_lut[2882] = 8'd 11; long_chirp_lut[2883] = 8'd 53; long_chirp_lut[2884] = 8'd213; long_chirp_lut[2885] = 8'd237; long_chirp_lut[2886] = 8'd 88; long_chirp_lut[2887] = 8'd 1;
|
||||
long_chirp_lut[2888] = 8'd115; long_chirp_lut[2889] = 8'd249; long_chirp_lut[2890] = 8'd189; long_chirp_lut[2891] = 8'd 32; long_chirp_lut[2892] = 8'd 26; long_chirp_lut[2893] = 8'd182; long_chirp_lut[2894] = 8'd251; long_chirp_lut[2895] = 8'd123;
|
||||
long_chirp_lut[2896] = 8'd 2; long_chirp_lut[2897] = 8'd 81; long_chirp_lut[2898] = 8'd234; long_chirp_lut[2899] = 8'd217; long_chirp_lut[2900] = 8'd 58; long_chirp_lut[2901] = 8'd 9; long_chirp_lut[2902] = 8'd150; long_chirp_lut[2903] = 8'd254;
|
||||
long_chirp_lut[2904] = 8'd157; long_chirp_lut[2905] = 8'd 12; long_chirp_lut[2906] = 8'd 52; long_chirp_lut[2907] = 8'd213; long_chirp_lut[2908] = 8'd237; long_chirp_lut[2909] = 8'd 86; long_chirp_lut[2910] = 8'd 2; long_chirp_lut[2911] = 8'd119;
|
||||
long_chirp_lut[2912] = 8'd250; long_chirp_lut[2913] = 8'd185; long_chirp_lut[2914] = 8'd 28; long_chirp_lut[2915] = 8'd 31; long_chirp_lut[2916] = 8'd189; long_chirp_lut[2917] = 8'd249; long_chirp_lut[2918] = 8'd114; long_chirp_lut[2919] = 8'd 1;
|
||||
long_chirp_lut[2920] = 8'd 91; long_chirp_lut[2921] = 8'd240; long_chirp_lut[2922] = 8'd208; long_chirp_lut[2923] = 8'd 47; long_chirp_lut[2924] = 8'd 16; long_chirp_lut[2925] = 8'd164; long_chirp_lut[2926] = 8'd254; long_chirp_lut[2927] = 8'd140;
|
||||
long_chirp_lut[2928] = 8'd 6; long_chirp_lut[2929] = 8'd 68; long_chirp_lut[2930] = 8'd226; long_chirp_lut[2931] = 8'd225; long_chirp_lut[2932] = 8'd 67; long_chirp_lut[2933] = 8'd 6; long_chirp_lut[2934] = 8'd141; long_chirp_lut[2935] = 8'd254;
|
||||
long_chirp_lut[2936] = 8'd162; long_chirp_lut[2937] = 8'd 14; long_chirp_lut[2938] = 8'd 49; long_chirp_lut[2939] = 8'd211; long_chirp_lut[2940] = 8'd237; long_chirp_lut[2941] = 8'd 86; long_chirp_lut[2942] = 8'd 2; long_chirp_lut[2943] = 8'd121;
|
||||
long_chirp_lut[2944] = 8'd251; long_chirp_lut[2945] = 8'd181; long_chirp_lut[2946] = 8'd 24; long_chirp_lut[2947] = 8'd 35; long_chirp_lut[2948] = 8'd196; long_chirp_lut[2949] = 8'd246; long_chirp_lut[2950] = 8'd104; long_chirp_lut[2951] = 8'd 1;
|
||||
long_chirp_lut[2952] = 8'd104; long_chirp_lut[2953] = 8'd246; long_chirp_lut[2954] = 8'd195; long_chirp_lut[2955] = 8'd 35; long_chirp_lut[2956] = 8'd 25; long_chirp_lut[2957] = 8'd182; long_chirp_lut[2958] = 8'd250; long_chirp_lut[2959] = 8'd119;
|
||||
long_chirp_lut[2960] = 8'd 1; long_chirp_lut[2961] = 8'd 90; long_chirp_lut[2962] = 8'd240; long_chirp_lut[2963] = 8'd207; long_chirp_lut[2964] = 8'd 45; long_chirp_lut[2965] = 8'd 18; long_chirp_lut[2966] = 8'd170; long_chirp_lut[2967] = 8'd253;
|
||||
long_chirp_lut[2968] = 8'd131; long_chirp_lut[2969] = 8'd 3; long_chirp_lut[2970] = 8'd 79; long_chirp_lut[2971] = 8'd234; long_chirp_lut[2972] = 8'd215; long_chirp_lut[2973] = 8'd 53; long_chirp_lut[2974] = 8'd 13; long_chirp_lut[2975] = 8'd161;
|
||||
long_chirp_lut[2976] = 8'd254; long_chirp_lut[2977] = 8'd140; long_chirp_lut[2978] = 8'd 5; long_chirp_lut[2979] = 8'd 71; long_chirp_lut[2980] = 8'd229; long_chirp_lut[2981] = 8'd220; long_chirp_lut[2982] = 8'd 59; long_chirp_lut[2983] = 8'd 10;
|
||||
long_chirp_lut[2984] = 8'd154; long_chirp_lut[2985] = 8'd254; long_chirp_lut[2986] = 8'd146; long_chirp_lut[2987] = 8'd 7; long_chirp_lut[2988] = 8'd 66; long_chirp_lut[2989] = 8'd226; long_chirp_lut[2990] = 8'd224; long_chirp_lut[2991] = 8'd 63;
|
||||
long_chirp_lut[2992] = 8'd 9; long_chirp_lut[2993] = 8'd150; long_chirp_lut[2994] = 8'd254; long_chirp_lut[2995] = 8'd149; long_chirp_lut[2996] = 8'd 8; long_chirp_lut[2997] = 8'd 64; long_chirp_lut[2998] = 8'd225; long_chirp_lut[2999] = 8'd225;
|
||||
long_chirp_lut[3000] = 8'd 64; long_chirp_lut[3001] = 8'd 8; long_chirp_lut[3002] = 8'd150; long_chirp_lut[3003] = 8'd254; long_chirp_lut[3004] = 8'd149; long_chirp_lut[3005] = 8'd 8; long_chirp_lut[3006] = 8'd 65; long_chirp_lut[3007] = 8'd225;
|
||||
long_chirp_lut[3008] = 8'd224; long_chirp_lut[3009] = 8'd 63; long_chirp_lut[3010] = 8'd 9; long_chirp_lut[3011] = 8'd152; long_chirp_lut[3012] = 8'd254; long_chirp_lut[3013] = 8'd146; long_chirp_lut[3014] = 8'd 7; long_chirp_lut[3015] = 8'd 68;
|
||||
long_chirp_lut[3016] = 8'd228; long_chirp_lut[3017] = 8'd221; long_chirp_lut[3018] = 8'd 59; long_chirp_lut[3019] = 8'd 11; long_chirp_lut[3020] = 8'd157; long_chirp_lut[3021] = 8'd254; long_chirp_lut[3022] = 8'd141; long_chirp_lut[3023] = 8'd 5;
|
||||
long_chirp_lut[3024] = 8'd 73; long_chirp_lut[3025] = 8'd232; long_chirp_lut[3026] = 8'd216; long_chirp_lut[3027] = 8'd 53; long_chirp_lut[3028] = 8'd 14; long_chirp_lut[3029] = 8'd165; long_chirp_lut[3030] = 8'd253; long_chirp_lut[3031] = 8'd132;
|
||||
long_chirp_lut[3032] = 8'd 3; long_chirp_lut[3033] = 8'd 82; long_chirp_lut[3034] = 8'd237; long_chirp_lut[3035] = 8'd209; long_chirp_lut[3036] = 8'd 45; long_chirp_lut[3037] = 8'd 19; long_chirp_lut[3038] = 8'd175; long_chirp_lut[3039] = 8'd251;
|
||||
long_chirp_lut[3040] = 8'd120; long_chirp_lut[3041] = 8'd 1; long_chirp_lut[3042] = 8'd 94; long_chirp_lut[3043] = 8'd243; long_chirp_lut[3044] = 8'd198; long_chirp_lut[3045] = 8'd 35; long_chirp_lut[3046] = 8'd 27; long_chirp_lut[3047] = 8'd188;
|
||||
long_chirp_lut[3048] = 8'd247; long_chirp_lut[3049] = 8'd105; long_chirp_lut[3050] = 8'd 1; long_chirp_lut[3051] = 8'd109; long_chirp_lut[3052] = 8'd249; long_chirp_lut[3053] = 8'd184; long_chirp_lut[3054] = 8'd 24; long_chirp_lut[3055] = 8'd 38;
|
||||
long_chirp_lut[3056] = 8'd202; long_chirp_lut[3057] = 8'd241; long_chirp_lut[3058] = 8'd 88; long_chirp_lut[3059] = 8'd 2; long_chirp_lut[3060] = 8'd127; long_chirp_lut[3061] = 8'd253; long_chirp_lut[3062] = 8'd167; long_chirp_lut[3063] = 8'd 14;
|
||||
long_chirp_lut[3064] = 8'd 53; long_chirp_lut[3065] = 8'd218; long_chirp_lut[3066] = 8'd230; long_chirp_lut[3067] = 8'd 69; long_chirp_lut[3068] = 8'd 7; long_chirp_lut[3069] = 8'd149; long_chirp_lut[3070] = 8'd254; long_chirp_lut[3071] = 8'd145;
|
||||
long_chirp_lut[3072] = 8'd 6; long_chirp_lut[3073] = 8'd 73; long_chirp_lut[3074] = 8'd232; long_chirp_lut[3075] = 8'd214; long_chirp_lut[3076] = 8'd 49; long_chirp_lut[3077] = 8'd 17; long_chirp_lut[3078] = 8'd172; long_chirp_lut[3079] = 8'd252;
|
||||
long_chirp_lut[3080] = 8'd120; long_chirp_lut[3081] = 8'd 1; long_chirp_lut[3082] = 8'd 97; long_chirp_lut[3083] = 8'd245; long_chirp_lut[3084] = 8'd193; long_chirp_lut[3085] = 8'd 30; long_chirp_lut[3086] = 8'd 33; long_chirp_lut[3087] = 8'd197;
|
||||
long_chirp_lut[3088] = 8'd243; long_chirp_lut[3089] = 8'd 92; long_chirp_lut[3090] = 8'd 2; long_chirp_lut[3091] = 8'd125; long_chirp_lut[3092] = 8'd253; long_chirp_lut[3093] = 8'd167; long_chirp_lut[3094] = 8'd 14; long_chirp_lut[3095] = 8'd 55;
|
||||
long_chirp_lut[3096] = 8'd220; long_chirp_lut[3097] = 8'd227; long_chirp_lut[3098] = 8'd 64; long_chirp_lut[3099] = 8'd 9; long_chirp_lut[3100] = 8'd157; long_chirp_lut[3101] = 8'd254; long_chirp_lut[3102] = 8'd135; long_chirp_lut[3103] = 8'd 3;
|
||||
long_chirp_lut[3104] = 8'd 84; long_chirp_lut[3105] = 8'd240; long_chirp_lut[3106] = 8'd203; long_chirp_lut[3107] = 8'd 37; long_chirp_lut[3108] = 8'd 26; long_chirp_lut[3109] = 8'd189; long_chirp_lut[3110] = 8'd246; long_chirp_lut[3111] = 8'd100;
|
||||
long_chirp_lut[3112] = 8'd 1; long_chirp_lut[3113] = 8'd120; long_chirp_lut[3114] = 8'd252; long_chirp_lut[3115] = 8'd171; long_chirp_lut[3116] = 8'd 15; long_chirp_lut[3117] = 8'd 53; long_chirp_lut[3118] = 8'd219; long_chirp_lut[3119] = 8'd228;
|
||||
long_chirp_lut[3120] = 8'd 64; long_chirp_lut[3121] = 8'd 10; long_chirp_lut[3122] = 8'd158; long_chirp_lut[3123] = 8'd254; long_chirp_lut[3124] = 8'd132; long_chirp_lut[3125] = 8'd 2; long_chirp_lut[3126] = 8'd 89; long_chirp_lut[3127] = 8'd242;
|
||||
long_chirp_lut[3128] = 8'd198; long_chirp_lut[3129] = 8'd 32; long_chirp_lut[3130] = 8'd 31; long_chirp_lut[3131] = 8'd197; long_chirp_lut[3132] = 8'd242; long_chirp_lut[3133] = 8'd 90; long_chirp_lut[3134] = 8'd 2; long_chirp_lut[3135] = 8'd132;
|
||||
long_chirp_lut[3136] = 8'd254; long_chirp_lut[3137] = 8'd157; long_chirp_lut[3138] = 8'd 9; long_chirp_lut[3139] = 8'd 66; long_chirp_lut[3140] = 8'd229; long_chirp_lut[3141] = 8'd216; long_chirp_lut[3142] = 8'd 49; long_chirp_lut[3143] = 8'd 18;
|
||||
long_chirp_lut[3144] = 8'd177; long_chirp_lut[3145] = 8'd250; long_chirp_lut[3146] = 8'd111; long_chirp_lut[3147] = 8'd 1; long_chirp_lut[3148] = 8'd111; long_chirp_lut[3149] = 8'd250; long_chirp_lut[3150] = 8'd176; long_chirp_lut[3151] = 8'd 18;
|
||||
long_chirp_lut[3152] = 8'd 50; long_chirp_lut[3153] = 8'd217; long_chirp_lut[3154] = 8'd228; long_chirp_lut[3155] = 8'd 64; long_chirp_lut[3156] = 8'd 10; long_chirp_lut[3157] = 8'd161; long_chirp_lut[3158] = 8'd253; long_chirp_lut[3159] = 8'd126;
|
||||
long_chirp_lut[3160] = 8'd 1; long_chirp_lut[3161] = 8'd 97; long_chirp_lut[3162] = 8'd246; long_chirp_lut[3163] = 8'd188; long_chirp_lut[3164] = 8'd 25; long_chirp_lut[3165] = 8'd 41; long_chirp_lut[3166] = 8'd209; long_chirp_lut[3167] = 8'd235;
|
||||
long_chirp_lut[3168] = 8'd 73; long_chirp_lut[3169] = 8'd 7; long_chirp_lut[3170] = 8'd151; long_chirp_lut[3171] = 8'd254; long_chirp_lut[3172] = 8'd135; long_chirp_lut[3173] = 8'd 3; long_chirp_lut[3174] = 8'd 89; long_chirp_lut[3175] = 8'd243;
|
||||
long_chirp_lut[3176] = 8'd195; long_chirp_lut[3177] = 8'd 29; long_chirp_lut[3178] = 8'd 36; long_chirp_lut[3179] = 8'd204; long_chirp_lut[3180] = 8'd237; long_chirp_lut[3181] = 8'd 78; long_chirp_lut[3182] = 8'd 5; long_chirp_lut[3183] = 8'd148;
|
||||
long_chirp_lut[3184] = 8'd254; long_chirp_lut[3185] = 8'd138; long_chirp_lut[3186] = 8'd 3; long_chirp_lut[3187] = 8'd 87; long_chirp_lut[3188] = 8'd242; long_chirp_lut[3189] = 8'd195; long_chirp_lut[3190] = 8'd 29; long_chirp_lut[3191] = 8'd 36;
|
||||
long_chirp_lut[3192] = 8'd204; long_chirp_lut[3193] = 8'd237; long_chirp_lut[3194] = 8'd 77; long_chirp_lut[3195] = 8'd 6; long_chirp_lut[3196] = 8'd150; long_chirp_lut[3197] = 8'd254; long_chirp_lut[3198] = 8'd135; long_chirp_lut[3199] = 8'd 2;
|
||||
long_chirp_lut[3200] = 8'd 91; long_chirp_lut[3201] = 8'd244; long_chirp_lut[3202] = 8'd191; long_chirp_lut[3203] = 8'd 26; long_chirp_lut[3204] = 8'd 41; long_chirp_lut[3205] = 8'd209; long_chirp_lut[3206] = 8'd233; long_chirp_lut[3207] = 8'd 70;
|
||||
long_chirp_lut[3208] = 8'd 9; long_chirp_lut[3209] = 8'd158; long_chirp_lut[3210] = 8'd253; long_chirp_lut[3211] = 8'd125; long_chirp_lut[3212] = 8'd 1; long_chirp_lut[3213] = 8'd101; long_chirp_lut[3214] = 8'd248; long_chirp_lut[3215] = 8'd181;
|
||||
long_chirp_lut[3216] = 8'd 19; long_chirp_lut[3217] = 8'd 50; long_chirp_lut[3218] = 8'd219; long_chirp_lut[3219] = 8'd225; long_chirp_lut[3220] = 8'd 58; long_chirp_lut[3221] = 8'd 14; long_chirp_lut[3222] = 8'd172; long_chirp_lut[3223] = 8'd251;
|
||||
long_chirp_lut[3224] = 8'd110; long_chirp_lut[3225] = 8'd 1; long_chirp_lut[3226] = 8'd118; long_chirp_lut[3227] = 8'd252; long_chirp_lut[3228] = 8'd164; long_chirp_lut[3229] = 8'd 11; long_chirp_lut[3230] = 8'd 66; long_chirp_lut[3231] = 8'd231;
|
||||
long_chirp_lut[3232] = 8'd212; long_chirp_lut[3233] = 8'd 42; long_chirp_lut[3234] = 8'd 25; long_chirp_lut[3235] = 8'd191; long_chirp_lut[3236] = 8'd243; long_chirp_lut[3237] = 8'd 88; long_chirp_lut[3238] = 8'd 3; long_chirp_lut[3239] = 8'd141;
|
||||
long_chirp_lut[3240] = 8'd255; long_chirp_lut[3241] = 8'd141; long_chirp_lut[3242] = 8'd 3; long_chirp_lut[3243] = 8'd 88; long_chirp_lut[3244] = 8'd244; long_chirp_lut[3245] = 8'd191; long_chirp_lut[3246] = 8'd 24; long_chirp_lut[3247] = 8'd 43;
|
||||
long_chirp_lut[3248] = 8'd213; long_chirp_lut[3249] = 8'd229; long_chirp_lut[3250] = 8'd 62; long_chirp_lut[3251] = 8'd 12; long_chirp_lut[3252] = 8'd169; long_chirp_lut[3253] = 8'd251; long_chirp_lut[3254] = 8'd111; long_chirp_lut[3255] = 8'd 1;
|
||||
long_chirp_lut[3256] = 8'd119; long_chirp_lut[3257] = 8'd253; long_chirp_lut[3258] = 8'd161; long_chirp_lut[3259] = 8'd 9; long_chirp_lut[3260] = 8'd 71; long_chirp_lut[3261] = 8'd235; long_chirp_lut[3262] = 8'd206; long_chirp_lut[3263] = 8'd 36;
|
||||
long_chirp_lut[3264] = 8'd 31; long_chirp_lut[3265] = 8'd201; long_chirp_lut[3266] = 8'd238; long_chirp_lut[3267] = 8'd 76; long_chirp_lut[3268] = 8'd 7; long_chirp_lut[3269] = 8'd156; long_chirp_lut[3270] = 8'd253; long_chirp_lut[3271] = 8'd123;
|
||||
long_chirp_lut[3272] = 8'd 1; long_chirp_lut[3273] = 8'd108; long_chirp_lut[3274] = 8'd251; long_chirp_lut[3275] = 8'd171; long_chirp_lut[3276] = 8'd 13; long_chirp_lut[3277] = 8'd 63; long_chirp_lut[3278] = 8'd230; long_chirp_lut[3279] = 8'd211;
|
||||
long_chirp_lut[3280] = 8'd 40; long_chirp_lut[3281] = 8'd 27; long_chirp_lut[3282] = 8'd196; long_chirp_lut[3283] = 8'd240; long_chirp_lut[3284] = 8'd 80; long_chirp_lut[3285] = 8'd 6; long_chirp_lut[3286] = 8'd153; long_chirp_lut[3287] = 8'd254;
|
||||
long_chirp_lut[3288] = 8'd125; long_chirp_lut[3289] = 8'd 1; long_chirp_lut[3290] = 8'd107; long_chirp_lut[3291] = 8'd251; long_chirp_lut[3292] = 8'd170; long_chirp_lut[3293] = 8'd 12; long_chirp_lut[3294] = 8'd 65; long_chirp_lut[3295] = 8'd232;
|
||||
long_chirp_lut[3296] = 8'd209; long_chirp_lut[3297] = 8'd 38; long_chirp_lut[3298] = 8'd 30; long_chirp_lut[3299] = 8'd200; long_chirp_lut[3300] = 8'd237; long_chirp_lut[3301] = 8'd 74; long_chirp_lut[3302] = 8'd 8; long_chirp_lut[3303] = 8'd161;
|
||||
long_chirp_lut[3304] = 8'd253; long_chirp_lut[3305] = 8'd116; long_chirp_lut[3306] = 8'd 1; long_chirp_lut[3307] = 8'd117; long_chirp_lut[3308] = 8'd253; long_chirp_lut[3309] = 8'd159; long_chirp_lut[3310] = 8'd 8; long_chirp_lut[3311] = 8'd 76;
|
||||
long_chirp_lut[3312] = 8'd239; long_chirp_lut[3313] = 8'd198; long_chirp_lut[3314] = 8'd 28; long_chirp_lut[3315] = 8'd 41; long_chirp_lut[3316] = 8'd213; long_chirp_lut[3317] = 8'd228; long_chirp_lut[3318] = 8'd 59; long_chirp_lut[3319] = 8'd 15;
|
||||
long_chirp_lut[3320] = 8'd178; long_chirp_lut[3321] = 8'd248; long_chirp_lut[3322] = 8'd 97; long_chirp_lut[3323] = 8'd 2; long_chirp_lut[3324] = 8'd138; long_chirp_lut[3325] = 8'd254; long_chirp_lut[3326] = 8'd137; long_chirp_lut[3327] = 8'd 2;
|
||||
long_chirp_lut[3328] = 8'd 98; long_chirp_lut[3329] = 8'd248; long_chirp_lut[3330] = 8'd176; long_chirp_lut[3331] = 8'd 14; long_chirp_lut[3332] = 8'd 61; long_chirp_lut[3333] = 8'd230; long_chirp_lut[3334] = 8'd210; long_chirp_lut[3335] = 8'd 37;
|
||||
long_chirp_lut[3336] = 8'd 31; long_chirp_lut[3337] = 8'd203; long_chirp_lut[3338] = 8'd235; long_chirp_lut[3339] = 8'd 69; long_chirp_lut[3340] = 8'd 11; long_chirp_lut[3341] = 8'd169; long_chirp_lut[3342] = 8'd250; long_chirp_lut[3343] = 8'd105;
|
||||
long_chirp_lut[3344] = 8'd 1; long_chirp_lut[3345] = 8'd132; long_chirp_lut[3346] = 8'd254; long_chirp_lut[3347] = 8'd142; long_chirp_lut[3348] = 8'd 3; long_chirp_lut[3349] = 8'd 95; long_chirp_lut[3350] = 8'd247; long_chirp_lut[3351] = 8'd178;
|
||||
long_chirp_lut[3352] = 8'd 15; long_chirp_lut[3353] = 8'd 61; long_chirp_lut[3354] = 8'd231; long_chirp_lut[3355] = 8'd209; long_chirp_lut[3356] = 8'd 36; long_chirp_lut[3357] = 8'd 33; long_chirp_lut[3358] = 8'd206; long_chirp_lut[3359] = 8'd233;
|
||||
long_chirp_lut[3360] = 8'd 64; long_chirp_lut[3361] = 8'd 13; long_chirp_lut[3362] = 8'd175; long_chirp_lut[3363] = 8'd248; long_chirp_lut[3364] = 8'd 96; long_chirp_lut[3365] = 8'd 3; long_chirp_lut[3366] = 8'd141; long_chirp_lut[3367] = 8'd254;
|
||||
long_chirp_lut[3368] = 8'd131; long_chirp_lut[3369] = 8'd 1; long_chirp_lut[3370] = 8'd107; long_chirp_lut[3371] = 8'd251; long_chirp_lut[3372] = 8'd164; long_chirp_lut[3373] = 8'd 9; long_chirp_lut[3374] = 8'd 75; long_chirp_lut[3375] = 8'd240;
|
||||
long_chirp_lut[3376] = 8'd195; long_chirp_lut[3377] = 8'd 24; long_chirp_lut[3378] = 8'd 47; long_chirp_lut[3379] = 8'd220; long_chirp_lut[3380] = 8'd220; long_chirp_lut[3381] = 8'd 46; long_chirp_lut[3382] = 8'd 25; long_chirp_lut[3383] = 8'd196;
|
||||
long_chirp_lut[3384] = 8'd239; long_chirp_lut[3385] = 8'd 73; long_chirp_lut[3386] = 8'd 9; long_chirp_lut[3387] = 8'd167; long_chirp_lut[3388] = 8'd250; long_chirp_lut[3389] = 8'd103; long_chirp_lut[3390] = 8'd 2; long_chirp_lut[3391] = 8'd136;
|
||||
long_chirp_lut[3392] = 8'd254; long_chirp_lut[3393] = 8'd134; long_chirp_lut[3394] = 8'd 1; long_chirp_lut[3395] = 8'd106; long_chirp_lut[3396] = 8'd251; long_chirp_lut[3397] = 8'd164; long_chirp_lut[3398] = 8'd 8; long_chirp_lut[3399] = 8'd 77;
|
||||
long_chirp_lut[3400] = 8'd241; long_chirp_lut[3401] = 8'd191; long_chirp_lut[3402] = 8'd 21; long_chirp_lut[3403] = 8'd 52; long_chirp_lut[3404] = 8'd225; long_chirp_lut[3405] = 8'd214; long_chirp_lut[3406] = 8'd 40; long_chirp_lut[3407] = 8'd 31;
|
||||
long_chirp_lut[3408] = 8'd204; long_chirp_lut[3409] = 8'd233; long_chirp_lut[3410] = 8'd 62; long_chirp_lut[3411] = 8'd 15; long_chirp_lut[3412] = 8'd180; long_chirp_lut[3413] = 8'd246; long_chirp_lut[3414] = 8'd 88; long_chirp_lut[3415] = 8'd 5;
|
||||
long_chirp_lut[3416] = 8'd154; long_chirp_lut[3417] = 8'd253; long_chirp_lut[3418] = 8'd114; long_chirp_lut[3419] = 8'd 1; long_chirp_lut[3420] = 8'd127; long_chirp_lut[3421] = 8'd254; long_chirp_lut[3422] = 8'd141; long_chirp_lut[3423] = 8'd 2;
|
||||
long_chirp_lut[3424] = 8'd101; long_chirp_lut[3425] = 8'd250; long_chirp_lut[3426] = 8'd166; long_chirp_lut[3427] = 8'd 9; long_chirp_lut[3428] = 8'd 77; long_chirp_lut[3429] = 8'd241; long_chirp_lut[3430] = 8'd189; long_chirp_lut[3431] = 8'd 20;
|
||||
long_chirp_lut[3432] = 8'd 55; long_chirp_lut[3433] = 8'd228; long_chirp_lut[3434] = 8'd210; long_chirp_lut[3435] = 8'd 35; long_chirp_lut[3436] = 8'd 36; long_chirp_lut[3437] = 8'd212; long_chirp_lut[3438] = 8'd227; long_chirp_lut[3439] = 8'd 53;
|
||||
long_chirp_lut[3440] = 8'd 21; long_chirp_lut[3441] = 8'd192; long_chirp_lut[3442] = 8'd240; long_chirp_lut[3443] = 8'd 73; long_chirp_lut[3444] = 8'd 10; long_chirp_lut[3445] = 8'd171; long_chirp_lut[3446] = 8'd249; long_chirp_lut[3447] = 8'd 94;
|
||||
long_chirp_lut[3448] = 8'd 4; long_chirp_lut[3449] = 8'd150; long_chirp_lut[3450] = 8'd253; long_chirp_lut[3451] = 8'd116; long_chirp_lut[3452] = 8'd 1; long_chirp_lut[3453] = 8'd128; long_chirp_lut[3454] = 8'd254; long_chirp_lut[3455] = 8'd138;
|
||||
long_chirp_lut[3456] = 8'd 2; long_chirp_lut[3457] = 8'd106; long_chirp_lut[3458] = 8'd252; long_chirp_lut[3459] = 8'd159; long_chirp_lut[3460] = 8'd 6; long_chirp_lut[3461] = 8'd 86; long_chirp_lut[3462] = 8'd246; long_chirp_lut[3463] = 8'd178;
|
||||
long_chirp_lut[3464] = 8'd 13; long_chirp_lut[3465] = 8'd 68; long_chirp_lut[3466] = 8'd237; long_chirp_lut[3467] = 8'd196; long_chirp_lut[3468] = 8'd 23; long_chirp_lut[3469] = 8'd 51; long_chirp_lut[3470] = 8'd226; long_chirp_lut[3471] = 8'd211;
|
||||
long_chirp_lut[3472] = 8'd 35; long_chirp_lut[3473] = 8'd 37; long_chirp_lut[3474] = 8'd213; long_chirp_lut[3475] = 8'd224; long_chirp_lut[3476] = 8'd 49; long_chirp_lut[3477] = 8'd 25; long_chirp_lut[3478] = 8'd199; long_chirp_lut[3479] = 8'd235;
|
||||
long_chirp_lut[3480] = 8'd 64; long_chirp_lut[3481] = 8'd 15; long_chirp_lut[3482] = 8'd183; long_chirp_lut[3483] = 8'd243; long_chirp_lut[3484] = 8'd 80; long_chirp_lut[3485] = 8'd 8; long_chirp_lut[3486] = 8'd167; long_chirp_lut[3487] = 8'd249;
|
||||
long_chirp_lut[3488] = 8'd 96; long_chirp_lut[3489] = 8'd 4; long_chirp_lut[3490] = 8'd151; long_chirp_lut[3491] = 8'd253; long_chirp_lut[3492] = 8'd112; long_chirp_lut[3493] = 8'd 1; long_chirp_lut[3494] = 8'd136; long_chirp_lut[3495] = 8'd254;
|
||||
long_chirp_lut[3496] = 8'd127; long_chirp_lut[3497] = 8'd 1; long_chirp_lut[3498] = 8'd120; long_chirp_lut[3499] = 8'd254; long_chirp_lut[3500] = 8'd142; long_chirp_lut[3501] = 8'd 2; long_chirp_lut[3502] = 8'd106; long_chirp_lut[3503] = 8'd252;
|
||||
long_chirp_lut[3504] = 8'd157; long_chirp_lut[3505] = 8'd 5; long_chirp_lut[3506] = 8'd 92; long_chirp_lut[3507] = 8'd248; long_chirp_lut[3508] = 8'd170; long_chirp_lut[3509] = 8'd 9; long_chirp_lut[3510] = 8'd 79; long_chirp_lut[3511] = 8'd244;
|
||||
long_chirp_lut[3512] = 8'd182; long_chirp_lut[3513] = 8'd 14; long_chirp_lut[3514] = 8'd 67; long_chirp_lut[3515] = 8'd238; long_chirp_lut[3516] = 8'd193; long_chirp_lut[3517] = 8'd 20; long_chirp_lut[3518] = 8'd 57; long_chirp_lut[3519] = 8'd231;
|
||||
long_chirp_lut[3520] = 8'd203; long_chirp_lut[3521] = 8'd 27; long_chirp_lut[3522] = 8'd 47; long_chirp_lut[3523] = 8'd224; long_chirp_lut[3524] = 8'd212; long_chirp_lut[3525] = 8'd 35; long_chirp_lut[3526] = 8'd 39; long_chirp_lut[3527] = 8'd216;
|
||||
long_chirp_lut[3528] = 8'd220; long_chirp_lut[3529] = 8'd 43; long_chirp_lut[3530] = 8'd 31; long_chirp_lut[3531] = 8'd209; long_chirp_lut[3532] = 8'd227; long_chirp_lut[3533] = 8'd 50; long_chirp_lut[3534] = 8'd 25; long_chirp_lut[3535] = 8'd201;
|
||||
long_chirp_lut[3536] = 8'd233; long_chirp_lut[3537] = 8'd 58; long_chirp_lut[3538] = 8'd 20; long_chirp_lut[3539] = 8'd193; long_chirp_lut[3540] = 8'd237; long_chirp_lut[3541] = 8'd 66; long_chirp_lut[3542] = 8'd 15; long_chirp_lut[3543] = 8'd185;
|
||||
long_chirp_lut[3544] = 8'd242; long_chirp_lut[3545] = 8'd 73; long_chirp_lut[3546] = 8'd 12; long_chirp_lut[3547] = 8'd178; long_chirp_lut[3548] = 8'd245; long_chirp_lut[3549] = 8'd 81; long_chirp_lut[3550] = 8'd 9; long_chirp_lut[3551] = 8'd171;
|
||||
long_chirp_lut[3552] = 8'd247; long_chirp_lut[3553] = 8'd 87; long_chirp_lut[3554] = 8'd 6; long_chirp_lut[3555] = 8'd164; long_chirp_lut[3556] = 8'd249; long_chirp_lut[3557] = 8'd 94; long_chirp_lut[3558] = 8'd 5; long_chirp_lut[3559] = 8'd158;
|
||||
long_chirp_lut[3560] = 8'd251; long_chirp_lut[3561] = 8'd100; long_chirp_lut[3562] = 8'd 3; long_chirp_lut[3563] = 8'd153; long_chirp_lut[3564] = 8'd252; long_chirp_lut[3565] = 8'd105; long_chirp_lut[3566] = 8'd 2; long_chirp_lut[3567] = 8'd148;
|
||||
long_chirp_lut[3568] = 8'd253; long_chirp_lut[3569] = 8'd110; long_chirp_lut[3570] = 8'd 2; long_chirp_lut[3571] = 8'd143; long_chirp_lut[3572] = 8'd254; long_chirp_lut[3573] = 8'd114; long_chirp_lut[3574] = 8'd 1; long_chirp_lut[3575] = 8'd139;
|
||||
long_chirp_lut[3576] = 8'd254; long_chirp_lut[3577] = 8'd118; long_chirp_lut[3578] = 8'd 1; long_chirp_lut[3579] = 8'd136; long_chirp_lut[3580] = 8'd254; long_chirp_lut[3581] = 8'd121; long_chirp_lut[3582] = 8'd 1; long_chirp_lut[3583] = 8'd133;
|
||||
long_chirp_lut[3584] = 8'd254; long_chirp_lut[3585] = 8'd123; long_chirp_lut[3586] = 8'd 1; long_chirp_lut[3587] = 8'd131; long_chirp_lut[3588] = 8'd254; long_chirp_lut[3589] = 8'd125; long_chirp_lut[3590] = 8'd 1; long_chirp_lut[3591] = 8'd129;
|
||||
long_chirp_lut[3592] = 8'd254; long_chirp_lut[3593] = 8'd127; long_chirp_lut[3594] = 8'd 1; long_chirp_lut[3595] = 8'd128; long_chirp_lut[3596] = 8'd254; long_chirp_lut[3597] = 8'd127; long_chirp_lut[3598] = 8'd 1; long_chirp_lut[3599] = 8'd128;
|
||||
|
||||
// Complete Short PLFM chirp LUT (0.5us, 30MHz to 10MHz)
|
||||
short_chirp_lut[ 0] = 8'd255; short_chirp_lut[ 1] = 8'd237; short_chirp_lut[ 2] = 8'd187; short_chirp_lut[ 3] = 8'd118; short_chirp_lut[ 4] = 8'd 49; short_chirp_lut[ 5] = 8'd 6; short_chirp_lut[ 6] = 8'd 7; short_chirp_lut[ 7] = 8'd 54;
|
||||
short_chirp_lut[ 8] = 8'd132; short_chirp_lut[ 9] = 8'd210; short_chirp_lut[10] = 8'd253; short_chirp_lut[11] = 8'd237; short_chirp_lut[12] = 8'd167; short_chirp_lut[13] = 8'd 75; short_chirp_lut[14] = 8'd 10; short_chirp_lut[15] = 8'd 10;
|
||||
short_chirp_lut[16] = 8'd 80; short_chirp_lut[17] = 8'd180; short_chirp_lut[18] = 8'd248; short_chirp_lut[19] = 8'd237; short_chirp_lut[20] = 8'd150; short_chirp_lut[21] = 8'd 45; short_chirp_lut[22] = 8'd 1; short_chirp_lut[23] = 8'd 54;
|
||||
short_chirp_lut[24] = 8'd167; short_chirp_lut[25] = 8'd249; short_chirp_lut[26] = 8'd228; short_chirp_lut[27] = 8'd118; short_chirp_lut[28] = 8'd 15; short_chirp_lut[29] = 8'd 18; short_chirp_lut[30] = 8'd127; short_chirp_lut[31] = 8'd238;
|
||||
short_chirp_lut[32] = 8'd235; short_chirp_lut[33] = 8'd118; short_chirp_lut[34] = 8'd 10; short_chirp_lut[35] = 8'd 34; short_chirp_lut[36] = 8'd167; short_chirp_lut[37] = 8'd254; short_chirp_lut[38] = 8'd187; short_chirp_lut[39] = 8'd 45;
|
||||
short_chirp_lut[40] = 8'd 8; short_chirp_lut[41] = 8'd129; short_chirp_lut[42] = 8'd248; short_chirp_lut[43] = 8'd201; short_chirp_lut[44] = 8'd 49; short_chirp_lut[45] = 8'd 10; short_chirp_lut[46] = 8'd145; short_chirp_lut[47] = 8'd254;
|
||||
short_chirp_lut[48] = 8'd167; short_chirp_lut[49] = 8'd 17; short_chirp_lut[50] = 8'd 46; short_chirp_lut[51] = 8'd210; short_chirp_lut[52] = 8'd235; short_chirp_lut[53] = 8'd 75; short_chirp_lut[54] = 8'd 7; short_chirp_lut[55] = 8'd155;
|
||||
short_chirp_lut[56] = 8'd253; short_chirp_lut[57] = 8'd118; short_chirp_lut[58] = 8'd 1; short_chirp_lut[59] = 8'd129;
|
||||
end
|
||||
|
||||
//chirp counter
|
||||
|
||||
always @(posedge clk_100m or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
chirp_counter <= 6'd1;
|
||||
end else begin
|
||||
if (chirp__toggling) begin
|
||||
if (chirp_counter == CHIRP_MAX) begin
|
||||
chirp_counter <= 6'd1;
|
||||
end else begin
|
||||
chirp_counter <= chirp_counter + 6'd1;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
// Elevation counter
|
||||
|
||||
always @(posedge clk_100m or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
elevation_counter <= 6'b1;
|
||||
end else begin
|
||||
if (elevation__toggling) begin
|
||||
if (elevation_counter == ELEVATION_MAX) begin
|
||||
elevation_counter <= 6'b1;
|
||||
end else begin
|
||||
elevation_counter <= elevation_counter + 6'b1;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
// Azimuth counter
|
||||
|
||||
always @(posedge clk_100m or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
azimuth_counter <= 6'd1;
|
||||
end else begin
|
||||
if (azimuth__toggling) begin
|
||||
if (azimuth_counter == AZIMUTH_MAX) begin
|
||||
azimuth_counter <= 6'd1;
|
||||
end else begin
|
||||
azimuth_counter <= azimuth_counter + 6'd1;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
// State register
|
||||
always @(posedge clk_120m or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
current_state <= IDLE;
|
||||
end else begin
|
||||
current_state <= next_state;
|
||||
end
|
||||
end
|
||||
|
||||
// Next state logic
|
||||
always @(*) begin
|
||||
case (current_state)
|
||||
IDLE: begin
|
||||
if (chirp__toggling && mixers_enable)
|
||||
next_state = LONG_CHIRP;
|
||||
else
|
||||
next_state = IDLE;
|
||||
end
|
||||
|
||||
LONG_CHIRP: begin
|
||||
if (sample_counter == T1_SAMPLES-1)
|
||||
next_state = LONG_LISTEN;
|
||||
else
|
||||
next_state = LONG_CHIRP;
|
||||
end
|
||||
|
||||
LONG_LISTEN: begin
|
||||
if (sample_counter == T1_RADAR_LISTENING-1) begin
|
||||
if (chirp_counter == (CHIRP_MAX/2)-1)
|
||||
next_state = GUARD_TIME;
|
||||
else
|
||||
next_state = LONG_CHIRP;
|
||||
end else begin
|
||||
next_state = LONG_LISTEN;
|
||||
end
|
||||
end
|
||||
|
||||
GUARD_TIME: begin
|
||||
if (sample_counter == GUARD_SAMPLES-1)
|
||||
next_state = SHORT_CHIRP;
|
||||
else
|
||||
next_state = GUARD_TIME;
|
||||
end
|
||||
|
||||
SHORT_CHIRP: begin
|
||||
if (sample_counter == T2_SAMPLES-1)
|
||||
next_state = SHORT_LISTEN;
|
||||
else
|
||||
next_state = SHORT_CHIRP;
|
||||
end
|
||||
|
||||
SHORT_LISTEN: begin
|
||||
if (sample_counter == T2_RADAR_LISTENING-1) begin
|
||||
if (chirp_counter == CHIRP_MAX-1)
|
||||
next_state = DONE;
|
||||
else
|
||||
next_state = SHORT_CHIRP;
|
||||
end else begin
|
||||
next_state = SHORT_LISTEN;
|
||||
end
|
||||
end
|
||||
|
||||
DONE: begin
|
||||
next_state = IDLE;
|
||||
end
|
||||
|
||||
default: begin
|
||||
next_state = IDLE;
|
||||
end
|
||||
endcase
|
||||
end
|
||||
|
||||
always @(posedge clk_120m or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
sample_counter <= 0;
|
||||
chirp_counter <= 0;
|
||||
chirp_valid <= 0;
|
||||
chirp_done <= 0;
|
||||
chirp_data <= 8'd128;
|
||||
rf_switch_ctrl <= 1'b0;
|
||||
adar_tr_1 <= 1'b0;
|
||||
adar_tr_2 <= 1'b0;
|
||||
adar_tr_3 <= 1'b0;
|
||||
adar_tr_4 <= 1'b0;
|
||||
end else if (mixers_enable) begin
|
||||
// Default outputs
|
||||
chirp_valid <= 0;
|
||||
chirp_done <= 0;
|
||||
rf_switch_ctrl <= 0;
|
||||
{adar_tr_1, adar_tr_2, adar_tr_3, adar_tr_4} <= 4'b0000;
|
||||
|
||||
// Sample counter increment logic
|
||||
if (current_state == LONG_CHIRP || current_state == LONG_LISTEN ||
|
||||
current_state == GUARD_TIME || current_state == SHORT_CHIRP ||
|
||||
current_state == SHORT_LISTEN) begin
|
||||
if (sample_counter == get_max_counter(current_state) - 1) begin
|
||||
sample_counter <= 0;
|
||||
// Increment chirp counter at end of listen states
|
||||
if (current_state == LONG_LISTEN || current_state == SHORT_LISTEN) begin
|
||||
chirp_counter <= chirp_counter + 1;
|
||||
end
|
||||
end else begin
|
||||
sample_counter <= sample_counter + 1;
|
||||
end
|
||||
end else begin
|
||||
sample_counter <= 0;
|
||||
end
|
||||
|
||||
// State-specific outputs
|
||||
case (current_state)
|
||||
IDLE: begin
|
||||
chirp_data <= 8'd128;
|
||||
end
|
||||
|
||||
LONG_CHIRP: begin
|
||||
rf_switch_ctrl <= 1'b1;
|
||||
{adar_tr_1, adar_tr_2, adar_tr_3, adar_tr_4} <= 4'b1111;
|
||||
|
||||
// CRITICAL FIX: Generate valid signal
|
||||
if (sample_counter < T1_SAMPLES) begin
|
||||
chirp_data <= long_chirp_lut[sample_counter];
|
||||
chirp_valid <= 1'b1; // Valid during entire chirp
|
||||
end else begin
|
||||
chirp_data <= 8'd128;
|
||||
end
|
||||
end
|
||||
|
||||
LONG_LISTEN: begin
|
||||
chirp_data <= 8'd128;
|
||||
rf_switch_ctrl <= 1'b0;
|
||||
end
|
||||
|
||||
GUARD_TIME: begin
|
||||
chirp_data <= 8'd128;
|
||||
rf_switch_ctrl <= 1'b0;
|
||||
end
|
||||
|
||||
SHORT_CHIRP: begin
|
||||
rf_switch_ctrl <= 1'b1;
|
||||
{adar_tr_1, adar_tr_2, adar_tr_3, adar_tr_4} <= 4'b1111;
|
||||
|
||||
// CRITICAL FIX: Generate valid signal for short chirp
|
||||
if (sample_counter < T2_SAMPLES) begin
|
||||
chirp_data <= short_chirp_lut[sample_counter];
|
||||
chirp_valid <= 1'b1; // Valid during entire chirp
|
||||
end else begin
|
||||
chirp_data <= 8'd128;
|
||||
end
|
||||
end
|
||||
|
||||
SHORT_LISTEN: begin
|
||||
chirp_data <= 8'd128;
|
||||
rf_switch_ctrl <= 1'b0;
|
||||
end
|
||||
|
||||
DONE: begin
|
||||
chirp_done <= 1'b1;
|
||||
chirp_data <= 8'd128;
|
||||
end
|
||||
|
||||
default: begin
|
||||
chirp_data <= 8'd128;
|
||||
end
|
||||
endcase
|
||||
end else begin
|
||||
// Mixers disabled
|
||||
chirp_data <= 8'd128;
|
||||
chirp_valid <= 0;
|
||||
chirp_done <= 0;
|
||||
rf_switch_ctrl <= 0;
|
||||
{adar_tr_1, adar_tr_2, adar_tr_3, adar_tr_4} <= 4'b0000;
|
||||
sample_counter <= 0;
|
||||
end
|
||||
end
|
||||
|
||||
// Helper function to get max counter for each state
|
||||
function [15:0] get_max_counter;
|
||||
input [2:0] state;
|
||||
begin
|
||||
case (state)
|
||||
LONG_CHIRP: get_max_counter = T1_SAMPLES;
|
||||
LONG_LISTEN: get_max_counter = T1_RADAR_LISTENING;
|
||||
GUARD_TIME: get_max_counter = GUARD_SAMPLES;
|
||||
SHORT_CHIRP: get_max_counter = T2_SAMPLES;
|
||||
SHORT_LISTEN: get_max_counter = T2_RADAR_LISTENING;
|
||||
default: get_max_counter = 0;
|
||||
endcase
|
||||
end
|
||||
endfunction
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,353 @@
|
||||
`timescale 1ns / 1ps
|
||||
|
||||
module radar_receiver_final (
|
||||
input wire clk, // 100MHz
|
||||
input wire reset_n,
|
||||
|
||||
// ADC Physical Interface (LVDS Inputs)
|
||||
input wire [7:0] adc_d_p, // ADC Data P (LVDS)
|
||||
input wire [7:0] adc_d_n, // ADC Data N (LVDS)
|
||||
input wire adc_dco_p, // Data Clock Output P (400MHz LVDS)
|
||||
input wire adc_dco_n, // Data Clock Output N (400MHz LVDS)
|
||||
output wire adc_pwdn,
|
||||
|
||||
output reg [31:0] doppler_output,
|
||||
output reg doppler_valid,
|
||||
output reg [4:0] doppler_bin,
|
||||
output reg [5:0] range_bin
|
||||
);
|
||||
|
||||
// ========== INTERNAL SIGNALS ==========
|
||||
wire use_long_chirp;
|
||||
wire [5:0] chirp_counter;
|
||||
wire chirp_start;
|
||||
wire azimuth_change;
|
||||
wire elevation_change;
|
||||
|
||||
wire [1:0] segment_request;
|
||||
wire mem_request;
|
||||
wire [15:0] ref_i, ref_q;
|
||||
wire mem_ready;
|
||||
|
||||
wire [15:0] adc_i_scaled, adc_q_scaled;
|
||||
wire adc_valid_sync;
|
||||
|
||||
// Reference signals for the processing chain
|
||||
wire [15:0] long_chirp_real, long_chirp_imag;
|
||||
wire [15:0] short_chirp_real, short_chirp_imag;
|
||||
|
||||
// ========== DOPPLER PROCESSING SIGNALS ==========
|
||||
wire [31:0] range_data_32bit;
|
||||
wire range_data_valid;
|
||||
wire new_chirp_frame;
|
||||
|
||||
// Doppler processor outputs
|
||||
wire [31:0] doppler_spectrum;
|
||||
wire doppler_spectrum_valid;
|
||||
wire [4:0] doppler_bin_out;
|
||||
wire [5:0] doppler_range_bin_out;
|
||||
wire doppler_processing;
|
||||
wire doppler_frame_done;
|
||||
|
||||
// ========== RANGE BIN DECIMATOR SIGNALS ==========
|
||||
wire signed [15:0] decimated_range_i;
|
||||
wire signed [15:0] decimated_range_q;
|
||||
wire decimated_range_valid;
|
||||
wire [5:0] decimated_range_bin;
|
||||
|
||||
// ========== MODULE INSTANTIATIONS ==========
|
||||
reg clk_400m;
|
||||
|
||||
lvds_to_cmos_400m clk_400m_inst(
|
||||
// ADC Physical Interface (LVDS Inputs)
|
||||
.clk_400m_p(adc_dco_p), // Data Clock Output P (400MHz LVDS, 2.5V)
|
||||
.clk_400m_n(adc_dco_n), // Data Clock Output N (400MHz LVDS, 2.5V)
|
||||
.reset_n(reset_n), // Active-low reset
|
||||
|
||||
// CMOS Output Interface (400MHz Domain)
|
||||
.clk_400m_cmos(clk_400m) // ADC data clock (CMOS, 3.3V)
|
||||
);
|
||||
|
||||
// 1. ADC + CDC + AGC
|
||||
|
||||
// CMOS Output Interface (400MHz Domain)
|
||||
wire [7:0] adc_data_cmos; // 8-bit ADC data (CMOS)
|
||||
wire adc_dco_cmos; // ADC data clock (CMOS, 400MHz)
|
||||
wire adc_valid; // Data valid signal
|
||||
|
||||
wire [7:0] cdc_data_cmos; // 8-bit ADC data (CMOS)
|
||||
wire cdc_valid; // Data valid signal
|
||||
|
||||
|
||||
ad9484_lvds_to_cmos_400m adc (
|
||||
.adc_d_p(adc_d_p),
|
||||
.adc_d_n(adc_d_n),
|
||||
.adc_dco_p(adc_dco_p),
|
||||
.adc_dco_n(adc_dco_n),
|
||||
.reset_n(reset_n),
|
||||
.adc_data_cmos(adc_data_cmos),
|
||||
.adc_dco_cmos(adc_dco_cmos),
|
||||
.adc_valid(adc_valid),
|
||||
.adc_pwdn(adc_pwdn)
|
||||
);
|
||||
|
||||
cdc_adc_to_processing #(
|
||||
.WIDTH(8),
|
||||
.STAGES(3)
|
||||
)cdc(
|
||||
.src_clk(adc_dco_cmos),
|
||||
.dst_clk(clk_400m),
|
||||
.reset_n(reset_n),
|
||||
.src_data(adc_data_cmos),
|
||||
.src_valid(adc_valid),
|
||||
.dst_data(cdc_data_cmos),
|
||||
.dst_valid(cdc_valid)
|
||||
);
|
||||
|
||||
// 2. DDC Input Interface
|
||||
wire signed [17:0] ddc_out_i;
|
||||
wire signed [17:0] ddc_out_q;
|
||||
|
||||
wire ddc_valid_i;
|
||||
wire ddc_valid_q;
|
||||
|
||||
ddc_400m_enhanced ddc(
|
||||
.clk_400m(clk_400m), // 400MHz clock from ADC DCO
|
||||
.clk_100m(clk), // 100MHz system clock //used by the 2 FIR
|
||||
.reset_n(reset_n),
|
||||
.adc_data(cdc_data_cmos), // ADC data at 400MHz (unsigned 0-255)
|
||||
.adc_data_valid_i(cdc_valid), // Valid at 400MHz
|
||||
.adc_data_valid_q(cdc_valid), // Valid at 400MHz
|
||||
.baseband_i(ddc_out_i), // I output at 100MHz
|
||||
.baseband_q(ddc_out_q), // Q output at 100MHz
|
||||
.baseband_valid_i(ddc_valid_i), // Valid at 100MHz
|
||||
.baseband_valid_q(ddc_valid_q),
|
||||
.mixers_enable(1'b1),
|
||||
.bypass_mode(1'b1)
|
||||
);
|
||||
|
||||
ddc_input_interface ddc_if (
|
||||
.clk(clk),
|
||||
.reset_n(reset_n),
|
||||
.ddc_i(ddc_out_i),
|
||||
.ddc_q(ddc_out_q),
|
||||
.valid_i(ddc_valid_i),
|
||||
.valid_q(ddc_valid_q),
|
||||
.adc_i(adc_i_scaled),
|
||||
.adc_q(adc_q_scaled),
|
||||
.adc_valid(adc_valid_sync),
|
||||
.data_sync_error()
|
||||
);
|
||||
|
||||
// 3. Dual Chirp Memory Loader
|
||||
|
||||
chirp_memory_loader_param chirp_mem (
|
||||
.clk(clk),
|
||||
.reset_n(reset_n),
|
||||
.segment_select(segment_request),
|
||||
.mem_request(mem_request),
|
||||
.use_long_chirp(use_long_chirp),
|
||||
.sample_addr(sample_addr_from_chain),
|
||||
.ref_i(ref_i),
|
||||
.ref_q(ref_q),
|
||||
.mem_ready(mem_ready)
|
||||
);
|
||||
|
||||
// Sample address generator
|
||||
reg [9:0] sample_addr_reg;
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
sample_addr_reg <= 0;
|
||||
end else if (mem_request) begin
|
||||
sample_addr_reg <= sample_addr_reg + 1;
|
||||
if (sample_addr_reg == 1023) sample_addr_reg <= 0;
|
||||
end
|
||||
end
|
||||
assign sample_addr_wire = sample_addr_reg;
|
||||
|
||||
// 4. CRITICAL: Reference Chirp Latency Buffer
|
||||
// This aligns reference data with FFT output (2159 cycle delay)
|
||||
wire [15:0] delayed_ref_i, delayed_ref_q;
|
||||
wire mem_ready_delayed;
|
||||
|
||||
latency_buffer_2159 #(
|
||||
.DATA_WIDTH(32), // 16-bit I + 16-bit Q
|
||||
.LATENCY(3187)
|
||||
) ref_latency_buffer (
|
||||
.clk(clk),
|
||||
.reset_n(reset_n),
|
||||
.data_in({ref_i, ref_q}),
|
||||
.valid_in(mem_request),
|
||||
.data_out({delayed_ref_i, delayed_ref_q}),
|
||||
.valid_out(mem_ready_delayed)
|
||||
);
|
||||
|
||||
// Assign delayed reference signals
|
||||
assign long_chirp_real = delayed_ref_i;
|
||||
assign long_chirp_imag = delayed_ref_q;
|
||||
assign short_chirp_real = delayed_ref_i;
|
||||
assign short_chirp_imag = delayed_ref_q;
|
||||
|
||||
// 5. Dual Chirp Matched Filter
|
||||
wire [9:0] sample_addr_from_chain;
|
||||
|
||||
wire signed [15:0] range_profile_i;
|
||||
wire signed [15:0] range_profile_q;
|
||||
wire range_valid;
|
||||
|
||||
matched_filter_multi_segment mf_dual (
|
||||
.clk(clk),
|
||||
.reset_n(reset_n),
|
||||
.ddc_i({{2{adc_i_scaled[15]}}, adc_i_scaled}),
|
||||
.ddc_q({{2{adc_q_scaled[15]}}, adc_q_scaled}),
|
||||
.ddc_valid(adc_valid_sync),
|
||||
.use_long_chirp(use_long_chirp),
|
||||
.chirp_counter(chirp_counter),
|
||||
.mc_new_chirp(mc_new_chirp),
|
||||
.mc_new_elevation(mc_new_elevation),
|
||||
.mc_new_azimuth(mc_new_azimuth),
|
||||
.long_chirp_real(delayed_ref_i), // From latency buffer
|
||||
.long_chirp_imag(delayed_ref_q),
|
||||
.short_chirp_real(delayed_ref_i), // Same for short chirp
|
||||
.short_chirp_imag(delayed_ref_q),
|
||||
.segment_request(segment_request),
|
||||
.mem_request(mem_request),
|
||||
.sample_addr_out(sample_addr_from_chain),
|
||||
.ref_i(16'd0), // Direct ref to multi_seg
|
||||
.ref_q(16'd0),
|
||||
.mem_ready(mem_ready),
|
||||
.pc_i_w(range_profile_i),
|
||||
.pc_q_w(range_profile_q),
|
||||
.pc_valid_w(range_valid)
|
||||
);
|
||||
|
||||
// ========== CRITICAL: RANGE BIN DECIMATOR ==========
|
||||
// Convert 1024 range bins to 64 bins for Doppler
|
||||
range_bin_decimator #(
|
||||
.INPUT_BINS(1024),
|
||||
.OUTPUT_BINS(64),
|
||||
.DECIMATION_FACTOR(16)
|
||||
) range_decim (
|
||||
.clk(clk),
|
||||
.reset_n(reset_n),
|
||||
.range_i_in(range_profile_i),
|
||||
.range_q_in(range_profile_q),
|
||||
.range_valid_in(range_valid),
|
||||
.range_i_out(decimated_range_i),
|
||||
.range_q_out(decimated_range_q),
|
||||
.range_valid_out(decimated_range_valid),
|
||||
.range_bin_index(decimated_range_bin),
|
||||
.decimation_mode(2'b01), // Peak detection mode
|
||||
.start_bin(10'd0)
|
||||
);
|
||||
|
||||
// ========== FRAME SYNC USING chirp_counter ==========
|
||||
reg [5:0] chirp_counter_prev;
|
||||
reg new_frame_pulse;
|
||||
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
chirp_counter_prev <= 6'd0;
|
||||
new_frame_pulse <= 1'b0;
|
||||
end else begin
|
||||
// Default: no pulse
|
||||
new_frame_pulse <= 1'b0;
|
||||
|
||||
// ===== CHOOSE ONE FRAME DETECTION METHOD =====
|
||||
|
||||
// METHOD A: Detect frame start at chirp_counter = 0
|
||||
// (Assumes frames are 64 chirps: 0-63)
|
||||
//if (chirp_counter == 6'd0 && chirp_counter_prev != 6'd0) begin
|
||||
// new_frame_pulse <= 1'b1;
|
||||
//end
|
||||
|
||||
// METHOD B: Detect frame start at chirp_counter = 0 AND 32
|
||||
// (For 32-chirp frames in a 64-chirp sequence)
|
||||
if ((chirp_counter == 6'd0 || chirp_counter == 6'd32) &&
|
||||
(chirp_counter_prev != chirp_counter)) begin
|
||||
new_frame_pulse <= 1'b1;
|
||||
end
|
||||
|
||||
// METHOD C: Programmable frame start
|
||||
// localparam FRAME_START_CHIRP = 6'd0; // Set based on your sequence
|
||||
// if (chirp_counter == FRAME_START_CHIRP &&
|
||||
// chirp_counter_prev != FRAME_START_CHIRP) begin
|
||||
// new_frame_pulse <= 1'b1;
|
||||
// end
|
||||
|
||||
// Store previous value
|
||||
chirp_counter_prev <= chirp_counter;
|
||||
end
|
||||
end
|
||||
|
||||
assign new_chirp_frame = new_frame_pulse;
|
||||
|
||||
// ========== DATA PACKING FOR DOPPLER ==========
|
||||
assign range_data_32bit = {decimated_range_q, decimated_range_i};
|
||||
assign range_data_valid = decimated_range_valid;
|
||||
|
||||
// ========== DOPPLER PROCESSOR ==========
|
||||
doppler_processor_optimized #(
|
||||
.DOPPLER_FFT_SIZE(32),
|
||||
.RANGE_BINS(64),
|
||||
.CHIRPS_PER_FRAME(32) // MUST MATCH YOUR ACTUAL FRAME SIZE!
|
||||
) doppler_proc (
|
||||
.clk(clk),
|
||||
.reset_n(reset_n),
|
||||
.range_data(range_data_32bit),
|
||||
.data_valid(range_data_valid),
|
||||
.new_chirp_frame(new_chirp_frame),
|
||||
|
||||
// Outputs
|
||||
.doppler_output(doppler_output),
|
||||
.doppler_valid(doppler_valid),
|
||||
.doppler_bin(doppler_bin),
|
||||
.range_bin(doppler_range_bin_out),
|
||||
|
||||
// Status
|
||||
.processing_active(doppler_processing),
|
||||
.frame_complete(doppler_frame_done),
|
||||
.status()
|
||||
);
|
||||
|
||||
// ========== OUTPUT CONNECTIONS ==========
|
||||
assign doppler_range_bin = doppler_range_bin_out;
|
||||
assign doppler_processing_active = doppler_processing;
|
||||
assign doppler_frame_complete = doppler_frame_done;
|
||||
|
||||
// ========== STATUS ==========
|
||||
|
||||
// ========== DEBUG AND VERIFICATION ==========
|
||||
reg [31:0] frame_counter;
|
||||
reg [5:0] chirps_in_current_frame;
|
||||
|
||||
always @(posedge clk or negedge reset_n) begin
|
||||
if (!reset_n) begin
|
||||
frame_counter <= 0;
|
||||
chirps_in_current_frame <= 0;
|
||||
end else begin
|
||||
// Count chirps in current frame
|
||||
if (range_data_valid && decimated_range_bin == 0) begin
|
||||
// First range bin of a chirp
|
||||
chirps_in_current_frame <= chirps_in_current_frame + 1;
|
||||
end
|
||||
|
||||
// Detect frame completion
|
||||
if (new_chirp_frame) begin
|
||||
frame_counter <= frame_counter + 1;
|
||||
$display("[TOP] Frame %0d started. Previous frame had %0d chirps",
|
||||
frame_counter, chirps_in_current_frame);
|
||||
chirps_in_current_frame <= 0;
|
||||
end
|
||||
|
||||
// Monitor chirp counter pattern
|
||||
if (chirp_counter != chirp_counter_prev) begin
|
||||
$display("[TOP] chirp_counter: %0d ? %0d",
|
||||
chirp_counter_prev, chirp_counter);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,157 @@
|
||||
`timescale 1ns / 1ps
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// Company:
|
||||
// Engineer:
|
||||
//
|
||||
// Create Date: 19:04:35 12/14/2025
|
||||
// Design Name:
|
||||
// Module Name: radar_transmitter
|
||||
// Project Name:
|
||||
// Target Devices:
|
||||
// Tool versions:
|
||||
// Description:
|
||||
//
|
||||
// Dependencies:
|
||||
//
|
||||
// Revision:
|
||||
// Revision 0.01 - File Created
|
||||
// Additional Comments:
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
module radar_transmitter(
|
||||
// System Clocks
|
||||
input wire clk_100m, // System clock
|
||||
input wire clk_120m_dac, // 120MHz DAC clock
|
||||
input wire reset_n,
|
||||
|
||||
// DAC Interface
|
||||
output wire [7:0] dac_data,
|
||||
output wire dac_clk,
|
||||
output wire dac_sleep,
|
||||
output wire rx_mixer_en,
|
||||
output wire tx_mixer_en,
|
||||
|
||||
// STM32 Control Interface
|
||||
input wire stm32_new_chirp,
|
||||
input wire stm32_new_elevation,
|
||||
input wire stm32_new_azimuth,
|
||||
input wire stm32_mixers_enable,
|
||||
|
||||
output wire fpga_rf_switch,
|
||||
|
||||
// ADAR1000 Control Interface
|
||||
output wire adar_tx_load_1,
|
||||
output wire adar_rx_load_1,
|
||||
output wire adar_tx_load_2,
|
||||
output wire adar_rx_load_2,
|
||||
output wire adar_tx_load_3,
|
||||
output wire adar_rx_load_3,
|
||||
output wire adar_tx_load_4,
|
||||
output wire adar_rx_load_4,
|
||||
output wire adar_tr_1,
|
||||
output wire adar_tr_2,
|
||||
output wire adar_tr_3,
|
||||
output wire adar_tr_4,
|
||||
|
||||
// Level Shifter SPI Interface (STM32F7 to ADAR1000)
|
||||
input wire stm32_sclk_3v3,
|
||||
input wire stm32_mosi_3v3,
|
||||
output wire stm32_miso_3v3,
|
||||
input wire stm32_cs_adar1_3v3,
|
||||
input wire stm32_cs_adar2_3v3,
|
||||
input wire stm32_cs_adar3_3v3,
|
||||
input wire stm32_cs_adar4_3v3,
|
||||
|
||||
output wire stm32_sclk_1v8,
|
||||
output wire stm32_mosi_1v8,
|
||||
input wire stm32_miso_1v8,
|
||||
output wire stm32_cs_adar1_1v8,
|
||||
output wire stm32_cs_adar2_1v8,
|
||||
output wire stm32_cs_adar3_1v8,
|
||||
output wire stm32_cs_adar4_1v8,
|
||||
|
||||
// Beam Position Tracking
|
||||
output wire [5:0] current_elevation,
|
||||
output wire [5:0] current_azimuth,
|
||||
output wire [5:0] current_chirp,
|
||||
output wire new_chirp_frame
|
||||
|
||||
|
||||
);
|
||||
|
||||
// Edge Detection Signals
|
||||
wire new_chirp_pulse;
|
||||
wire new_elevation_pulse;
|
||||
wire new_azimuth_pulse;
|
||||
|
||||
// Chirp Control Signals
|
||||
wire [7:0] chirp_data;
|
||||
wire chirp_valid;
|
||||
wire chirp_sequence_done;
|
||||
|
||||
// Enhanced STM32 Input Edge Detection with Debouncing
|
||||
edge_detector_enhanced chirp_edge (
|
||||
.clk(clk_100m),
|
||||
.reset_n(reset_n),
|
||||
.signal_in(stm32_new_chirp),
|
||||
.rising_falling_edge(new_chirp_pulse)
|
||||
);
|
||||
|
||||
edge_detector_enhanced elevation_edge (
|
||||
.clk(clk_100m),
|
||||
.reset_n(reset_n),
|
||||
.signal_in(stm32_new_elevation),
|
||||
.rising_falling_edge(new_elevation_pulse)
|
||||
);
|
||||
|
||||
edge_detector_enhanced azimuth_edge (
|
||||
.clk(clk_100m),
|
||||
.reset_n(reset_n),
|
||||
.signal_in(stm32_new_azimuth),
|
||||
.rising_falling_edge(new_azimuth_pulse)
|
||||
);
|
||||
|
||||
// Enhanced PLFM Chirp Generation
|
||||
plfm_chirp_controller_enhanced plfm_chirp_inst (
|
||||
.clk_120m(clk_120m_dac),
|
||||
.clk_100m(clk_100m),
|
||||
.reset_n(reset_n),
|
||||
.new_chirp(new_chirp_pulse),
|
||||
.new_elevation(new_elevation_pulse),
|
||||
.new_azimuth(new_azimuth_pulse),
|
||||
.new_chirp_frame(new_chirp_frame),
|
||||
.mixers_enable(stm32_mixers_enable),
|
||||
.chirp_data(chirp_data),
|
||||
.chirp_valid(chirp_valid),
|
||||
.chirp_done(chirp_sequence_done),
|
||||
.rf_switch_ctrl(fpga_rf_switch),
|
||||
.rx_mixer_en(rx_mixer_en),
|
||||
.tx_mixer_en(tx_mixer_en),
|
||||
.adar_tx_load_1(adar_tx_load_1),
|
||||
.adar_rx_load_1(adar_rx_load_1),
|
||||
.adar_tx_load_2(adar_tx_load_2),
|
||||
.adar_rx_load_2(adar_rx_load_2),
|
||||
.adar_tx_load_3(adar_tx_load_3),
|
||||
.adar_rx_load_3(adar_rx_load_3),
|
||||
.adar_tx_load_4(adar_tx_load_4),
|
||||
.adar_rx_load_4(adar_rx_load_4),
|
||||
.adar_tr_1(adar_tr_1),
|
||||
.adar_tr_2(adar_tr_2),
|
||||
.adar_tr_3(adar_tr_3),
|
||||
.adar_tr_4(adar_tr_4),
|
||||
.elevation_counter(current_elevation),
|
||||
.azimuth_counter(current_azimuth),
|
||||
.chirp_counter(current_chirp)
|
||||
);
|
||||
|
||||
// Enhanced DAC Interface
|
||||
dac_interface_enhanced dac_interface_inst (
|
||||
.clk_120m(clk_120m_dac),
|
||||
.reset_n(reset_n),
|
||||
.chirp_data(chirp_data),
|
||||
.chirp_valid(chirp_valid),
|
||||
.dac_data(dac_data),
|
||||
.dac_clk(dac_clk),
|
||||
.dac_sleep(dac_sleep)
|
||||
);
|
||||
endmodule
|
||||
@@ -0,0 +1,50 @@
|
||||
0095
|
||||
000d
|
||||
ffdd
|
||||
0007
|
||||
008c
|
||||
015e
|
||||
026b
|
||||
039c
|
||||
04d4
|
||||
05f9
|
||||
06ef
|
||||
07a1
|
||||
07fd
|
||||
07fd
|
||||
07a0
|
||||
06ef
|
||||
05fa
|
||||
04d8
|
||||
03a5
|
||||
027d
|
||||
017c
|
||||
00bc
|
||||
004d
|
||||
003d
|
||||
008f
|
||||
013b
|
||||
0234
|
||||
0364
|
||||
04b2
|
||||
05ff
|
||||
072e
|
||||
0825
|
||||
08ce
|
||||
091a
|
||||
0904
|
||||
088d
|
||||
07c3
|
||||
06b9
|
||||
0589
|
||||
0450
|
||||
032d
|
||||
023c
|
||||
0197
|
||||
014e
|
||||
016c
|
||||
01f1
|
||||
02d3
|
||||
0402
|
||||
0563
|
||||
06db
|
||||
@@ -0,0 +1,50 @@
|
||||
f8b6
|
||||
f791
|
||||
f64d
|
||||
f505
|
||||
f3d6
|
||||
f2d8
|
||||
f221
|
||||
f1c0
|
||||
f1bb
|
||||
f210
|
||||
f2b6
|
||||
f39b
|
||||
f4a8
|
||||
f5c1
|
||||
f6c9
|
||||
f7a6
|
||||
f840
|
||||
f886
|
||||
f86d
|
||||
f7f5
|
||||
f724
|
||||
f60b
|
||||
f4bf
|
||||
f35b
|
||||
f1fc
|
||||
f0bf
|
||||
efbe
|
||||
ef0d
|
||||
eeb8
|
||||
eec5
|
||||
ef2e
|
||||
efe7
|
||||
f0db
|
||||
f1f0
|
||||
f308
|
||||
f405
|
||||
f4cc
|
||||
f545
|
||||
f560
|
||||
f516
|
||||
f467
|
||||
f35f
|
||||
f210
|
||||
f094
|
||||
ef07
|
||||
ed88
|
||||
ec36
|
||||
eb2a
|
||||
ea78
|
||||
ea29
|
||||
Reference in New Issue
Block a user