My title page contents

QPSK调制和解调设计VHDL代码Quartus仿真

名称:QPSK调制和解调设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

QPSK调制和解调

 使用VHDL语言进行QPSK调制和解调,并进行仿真


FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com


演示视频:

设计文档:

设计文档.doc

1. 工程文件


2. 程序文件





3. 程序编译


4. Testbench


5. 仿真图

调制过程:首先通过m序列产生随机信号,作为调制信号,再将改信号转换为2为并行数

据,通过在正弦波基础上改变相位得到QPSK信号。

5.1 QPSK调制部分





解调过程:将QPSK信号与sin和cos载波相乘,再对相乘的结果进行滤波,即可解调得到原信号。

5.2 QPSK解调部分






部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
--载波模块
ENTITY carrier_sin_cos IS
   PORT (
      clk       : IN STD_LOGIC;--时钟
      rst       : IN STD_LOGIC;--复位
      cos_wave  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--cos波形
      sin_wave  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--sin波形
   );
END carrier_sin_cos;
ARCHITECTURE behave OF carrier_sin_cos IS
   
   SIGNAL valu    : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000000";
   SIGNAL count   : STD_LOGIC_VECTOR(4 DOWNTO 0) := "00000";
   
   SIGNAL valu_2  : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000000";
   SIGNAL count_2 : STD_LOGIC_VECTOR(4 DOWNTO 0) := "00000";
BEGIN
   PROCESS (clk)
   BEGIN
      IF (clk'EVENT AND clk = '1') THEN
         IF (rst = '1') THEN
            count <= "00000";
         ELSIF (count = "11111") THEN
            count <= "00000";
         ELSE
            count <= count + "00001";--count计数
         END IF;
      END IF;
   END PROCESS;
   
   PROCESS (clk)
   BEGIN
      IF (clk'EVENT AND clk = '1') THEN
         IF (rst = '1') THEN
            valu <= "10000000";
         ELSE

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » QPSK调制和解调设计VHDL代码Quartus仿真

发表评论

模板文件不存在: ./template/plugins/comment/pc/index.htm

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员