1.算法仿真效果
本系統(tǒng)在以前寫(xiě)過(guò)的BPSK調(diào)制解調(diào)系統(tǒng)的基礎(chǔ)上冤竹,增加了高斯信道模塊财饥,誤碼率統(tǒng)計(jì)模塊落竹,可以驗(yàn)證不同SNR情況下的BPSK誤碼情況闸氮。
vivado2019.2仿真結(jié)果如下(完整代碼運(yùn)行后無(wú)水蛹艨觥):
SNR=0db:
SNR=5db:
系統(tǒng)RTL結(jié)構(gòu)如下:
2.算法涉及理論知識(shí)概要
BPSK信號(hào)與2ASK信號(hào)的時(shí)域表達(dá)式在形式上是完全相同的,所不同的只是兩者基帶信號(hào)s(t)的構(gòu)成蒲跨,一個(gè)由雙極性NRZ碼組成译断,另一個(gè)由單極性NRZ碼組成。因此或悲,求BPSK信號(hào)的功率譜密度時(shí)孙咪,也可采用與求2ASK信號(hào)功率譜密度相同的方法堪唐。
(1)當(dāng)雙極性基帶信號(hào)以相等的概率(p=1/2)出現(xiàn)時(shí),BPSK信號(hào)的功率譜僅由連續(xù)譜組成翎蹈。BPSK信號(hào)的功率譜由連續(xù)譜和離散譜兩部分組成淮菠。其中,連續(xù)譜取決于數(shù)字基帶信號(hào)s(t)經(jīng)線性調(diào)制后的雙邊帶譜荤堪,而離散譜則由載波分量確定合陵。
(2)BPSK的連續(xù)譜部分與2ASK信號(hào)的連續(xù)譜基本相同(僅差一個(gè)常數(shù)因子)。因此澄阳,BPSK信號(hào)的帶寬拥知、頻帶利用率也與2ASK信號(hào)的相同。
在數(shù)字調(diào)制中碎赢,BPSK(后面將會(huì)看到2DPSK也同樣)的頻譜特性與2ASK十分相似低剔。相位調(diào)制和頻率調(diào)制一樣,本質(zhì)上是一種非線性調(diào)制肮塞,但在數(shù)字調(diào)相中户侥,由于表征信息的相位變化只有有限的離散取值,因此峦嗤,可以把相位變化歸結(jié)為幅度變化蕊唐。這樣一來(lái),數(shù)字調(diào)相同線性調(diào)制的數(shù)字調(diào)幅就聯(lián)系起來(lái)了烁设,為此可以把數(shù)字調(diào)相信號(hào)當(dāng)作線性調(diào)制信號(hào)來(lái)處理了替梨。但是不能把上述概念推廣到所有調(diào)相信號(hào)中去。
BPSK (Binary Phase Shift Keying)-------二進(jìn)制相移鍵控装黑。是把模擬信號(hào)轉(zhuǎn)換成數(shù)據(jù)值的轉(zhuǎn)換方式之一副瀑,利用偏離相位的復(fù)數(shù)波浪組合來(lái)表現(xiàn)信息鍵控移相方式。BPSK使用了基準(zhǔn)的正弦波和相位反轉(zhuǎn)的波浪恋谭,使一方為0糠睡,另一方為1,從而可以同時(shí)傳送接受2值(1比特)的信息疚颊。
由于最單純的鍵控移相方式雖抗噪音較強(qiáng)但傳送效率差狈孔,所以常常使用利用4個(gè)相位的QPSK和利用8個(gè)相位的BPSK。
????????二進(jìn)制相移鍵控(BPSK)信號(hào)進(jìn)行相干解調(diào)的系統(tǒng)材义,其包括:用于從所述BPSK信號(hào)中恢復(fù)出頻率為2F的載波信號(hào)(C)的裝置均抽;用于將頻率為2F的所述信號(hào)注入到注入鎖定振蕩器(ILO)中的裝置,該注入鎖定振蕩器的固有諧振頻率為f↓[r]其掂,該f↓[r]大致等于f油挥,該注入鎖定振蕩器提供用于恢復(fù)具有(θ↓[e]-k)/2相移的原始載波的差分輸出(o↓[p]、o↓[n])信號(hào),其中θ=arcsin[(f↓[r]-r)/αA↓[i]f]深寥,其中α和k是取決于所述注入鎖定振蕩器(ILO)中的主要非線性的類型的參數(shù)攘乒,而A↓[i]是所恢復(fù)的頻率為2f的載波信號(hào)的幅值,以及用于將所述差分輸出(o↓[p]惋鹅、o↓[n])信號(hào)與所述輸入BPSK信號(hào)的副本進(jìn)行組合则酝,以產(chǎn)生解調(diào)信號(hào)(DEMOD)的裝置。
3.Verilog核心程序
`timescale 1ns / 1ps
module test_BPSK;
reg i_clk;
reg i_rst;
reg i_bits;
reg signed[7:0]i_SNR;
wire signed[1:0]o_nz;
wire signed[15:0]o_fir;
wire signed[15:0]o_carrier;
wire signed[31:0]o_mod;
wire signed[15:0]o_modn;
wire signed[15:0]o_carrier_local;
wire signed[31:0]o_dw;
wire signed[31:0]o_demod ;
wire signed[31:0]o_error_num;
wire signed[31:0]o_total_num;
BPSK uut(
.i_clk(i_clk),
.i_rst(i_rst),
.i_bits(i_bits),
.i_SNR(i_SNR),
.o_nz(o_nz),
.o_fir(o_fir),
.o_carrier(o_carrier),
.o_mod(o_mod),
.o_modn(o_modn),
.o_carrier_local(o_carrier_local),
.o_dw(o_dw),
.o_demod(o_demod),
.o_error_num(o_error_num),
.o_total_num(o_total_num)
);
initial
begin
i_clk = 1'b1;
i_rst = 1'b1;
i_SNR=5;//這個(gè)地方可以設(shè)置信噪比负饲,數(shù)值大小從0~50堤魁,
#1000
i_rst = 1'b0;
end
initial
begin
i_bits= 1'b0;
#1000
repeat(10000)
begin
#2560
i_bits= 1'b1;
#2560
i_bits= 1'b0;
#2560
i_bits= 1'b0;
#5120
i_bits= 1'b1;
#640
i_bits= 1'b1;
#2560
i_bits= 1'b0;
#2560
i_bits= 1'b1;
#2560
i_bits= 1'b1;
#2560
i_bits= 1'b0;
#2560
i_bits= 1'b0;
#320
i_bits= 1'b0;
#320
i_bits= 1'b0;
#320
i_bits= 1'b1;
#640
i_bits= 1'b1;
#2560
i_bits= 1'b0;
#2560
i_bits= 1'b1;
#2560
i_bits= 1'b0;
end
end
always #5 i_clk=~i_clk;
endmodule
0sj_006m