摘要:数字调制解调技术在数字通信中占有非常重要的地位,数字通信技术与FPGA的结合是现代通信系统发展的一个必然趋势。文中介绍了QPSK调制解调的原理,并基于FPGA实现了QPSK调制解调电路。MAX+PLUSII环境下的仿真结果表明了该设计的正确性。
关键词:QPSK;FPGA;调制;解调
数字调制信号又称为键控信号,调制过程可用键控的方法由基带信号对载频信号的振幅、频率及相位进行调制,最基本的方法有3种:正交幅度调制(QAM)、频移键控(FSK)、相移键控(PSK).根据所处理的基带信号的进制不同分为二进制和多进制调制(M 进制).多进制数字调制与二进制相比,其频谱利用率更高.其中QPSK(即4PSK)是MPSK(多进制相移键控)中应用最广泛的一种调制方式。本文研究了基于FPGA的QPSK调制解调电路的实现方法,并给出了MAX+PLUSII环境下的仿真结果。
1 QPSK简介
QPSK信号有00、01、10、11四种状态。所以,对输入的二进制序列,首先必须分组,每两位码元一组。然后根据组合情况,用载波的四种相位表征它们。QPSK信号实际上是两路正交双边带信号,可由图1所示方法产生。
QPSK信号是两个正交的2PSK信号的合成,所以可仿照2PSK信号的相平解调法,用两个正交的相干载波分别检测A和B两个分量,然后还原成串行二进制数字信号,即可完成QPSK信号的解调,解调过程如图2所示。

图1 QPSK信号调制原理图

图2 QPSK信号解调原理图
2 QPSK调制电路的FPGA实现及仿真
2.1 基于FPGA的QPSK调制电路方框图
基带信号通过串/并转换器得到2位并行信号,,四选一开关根据该数据,选择载波对应的相位进行输出,即得到调制信号,调制框图如图3所示。

图3 QPSK调制电路方框图
2.2 调制电路VHDL程序及仿真结果
entity modulation is
port(clk :in std_logic; --系统时钟
start :in std_logic; --开始调制信号
x :in std_logic; --基带信号
y :out std_logic); --调制信号
end modulation;
architecture behav of modulation is
signal q:integer range 0 to 7; --计数器
signal xx:std_logic_vector(1 downto 0); --中间寄存器
signal yy:std_logic_vector(1 downto 0); --2位并行码寄存器
signal f:std_logic_vector(3 downto 0); --载波f
begin
process(clk) --通过对clk分频,得到4种相位;并完成基带信号的串并转换
begin
if clk'event and clk='1' then
if start='0' then q<=0;
elsif q=0 then q<=1;f(3)<='1'; f(1)<='0'; xx(1)<=x;yy<=xx;
elsif q=2 then q<=3;f(2)<='0'; f(0)<='1';
elsif q=4 then q<=5;f(3)<='0'; f(1)<='1'; xx(0)<=x;
elsif q=6 then q<=7;f(2)<='1'; f(0)<='0';
else q<=q+1;
end if;
end if;
end process;
y<=f(0) when yy="11" else
f(1) when yy="10" else
f(2) when yy="01" else
f(3); --根据yy寄存器数据,输出对应的载波
end behav;
MAX+PLUSII环境下的仿真结果如图4所示。

图4 调制程序仿真结果
3 QPSK解调电路的FPGA实现及仿真
3.1 QPSK解调电路方框图

图5 QPSK解调电路方框图
当调制为低电平时,译码器1根据记数器输出值,送入加法器相应的数据。加法器把运算结果送到寄存器, 译码器2根据寄存器数据通过译码,输出两位并行信号,该信号再通过并/串转换即可得到解调后的基带信号,调制框图如图5所示。
3.2 解调电路VHDL程序及仿真结果
entity demodulation is
port(clk :in std_logic; --系统时钟
start :in std_logic; --同步信号
x :in std_logic; --调制信号
y :out std_logic); --基带信号
end demodulation;
architecture behav of demodulation is
signal q:integer range 0 to 7; --计数器
signal xx:std_logic_vector(2 downto 0); --加法器
signal yyy:std_logic_vector(1 downto 0); --2位并行基代信号寄存器
signal yy:std_logic_vector(2 downto 0); --寄存xx数据
begin
process(clk)
begin
if clk'event and clk='1' then
if start='0' then q<=0;
elsif q=0 then q<=1;yy<=xx; y<=yyy(0); --把加法计数器的数据送入yy寄存器
if x='0' then xx<="001"; --调制信号x为低电平时,送入加法器的数据“001”
else xx<="000";
end if;
elsif q=2 then q<=3;
if x='0' then xx<=xx+"001"; --调制信号x为低电平时,送入加法器的数据“001”
end if;
elsif q=4 then q<=5; y<=yyy(1);
if x='0' then xx<=xx+"010"; --调制信号x为低电平时,送入加法器的数据“010”
end if;
elsif q=6 then q<=7;
if x='0' then xx<=xx+"011"; --调制信号x为低电平时,送入加法器的数据“011”
end if;
else q<=q+1;
end if;
end if;
end process;
process(yy) --此进程根据yy寄存器里的数据进行译码
begin
if clk='1' and clk'event then
if yy="101" then yyy<="00"; --yy寄存器“101”对应基带码“00”
elsif yy="011" then yyy<="01"; --yy寄存器“011”对应基带码“01”
elsif yy="010" then yyy<="10"; --yy寄存器“010”对应基带码“10”
elsif yy="100" then yyy<="11"; --yy寄存器“100”对应基带码“11”
else yyy<="00";
end if;
end if;
end process;
end behav;
MAX+PLUSII环境下的仿真结果如图6所示。

图6 解调程序仿真结果
4 结束语
多进制数字调制技术与FPGA的结合使得通信系统的性能得到了迅速的提高。本文基于FPGA实现了QPSK调制解调电路,该设计对其它类型的调制解调电路也有一定的参考作用。
本文作者创新观点:文中基于FPGA方式实现了QPSK数字调制解调电路的设计,它比传统的模拟调制方式有着显著的优越性,通信链路中的任何不足均可以借助于软件根除,不仅可以实现信息加密,而且还可以通过相应的误差校准技术,使接收到数据准确性更高。此外,本文采用了相位选择法进行QPSK解调设计,与常用的调相解调法相比,设计更简单,更适合于FPGA实现,系统的可靠性也更高。
参考文献:
[1] 段吉海,胡媛媛.基于VHDL的MSK调制解调器的建模与设计[J].微计算机信息,2006年第7-2期:205-207
[2] 叶淦华.FPGA嵌入式应用系统开发典型实例[M].北京:中国电力出版社,2005

