相位累加器
关于相位累加器的使用,我不确定放在FPGA专题中是否合适,但是因为确实很多应用都是在FPGA上面的,所以暂时先这样定吧。
标题中所提到的DDS,我感觉这两个放一起也可以,因为DDS的核心思想就是使用的相位累加器。那么这玩意儿的作用是啥?简单来说就是在FPGA工作主频之下,可以生成任意频率的周期信号出来。

定义一个32bit的频率字Acc
定义一个32bit的频率控制字F_word
假设系统时钟(准确的说法应该是相位累加器的参考时钟)fclk
需要产生的时钟频率 fout

根据公式:

上面两个公式可以在已知需要获得的输出频率的基础上,计算得到需要的频率控制字
然后看下频率控制字是怎么用的,这里就是用的相位累加器的原理。

上式是一个累加的过程,实现的原理是在一个32bit的数据范围内,即在(0~2^32-1)这个范围内进行累加,累加的步进是F_word;完成这一个范围内的累加之后,用时为T,那么这个T的倒数就是我们需要的fout了。完成一次累加之后,频率字Acc会溢出,然后进入下一次累加,形成下一个周期信号;如此重复进行后就是一个振荡的周期信号了。

那么这个周期信号该怎么表示出来呢?上面说了,完成(0~2^32-1)的累加过程是一个周期T,那么在这个周期里面,应该会有一次信号翻转。即高电平时间T/2,低电平时间也是T/2。
对于一个32bit的数,当低31位不断累加,直到第32bit从0跳转到1的时间段内,就是用了T/2的时间;当第32bit变成1之后,低31位又开始累加,直到数据溢出,又是T/2的时间。
如果不能理解,结合下图

也就是说,在整个累加过程中,我们只要判断Acc的最高的情况,在0~T/2时间内,最高位为0;
在T/2~T的时间内,最高位为1;这样就是会产生一个fout的方波信号了。

assign clk_out = Acc(31);

这样的clk_out就是需要的fout了。

亦或者,直接对Acc的值进行判断

always@(posedge clk or negedge rst)if(!rst)clk_out <= 1'b0;else if(Acc <= 32'h7fffffff)clk_out <= 1'b0;else if(Acc >32'h7fffffff)clk_out <= 1'b1;

同样可以输出fout。

采样率
同时,想说一下关于采样率的问题。
常见于ADC这类芯片中,例如,某ADC芯片的采样率为1MHz,意思是每秒可以采样1M个点,那么采一个点所要花的时间是(1/1M) 秒。
在做FFT的时候,通常需要采集一个完整的正弦波,来进行FFT,这里就会涉及采样率的问题。
假如一个正弦波的频率为fsig=50KHz,我们需要用128个点来进行FFT,那就是要128个点采集完成这个正弦波。根据正弦波的频率可以计算出正弦波的周期Tsig=1/fsig;那么这128个点所占的时间就应该是这个周期Tsig。也就是说,采样芯片需要在Tsig时间内采集完成128个点,那么这个就可以计算出需要的采样率了。采样率设为Fs,则采一个点的时间是1/Fs;采128个点的时间就是128/Fs;则
128/Fs=1/fsig;会得出采样率Fs=128fsig;得到的是和被采样信号频率的关系;
根据奈奎斯特定律,采样频率至少要是被采样信号频率的2倍,才能获得被采样信号的有效信息,否则就会出现失真。这里其实就可以分析得到,这里的128个点其实是可以人为设定的,假如设置为N;那么最后的公式就是Fs=N
fsig 。当然,保证这里的N>2是非常有必要的。
一般来说,我们的N会取的比较大。

FFT
说到上面的信息,不得不再说下FFT
其中的参数就包括上面说的Fs、N、fsig
FFT是一种计算,采样到一个点,进行一系列的运算后,输出一个复数,假设为A+Bi;这个复数中就包含这个被采样信号sig的信息,对A和B求平方和再开根号,就是当前采样点在频谱上的幅值(注意并不是在正弦波形上的幅值),频谱上幅值最大的点出现在fsig频率处。
对于一个未知频率的正弦波信号,对其进行采样,然后进行频谱幅值的最大值筛选,可以计算出这个信号的频率。
Fs/N的意思是,对所有的N个采样点,用Fs的采样率来采样,则在每个点处的频率值(这个是在频域上的信息)。假设fsig出现在从0~N之间的某个点n处,则会有Fs/N*(n-1)=fsig;同样是可以计算出这个n。

以上内容算是比较综合的内容,在使用过程中通常会结合在一起使用,需要好好消化。也是在自己工作中遇到的问题,特此记录。

