(EDA)基于FPGA的QPSK调制解调电路设计与实现说明书.doc
文本预览下载声明
基于FPGA的QPSK调制解调电路设计与实现
1 QPSK简介
图1 QPSK信号调制原理图
图2 QPSK信号解调原理图
2 QPSK调制电路的FPGA实现及仿真
2.1基于FPGA的QPSK调制电路方框图
图3 QPSK调制电路框图
系统顶层框图如下
图中输入信号clk为调制模块时钟,start为调制模块的使能信号,x为基带信号,y是qpsk调制信号的输出端,carrier【3..0】为4种不同相位的载波,其相位非别为0、90、180、270度,锁相环模块用来进行相位调节,用来模拟通信系统中发送时钟与接收时钟的不同步start1为解调模块的使能信号。y2为解调信号的输出端。
2.2调制电路VHDL程序
程序说明
信号yy 载波相位 载波波形 载波符号 “00” 0° f3 “01” 90° f2 “10” 180° f1 “11” 270° f0
library ieee;
use ieee.std_logic_arith.all;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity PL_MPSK is
port(clk :in std_logic; --系统时钟
start :in std_logic; --开始调制信号
x :in std_logic; --基带信号
y :out std_logic;
carrier :out std_logic_vector(3 downto 0);
xxx :out std_logic_vector(1 downto 0)
); --调制信号
end PL_MPSK;
architecture behav of PL_MPSK is
signal q:integer range 0 to 7; --计数器
signal ss:std_logic_vector(1 downto 0); --中间寄存器
signal yy:std_logic_vector(1 downto 0); --2位并行码寄存器
signal xx:std_logic_vector(1 downto 0);
signal f:std_logic_vector(3 downto 0); --载波f
begin
process(clk) --通过对clk分频,得到4种相位;并完成基带信号的串并转换
begin
if clkevent 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;
--ss=yy;
xxx=yy;
end process;
y=f(0) when yy=11 else
f(1) when yy=10 else
f(2) when yy=01 else
f(3) when yy=00; --根据yy寄存器数据,输出对应的载波
carrier=f;
end behav;
在quartus ii下的仿真结果总体结果如下图所示
局部放大图如下
3 QPSK解调电路的FPGA实现及仿真
3.1 QPSK解调电路方框图
当调制为低电平时,译码器1根据记数器输出值,送入加法器相应的数据。加法器把运算结果送到寄存器,译码器2根据寄存器数据通过译码,输出两位并行信号,该信号再通过并/串转换即可得到解调后的基带信号,调制框图如图4所示。
图4 QPSK解调电路框图
3.2解调电路VHDL程序
library ieee;
use ieee.std_logic_arith.all;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity PL_MPSK2 is
port(clk :in std_logic;
显示全部