名称:基于FPGA的MSK调制波形Verilog代码Quartus仿真
软件:Quartus
语言:Verilog
代码功能:
基于FPGA的MSK调制波形
1、输入调制原始数据,输出MSK调制波形。
2、包括差分编码模块,MSK调制模块,DDS模块,有符号乘法器模块等。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. Testbench
6. 仿真图
差分编码模块
MSK调制模块
DDS模块
有符号乘法器模块
部分代码展示:
//这是MskMod.v文件的程序清单 module MskMod ( rst,clk,din,data_clk, it,qt,MSK_out); input rst; //复位信号,高电平有效 input clk; //数据采样时钟 input din; //调制原始数据 input data_clk; output signed [14:0] it; output signed [14:0] qt; output signed [28:0] MSK_out; wire din_diff; wire data_a; wire data_b; //差分编码模块 differ i_differ( . clk(data_clk), . rst(rst),//复位 . a(din),//输入码 . D_a(din_diff)//输出差分码 ); //串并转换 sipo i_sipo( . clk(data_clk), . rst(rst), . din(din_diff), . data_a(data_a), . data_b(data_b) ); wire [14:0]sin_data ; dds u0 ( .phi_inc_i (25'd320000), .clk (clk), .reset_n (!rst), .clken (1), .freq_mod_i ('d0), .fsin_o (sin_data), .fcos_o (), .out_valid ()); wire signed [14:0]P_cos; wire signed [14:0]Q_sin; assign P_cos= (data_a==1)?$signed(sin_data):$signed(sin_data)*(-1); assign Q_sin= (data_b==1)?$signed(sin_data):$signed(sin_data)*(-1); wire signed [14:0]fsin_o; wire signed [14:0]fcos_o; dds u1 ( .phi_inc_i (25'd3200000), .clk (clk), .reset_n (!rst), .clken (1), .freq_mod_i ('d0), .fsin_o (fsin_o), .fcos_o (fcos_o), .out_valid ()); //assign MSK_wave=signed(fsin_o)*signed(qt)+signed(fcos_o)*signed(it); wire signed[29:0] result_sig_Q; wire signed[29:0] result_sig_I; mul_signed mul_signed_inst1 ( .dataa ( fsin_o ), .datab ( Q_sin ), .result ( result_sig_Q ) ); mul_signed mul_signed_inst2 ( .dataa ( fcos_o ), .datab ( P_cos ), .result ( result_sig_I ) ); assign MSK_out=$signed(result_sig_I)+$signed(result_sig_Q); endmodule
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=671
阅读全文
366