话不多说,先上图,
实现了载波频率为10M的ook调制。
主要代码:
testbench仿真文件:
module testbench(
);
reg clk_in50M;
wire clk_out120M;
wire clk_out10M;
wire [7:0]sine;
wire [7:0]cosine;
wire[7:0] askdata;
//reg[7:0] dd;
reg basedata;
parameter data_num=2048; //仿真数据长度
initial begin
clk_in50M = 1'b0;
end
always #20 clk_in50M = ~clk_in50M;
GeneralModule instance_generalmod(
. clk_in50M(clk_in50M),
.basedata(basedata),
. clk_out120M(clk_out120M),
. clk_out10M(clk_out10M),
.sine(sine),
. cosine(cosine),
. askdata(askdata)
);
//从外部TX文件(E4_5_TestData.txt)读入数据作为测试激励
integer Pattern;
reg signed stimulus[1:data_num];
initial
begin
//文件必须放置在"工程目录\simulation\modelsim"路径下
$readmemb("F:/FPGA_MYH/ask/data.txt",stimulus);//ASK2 ASK2_filter.txt ASK4 ASK4_filter.txt
Pattern=0;
repeat(data_num)
begin
Pattern=Pattern+1;
basedata=stimulus[Pattern];
#400;
end
end
endmodule
例化文件:
module GeneralModule(
input wire clk_in50M,
input wire basedata,
output clk_out120M,
output clk_out10M,
output wire[7:0] sine,
output wire[7:0] cosine,
output wire[7:0] askdata
);
wire m_axis_data_tvalid;
wire m_axis_phase_tvalid;
wire [15 : 0]m_axis_data_tdata;
wire [31 : 0] m_axis_phase_tdata;
clk_generator instance_clk
(
// Clock out ports
.clk_out120M(clk_out120M), // output clk_out120M
.clk_out10M(clk_out10M), // output clk_out10M
// Clock in ports
.clk_in50M(clk_in50M)); // input clk_in50M
dds_compiler_0 your_instance_name (
.aclk(clk_out120M), // input wire aclk
.m_axis_data_tvalid(m_axis_data_tvalid), // output wire m_axis_data_tvalid
.m_axis_data_tdata(m_axis_data_tdata), // output wire [15 : 0] m_axis_data_tdata
.m_axis_phase_tvalid(m_axis_phase_tvalid), // output wire m_axis_phase_tvalid
.m_axis_phase_tdata(m_axis_phase_tdata) // output wire [31 : 0] m_axis_phase_tdata
);
ask_Mod instance_askmd(
.clk_10M(clk_in50M),
.cosine(cosine),
.basedata(basedata),
.askdata(askdata)
);
assign sine = m_axis_data_tdata[15:8];
assign cosine = m_axis_data_tdata[7:0];
输出ask数据:
module ask_Mod(
input clk_10M,
input wire [7:0] cosine,
input wire basedata,
output reg [7:0] askdata
);
always @(posedge clk_10M )
begin
askdata <= basedata*cosine;
end
endmodule
dds设置:
时钟ip核设置:
需要完整资源请下载https://download.csdn.net/download/weixin_37594197/16092164?spm=1001.2014.3001.5503