• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于FPGA的16QAM调制VHDL代码Quartus仿真

07/09 13:12
458
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240125104040143.doc

共1个文件

名称:基于FPGA的16QAM调制VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

16QAM调制过程可以简化为下图,I路Q路分别乘以cos和sin,再相加即得到调制信号

包含正余弦产生模块、有符号乘法器模块、有符号加法器模块以及编码映射。

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

演示视频:

设计文档:

1. 整体仿真

16QAM调制过程可以简化为下图,I路Q路分别乘以cos和sin,再相加即得到调制信号。

2. DDS模块仿真,用于产生sin和cos

地址sin_address累加,cos_address累加,依次读取ROM里面所存的sin和cos值。输出波形如上图所示。

3. 相乘模块仿真

Dataa信号和datab信号相乘得到result信号。可以看到result的幅值包络与datab有关。

4. 相加模块仿真

相加模块将dataa得值和datab得值相加,得到result得值。result得值即为16QAM调制波形

部分代码展示:

library?IEEE;
use?IEEE.std_logic_1164.all;
use?IEEE.std_logic_unsigned.all;
use?IEEE.std_logic_arith.all;
entity?QAM?is
port(
????clk:in?std_logic;--时钟输入
????DataIn:in?std_logic_vector(3?downto?0);--DDS数据输出
?DataOut:out?std_logic_vector(12?downto?0)--DDS数据输出
????);
end?QAM;
architecture?behave?of?QAM?is
signal?sin_data:std_logic_vector(9?downto?0);
signal?cos_data:std_logic_vector(9?downto?0);
signal?MULT0_data:std_logic_vector(2?downto?0);
signal?MULT1_data:std_logic_vector(2?downto?0);
signal?MULT0_result:std_logic_vector(12?downto?0);
signal?MULT1_result:std_logic_vector(12?downto?0);
component?DDS?is
port(
?clk:in?std_logic;--时钟输入
?sin_data:out?std_logic_vector(9?downto?0);--DDS数据输出
?cos_data:out?std_logic_vector(9?downto?0)--DDS数据输出
?);
end?component;
component?MULT?IS
PORT
(
dataa:?IN?STD_LOGIC_VECTOR?(9?DOWNTO?0);
datab:?IN?STD_LOGIC_VECTOR?(2?DOWNTO?0);
result:?OUT?STD_LOGIC_VECTOR?(12?DOWNTO?0)
);
END?component;
component?add?IS
PORT
(
dataa:?IN?STD_LOGIC_VECTOR?(12?DOWNTO?0);
datab:?IN?STD_LOGIC_VECTOR?(12?DOWNTO?0);
result:?OUT?STD_LOGIC_VECTOR?(12?DOWNTO?0)
);
END?component;
begin
u0:?DDS?port?map(clk=>clk,sin_data=>sin_data,cos_data=>cos_data);
u1:?MULT?port?map(dataa=>sin_data,datab=>MULT0_data,result=>MULT0_result);
u2:?MULT?port?map(dataa=>cos_data,datab=>MULT1_data,result=>MULT1_result);
u3:?add?port?map(dataa=>MULT0_result,datab=>MULT1_result,result=>DataOut);
process(DataIn)begin
case?DataIn?is
when?"0000"?=>
MULT0_data?<=?"011";
MULT1_data?<=?"011";
when?"0001"?=>
MULT0_data?<=?"001";
MULT1_data?<=?"011";
when?"0011"?=>
MULT0_data?<=?"111";
MULT1_data?<=?"011";
when?"0010"?=>
MULT0_data?<=?"101";
MULT1_data?<=?"011";
when?"0110"?=>
MULT0_data?<=?"101";
MULT1_data?<=?"001";
when?"0111"?=>
MULT0_data?<=?"111";
MULT1_data?<=?"001";
when?"0101"?=>
MULT0_data?<=?"001";
MULT1_data?<=?"001";
when?"0100"?=>
MULT0_data?<=?"011";
MULT1_data?<=?"001";
when?"1100"?=>
MULT0_data?<=?"011";
MULT1_data?<=?"111";
when?"1101"?=>
MULT0_data?<=?"011";
MULT1_data?<=?"111";
when?"1111"?=>
MULT0_data?<=?"111";
MULT1_data?<=?"111";
when?"1110"?=>

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=615

  • 2-240125104040143.doc
    下载

相关推荐