名称:16QAM调制信号生成设计Verilog代码Quartus仿真
软件:Quartus
语言:Verilog
代码功能:
16QAM调制信号生成
1、对输入的4bit信号进行16QAM调制
2、包含正弦波、余弦波产生模块
3、包含有符号乘法器、加法器模块
4、实现编码映射
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. Testbench
6. 整体仿真
16QAM调制过程可以简化为下图,I路Q路分别乘以cos和sin,再相加即得到调制信号。
7. DDS模块仿真,用于产生sin和cos
地址sin_address累加,cos_address累加,依次读取ROM里面所存的sin和cos值。输出波形如上图所示。
8. 相乘模块仿真
Dataa信号和datab信号相乘得到result信号。可以看到result的幅值包络与datab有关。
9. 相加模块仿真
相加模块将dataa得值和datab得值相加,得到result得值。result得值即为16QAM调制波形
部分代码展示:
//16QAM module?qam(clk,?DataIn,?DataOut); ???input?????????clk;//时钟 ???input?[3:0]???DataIn;//输入码 ???output?[12:0]?DataOut;//输出16QAM信号 ???wire?[9:0]????sin_data; ???wire?[9:0]????cos_data; ???reg?[2:0]?????MULT0_data; ???reg?[2:0]?????MULT1_data; ???wire?[12:0]???MULT0_result; ???wire?[12:0]???MULT1_result; ??? ???//DDS?产生正弦和余弦 ???DDS?u0(.clk(clk),?.sin_data(sin_data),?.cos_data(cos_data)); ??? //有符号触乘法器 ???MULT?u1(.dataa(sin_data),?.datab(MULT0_data),?.result(MULT0_result)); ??? //有符号触乘法器 ???MULT?u2(.dataa(cos_data),?.datab(MULT1_data),?.result(MULT1_result)); ??? //有符号加法器 ???add?u3(.dataa(MULT0_result),?.datab(MULT1_result),?.result(DataOut)); ??? ???//编码映射 ???always?@(DataIn) ??????case?(DataIn) ?????????4'b0000?: ????????????begin ???????????????MULT0_data?<=?3'b011; ???????????????MULT1_data?<=?3'b011; ????????????end ?????????4'b0001?: ????????????begin ???????????????MULT0_data?<=?3'b001; ???????????????MULT1_data?<=?3'b011; ????????????end ?????????4'b0011?: ????????????begin ???????????????MULT0_data?<=?3'b111; ???????????????MULT1_data?<=?3'b011; ????????????end ?????????4'b0010?: ????????????begin ???????????????MULT0_data?<=?3'b101; ???????????????MULT1_data?<=?3'b011; ????????????end ?????????4'b0110?: ????????????begin ???????????????MULT0_data?<=?3'b101; ???????????????MULT1_data?<=?3'b001; ????????????end ?????????4'b0111?: ????????????begin ???????????????MULT0_data?<=?3'b111; ???????????????MULT1_data?<=?3'b001; ????????????end ?????????4'b0101?: ????????????begin ???????????????MULT0_data?<=?3'b001; ???????????????MULT1_data?<=?3'b001; ????????????end ?????????4'b0100?: ????????????begin ???????????????MULT0_data?<=?3'b011; ???????????????MULT1_data?<=?3'b001; ????????????end ?????????4'b1100?: ????????????begin ???????????????MULT0_data?<=?3'b011; ???????????????MULT1_data?<=?3'b111; ????????????end ?????????4'b1101?: ????????????begin ???????????????MULT0_data?<=?3'b011; ???????????????MULT1_data?<=?3'b111; ????????????end ?????????4'b1111?: ????????????begin ???????????????MULT0_data?<=?3'b111; ???????????????MULT1_data?<=?3'b111; ????????????end ?????????4'b1110?: ????????????begin ???????????????MULT0_data?<=?3'b101; ???????????????MULT1_data?<=?3'b111; ????????????end
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1061
549