fix(system): adjust cp len, frame sync pos, IQ map
This commit is contained in:
+36
-12
@@ -9,16 +9,16 @@
|
||||
// * ╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ *
|
||||
// * *************************************************** *
|
||||
// * Create Date: 2023/12/18
|
||||
// * Update Date: 2024/03/17
|
||||
// * Update Date: 2024/07/24
|
||||
|
||||
// NOTE: 接口中的hop_wait和参数GAP_LEN均是为了等待,hop是为了跳频切换,gap是为了满足帧同步延迟,!!!将hop_wait设置为0并不能去掉改状态
|
||||
module Transmitter #(
|
||||
parameter AGC_HEADER_LEN = 2130,
|
||||
parameter AGC_HEADER_LEN = 10586,
|
||||
parameter FRAME_HEADER_LEN = 512,
|
||||
parameter BLOCK_NUM = 28,
|
||||
parameter PHASE1_LEN = 2112, // (8 cp + 256 sym)* 8 ( total 2048 valid sym)
|
||||
parameter PREFIX_LEN = 8,
|
||||
parameter CHU_SEQ_LEN = 128,
|
||||
parameter BLOCK_NUM = 42,
|
||||
parameter PHASE1_LEN = 2880, // (32 cp + 256 sym)* 10 ( total 2880 valid sym)
|
||||
parameter PREFIX_LEN = 32,
|
||||
parameter CHU_SEQ_LEN = 256,
|
||||
parameter GAP_LEN = 160
|
||||
) (
|
||||
// general
|
||||
@@ -65,10 +65,12 @@ module Transmitter #(
|
||||
|
||||
reg [ 3:0] interp;
|
||||
reg [ 3:0] cnt_interp;
|
||||
reg [13:0] agc_addr;
|
||||
wire [ 1:0] agc_data;
|
||||
reg [ 8:0] mseqs_addr;
|
||||
reg [ 8:0] mseqs_addr_d1;
|
||||
reg [ 8:0] mseqs_addr_d2;
|
||||
reg [ 6:0] chu_seq_addr;
|
||||
reg [ 7:0] chu_seq_addr = 0;
|
||||
wire [31:0] chu_seq;
|
||||
wire mseqs;
|
||||
reg [31:0] bb_wave_out_i; // shape filter result
|
||||
@@ -86,7 +88,7 @@ module Transmitter #(
|
||||
reg [ 3:0] rtz; // return to zero
|
||||
|
||||
reg [12:0] addr_tx_test = 'd0;
|
||||
wire [7:0] data_tx_test;
|
||||
wire [ 7:0] data_tx_test;
|
||||
|
||||
// ******** Assingment ********
|
||||
|
||||
@@ -328,7 +330,11 @@ module Transmitter #(
|
||||
|
||||
// truncation
|
||||
always @(*) begin
|
||||
if (cs == S_SEND_FRAME_HEADER) begin
|
||||
if (cs == S_SEND_AGC) begin
|
||||
m_fir_tdata_i = agc_data[0] ? 16'h8001 : 16'h7FFF;
|
||||
m_fir_tdata_q = agc_data[1] ? 16'h8001 : 16'h7FFF;
|
||||
end
|
||||
else if (cs == S_SEND_FRAME_HEADER) begin
|
||||
m_fir_tdata_i = mseqs ? 16'h8001 : 16'h7FFF;
|
||||
m_fir_tdata_q = mseqs ? 16'h8001 : 16'h7FFF;
|
||||
end
|
||||
@@ -336,7 +342,7 @@ module Transmitter #(
|
||||
m_fir_tdata_i = tx_data_src_tdata[15-:16];
|
||||
m_fir_tdata_q = tx_data_src_tdata[31-:16];
|
||||
end
|
||||
else if (cs == S_SEND_CHU_POS || cs == S_SEND_AGC) begin
|
||||
else if (cs == S_SEND_CHU_POS) begin
|
||||
m_fir_tdata_i = chu_seq[15-:16];
|
||||
m_fir_tdata_q = chu_seq[31-:16];
|
||||
end
|
||||
@@ -417,11 +423,23 @@ module Transmitter #(
|
||||
end
|
||||
end
|
||||
|
||||
// chu seq addr control
|
||||
always @(posedge clk) begin
|
||||
if (cs == S_IDLE) begin
|
||||
agc_addr <= 0;
|
||||
end
|
||||
else if (cs == S_SEND_AGC) begin
|
||||
if (fir_tvalid_in == 1'b1) begin
|
||||
agc_addr <= agc_addr + 1;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
// chu seq addr control
|
||||
always @(posedge clk) begin
|
||||
if (ns != cs) begin
|
||||
// chu_seq_addr <= 7'h7F - 7'h7; // 8 cp
|
||||
chu_seq_addr <= CHU_SEQ_LEN - PREFIX_LEN; // 8 cp
|
||||
chu_seq_addr <= CHU_SEQ_LEN - PREFIX_LEN; // 32 cp
|
||||
end
|
||||
else if (cs == S_SEND_CHU_POS || cs == S_SEND_AGC || cs == S_SEND_CHU_NEG) begin
|
||||
if (fir_tvalid_in == 1'b1) begin
|
||||
@@ -456,6 +474,12 @@ module Transmitter #(
|
||||
|
||||
// ******** Inst ********
|
||||
|
||||
bram_agc_header u_bram_agc_header (
|
||||
.clka (clk), // input wire clka
|
||||
.addra(agc_addr), // input wire [13 : 0] addra
|
||||
.douta(agc_data) // output wire [1 : 0] douta
|
||||
);
|
||||
|
||||
bram_m_seqs_512 u_bram_m_seqs_512 (
|
||||
.clka (clk),
|
||||
.addra(mseqs_addr),
|
||||
@@ -465,7 +489,7 @@ module Transmitter #(
|
||||
|
||||
bram_chu_seq u_bram_chu_seq (
|
||||
.clka (clk), // input wire clka
|
||||
.addra(chu_seq_addr), // input wire [6 : 0] addra
|
||||
.addra(chu_seq_addr), // input wire [7 : 0] addra
|
||||
.douta(chu_seq) // output wire [31 : 0] douta
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user