2021-3-25 vivado ask调制实现

话不多说,先上图,

实现了载波频率为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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值