mirror of
https://github.com/jhshi/openofdm.git
synced 2024-12-18 21:28:07 +00:00
Merge pull request #14 from open-sdr/dot11zynq
add necessary port as trigger for iq capture feature in openwifi
This commit is contained in:
commit
d0f271bdc8
@ -183,8 +183,8 @@ set files [list \
|
|||||||
[file normalize "${origin_dir}/../openwifi-hw/ip/xpu/src/phy_rx_parse.v"] \
|
[file normalize "${origin_dir}/../openwifi-hw/ip/xpu/src/phy_rx_parse.v"] \
|
||||||
[file normalize "${origin_dir}/../openwifi-hw/ip/side_ch/src/side_ch_control.v"] \
|
[file normalize "${origin_dir}/../openwifi-hw/ip/side_ch/src/side_ch_control.v"] \
|
||||||
[file normalize "${origin_dir}/../openwifi-hw/ip/side_ch/src/side_ch_m_axis.v"] \
|
[file normalize "${origin_dir}/../openwifi-hw/ip/side_ch/src/side_ch_m_axis.v"] \
|
||||||
[file normalize "${origin_dir}/../openwifi-hw/ip_repo/ultra_scale/fifo64_1clk_dep4k/src/fifo64_1clk_dep4k_fifo_generator_0_0/fifo64_1clk_dep4k_fifo_generator_0_0.xci"]\
|
[file normalize "${origin_dir}/../openwifi-hw/ip_repo/ultra_scale/fifo64_1clk/src/fifo64_1clk_fifo_generator_0_0/fifo64_1clk_fifo_generator_0_0.xci"]\
|
||||||
[file normalize "${origin_dir}/../openwifi-hw/ip_repo/ultra_scale/fifo64_1clk_dep4k/src/fifo64_1clk_dep4k.v"]\
|
[file normalize "${origin_dir}/../openwifi-hw/ip_repo/ultra_scale/fifo64_1clk/src/fifo64_1clk.v"]\
|
||||||
]
|
]
|
||||||
# If you want to make a copy of the file to new src folder, use following command
|
# If you want to make a copy of the file to new src folder, use following command
|
||||||
# set imported_files [import_files -fileset sources_1 $files]
|
# set imported_files [import_files -fileset sources_1 $files]
|
||||||
|
@ -853,6 +853,8 @@ always @(posedge clock) begin
|
|||||||
end
|
end
|
||||||
|
|
||||||
S_HT_LTS: begin
|
S_HT_LTS: begin
|
||||||
|
pkt_header_valid <= 0;
|
||||||
|
pkt_header_valid_strobe <= 0;
|
||||||
short_gi <= ht_sgi;
|
short_gi <= ht_sgi;
|
||||||
if (sync_long_out_strobe) begin
|
if (sync_long_out_strobe) begin
|
||||||
sync_long_out_count <= sync_long_out_count + 1;
|
sync_long_out_count <= sync_long_out_count + 1;
|
||||||
|
@ -19,7 +19,7 @@ localparam integer C_S00_AXIS_TDATA_WIDTH = 64;
|
|||||||
localparam integer C_M00_AXIS_TDATA_WIDTH = 64;
|
localparam integer C_M00_AXIS_TDATA_WIDTH = 64;
|
||||||
|
|
||||||
localparam integer WAIT_COUNT_BITS = 5;
|
localparam integer WAIT_COUNT_BITS = 5;
|
||||||
localparam integer MAX_NUM_DMA_SYMBOL = 4096; // the fifo depth inside m_axis
|
localparam integer MAX_NUM_DMA_SYMBOL = 8192; // the fifo depth inside m_axis
|
||||||
|
|
||||||
function integer clogb2 (input integer bit_depth);
|
function integer clogb2 (input integer bit_depth);
|
||||||
begin
|
begin
|
||||||
@ -49,6 +49,7 @@ wire [31:0] sync_long_metric;
|
|||||||
wire sync_long_metric_stb;
|
wire sync_long_metric_stb;
|
||||||
wire long_preamble_detected;
|
wire long_preamble_detected;
|
||||||
|
|
||||||
|
wire [31:0] phase_offset_taken;
|
||||||
wire [31:0] equalizer_out;
|
wire [31:0] equalizer_out;
|
||||||
wire equalizer_out_strobe;
|
wire equalizer_out_strobe;
|
||||||
|
|
||||||
@ -105,17 +106,24 @@ wire addr3_valid;
|
|||||||
wire m_axis_start_1trans;
|
wire m_axis_start_1trans;
|
||||||
wire [63:0] data_to_ps;
|
wire [63:0] data_to_ps;
|
||||||
wire data_to_ps_valid;
|
wire data_to_ps_valid;
|
||||||
wire [12:0] m_axis_data_count;
|
wire [(MAX_BIT_NUM_DMA_SYMBOL-1):0] m_axis_data_count;
|
||||||
wire fulln_to_pl;
|
wire fulln_to_pl;
|
||||||
wire M_AXIS_TVALID;
|
wire M_AXIS_TVALID;
|
||||||
wire M_AXIS_TLAST;
|
wire M_AXIS_TLAST;
|
||||||
|
|
||||||
reg slv_reg_wren_signal;
|
reg slv_reg_wren_signal;
|
||||||
reg [4:0] axi_awaddr_core;
|
reg [4:0] axi_awaddr_core;
|
||||||
reg m_axis_start_ext_trigger;
|
|
||||||
|
|
||||||
reg [3:0] num_eq;
|
reg [3:0] num_eq;
|
||||||
|
|
||||||
|
// iq capture configuration
|
||||||
|
reg iq_capture;
|
||||||
|
reg [3:0] iq_trigger_select;
|
||||||
|
reg signed [(RSSI_HALF_DB_WIDTH-1):0] rssi_th;
|
||||||
|
reg [(GPIO_STATUS_WIDTH-2):0] gain_th;
|
||||||
|
reg [MAX_BIT_NUM_DMA_SYMBOL-1 : 0] pre_trigger_len;
|
||||||
|
reg [MAX_BIT_NUM_DMA_SYMBOL-1 : 0] iq_len_target;
|
||||||
|
|
||||||
reg set_stb;
|
reg set_stb;
|
||||||
reg [7:0] set_addr;
|
reg [7:0] set_addr;
|
||||||
reg [31:0] set_data;
|
reg [31:0] set_data;
|
||||||
@ -147,6 +155,11 @@ integer file_i, file_q, file_rssi_half_db, iq_sample_file;
|
|||||||
|
|
||||||
`define SPEED_100M // remove this to use 200M
|
`define SPEED_100M // remove this to use 200M
|
||||||
|
|
||||||
|
localparam integer IQ_CAPTURE = 1; //0 -- CSI; 1 -- IQ
|
||||||
|
localparam integer IQ_TRIGGER_SELECT = 6;
|
||||||
|
localparam integer PRE_TRIGGER_LEN = 3;
|
||||||
|
localparam integer IQ_LEN_TARGET = 7;
|
||||||
|
|
||||||
//`define SAMPLE_FILE "../../../../../testing_inputs/simulated/iq_11n_mcs7_gi0_100B_ht_unsupport_openwifi.txt"
|
//`define SAMPLE_FILE "../../../../../testing_inputs/simulated/iq_11n_mcs7_gi0_100B_ht_unsupport_openwifi.txt"
|
||||||
//`define SAMPLE_FILE "../../../../../testing_inputs/simulated/iq_11n_mcs7_gi0_100B_wrong_ht_sig_openwifi.txt"
|
//`define SAMPLE_FILE "../../../../../testing_inputs/simulated/iq_11n_mcs7_gi0_100B_wrong_ht_sig_openwifi.txt"
|
||||||
//`define SAMPLE_FILE "../../../../../testing_inputs/simulated/iq_11n_mcs7_gi0_100B_wrong_sig_openwifi.txt"
|
//`define SAMPLE_FILE "../../../../../testing_inputs/simulated/iq_11n_mcs7_gi0_100B_wrong_sig_openwifi.txt"
|
||||||
@ -171,7 +184,13 @@ initial begin
|
|||||||
|
|
||||||
slv_reg_wren_signal = 0;
|
slv_reg_wren_signal = 0;
|
||||||
axi_awaddr_core = 0;
|
axi_awaddr_core = 0;
|
||||||
m_axis_start_ext_trigger = 0;
|
|
||||||
|
iq_capture = IQ_CAPTURE;
|
||||||
|
iq_trigger_select = IQ_TRIGGER_SELECT;
|
||||||
|
rssi_th = 0;
|
||||||
|
gain_th = 0;
|
||||||
|
pre_trigger_len = PRE_TRIGGER_LEN;
|
||||||
|
iq_len_target = IQ_LEN_TARGET;
|
||||||
|
|
||||||
clock = 0;
|
clock = 0;
|
||||||
reset = 1;
|
reset = 1;
|
||||||
@ -357,7 +376,8 @@ end
|
|||||||
|
|
||||||
side_ch_control # (
|
side_ch_control # (
|
||||||
.TSF_TIMER_WIDTH(TSF_TIMER_WIDTH), // according to 802.11 standard
|
.TSF_TIMER_WIDTH(TSF_TIMER_WIDTH), // according to 802.11 standard
|
||||||
|
.GPIO_STATUS_WIDTH(GPIO_STATUS_WIDTH),
|
||||||
|
.RSSI_HALF_DB_WIDTH(RSSI_HALF_DB_WIDTH),
|
||||||
.C_S_AXI_DATA_WIDTH(C_S00_AXI_DATA_WIDTH),
|
.C_S_AXI_DATA_WIDTH(C_S00_AXI_DATA_WIDTH),
|
||||||
.IQ_DATA_WIDTH(IQ_DATA_WIDTH),
|
.IQ_DATA_WIDTH(IQ_DATA_WIDTH),
|
||||||
.C_S_AXIS_TDATA_WIDTH(C_S00_AXIS_TDATA_WIDTH),
|
.C_S_AXIS_TDATA_WIDTH(C_S00_AXIS_TDATA_WIDTH),
|
||||||
@ -368,14 +388,21 @@ side_ch_control # (
|
|||||||
.rstn(~reset),
|
.rstn(~reset),
|
||||||
|
|
||||||
// from pl
|
// from pl
|
||||||
|
.gpio_status(34),
|
||||||
|
.rssi_half_db(54),
|
||||||
.tsf_runtime_val(64'd123456),
|
.tsf_runtime_val(64'd123456),
|
||||||
|
.iq(sample_in),
|
||||||
|
.iq_strobe(sample_in_strobe),
|
||||||
.demod_is_ongoing(demod_is_ongoing),
|
.demod_is_ongoing(demod_is_ongoing),
|
||||||
.ofdm_symbol_eq_out_pulse(ofdm_symbol_eq_out_pulse),
|
.ofdm_symbol_eq_out_pulse(ofdm_symbol_eq_out_pulse),
|
||||||
|
.long_preamble_detected(long_preamble_detected),
|
||||||
|
.short_preamble_detected(short_preamble_detected),
|
||||||
.ht_unsupport(ht_unsupport),
|
.ht_unsupport(ht_unsupport),
|
||||||
.pkt_rate(pkt_rate),
|
.pkt_rate(pkt_rate),
|
||||||
.pkt_len(pkt_len),
|
.pkt_len(pkt_len),
|
||||||
.csi(csi),
|
.csi(csi),
|
||||||
.csi_valid(csi_valid),
|
.csi_valid(csi_valid),
|
||||||
|
.phase_offset_taken(phase_offset_taken),
|
||||||
.equalizer(equalizer_out),
|
.equalizer(equalizer_out),
|
||||||
.equalizer_valid(equalizer_out_strobe),
|
.equalizer_valid(equalizer_out_strobe),
|
||||||
|
|
||||||
@ -398,11 +425,19 @@ side_ch_control # (
|
|||||||
// from arm
|
// from arm
|
||||||
.slv_reg_wren_signal(slv_reg_wren_signal), // to capture m axis num dma symbol write, so that auto trigger start
|
.slv_reg_wren_signal(slv_reg_wren_signal), // to capture m axis num dma symbol write, so that auto trigger start
|
||||||
.axi_awaddr_core(axi_awaddr_core),
|
.axi_awaddr_core(axi_awaddr_core),
|
||||||
|
.iq_capture(iq_capture),
|
||||||
|
.iq_trigger_select(iq_trigger_select),
|
||||||
|
.rssi_th(rssi_th),
|
||||||
|
.gain_th(gain_th),
|
||||||
|
.pre_trigger_len(pre_trigger_len),
|
||||||
|
.iq_len_target(iq_len_target),
|
||||||
|
.FC_target(16'd3243),
|
||||||
.addr1_target(32'd23343),
|
.addr1_target(32'd23343),
|
||||||
.match_cfg(1),
|
.addr2_target(32'd98765),
|
||||||
|
.match_cfg(0),
|
||||||
.num_eq({1'd0, num_eq[2:0]}),
|
.num_eq({1'd0, num_eq[2:0]}),
|
||||||
.m_axis_start_mode(1),
|
.m_axis_start_mode(1),
|
||||||
.m_axis_start_ext_trigger(m_axis_start_ext_trigger),
|
.m_axis_start_ext_trigger(),
|
||||||
|
|
||||||
// s_axis
|
// s_axis
|
||||||
.data_to_pl(),
|
.data_to_pl(),
|
||||||
@ -525,6 +560,7 @@ dot11 dot11_inst (
|
|||||||
.long_preamble_detected(long_preamble_detected),
|
.long_preamble_detected(long_preamble_detected),
|
||||||
.sync_long_out(sync_long_out),
|
.sync_long_out(sync_long_out),
|
||||||
.sync_long_out_strobe(sync_long_out_strobe),
|
.sync_long_out_strobe(sync_long_out_strobe),
|
||||||
|
.phase_offset_taken(phase_offset_taken),
|
||||||
.sync_long_state(sync_long_state),
|
.sync_long_state(sync_long_state),
|
||||||
|
|
||||||
.equalizer_out(equalizer_out),
|
.equalizer_out(equalizer_out),
|
||||||
|
@ -18,6 +18,8 @@
|
|||||||
|
|
||||||
output wire demod_is_ongoing, // this needs to be corrected further to indicate actual RF on going regardless the latency
|
output wire demod_is_ongoing, // this needs to be corrected further to indicate actual RF on going regardless the latency
|
||||||
// output wire pkt_ht,
|
// output wire pkt_ht,
|
||||||
|
output wire short_preamble_detected,
|
||||||
|
output wire long_preamble_detected,
|
||||||
output wire pkt_header_valid,
|
output wire pkt_header_valid,
|
||||||
output wire pkt_header_valid_strobe,
|
output wire pkt_header_valid_strobe,
|
||||||
output wire ht_unsupport,
|
output wire ht_unsupport,
|
||||||
@ -144,13 +146,13 @@
|
|||||||
.power_trigger(),
|
.power_trigger(),
|
||||||
|
|
||||||
// sync short
|
// sync short
|
||||||
.short_preamble_detected(),
|
.short_preamble_detected(short_preamble_detected),
|
||||||
.phase_offset(),
|
.phase_offset(),
|
||||||
|
|
||||||
// sync long
|
// sync long
|
||||||
.sync_long_metric(),
|
.sync_long_metric(),
|
||||||
.sync_long_metric_stb(),
|
.sync_long_metric_stb(),
|
||||||
.long_preamble_detected(),
|
.long_preamble_detected(long_preamble_detected),
|
||||||
.sync_long_out(),
|
.sync_long_out(),
|
||||||
.sync_long_out_strobe(),
|
.sync_long_out_strobe(),
|
||||||
.phase_offset_taken(phase_offset_taken),
|
.phase_offset_taken(phase_offset_taken),
|
||||||
|
Loading…
Reference in New Issue
Block a user