FPGA专题-相位累加器(DDS)相关推荐

  1. 如何通俗地理解基于查找表的DDS、相位累加器、相位调制器?

    1.理论 DDS 技术是一种全新的频率合成方法,其具有低成本.低功耗.高分辨率和快速转换时间等优点,对数字信号处理及其硬件实现有着很重要的作用. DDS 的基本结构主要由相位累加器.相位调制器.波形数 ...

  2. FPGA实验1:DDS IP 数字波形合成

    1. 实验内容 使用 Vivado的IPI工具,例化DDS IP: DDS需要能够配置频率字(相位增量): DDS工作时钟使用PL的板载50MHz时钟: 使用ILA工具观察波形, 使用VIO设定频率字 ...

  3. Matlab与FPGA数字信号处理系列——DDS信号发生器——Quartus ii 原理图法利用 ROM 存储波形实现DDS(1)

    MATLAB 与 FPGA无线通信.图像处理.数字信号处理系列 系统框图 基于FPGA的DDS信号发生器系统框图如下图所示,采取查表法. (1)对一个完整周期的波形进行采样,将采样点存在ROM中: ( ...

  4. 基础篇-verilog-FPGA实现频率相位调制DDS信号

    //此模块实现频率.相位可调的DDS信号输出 //Fword越大,越快的的让高位的address+1,Fword取0,那么则需要很长很长的时间address才会+1 //所以Fword相当于步进,步进 ...

  5. 易灵思Ti60 FPGA专题(1)-器件和需求介绍

    作者:Hello,Panda 各位朋友们,先生们,女士们,大家早上好,中午好,晚上好.熊猫君最近正在折腾HK的易灵思FPGA芯片做一个Camera,现在弄得差不多了,计划分享一期易灵思的专题,大概有6 ...

  6. 基于FPGA的双极性DDS设计与仿真

    目录 DDS端口图 输出频率计算 MATLAB产生mif文件 仿真结果 程序源码 DDS端口图 DDS的基本原理是将信号数据存入ROM当中,通过寻址将数据取出并输出. ROM可以调用IP核,将数据生成 ...

  7. 基于FPGA的简易DDS信号发生器的设计与验证

    基于FPGA的简易DDS信号发生器的设计与验证 一,理论介绍 补充:举例理解 二,代码实现 1,实验目标 2,MATLAB代码 3,verilog代码及实现思路 一,理论介绍 DDS 是直接数字式频率 ...

  8. 基于FPGA实现的DDS双通道信号发生器

    文章目录 前言 一.DDS是什么? 二.设计步骤 1.DDS的基本结构 1.相位累加器 2.相位调制器 3.ROM数据表的生成 2.对各结构的代码实现 1.DDS顶层代码` 2.DDS主要发生模块 3 ...

  9. FPGA—DDS信号发生器笔记

    使用软件: Vivado DDS信号发生器 基本原理 DDS基本原理 DDS模块 ROM IP的使用 波形数据存储器 代码及仿真 verilog代码 仿真代码(Fword有值,Pword=0时) 仿真 ...

最新文章

  1. JAVA     面向对象
  2. golang json 获取所有key_Golang —— JSON 大法
  3. tensorflow.transpose的理解
  4. oracle10.2 管理工具,Oracle 10.2.0.5 EM管理器的BUG
  5. 【计算机网络】传输层 : TCP 连接管理 ( TCP 连接建立 | 三次握手 | TCP 连接释放 | 四次挥手 )
  6. 倒序排序_排序算法(六):Counting Sort 计数排序
  7. 可以发外链的网站_企业网站上线后,何提升网站排名?
  8. 《那些年啊,那些事——一个程序员的奋斗史》——78
  9. LightOJ 1278 - Sum of Consecutive Integers 分解奇因子 + 思维
  10. java 中free,javac(freejava)
  11. 不越狱 继续逆向 微信运动
  12. 二路归并排序Python实现-II
  13. Axure 9.0 使用教程2-函数分类
  14. 03、单线通讯—SIF通讯协议(一线通)案例二
  15. 海量的超赞 Linux 软件 (转载)
  16. 【转】Spring横切面(advice),增强(advisor),切入点(PointCut)(JAVA后端)
  17. IE中点击链接下载EXCEL文件直接以乱码方式打开解决
  18. The SwiftProgramming Language读书笔记第26页
  19. Spring Cloud Eureka服务治理
  20. c语言中减号算一个字符吗,C语言中指针的加减运算

热门文章

  1. 基于opencv的图像的无失真放大
  2. centos7开启网卡命令_CentOS7 开启网卡,设置开机启用网卡
  3. 广电优点家庭服务器怎么无线桥接,简单的无线桥接技术,能让wifi覆盖家庭每个角落!...
  4. 利用URL地址实现页面间传输数据和获取数据
  5. 超炫计算机课件ppt,5分钟打造高级炫酷的PPT系列第一季-斧子演示视频教程
  6. 2021 上半年,写给自己
  7. The Innovation | 粪菌移植治疗肥胖,如何突破瓶颈?
  8. commvault备份mysql数据库_2-CommVault备份项目实施方案-XXXX.docx
  9. RIGOL示波器使用
  10. 瑞幸咖啡布局“无人零售”的多重不确定性