m分别通过matlab和FPGA实现基于高阶循环谱的信号载波调制识别(四阶循环累量)仿真

1.算法描述

通信信号调制方式自动识别在军事和民用领域的信号检测、威胁干扰分析、频谱监测管理等方面有着广泛应用,是非合作通信的关键技术。其主要任务是对截获信号进行处理,比如变频、去载波、参数估计等,从中提取特征参数,然后利用适当的算法对调制信号的调制方式做出判决,为后续信号解调等处理提供依据。  


由于数字调制信号越来越多地应用于通信信号处理领域,因此对数字信号调制识别的研究也越来越多。传统的调制识别的判决方法有:决策判决法、高阶累积量算法和人工神经网络算法等。但是决策判决法在低信噪比环境中识别率不高,而基于人工神经网络的识别方法计算复杂度较高。信号的高阶累积量算法具有很好的抗噪性能,故对基于高阶累积量的通信信号调制识别算法的研究受到了广泛重视。文献利用高阶累积量实现了对2ASK/BPSK,4ASK,4PSK,2FSK,4FSK信号的分类。文献利用四阶和六阶累积量实现了对 2ASK,4ASK,8ASK,QPSK,8P-SK,16QAM信号的分类。文献利用二、四、六阶累积量实现了对 2ASK/BPSK,4ASK,QPSK,2FSK,4FSK,8FSK,16QAM信号的分类。文献对高阶累积量的四阶、五阶累积量进行了优化和仿真,但是在低信噪比的环境下,对信号的识别率都不高。


所谓高阶统计量,通常是指信号的高阶矩,高阶累积量等信号统计信息的统称。在这些高阶统计量中,高阶累积量具有十分重要的重用,不同阶数的累积量可以反映出信号的不同特征,因此高阶累积量往往应用在信号分类,信号调制方式识别等领域。高阶累积量中的二阶累积量和四阶累积量可以有效抑制高斯白噪声的干扰,且对相位偏移具有一定的容错能力,其数学表达式为:


下面摘取调制方式在高阶累积量上的差异,


2.仿真效果预览

Quartus II 12.1 (64-Bit),


ModelSim-Altera 6.6d (Quartus II 11.0) Starter Edition


3.verilog核心程序

matlab部分:

clc;

close all;

clear all;

addpath 'func\'

rng('default')

SEL     = 3;

%假定接收端已经实现载波同步

seldata = randi([0 1],1,1000);

fs      = 10000;

R       = 250;

fc      = 1900;

if SEL == 1

y_2psk1 = func_BPSK(seldata,fs,fc,R,1);

y_2psk2 = func_BPSK(seldata,fs,fc,R,1.05);

com     = y_2psk1+y_2psk2;

end

if SEL == 2

y_4psk1 = func_QPSK(seldata,fs,fc,R,1);

y_4psk2 = func_QPSK(seldata,fs,fc,R,1.05);     

com     = y_4psk1+y_4psk2;

end

if SEL == 3

y_8psk1 = func_8PSK(seldata,fs,fc,R,1);

y_8psk2 = func_8PSK(seldata,fs,fc,R,1.05);       

com     = y_8psk1+y_8psk2;

end


%%%%%%%%四阶循环累积量%%%%%%%%%%%%

NOI = max(abs(com))/100;

y   = NOI + awgn(com,30,'measured');    

yft = abs(fft(y,4096));

figure;

plot(fs*(0:2047)/4096,yft(1:2048))

title('频谱');

fc    = fc;   

alpha =(fc-R):1:(fc+R);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

S4 = y.^4;

S2 = y.^2;

m  = size(y);

k  =(1:m(2))';

n  = 0;

for i=1:(2*R+1)

i

e1(:,i)  = exp(-j*8*pi*alpha(i)*k./fs);

su1(:,i) = S4'.*e1(:,i);

C1(i)    = mean(su1(:,i));

e2(:,i)  = exp(-j*4*pi*alpha(i)*k./fs);

su2(:,i) = S2'.*e2(:,i);

C2(i)    = mean(su2(:,i));

n        = n+1;

end

C=C1-3*C2.^2;

figure

plot(alpha,abs(C));

if SEL == 1

title('BPSK');

end

if SEL == 2

title('QPSK');

end

if SEL == 3

title('8PSK');

end

C40 = C;



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

S4  = (y.^3).*conj(y);

S21 = y.^2;

S22 = y.*conj(y);

m  = size(y);

k  =(1:m(2))';

n  = 0;

