基于FPGA的8PSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR

1.算法仿真效果

本系统在以前写过的8PSK调制解调系统的基础上,增加了高斯信道模块,误码率统计模块,可以验证不同SNR情况下的8PSK误码情况。


VIVADO2019.2仿真结果如下(完整代码运行后无水印):


设置SNR=30db



其对应星座图:



设置SNR=15db



其对应星座图:



设置SNR=10db



其对应星座图:



整个系统的RTL结构如下图所示:



2.算法涉及理论知识概要

随着通信技术的不断发展,相位调制技术因其高频谱效率和抗干扰能力而广泛应用于无线通信系统中。其中,8PSK(8相位相移键控)作为一种高阶调制方式,具有更高的频谱效率和更强的抗干扰能力,因此备受关注。然而,8PSK调制解调的实现复杂度较高,需要高效的数字信号处理技术。现场可编程门阵列(FPGA)作为一种可编程逻辑器件,具有高度的灵活性和并行处理能力,非常适合实现复杂的数字信号处理算法。


2.1 8PSK调制原理

8PSK调制是一种相位调制方式,其基本原理是通过改变载波的相位来传递信息。在8PSK中,一个符号周期内的相位变化有8种可能的状态,分别对应3个比特的信息。因此,8PSK调制可以看作是一种将3个比特映射到一个符号的映射方式。具体地,假设输入的比特序列为b2b1b0,则对应的8PSK符号可以表示为:


S(t)=Acos(2πfct+θk) (1)


其中,A是载波的振幅,fc是载波的频率,θk是第k个符号的相位,k=0,1,...,7。θk的取值由输入的比特序列b2b1b0决定,具体的映射关系如表1所示。


表1:8PSK映射关系



其星座图如下所示:



2.2 基于FPGA的8PSK调制解调器设计和实现

FPGA是一种可编程逻辑器件,其内部包含大量的可编程逻辑单元和存储单元,可以根据用户的需要进行灵活配置。FPGA具有以下优点:


(1)高度的灵活性:FPGA可以根据用户的需要重新配置逻辑电路,实现不同的功能。这种灵活性使得FPGA可以适应各种复杂的通信系统和算法需求。

(2)并行处理能力:FPGA内部的逻辑单元可以并行工作,同时处理多个数据。这种并行处理能力使得FPGA可以高效地实现复杂的数字信号处理算法。

(3)高性能和低功耗:FPGA的逻辑单元和存储单元都采用了高性能的工艺和设计,可以实现高速的数据处理和存储。同时,FPGA还具有低功耗的特点,适合用于移动通信等需要长时间工作的场景。


在基于FPGA的8PSK调制解调系统中,数字信号处理算法是关键部分之一。具体地,调制器需要将输入的比特序列映射为对应的8PSK符号序列;解调器则需要从接收到的符号序列中恢复出原始的比特序列。为了实现这些功能,我们采用了以下算法:


(1)调制算法:根据输入的比特序列和表1中的映射关系,计算出对应的8PSK符号序列。这个过程可以通过查找表或者计算的方式实现。为了降低复杂度和提高效率,我们采用了查找表的方式实现调制算法。具体地,我们将表1中的映射关系存储在一个查找表中,然后根据输入的比特序列查找对应的8PSK符号序列。这种方式可以在保证正确性的同时降低算法的复杂度。

(2)解调算法:从接收到的符号序列中恢复出原始的比特序列是一个比较复杂的过程,我们将接收到的符号序列与一个已知的8PSK符号序列进行比较。


3.Verilog核心程序

`timescale 1ns / 1ps

//

// Company:

// Engineer:

//

// Create Date: 2023/05/03 06:21:37

// Design Name:

// Module Name: TEST

// Project Name:

// Target Devices:

// Tool Versions:

// Description:

//

// Dependencies:

//

// Revision:

// Revision 0.01 - File Created

// Additional Comments:

//

//



module TEST();


reg i_clk;

reg i_clksample;

reg i_rst;

reg i_dat;

reg signed[7:0]i_SNR;

wire[2:0]o_ISET;

wire signed[15:0]o_I8psk;

wire signed[15:0]o_Q8psk;

wire signed[15:0]o_Ifir_T;

wire signed[15:0]o_Qfir_T;

wire signed[31:0]o_mod_T;

wire signed[15:0]o_Nmod_T;

wire signed[31:0]o_modc_R;

wire signed[31:0]o_mods_R;

wire signed[31:0]o_Ifir_R;

wire signed[31:0]o_Qfir_R;

wire  [2:0]o_wbits;

wire       o_bits;

wire signed[31:0]o_error_num;

wire signed[31:0]o_total_num;  

TOPS_8PSK TOPS_8PSK_u(

.i_clk      (i_clk),

.i_clksample(i_clksample),

.i_rst  (i_rst),

.i_SNR(i_SNR),

.i_dat  (i_dat),

.o_ISET (o_ISET),

.o_I8psk(o_I8psk),

.o_Q8psk(o_Q8psk),

.o_Ifir_T (o_Ifir_T),

.o_Qfir_T (o_Qfir_T),

.o_mod_T  (o_mod_T),

.o_Nmod_T(o_Nmod_T),

.o_modc_R (o_modc_R),

.o_mods_R (o_mods_R),

.o_Ifir_R (o_Ifir_R),

.o_Qfir_R (o_Qfir_R),

.o_wbits(o_wbits),

.o_bits (o_bits),

.o_error_num(o_error_num),

.o_total_num(o_total_num)

);



initial

begin

i_clk = 1'b1;

i_clksample= 1'b1;

i_rst = 1'b1;

i_SNR =30;//这个地方可以设置信噪比,数值大小从0~50,

#12000

i_rst = 1'b0;

end


always #80 i_clk=~i_clk;

always #1 i_clksample=~i_clksample;





initial

begin

i_dat = 1'b0;

#12000

repeat(10000)

begin

#160 i_dat = 1'b1;

#160 i_dat = 1'b1;

#160 i_dat = 1'b0;

#160 i_dat = 1'b0;

#160 i_dat = 1'b0;

#160 i_dat = 1'b1;

#160 i_dat = 1'b0;

#160 i_dat = 1'b1;

#160 i_dat = 1'b1;

#160 i_dat = 1'b0;

#160 i_dat = 1'b0;

#160 i_dat = 1'b0;

#160 i_dat = 1'b0;

#160 i_dat = 1'b0;

#160 i_dat = 1'b0;

#160 i_dat = 1'b0;

#160 i_dat = 1'b0;

#160 i_dat = 1'b0;

#160 i_dat = 1'b1;

#160 i_dat = 1'b1;

#160 i_dat = 1'b1;

#160 i_dat = 1'b0;

#160 i_dat = 1'b0;

#160 i_dat = 1'b1;

#160 i_dat = 1'b0;

#160 i_dat = 1'b0;

#160 i_dat = 1'b1;

#160 i_dat = 1'b1;

#160 i_dat = 1'b0;



end

end



//显示发射端带相位旋转的星座图

integer fout1;

integer fout2;

initial begin

fout1 = $fopen("It.txt","w");

fout2 = $fopen("Qt.txt","w");

end


always @ (posedge i_clk)

begin

if(i_rst==0)

begin

    $fwrite(fout1,"%d\n",o_Ifir_R);

$fwrite(fout2,"%d\n",o_Qfir_R);

end

else begin

    $fwrite(fout1,"%d\n",0);

$fwrite(fout2,"%d\n",0);

end

end




endmodule

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容