m基於FPGA的Alamouti編碼verilog實現,包含testbench測試檔案

我爱C编程發表於2024-03-13

1.演算法模擬效果

本系統進行了Vivado2019.2平臺的開發,結果如下:

2.演算法涉及理論知識概要

在無線通訊領域,多天線技術是提高系統容量和可靠性的關鍵手段之一。Alamouti編碼是空時編碼(STC)的一種,它為兩發射天線的系統提供了一種全速率、全分集的簡單編碼方案。而空頻分組編碼(SFBC)則是Alamouti編碼在頻域的一種擴充套件,用於在正交分頻多工(OFDM)等系統中獲得類似的分集增益。

SFBC是一種擴充套件至多載波通訊系統(如OFDM)的空間編碼技術,它結合了空域和頻域的分集增益。在多天線、多子載波的場景下,SFBC透過對同一組資料符號在不同天線以及相鄰或非相鄰的子載波上重複或交織編碼實現分集。

其運算公式如下:

3.Verilog核心程式

`timescale 1ns / 1ps
 
module TEST();
 
reg i_clk;
reg i_rst;
reg i_en;
reg [7:0]i_real;
reg [7:0]i_imag;
 
wire o_en;
wire[7:0]o_real_code1;
wire[7:0]o_imag_code1;
wire[7:0]o_real_code2;
wire[7:0]o_imag_code2;  
 
Alamouti_code uut(
.i_clk        (i_clk),
.i_rst        (i_rst),
.i_en         (i_en),
.i_real       (i_real),
.i_imag       (i_imag),
.o_en         (o_en),
.o_real_code1 (o_real_code1),
.o_imag_code1 (o_imag_code1),
.o_real_code2 (o_real_code2),
.o_imag_code2 (o_imag_code2)                 
);
 
initial
begin
i_clk = 1'b1;
i_rst = 1'b1;
#1000
i_rst = 1'b0;
end
initial
begin
i_en   = 1'b0;
i_real = 8'd0;
i_imag = 8'd0;
#1000
i_en   = 1'b1;
i_real = 15;
i_imag = 25;
#10
i_en   = 1'b1;
i_real = 35;
i_imag = 40;
#10
i_en   = 1'b0;
i_real = 0;
i_imag = 0;
end
always #5 i_clk = ~i_clk;
endmodule

  

相關文章