0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用DDS将基带信号上变频

冬至子 来源:Bug记录 作者:woodfan 2023-06-19 10:51 次阅读

低通FIR将基带信号的旁瓣滤去,保留基带信号的主瓣。基带信号之所以是基带信号,正是因为它处在零中频附近。实际上,信号之所以在高频甚至射频的原因主要有:

1.接收天线的长度与电磁波的波长存在正比例关系,所以波长越小,接收天线也可以做的越小。电磁波波长与频率存在反比例关系,所以需要将基带信号上变频至高频部分,方便天线接收。

2.方便扩展信号带宽,提高频带利用率。

本文将通过DDS IP核输出的正弦波,与基带信号混频上变频至高频部分,将涉及一点数字信号处理内容。

首先,简单写一下上变频的数学理论基础,

图片

基带信号乘以一个正弦波,频域卷积,频谱上会将基带信号的频谱搬移到正弦波的频率。

所以,我们需要做的就是生成一个所需的正弦波,并与基带信号相乘。这个过程就需要使用到Xilinx的DDS IP核以及DSP IP核。

在Vivado中IP Catalog中找到DDS IP核,

图片

DDS IP核设置

系统时钟选择50MHz,通选数量选择1,其他的可以保持默认。注意Configuration Option,这里选择Phase Generator and SIN COS LUT,这个模式会根据GUI设置自动产生所需要的频率的正弦波;而另一种模式SIN COS LUT ONLY,会根据输入的相位信息phase_data输出对应的正弦波值,相位信息需要不断地自加获取输出的正弦波值。两种模式各有利弊,第一种模式设置更方便,第二种模式不需要固定输入时钟,可以改变参数获取不同的频率的正弦波。

第一种模式下,dds实例化,只需要取m_axis_data_tdata的数据即可,输出的波形按照GUI设置的要求。

dds_compiler_0 dds_inst (
.aclk(clk_50m),                                // input wire aclk
.m_axis_data_tvalid(),    // output wire m_axis_data_tvalid
.m_axis_data_tdata(cos_o),      // output wire [15 : 0] m_axis_data_tdata 13 - 2
.m_axis_phase_tvalid(),  // output wire m_axis_phase_tvalid
.m_axis_phase_tdata()    // output wire [31 : 0] m_axis_phase_tdata 
);

第二种模式下,dds实例化,需要不断地自加相位数据,DDS会根据相位数据输出对应的正弦波值。这更像ROM表,相位数据为ROM地址,根据ROM地址输出相应地址的数据。

always @ (posedge clk or posedge rst)beginif (rst)
        phase_data <= 16'd0;
else
        phase_data <= phase_data + fre_word;end
