Files
gps/hardware/external/gps/rtl/common/gps_top.sv
T

127 lines
3.3 KiB
Systemverilog

//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 01/08/2024 12:56:23 PM
// Design Name:
// Module Name: gps_top
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
import definitions::*;
module gps_top(
input logic arstn,
input logic acq_clk,
input logic trk_clk,
input logic afe_clk,
input logic [RF_DATA_WIDTH-1 : 0] rf_data_i,
input logic afe_start_i,
input logic sample_counter_clear_i,
input logic acq_start_i,
input logic [PRN_WL-1 : 0] acq_prn_i,
input trck_i_struct_t trck_i [0 : NUM_TRCK_CH-1],
output acq_o_struct_t acq_o,
output trck_o_struct_t trck_o [0 : NUM_TRCK_CH-1]
);
logic afe_rstn, acq_rstn, trk_rstn;
logic sample_align;
logic [ABS_SAMPLE_CNTR_WL-1:0] sample_counter;
reset_synch reset_synch_i(
.arstn_i(arstn),
.afe_clk(afe_clk),
.acq_clk(acq_clk),
.trk_clk(trk_clk),
.afe_rstn_o(afe_rstn),
.acq_rstn_o(acq_rstn),
.trk_rstn_o(trk_rstn)
);
afe_top afe_top_i(
.afe_rstn(afe_rstn),
.trk_rstn(trk_rstn),
.afe_clk(afe_clk),
.trk_clk(trk_clk),
.start_i(afe_start_i),
.sample_counter_clear_i(sample_counter_clear_i),
.sample_align_o(sample_align),
.sample_counter_o(sample_counter)
);
acq_top acq_top_i (
.acq_rstn(acq_rstn),
.afe_rstn(afe_rstn),
.acq_clk(acq_clk),
.afe_clk(afe_clk),
.rf_data_i(rf_data_i),
.sample_align_i(sample_align),
.start_i(acq_start_i),
.prn_i(acq_prn_i),
.end_o(acq_o.end_o),
.status_o(acq_o.status),
.busy_o(acq_o.busy),
.peak_metric_o(acq_o.peak_metric),
.code_phase_o(acq_o.code_phase),
.carr_freq_o(acq_o.carr_freq)
);
genvar ch;
generate
for (ch=0; ch < NUM_TRCK_CH; ch++) begin
trck_top trck_top_i (
.trk_rstn (trk_rstn),
.afe_rstn (afe_rstn),
.trk_clk (trk_clk),
.afe_clk (afe_clk),
.rf_data_i (rf_data_i),
.sample_align_i (sample_align),
.sample_counter_i (sample_counter),
.start_i (trck_i[ch].start),
.stop_i (trck_i[ch].stop),
.prn_i (trck_i[ch].prn),
.carr_freq_i (trck_i[ch].carr_freq),
.code_phase_i (trck_i[ch].code_phase),
.bit_o (trck_o[ch].bit_o),
.bit_vld_o (trck_o[ch].bit_vld),
.abs_sample_o (trck_o[ch].abs_sample),
.rem_code_ph_o (),
.measurement_vld_o (),
.measurement_bit_o (),
.measurement_abs_sample_o(),
.measurement_rem_code_ph_o(),
.measurement_carrier_freq_q7_o(),
.measurement_cn0_sum_i_o(),
.measurement_cn0_sum_q_o(),
.measurement_cn0_wbp_o(),
.measurement_cn0_sample_count_o(),
.measurement_sequence_o(),
.fifo_of_o (), //reserved
.lock_o (trck_o[ch].lock),
.busy_o (trck_o[ch].busy)
);
end
endgenerate
endmodule