1.算法仿真效果
本系統(tǒng)進(jìn)行了兩個(gè)平臺(tái)的開發(fā)凛澎,分別是:
Vivado2019.2
Quartusii18.0+ModelSim-Altera 6.6d ?Starter Edition
其中Vivado2019.2仿真結(jié)果如下:
將上面的各個(gè)信號(hào)放大,各個(gè)信號(hào)含義如下:
Quartusii18.0+ModelSim-Altera 6.6d ?Starter Edition的測(cè)試結(jié)果如下:
2.算法涉及理論知識(shí)概要
DQPSK調(diào)制解調(diào)通信系統(tǒng)是一種數(shù)字通信系統(tǒng)着帽,用于將數(shù)字信息轉(zhuǎn)換為電信號(hào)進(jìn)行傳輸菊卷。DQPSK代表差分四相移鍵控調(diào)制煤率,是一種數(shù)字調(diào)制技術(shù)嗜闻,它在發(fā)送端對(duì)數(shù)字信息進(jìn)行編碼秘车,并在接收端對(duì)信號(hào)進(jìn)行解碼典勇。DQPSK調(diào)制解調(diào)通信系統(tǒng)具有高效、可靠和抗干擾等優(yōu)點(diǎn)叮趴,在現(xiàn)代通信系統(tǒng)中得到廣泛應(yīng)用割笙。
一、DQPSK調(diào)制原理
DQPSK調(diào)制是通過改變信號(hào)的相位來傳輸數(shù)字信息的調(diào)制方式眯亦。在DQPSK調(diào)制中伤溉,每個(gè)符號(hào)代表兩個(gè)比特,因此妻率,DQPSK調(diào)制器需要將兩個(gè)連續(xù)的比特組合在一起來形成一個(gè)符號(hào)乱顾。DQPSK調(diào)制器使用了差分編碼器來避免相位漂移問題,這是一種將相鄰符號(hào)之間的相位差編碼為一個(gè)比特的技術(shù)宫静。
下面是DQPSK調(diào)制器的數(shù)學(xué)公式:
每個(gè)符號(hào)代表兩個(gè)比特走净,因此,輸入比特串b1和b2可以組成一個(gè)符號(hào)s孤里,公式如下:
$s = \cos(\theta_1+\theta_0)$
其中伏伯,$\theta_1$是上一個(gè)符號(hào)的相位,$\theta_0$表示本次符號(hào)的相位捌袜。
DQPSK調(diào)制器需要根據(jù)上一個(gè)符號(hào)和本次符號(hào)的相位來計(jì)算相位差说搅,公式如下:
$\Delta\theta = \arctan\left(\frac{\sin(\theta_1+\theta_0)\cos(\theta_0)-\cos(\theta_1+\theta_0)\sin(\theta_0)}{\cos(\theta_1+\theta_0)\cos(\theta_0)+\sin(\theta_1+\theta_0)\sin(\theta_0)}\right)$
最后,DQPSK調(diào)制器需要將相位差映射到相位平面上虏等,公式如下:
$s = \cos(\theta_1+\theta_0+\Delta\theta)$
二弄唧、DQPSK解調(diào)原理
DQPSK解調(diào)器需要根據(jù)接收到的信號(hào)來計(jì)算出相位差,然后將相位差解碼為數(shù)字信息霍衫。DQPSK解調(diào)器使用低通濾波器來濾除高頻噪聲套才,并將接收到的信號(hào)分為兩個(gè)時(shí)間窗口拉一。接下來是DQPSK解調(diào)器的數(shù)學(xué)公式:
接收到的信號(hào)r可以表示為:
$r = s\cos(\theta_0)+n$
其中松逊,$\theta_0$是本地參考信號(hào)的相位,n是接收到的噪聲问窃。
接下來,將接收到的信號(hào)r分為兩個(gè)時(shí)間窗口r1和r2:
$r_1 = r_{T/2-1:0}$
$r_2 = r_{T-1:T/2}$
其中傻寂,T是一個(gè)符號(hào)的持續(xù)時(shí)間息尺。
計(jì)算相位差,公式如下:
$\Delta\theta = \arctan\left(\frac{h\sin(2\pi fT)(r_1\cos(\theta_0)-r_2\sin(\theta_0))}{h\cos(2\pi fT)(r_2\cos(\theta_0)+r_1\sin(\theta_0))}\right)$
其中疾掰,h是低通濾波器的傳遞函數(shù)搂誉,f是載波頻率。
最后静檬,將相位差解碼為數(shù)字信息炭懊,公式如下:
$b_1 = \Delta\theta > 0$
$b_2 = |\Delta\theta| > \pi/2$
這里,如果相位差$\Delta\theta$大于0拂檩,則將$b_1$設(shè)置為1侮腹,否則設(shè)置為0;如果相位差的絕對(duì)值大于$\pi/2$稻励,則將$b_2$設(shè)置為1父阻,否則設(shè)置為0。
三望抽、DQPSK調(diào)制解調(diào)算法的實(shí)現(xiàn)過程
下面是DQPSK調(diào)制解調(diào)算法的實(shí)現(xiàn)過程:
產(chǎn)生本地參考信號(hào)
在DQPSK調(diào)制解調(diào)通信系統(tǒng)中加矛,發(fā)送端和接收端需要使用相同頻率和相位的載波信號(hào)。因此煤篙,需要在接收端產(chǎn)生一個(gè)本地參考信號(hào)斟览,用于解調(diào)接收到的信號(hào)。本地參考信號(hào)可以使用一個(gè)簡(jiǎn)單的正弦波振蕩器產(chǎn)生辑奈,公式如下:
$\theta_0(nT) = \theta_0((n-1)T) + 2\pi f_0 T$
其中苛茂,$f_0$是載波頻率,$T$是一個(gè)符號(hào)的持續(xù)時(shí)間身害。
進(jìn)行DQPSK調(diào)制
DQPSK調(diào)制器需要將兩個(gè)連續(xù)的比特組合在一起來形成一個(gè)符號(hào)味悄,然后根據(jù)上一個(gè)符號(hào)和本次符號(hào)的相位來計(jì)算相位差,最后將相位差映射到相位平面上塌鸯。
3.Verilog核心程序
module TEST();
reg i_clk;
reg i_rst;
reg i_clkSYM;
reg i_dat;
wire o_Idiff;
wire o_Qdiff;
wire signed[15:0]o_Ifir_T;
wire signed[15:0]o_Qfir_T;
wire signed[15:0]o_cos_T;
wire signed[15:0]o_sin_T;
wire signed[31:0]o_modc_T;
wire signed[31:0]o_mods_T;
wire signed[31:0]o_mod_T;
wire signed[15:0]o_cos_R;
wire signed[15:0]o_sin_R;
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 o_I;
wire o_Q;
wire o_bits;
//DQPSK調(diào)制
TDQPSK TQPSKU(
.i_clk ?(i_clk),
.i_rst ?(i_rst),
.i_clkSYM(i_clkSYM),
.i_dat ?(i_dat),
.o_Idiff(o_Idiff),
.o_Qdiff(o_Qdiff),
.o_Ifir (o_Ifir_T),
.o_Qfir (o_Qfir_T),
.o_cos ?(o_cos_T),
.o_sin ?(o_sin_T),
.o_modc (o_modc_T),
.o_mods (o_mods_T),
.o_mod ?(o_mod_T)
);
//DQPSK解調(diào)
RDQPSK RQPSKU(
.i_clk ?(i_clk),
.i_rst ?(i_rst),
.i_clkSYM(i_clkSYM),
.i_med ?(o_mod_T[25:10]),
.o_cos ?(o_cos_R),
.o_sin ?(o_sin_R),
.o_modc (o_modc_R),
.o_mods (o_mods_R),
.o_Ifir (o_Ifir_R),
.o_Qfir (o_Qfir_R),
.o_I(o_I),
.o_Q(o_Q),
.o_bits(o_bits)
);
initial
begin
i_clk = 1'b1;
i_clkSYM=1'b1;
i_rst = 1'b1;
#1600
i_rst = 1'b0;
end