for i=1:(2*R+1)

i

e1(:,i)  = exp(-j*8*pi*alpha(i)*k./fs);

su1(:,i) = S4'.*e1(:,i);

C1(i)    = mean(su1(:,i));


e2(:,i)  = exp(-j*4*pi*alpha(i)*k./fs);

su2(:,i) = (S21'.*e2(:,i));

C2(i)    = mean(su2(:,i));


e3(:,i)  = exp(-j*4*pi*alpha(i)*k./fs);

su3(:,i) = (S22'.*e3(:,i));

C3(i)    = mean(su3(:,i));    


n        = n+1;

end

C=C1-3*C2.*C3;

figure

plot(alpha,abs(C));

if SEL == 1

title('BPSK');

end

if SEL == 2

title('QPSK');

end

if SEL == 3

title('8PSK');

end

C41 = C;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

S4  = (y.^2).*(conj(y).^2);

S21 = y.^2;

S22 = conj(y).^2;

S3  = y.*conj(y);

m   = size(y);

k   =(1:m(2))';

n   = 0;

for i=1:(2*R+1)

i

e1(:,i)  = exp(-j*8*pi*alpha(i)*k./fs);

su1(:,i) = S4'.*e1(:,i);

C1(i)    = mean(su1(:,i));


e2(:,i)  = exp(-j*4*pi*alpha(i)*k./fs);

su2(:,i) = (S3'.*e2(:,i));

C2(i)    = mean(su2(:,i));


e4(:,i)  = exp(-j*4*pi*alpha(i)*k./fs);

su4(:,i) = (S22'.*e4(:,i)).*(S22'.*e3(:,i));

C4(i)    = mean(su4(:,i));      

n        = n+1;

end

C=C1 - 2*C2.^2 - C4;

figure

plot(alpha,abs(C));

if SEL == 1

title('BPSK');

end

if SEL == 2

title('QPSK');

end

if SEL == 3

title('8PSK');

end

C42 = C;

FM = round([abs(C41/C40);abs(C41/C42)]);

FM



`timescale 1ns / 1ps

module C4012_cal(

i_clk,

i_rst,

i_din,

o_C40,

o_FM

);


input i_clk;

input i_rst;

input signed[15:0]i_din;

output signed[15:0]o_C40;   

output[1:0]   o_FM;


reg signed[31:0]S2s;

reg signed[63:0]S4s;

always @(posedge i_clk or posedge i_rst)

begin

if(i_rst)

begin

S2s <= 32'd0;

S4s <= 64'd0;

end

else begin

S2s <= i_din * i_din;

S4s <= i_din * i_din * i_din * i_din;

end

end



wire signed[15:0]S2;

wire signed[15:0]S4;


assign S2 = S2s[31:16];

assign S4 = S4s[63:48];



reg[11:0]cnt;

always @(posedge i_clk or posedge i_rst)

begin

if(i_rst)

begin

cnt <= 12'd0;

end

else begin

if(cnt == 12'd2000)

cnt <= 12'd2000;

else

cnt <= cnt + 12'd1;  

end

end


reg start;

always @(posedge i_clk or posedge i_rst)

begin

if(i_rst)

begin

start <= 1'd0;

end

else begin

if(cnt == 12'd406)

start <= 1'd1;

else

start <= 1'd0;  

end

end

wire signed[15:0]DOUT;

C4012 C4012_u(

.CLK  (i_clk),

.RST  (i_rst),

.START(start),

.DIN  (i_din[15:6]),

.DOUT (DOUT),

.FM   (o_FM)

);





reg       [15:0] CNT;

reg signed[15:0]o_C40;

reg             flag;

always @(posedge i_clk or posedge i_rst)

begin

if(i_rst)

begin

flag <= 1'b0;

end

else begin    

if(DOUT >= 1000)

flag <= 1'b1;

else

flag <= flag;   

end

end


always @(posedge i_clk or posedge i_rst)

begin

if(i_rst)

begin

CNT <= 16'd0;

end

else begin    

if(flag == 1'b1)

begin

CNT <= CNT + 16'd1;

if(CNT >= 16'd10000)

CNT <= 16'd10000;

end

end

end


always @(posedge i_clk or posedge i_rst)

begin

if(i_rst)

begin

o_C40 <= 16'd0;

end

else begin    

if(CNT <= 100)

o_C40 <= DOUT;

else

o_C40 <= 16'd0;

end

end

endmodule   

01_107m

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

推荐阅读更多精彩内容