mirror of
https://github.com/jhshi/openofdm.git
synced 2024-12-20 06:08:11 +00:00
Add FFT window shift register
This commit is contained in:
parent
1b0354f85d
commit
b0df85040f
@ -25,6 +25,7 @@ module dot11 (
|
|||||||
input soft_decoding,
|
input soft_decoding,
|
||||||
input wire force_ht_smoothing,
|
input wire force_ht_smoothing,
|
||||||
input wire disable_all_smoothing,
|
input wire disable_all_smoothing,
|
||||||
|
input [3:0] fft_win_shift,
|
||||||
|
|
||||||
// OUTPUT: bytes and FCS status
|
// OUTPUT: bytes and FCS status
|
||||||
output reg demod_is_ongoing,
|
output reg demod_is_ongoing,
|
||||||
@ -363,6 +364,7 @@ sync_long sync_long_inst (
|
|||||||
.sample_in_strobe(sample_in_strobe),
|
.sample_in_strobe(sample_in_strobe),
|
||||||
.phase_offset(phase_offset),
|
.phase_offset(phase_offset),
|
||||||
.short_gi(short_gi),
|
.short_gi(short_gi),
|
||||||
|
.fft_win_shift(fft_win_shift),
|
||||||
|
|
||||||
.rot_addr(sync_long_rot_addr),
|
.rot_addr(sync_long_rot_addr),
|
||||||
.rot_data(sync_long_rot_data),
|
.rot_data(sync_long_rot_data),
|
||||||
|
@ -524,6 +524,7 @@ dot11 dot11_inst (
|
|||||||
.soft_decoding(1'b1),
|
.soft_decoding(1'b1),
|
||||||
.force_ht_smoothing(1'b0),
|
.force_ht_smoothing(1'b0),
|
||||||
.disable_all_smoothing(1'b0),
|
.disable_all_smoothing(1'b0),
|
||||||
|
.fft_win_shift(4'b1),
|
||||||
|
|
||||||
.demod_is_ongoing(demod_is_ongoing),
|
.demod_is_ongoing(demod_is_ongoing),
|
||||||
.pkt_header_valid(pkt_header_valid),
|
.pkt_header_valid(pkt_header_valid),
|
||||||
|
@ -82,8 +82,8 @@
|
|||||||
wire [(C_S00_AXI_DATA_WIDTH-1):0] slv_reg2;
|
wire [(C_S00_AXI_DATA_WIDTH-1):0] slv_reg2;
|
||||||
wire [(C_S00_AXI_DATA_WIDTH-1):0] slv_reg3; //
|
wire [(C_S00_AXI_DATA_WIDTH-1):0] slv_reg3; //
|
||||||
wire [(C_S00_AXI_DATA_WIDTH-1):0] slv_reg4; //
|
wire [(C_S00_AXI_DATA_WIDTH-1):0] slv_reg4; //
|
||||||
/*
|
|
||||||
wire [(C_S00_AXI_DATA_WIDTH-1):0] slv_reg5; //
|
wire [(C_S00_AXI_DATA_WIDTH-1):0] slv_reg5; //
|
||||||
|
/*
|
||||||
wire [(C_S00_AXI_DATA_WIDTH-1):0] slv_reg6; //
|
wire [(C_S00_AXI_DATA_WIDTH-1):0] slv_reg6; //
|
||||||
wire [(C_S00_AXI_DATA_WIDTH-1):0] slv_reg7; //
|
wire [(C_S00_AXI_DATA_WIDTH-1):0] slv_reg7; //
|
||||||
wire [(C_S00_AXI_DATA_WIDTH-1):0] slv_reg8;
|
wire [(C_S00_AXI_DATA_WIDTH-1):0] slv_reg8;
|
||||||
@ -204,6 +204,7 @@
|
|||||||
.sync_long_out_strobe(),
|
.sync_long_out_strobe(),
|
||||||
.phase_offset_taken(phase_offset_taken),
|
.phase_offset_taken(phase_offset_taken),
|
||||||
.sync_long_state(),
|
.sync_long_state(),
|
||||||
|
.fft_win_shift(slv_reg5[3:0]),
|
||||||
|
|
||||||
// equalizer
|
// equalizer
|
||||||
.equalizer_out(equalizer),
|
.equalizer_out(equalizer),
|
||||||
@ -285,8 +286,8 @@
|
|||||||
.SLV_REG1(slv_reg1),
|
.SLV_REG1(slv_reg1),
|
||||||
.SLV_REG2(slv_reg2),
|
.SLV_REG2(slv_reg2),
|
||||||
.SLV_REG3(slv_reg3),
|
.SLV_REG3(slv_reg3),
|
||||||
.SLV_REG4(slv_reg4), /*,
|
.SLV_REG4(slv_reg4),
|
||||||
.SLV_REG5(slv_reg5),
|
.SLV_REG5(slv_reg5), /*,
|
||||||
.SLV_REG6(slv_reg6),
|
.SLV_REG6(slv_reg6),
|
||||||
.SLV_REG7(slv_reg7),
|
.SLV_REG7(slv_reg7),
|
||||||
.SLV_REG8(slv_reg8),
|
.SLV_REG8(slv_reg8),
|
||||||
|
@ -21,8 +21,8 @@
|
|||||||
output wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG1,
|
output wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG1,
|
||||||
output wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG2,
|
output wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG2,
|
||||||
output wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG3,
|
output wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG3,
|
||||||
output wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG4,/*
|
output wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG4,
|
||||||
output wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG5,
|
output wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG5,/*
|
||||||
output wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG6,
|
output wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG6,
|
||||||
output wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG7,
|
output wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG7,
|
||||||
output wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG8,
|
output wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG8,
|
||||||
@ -141,8 +141,8 @@
|
|||||||
reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg1;
|
reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg1;
|
||||||
reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg2;
|
reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg2;
|
||||||
reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg3;
|
reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg3;
|
||||||
reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg4;/*
|
reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg4;
|
||||||
reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg5;
|
reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg5;/*
|
||||||
reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg6;
|
reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg6;
|
||||||
reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg7;
|
reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg7;
|
||||||
reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg8;
|
reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg8;
|
||||||
@ -189,8 +189,8 @@
|
|||||||
assign SLV_REG1 = slv_reg1;
|
assign SLV_REG1 = slv_reg1;
|
||||||
assign SLV_REG2 = slv_reg2;
|
assign SLV_REG2 = slv_reg2;
|
||||||
assign SLV_REG3 = slv_reg3;
|
assign SLV_REG3 = slv_reg3;
|
||||||
assign SLV_REG4 = slv_reg4;/*
|
assign SLV_REG4 = slv_reg4;
|
||||||
assign SLV_REG5 = slv_reg5;
|
assign SLV_REG5 = slv_reg5; /*
|
||||||
assign SLV_REG6 = slv_reg6;
|
assign SLV_REG6 = slv_reg6;
|
||||||
assign SLV_REG7 = slv_reg7;
|
assign SLV_REG7 = slv_reg7;
|
||||||
assign SLV_REG8 = slv_reg8;
|
assign SLV_REG8 = slv_reg8;
|
||||||
@ -298,8 +298,8 @@
|
|||||||
slv_reg1 <= 32'h0;
|
slv_reg1 <= 32'h0;
|
||||||
slv_reg2 <= 32'h0;
|
slv_reg2 <= 32'h0;
|
||||||
slv_reg3 <= 32'h0;
|
slv_reg3 <= 32'h0;
|
||||||
slv_reg4 <= 32'h0;/*
|
slv_reg4 <= 32'h0;
|
||||||
slv_reg5 <= 32'h0;
|
slv_reg5 <= 32'h0; /*
|
||||||
slv_reg6 <= 32'h0;
|
slv_reg6 <= 32'h0;
|
||||||
slv_reg7 <= 32'h0;
|
slv_reg7 <= 32'h0;
|
||||||
slv_reg8 <= 32'h0;
|
slv_reg8 <= 32'h0;
|
||||||
@ -353,14 +353,14 @@
|
|||||||
// Respective byte enables are asserted as per write strobes
|
// Respective byte enables are asserted as per write strobes
|
||||||
// Slave register 4
|
// Slave register 4
|
||||||
slv_reg4[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
|
slv_reg4[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
|
||||||
end /*
|
end
|
||||||
5'h05:
|
5'h05:
|
||||||
for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
|
for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
|
||||||
if ( S_AXI_WSTRB[byte_index] == 1 ) begin
|
if ( S_AXI_WSTRB[byte_index] == 1 ) begin
|
||||||
// Respective byte enables are asserted as per write strobes
|
// Respective byte enables are asserted as per write strobes
|
||||||
// Slave register 5
|
// Slave register 5
|
||||||
slv_reg5[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
|
slv_reg5[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
|
||||||
end
|
end /*
|
||||||
5'h06:
|
5'h06:
|
||||||
for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
|
for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
|
||||||
if ( S_AXI_WSTRB[byte_index] == 1 ) begin
|
if ( S_AXI_WSTRB[byte_index] == 1 ) begin
|
||||||
@ -548,8 +548,8 @@
|
|||||||
slv_reg1 <= slv_reg1;
|
slv_reg1 <= slv_reg1;
|
||||||
slv_reg2 <= slv_reg2;
|
slv_reg2 <= slv_reg2;
|
||||||
slv_reg3 <= slv_reg3;
|
slv_reg3 <= slv_reg3;
|
||||||
slv_reg4 <= slv_reg4;/*
|
slv_reg4 <= slv_reg4;
|
||||||
slv_reg5 <= slv_reg5;
|
slv_reg5 <= slv_reg5; /*
|
||||||
slv_reg6 <= slv_reg6;
|
slv_reg6 <= slv_reg6;
|
||||||
slv_reg7 <= slv_reg7;
|
slv_reg7 <= slv_reg7;
|
||||||
slv_reg8 <= slv_reg8;
|
slv_reg8 <= slv_reg8;
|
||||||
@ -688,8 +688,8 @@
|
|||||||
5'h01 : reg_data_out <= slv_reg1;
|
5'h01 : reg_data_out <= slv_reg1;
|
||||||
5'h02 : reg_data_out <= slv_reg2;
|
5'h02 : reg_data_out <= slv_reg2;
|
||||||
5'h03 : reg_data_out <= slv_reg3;
|
5'h03 : reg_data_out <= slv_reg3;
|
||||||
5'h04 : reg_data_out <= slv_reg4;/*
|
5'h04 : reg_data_out <= slv_reg4;
|
||||||
5'h05 : reg_data_out <= slv_reg5;
|
5'h05 : reg_data_out <= slv_reg5; /*
|
||||||
5'h06 : reg_data_out <= slv_reg6;
|
5'h06 : reg_data_out <= slv_reg6;
|
||||||
5'h07 : reg_data_out <= slv_reg7;
|
5'h07 : reg_data_out <= slv_reg7;
|
||||||
5'h08 : reg_data_out <= slv_reg8;
|
5'h08 : reg_data_out <= slv_reg8;
|
||||||
|
@ -7,6 +7,7 @@ module sync_long (
|
|||||||
input sample_in_strobe,
|
input sample_in_strobe,
|
||||||
input signed [15:0] phase_offset,
|
input signed [15:0] phase_offset,
|
||||||
input short_gi,
|
input short_gi,
|
||||||
|
input [3:0] fft_win_shift,
|
||||||
|
|
||||||
output [`ROTATE_LUT_LEN_SHIFT-1:0] rot_addr,
|
output [`ROTATE_LUT_LEN_SHIFT-1:0] rot_addr,
|
||||||
input [31:0] rot_data,
|
input [31:0] rot_data,
|
||||||
@ -277,7 +278,7 @@ always @(posedge clock) begin
|
|||||||
|
|
||||||
if (metric_stb && (metric > metric_max1)) begin
|
if (metric_stb && (metric > metric_max1)) begin
|
||||||
metric_max1 <= metric;
|
metric_max1 <= metric;
|
||||||
addr1 <= in_raddr - 1;
|
addr1 <= in_raddr - 1 -fft_win_shift;
|
||||||
end
|
end
|
||||||
|
|
||||||
if (num_sample >= 88) begin
|
if (num_sample >= 88) begin
|
||||||
|
Loading…
Reference in New Issue
Block a user