dds_compiler_0 dds_i (
.aclk(clk),                                // input wire aclk
.aclken(1'b1),                            // input wire aclken
.s_axis_phase_tvalid(1'b1),  // input wire s_axis_phase_tvalid
.s_axis_phase_tdata(phase_data),    // input wire [15 : 0] s_axis_phase_tdata
.m_axis_data_tvalid(),    // output wire m_axis_data_tvalid
.m_axis_data_tdata(t_data)      // output wire [31 : 0] m_axis_data_tdata);

其实DDS的原理正是ROM表存储,相位数据就是地址信息,根据地址信息查找表,输出对应数据,FPGA擅长的正是查表。第一种模式固定了相位数据和相位差,简化了操作但固定了使用时的输出频率;第二种模式开放了相位数据接口,输出的频率更加多变。

根据公式可知,

图片

上面示例中的fre_word计算来源于这个公式。

图片

DDS IP核设置

Output Selection可以选择输出的波形是Sine,Cosine,Sine and Cosine。注意选择Sine and Cosine时输出的信号宽度是Sine,Cosine的两倍,需要使用截位的方法将信号的前半段与后半段分开。高半段为Sine,低半段为Cosine。

图片

DDS IP核设置

这个部分根据需要的频率进行设置。

图片

DDS IP核设置

可以看到预想10M,但由于精度的问题,实际输出的频率是9.9999MHz,非常接近了。

接下来就是DSP IP核的使用,在Vivado中IP Catalog中找到DDS IP核。

图片

DSP IP核

使用最简单的乘法功能,其他通道不选择。

图片

DSP IP核

设定A,B的位数以及输出数据的位宽之后就完成了DSP IP核的设置。

xbip_dsp48_macro_0 dsp_product_inst (

.CLK(clk_50m), // input wire CLK

.A(fir_out[19:8]), // input wire [11 : 0] A

.B(cos_o[13:2]), // input wire [11 : 0] B

.P(out_data) // output wire [23 : 0] P

);

为了平衡性能与面积,所以A,B设置的12位输入,分别对FIR和DDS的正弦波进行了截位

由此,就完成了基带信号的上变频操作;但是,这样的上变频会带来双边带问题,占用了2倍的基带信号带宽。为了解决这个问题,又可以引入IQ调制。IQ调制如何操作以及它的原理等待后续的文章梳理。

最后,上板测试可以看到如下图所示。

图片

实测图

duc_data是搬移到高频之后的信号,最后可以对duc_data进行截位操作,以适应实际中DAC的位数限制。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 正弦波
    +关注

    关注

    11

    文章

    562

    浏览量

    54322
  • DDS
    DDS
    +关注

    关注

    21

    文章

    614

    浏览量

    151731
  • 信号处理器
    +关注

    关注

    1

    文章

    239

    浏览量

    25030
  • 电磁波
    +关注

    关注

    21

    文章

    1357

    浏览量

    53181
  • FIR滤波
    +关注

    关注

    0

    文章

    6

    浏览量

    9795
收藏 人收藏

    评论

    相关推荐

    基于数字上变频器的中频调制器

    数字上变频器是产生调制信号的一个重要环节,通过对数字中频上变频基本原理和技术特点的研究,采用ADI公司AD9957数字上变频器实现了常见的几种码速率较高的调制波形。
    发表于 07-11 11:29 3407次阅读
    基于数字<b class='flag-5'>上变频</b>器的中频调制器

    AD9789基带数字上变频频率为什么能到Fdac/16?

    关于AD9789 Datashhet EN中关于基带数字上变频的输出频率为DC to Fdac/16(The digital upconverter enables each baseband
    发表于 12-21 07:56

    上变频问题

    想请问一下,我想将一个数据进行上变频,需要将其分成IQ两路,是用希尔伯特滤波器对其变换,还是直接串并转换就行了
    发表于 06-28 10:50

    有关AD9361的上变频

    下图是AD9361上变频后的频谱。现在已经知道9361内部DAC输出是10.23MHz的正弦波,然后我想上变频到1575.45MHz(我在初始化结构体里面设置的,c语言),但是测试时下图可以看到
    发表于 05-18 19:41

    AD9789基带数字上变频频率为什么能到Fdac/16

    我认为基带数字上变频的输出频率最高只能到Fdac/32.请专家帮我指出我的理解哪里出了问题?2 根据FTW的计算公式也可以看出,NCO的采样率是Fdac/16.根据采样定理,在信号不失真的情况下,能够表示的最高频率只能达到Fda
    发表于 10-25 09:25

    正交DDS信号的单边带上变频到800到2500MHz

    正交DDS信号的单边带上变频到800到2500MHz
    发表于 06-24 14:24

    多天线多载波数字上下变频的FPGA实现方法有哪些?

      数字上变频/下变频(DUC/DDC)是数字中频设计的重要组成部分,其功能是基带信号经过内插滤波后变到中频的频率,或者中频的
    发表于 08-21 06:24

    多天线多载波的数字上下变频的FPGA实现方法有哪些?

    数字上变频/下变频(DUC/DDC)是数字中频设计的重要组成部分,其功能是基带信号经过内插滤波后变到中频的频率,或者中频的
    发表于 09-25 08:22

    PXI 5610实现上变频信号发送

    目前需要PXI5610实现基带信号上变频输出,但是对具体需要什么设备及控制流程都不是太清晰,希望哪位大神可以给些指点或者例程。多谢
    发表于 12-01 13:33

    AD9739上变频功能实现原理是什么?

    最近在评估 AD9739, 但对其上变频功能有些疑问,请专家解答,谢谢! 1) AD9739 的上变频功能实现原理是什么? 2) 进入AD9739的信号是否必须是经过IQ正交调制后的,即必须是实
    发表于 12-14 07:23

    通信系统中数字上变频技术的研究与设计

    为了将通信系统中数字基带信号调制到中频信号上,采用数字上变频技术,通过对数字I、Q两路基带信号进行FIR成形滤波、半带插值滤波、数字混频处理得到正交调制后的中频
    发表于 08-29 17:28 63次下载
    通信系统中数字<b class='flag-5'>上变频</b>技术的研究与设计

    基于FPGA的高效灵活数字上变频实现设计

    软件无线电的基本思想是把A/D变换器尽可能地靠近射频天线,用软件实现无线电系统的各种功能[1]。数字上变频器是软件无线电中发射机的核心部分,它的基本功能是增加基带信号采样率并将其上变频到载波频率
    发表于 01-29 17:29 3559次阅读
    基于FPGA的高效灵活数字<b class='flag-5'>上变频</b>实现设计

    800-2500 MHz正交DDS信号的单边带上变频

    800-2500 MHz正交DDS信号的单边带上变频
    发表于 05-26 12:30 8次下载
    800-2500 MHz正交<b class='flag-5'>DDS</b><b class='flag-5'>信号</b>的单边带<b class='flag-5'>上变频</b>

    正交DDS信号至800至2500MHz频段的单边带上变频

    正交DDS SSB上变频到2GHz以上的相对简单和经济性应该鼓励读者考虑将这种技术添加到他们的曲目中。它在微波频率下保留了所有理想的DDS属性,同时大大减少了传统双边带混频器上变频器不
    的头像 发表于 01-30 10:39 2193次阅读
    正交<b class='flag-5'>DDS</b><b class='flag-5'>信号</b>至800至2500MHz频段的单边带<b class='flag-5'>上变频</b>

    上变频和下变频的定义 下变频上变频的区别

    上变频器(Rectifier)和下变频器(Inverter)是电力系统中常见的两种电力转换装置。它们通常用于调整交流电的频率和电压,以满足不同设备或系统的需求。   上变频
    的头像 发表于 10-05 10:01 2587次阅读