tag 标签: 混合波

相关博文
  • 热度 18
    2015-10-30 12:41
    1974 次阅读|
    0 个评论
    前面我们做了一个三角波,通过调节频率控制字、相位控制字可以输出正弦波、余弦波、三角波等等。但是有时候我们需要的是两种波形的混合波,这一小节我们就来看看怎么生成混合波。 1.Matlab仿真 在这之前很重要的一步工作就是仿真,一般使用Matlab做仿真。这里的仿真跟FPGA里面的仿真不太一样。 a.用前一篇的知识生成两个待混合的正弦波信号,例如:信号1:sig_1 = 1M;信号2:sig_2 = 5M; b.混合:混合即信号相乘sig_1*sig_2,得到的M混合波sig_mix包含两个频率分量,一个是6 M= 5+1(M),一个是4M= 5-1(M)。这里面用到的是积化和差公式。 混合后的波形如下图 c.频域分析 频域分析的目的是验证生成的目标频率是否正确。 Matlab封装了许多库函数,仿真的时候直接调用这里的库函数,非常的方便。这里我们使用的分析函数是fft。这里有几点需要说明: (1).采样分辨率: 采样频率还是fs=50MHZ,采样点数N=2048, 频率分辨率为:fs/N; N越高,采样分辨率越高,采样点数越多,得到的结果越精确。 (2).有效峰值范围 下图可以看到有两组类似镜像的信号。前1024个点表示的是正频域部分,后1024个点表示的是复频域部分。由于我们的混合信号是实信号,对应正频域部分。所以该例中我们只需要分析前1024个点。 调用该函数并且给出相应的参数即可得到分析结果。 (3).目标频率 上图看到,前1024个点有两个峰值,对应混合波包含的频率分量。下面计算其中一个的目标频率 放大其中一个峰值,它对应的横坐标为165,则目标频率f1 = fs/N*x = 50M/2048*165 ~= 4M,另外一个自己动手计算一下,结果为6M。 二.功能模块说明 功能模块的实现也不复杂,如果上一篇博客的内容你弄明白了,在它的基础上做一些改动。 1.生成两个正弦波信号 2.调用一个混合器,即乘法器。 3.注意信号的位宽。 三.仿真结果展示 仿真得到的波形如上图。仿真步骤在上一篇博客里有介绍,见《 波形系列之正弦波发生器 》,介于篇幅限制,这里就不再说明了。另外,如果大家觉得这篇博客对你还是有些帮助,希望大家点个喜欢,需要程序的朋友在下面留言,我会将代码打包好发给大家。