Line 135... |
Line 135... |
parameter INP_FILE = "IQ_chirp_signal.txt",
|
parameter INP_FILE = "IQ_chirp_signal.txt",
|
parameter PING_FILE = "IQ_chirp_ping.txt",
|
parameter PING_FILE = "IQ_chirp_ping.txt",
|
parameter SIM_DURATION = 24000000 // simulation duration after reset duration
|
parameter SIM_DURATION = 24000000 // simulation duration after reset duration
|
`endif
|
`endif
|
);
|
);
|
reg clk; // тактовая частота
|
reg clk; // clock
|
reg reset; // сброс
|
reg reset; // reset
|
reg inp_clk; // стробы отсчётов
|
reg inp_clk; // samples strobes
|
wire [3:0] count;
|
wire [3:0] count;
|
reg inp_ping_start; // начало зондирующего импулься
|
reg inp_ping_start; // start of ping
|
reg [INP_SAMP_WIDTH - 1:0] inp_samp_I; // входные отсчёты
|
reg [INP_SAMP_WIDTH - 1:0] inp_samp_I; // input samples In-phase
|
reg [INP_SAMP_WIDTH - 1:0] inp_samp_Q; // входные отсчёты
|
reg [INP_SAMP_WIDTH - 1:0] inp_samp_Q; // input samples Quadrature
|
reg [PING_ADDR_WIDTH - 1:0] inp_ping_length; // длительность зондирующего импульса, во входных отсчётах
|
reg [PING_ADDR_WIDTH - 1:0] inp_ping_length; // ping pulse length
|
// parallel interface to coefficients RAM
|
// parallel interface to coefficients RAM
|
reg IOB_ping_from_Rx; // 1 - получать ЗИ из входных отсчётов, 0 - не получать ЗИ из входных отсчётов, подразумевается запись напрямую в RAM
|
reg IOB_ping_from_Rx; // 1 - get ping from input samples; 0 - do not get ping from input samples, ping is written to RAM assumed
|
reg IOB_ping_RAM_CS; // RAM зондирующего импульса, выбор RAM, должен быть 1, чтобы RAM не заполнялась входными отсчётами ЗИ
|
reg IOB_ping_RAM_CS; // ping RAM - RAM select, should be 1 for not to fill RAM with input samples
|
wire signed [INP_SAMP_WIDTH - 1:0] IOB_ping_RAM_D; // RAM зондирующего импульса, data Re
|
wire signed [INP_SAMP_WIDTH - 1:0] IOB_ping_RAM_D; // ping RAM - data Re
|
reg signed [INP_SAMP_WIDTH - 1:0] IOB_ping_RAM_D_reg; // RAM зондирующего импульса, data Re
|
reg signed [INP_SAMP_WIDTH - 1:0] IOB_ping_RAM_D_reg; // ping RAM - data Re
|
//reg signed [INP_SAMP_WIDTH - 1:0] IOB_ping_RAM_D_I; // RAM зондирующего импульса, data Re
|
//reg signed [INP_SAMP_WIDTH - 1:0] IOB_ping_RAM_D_I; // RAM зондирующего импульса, data Re
|
//reg signed [INP_SAMP_WIDTH - 1:0] IOB_ping_RAM_D_Q; // RAM зондирующего импульса, data Im
|
//reg signed [INP_SAMP_WIDTH - 1:0] IOB_ping_RAM_D_Q; // RAM зондирующего импульса, data Im
|
reg signed [PING_ADDR_WIDTH - 1:0] IOB_ping_RAM_A; // RAM зондирующего импульса, address
|
reg signed [PING_ADDR_WIDTH - 1:0] IOB_ping_RAM_A; // ping RAM - address
|
reg IOB_ping_RAM_IQ; // RAM зондирующего импульса, write enable
|
reg IOB_ping_RAM_IQ; //
|
reg IOB_ping_RAM_WR; // RAM зондирующего импульса, write enable
|
reg IOB_ping_RAM_WR; //
|
reg IOB_ping_RAM_RD; // RAM зондирующего импульса, write enable
|
reg IOB_ping_RAM_RD; //
|
reg IOB_ping_RAM_load_ready;
|
reg IOB_ping_RAM_load_ready;
|
wire [OUT_SAMP_WIDTH - 1:0] out_samp_I; // выходные отсчёты, результат обработки
|
wire [OUT_SAMP_WIDTH - 1:0] out_samp_I; // output samples, processing result
|
wire [OUT_SAMP_WIDTH - 1:0] out_samp_Q; // выходные отсчёты, результат обработки
|
wire [OUT_SAMP_WIDTH - 1:0] out_samp_Q; // output samples, processing result
|
wire signed [OUT_SAMP_A_SQ_WIDTH - 1:0] out_samp_A_sq; // сумма квадратов выходных отсчётов, для отладки
|
wire signed [OUT_SAMP_A_SQ_WIDTH - 1:0] out_samp_A_sq; // summ of squares
|
wire out_samp_strobe; // стробы выходных отсчётов
|
wire out_samp_strobe; // output samples strobes
|
wire out_frame_strobe; // стробы периода зондирования
|
wire out_frame_strobe; // ping strobes
|
//reg [INP_SAMP_WIDTH - 1:0] inp_signal_file [0:32767];
|
//reg [INP_SAMP_WIDTH - 1:0] inp_signal_file [0:32767];
|
reg [15:0] inp_signal_file [0:8191]; // хранение входного сигнала
|
reg [15:0] inp_signal_file [0:8191]; // output storage
|
reg [15:0] ping_file [0:4095]; // хранение ЗИ
|
reg [15:0] ping_file [0:4095]; // ping storage
|
|
|
reg [CLK_TO_SAMP_ADDR_WIDTH - 1:0] clk_to_samp_counter; // счётчик номера отсчёта в периоде зондирования
|
reg [CLK_TO_SAMP_ADDR_WIDTH - 1:0] clk_to_samp_counter; // counter of number of sample in the ping period
|
reg [SIM_FRAME_ADDR_COUNTER_WIDTH - 1:0] frame_addr_counter; // счётчик адреса в frame
|
reg [SIM_FRAME_ADDR_COUNTER_WIDTH - 1:0] frame_addr_counter; // address in frame counter
|
reg [SIM_FRAME_COUNTER_WIDTH - 1:0] frame_counter; // счётчик номера frame
|
reg [SIM_FRAME_COUNTER_WIDTH - 1:0] frame_counter; // frame number counter
|
integer cpu_io_counter;
|
integer cpu_io_counter;
|
FIR_cascaded
|
FIR_cascaded
|
#(
|
#(
|
.INP_SAMP_WIDTH (INP_SAMP_WIDTH),
|
.INP_SAMP_WIDTH (INP_SAMP_WIDTH),
|
.PING_ADDR_WIDTH (PING_ADDR_WIDTH),
|
.PING_ADDR_WIDTH (PING_ADDR_WIDTH),
|