1.算法仿真效果
本系統(tǒng)進(jìn)行了兩個(gè)平臺(tái)的開(kāi)發(fā)登夫,分別是:
Vivado2019.2
Quartusii18.0+ModelSim-Altera 6.6d ?Starter Edition
其中Vivado2019.2仿真結(jié)果如下:
仿真結(jié)果導(dǎo)入matlab可以看星座圖:
Quartusii18.0+ModelSim-Altera 6.6d ?Starter Edition的測(cè)試結(jié)果如下:
2.算法涉及理論知識(shí)概要
基于FPGA的64QAM調(diào)制解調(diào)通信系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)。首先霍衫,介紹了通信系統(tǒng)的基本原理和調(diào)制解調(diào)過(guò)程中需要用到的數(shù)學(xué)知識(shí)懊纳,包括正交幅度調(diào)制(QAM)和數(shù)字信號(hào)處理(DSP)算法蚓炬。其次,詳細(xì)介紹了64QAM調(diào)制解調(diào)系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)步驟秘狞,包括信號(hào)生成叭莫、信號(hào)調(diào)制、信號(hào)解調(diào)和誤碼率測(cè)試等環(huán)節(jié)烁试。最后雇初,通過(guò)仿真實(shí)驗(yàn)和硬件實(shí)現(xiàn)測(cè)試,驗(yàn)證了系統(tǒng)的可行性和性能减响。
隨著無(wú)線通信技術(shù)的不斷發(fā)展靖诗,越來(lái)越多的應(yīng)用需要高速、高可靠性的通信系統(tǒng)來(lái)傳輸數(shù)據(jù)支示。調(diào)制解調(diào)是一種常用的數(shù)字通信技術(shù)刊橘,它可以將數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào)進(jìn)行傳輸,同時(shí)也可以將接收到的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)進(jìn)行處理颂鸿。在數(shù)字調(diào)制解調(diào)中促绵,QAM是一種常用的調(diào)制方式,它可以將數(shù)字信號(hào)分為實(shí)部和虛部?jī)蓚€(gè)部分進(jìn)行編碼嘴纺,從而實(shí)現(xiàn)高效的數(shù)據(jù)傳輸败晴。本文旨在介紹基于FPGA的64QAM調(diào)制解調(diào)通信系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn),包括信號(hào)生成栽渴、信號(hào)調(diào)制尖坤、信號(hào)解調(diào)和誤碼率測(cè)試等環(huán)節(jié),以驗(yàn)證系統(tǒng)的可行性和性能闲擦。
2.1慢味、64QAM調(diào)制解調(diào)系統(tǒng)的設(shè)計(jì)
2.1 信號(hào)生成
在64QAM調(diào)制解調(diào)系統(tǒng)中,需要生成一定數(shù)量的數(shù)字信號(hào)墅冷,作為調(diào)制信號(hào)和參考信號(hào)纯路。數(shù)字信號(hào)可以使用隨機(jī)數(shù)生成器產(chǎn)生,也可以使用特定的算法生成俺榆。在本文中感昼,我們采用了帶噪聲的隨機(jī)數(shù)生成器產(chǎn)生數(shù)字信號(hào),其中噪聲是為了模擬實(shí)際通信中的信道噪聲罐脊。
2.2 信號(hào)調(diào)制
在64QAM調(diào)制解調(diào)系統(tǒng)中定嗓,需要將數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào)進(jìn)行傳輸蜕琴,這個(gè)過(guò)程稱為信號(hào)調(diào)制。在QAM調(diào)制中宵溅,數(shù)字信號(hào)分為實(shí)部和虛部?jī)蓚€(gè)部分進(jìn)行編碼凌简,然后將它們分別調(diào)制到不同的載波上,最后將兩個(gè)載波疊加在一起恃逻。具體來(lái)說(shuō)雏搂,假設(shè)數(shù)字信號(hào)為s(n),其中n表示信號(hào)的采樣點(diǎn)寇损,QAM調(diào)制可以表示為:
sI(n)=AIcos(2πfct(n)) sQ(n)=AQsin(2πfct(n)) s(n)=sI(n)+sQ(n)=AIcos(2πfct(n))+AQsin(2πfct(n))
sI(n)=AIcos(2πfct(n)) sQ(n)=AQsin(2πfct(n)) s(n)=sI(n)+sQ(n)=AIcos(2πfct(n))+AQsin(2πfct(n))
其中凸郑,s_I(n)表示實(shí)部信號(hào),s_Q(n)表示虛部信號(hào)矛市,A_I和A_Q分別表示實(shí)部和虛部的調(diào)制系數(shù)芙沥,f_c表示載波頻率,t(n)表示采樣時(shí)間浊吏。在64QAM調(diào)制中而昨,實(shí)部和虛部分別采用8QAM調(diào)制,然后疊加在一起找田,最終得到64QAM調(diào)制信號(hào)歌憨。
2.3 信號(hào)解調(diào)
在接收端,需要將接收到的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)進(jìn)行處理墩衙,這個(gè)過(guò)程稱為信號(hào)解調(diào)务嫡。在64QAM解調(diào)中,首先需要將接收到的信號(hào)分離成實(shí)部和虛部底桂,然后進(jìn)行8QAM解調(diào)植袍,最后將解調(diào)后的實(shí)部和虛部重新組合成數(shù)字信號(hào)惧眠。具體來(lái)說(shuō)籽懦,假設(shè)接收到的信號(hào)為$r(n)$,則可以表示為:
r(n)=AIcos(2πfct(n)+?I)+AQsin(2πfct(n)+?Q)
r(n)=AIcos(2πfct(n)+?I)+AQsin(2πfct(n)+?Q)
其中氛魁,A_I和A_Q分別表示實(shí)部和虛部的振幅暮顺,\phi_I和\phi_Q分別表示實(shí)部和虛部的相位。根據(jù)正交幅度調(diào)制的原理秀存,實(shí)部和虛部信號(hào)可以通過(guò)乘以正弦和余弦信號(hào)進(jìn)行解調(diào)捶码,即:
sI(n)=r(n)cos(2πfct(n)) sQ(n)=r(n)sin(2πfct(n))
sI(n)=r(n)cos(2πfct(n)) sQ(n)=r(n)sin(2πfct(n))
然后,將解調(diào)后的實(shí)部和虛部信號(hào)進(jìn)行8QAM解調(diào)或链,得到解調(diào)后的數(shù)字信號(hào)惫恼。
3.Verilog核心程序
wire ??????serial_in;
wire ??????data_flag;
integer ?mixed_out;
bit_signals bit_signals_U(
.clk ??????(clk),
.rst ??????(rst),
.enable ???(start),
.serial_in (serial_in),
.data_flag (data_flag)
);
s2p s2p_U(
.clk ??????????(clk),
.rst ??????????(rst),
.start ????????(start),
.serial_in ????(serial_in),
.data_flag ????(data_flag),
.parallel_data (parallel_data)
);
// local_oscillator local_oscillator_u(
// .clk ???(clk),
// .rst ???(rst),
// .start ?(start),
// .sin ???(sin),
// .cos ???(cos)
// );
wire signed[9:0]mcos;
wire signed[9:0]msin;
NCO_Trans NCO_Trans_u(
.i_clk (clk),
.i_rst (~rst), ?
.i_K ??(10'd256),
.o_cos (mcos),
.o_sin (msin)
);
assign cos={mcos,6'd0};
assign sin={msin,6'd0}; ??
mod64QAM mod64QAM_u(
.clk(clk),
.rst(rst),
.start(start),
.parallel_data(parallel_data),
.sin(sin),
.cos(cos),
.I_com(I_com),
.Q_com(Q_com)
);
//調(diào)制輸出
always @(posedge clk or negedge rst)
begin
if(~rst)
begin
I_comcos<={16{1'b0}};
? Q_comsin<={16{1'b0}};
end
else begin
I_comcos<=$signed(I_com[4:0])*$signed(cos[15:5]);
? Q_comsin<=$signed(Q_com[4:0])*$signed(sin[15:5]);
end
end
endmodule