DDS直接数字频率合成器的MATLAB性能仿真

2024-02-23 06:50

本文主要是介绍DDS直接数字频率合成器的MATLAB性能仿真,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、理论基础

二、核心程序

三、仿真结论


一、理论基础

         随着科学技术的日新月异的发展,各种各样的电子产品也正在逐步向着高精尖技术方向发展。电子技术广泛的应用于工业、农业、交通运输、航空航天、国防建设等国民经济的诸多领域中,数字电子技术已经渗透到了人们生活的各个层面,信号发生器是一种常用的信号源,广泛应用于电子电路、自动控制和科学试验等领域。它是一种为电子测量和计量工作提供符合严格技术要求的电信号设备。因此,信号发生器和示波器、电压表、频率计等仪器一样是最普通、最基本的,也是应用最广泛的电子仪器之一,几乎所有的电参量的测量都需要用到信号发生器。

       从宏观上测量仪器可分为两大类,即激励和检测。其中各类信号源属于激励仪器一类。信号源能够产生不同频率、不同幅度的规则或不规则波形的信号,广泛应用于电子测量、电力工程、工业控制、故障诊断和教学科研等多方面,是电子工程师们进行研究开发和生产产品过程中的必备仪器之一。

      信号源从用途上可分为通用信号源和专用信号源两大类。专用信号源仅适用于某些特殊测量需要,如电视信号源、编码脉冲信号源。通用信号源包括:正弦信号源,脉冲信号源,函数信号源,高频信号源,噪声信号源。

       信号源常有三方面的用途:(1)激励源,作为某些电器设备的激励信号,如激励扬声器发出声音。(2)信号仿真,当要研究一个电气设备在某种实际环境下所受的影响时,需要施加具有与实际环境相同特性的信号,加高频干扰信号,这时就需要对干扰信号进行仿真。(3)校准源,用于对一般信号源进行校准或比对,有时称为标准源。

      上世纪四十年代,惠普为海军研究试验室开发了第一台信号发生器,从而使得人们便可以使用可控的信号发生器对设备进行比较全面和准确地测量,信号发生器也在测试测量方面发挥出日益重要的作用。电子技术和计算机技术的发展推动着信号源的不断发展,信号源经历了从模拟式信号源到数字式信号源的发展过程。上世纪七十年代以前,信号源的设计采用的是模拟电子技术,产生正弦波、方波和三角波等几种简单的波形,较大的缺点,使得输出波形的幅度稳定性较差。电路结构复杂,仅能产生由于模拟电路存在漂移较大的缺点,使得输出波形的幅度稳定性较差。同时模拟电路存在着尺寸大,成本高和功耗大等缺点,而且要产生复杂的波形信号时电路会更复杂。七十年代以后,数字电路在信号源的设计中得到广泛的应用,信号源采用的是数字电子技术。随着微处理器的出现,信号源也开始从完全地由分立元器件搭建发展为以微处理器为核心的集成系统。信号源产生的波形种类也丰富起来,频带大大增加,通用性也得到了提高。

       伴随着信号源的发展,作为其重要功能之一的移相技术也得到了改进和发展,所谓移相是指两路同频的信号,以其中一路为参考,另一路相对于该参考信号作超前或滞后的移动,即称为是相位的移动。两路信号的相位不同,便存在相位差,即相差。若将一个信号周期看作是360°,则相差的范围就在0—360°。

      要实现移相,通常有两个实现途径:一是直接对模拟信号进行移相,如RC移相、LC移相、变压器移相等,采用这种方式的移相技术有许多不足之处,如:输出波形受输入波形的影响,移相操作不方便,移相角度随所接负载和时间等因素的影响而产生漂移等。另一个是随着电子技术和计算机技术的发展而兴起的数字移相技术,是目前移相技术的潮流,数字移相技术的核心是,先将模拟信号或移相角数字化,形成一张数据表,将数据地址的偏移量映射为信号间的相位值,通过D/A 转换芯片连续循环地读出该数据表的数据并还原成模拟信号。本文所采用的直接数字频率合成技术(DDS-Direct Digital frequency Synthesis)中移相的实现正是属于数字移相技术。

1.1信号发生器的发展

信号发生器是一种历史最为悠久的测量仪器。早在二十年代,当电子设备刚开始出现时,它就出现了。随着通信和雷达技术的发展,四十年代出现了主要用于测试各种接收机的标准信号发生器,使信号发生器从定性分析的测试仪器成为定量分析的测量仪器。同时还出现了可用来测试脉冲电路或用作脉冲调制器的脉冲信号发生器。由于早期的信号发生器机械结构比较复杂,功率比较大,电路比较简单(与数字仪器、示波器等相比),因此发展速度较慢。直到1964年才出现了第一台全晶体管的信号发生器。

自六十年代以来,信号发生器有了迅速的发展,出现了函数发生器、扫频信号发生器、合成信号发生器、程控信号发生器,等新种类。各类信号发生器的主要性能指标也都有了大幅度的提高,同时在简化机械结构、小型化、多功能等各方面也有了显著的进展。

1.2 信号发生器分类

信号发生器的应用非常广泛,种类也相当繁多。首先,信号发生器可以分为通用和专用两大类。专用信号发生器主要是为了某种特殊的测量目的而研制的。如电视信号发生器、编码脉冲信号发生器等。这种发生器的特性是受测量对象的要求所制约的。其次,信号发生器按输出波形又可分为正弦波形发生器、脉冲信号发生器、函数发生器和任意波形发生器等。再次,按其产生频率的方法又可分为谐振法和合成法两种。一般传统的信号发生器都采用谐振法,即用具有频率选择性的回路来产生正弦振荡,获得所需频率。但也可以通过频率合成技术来获得所需的频率利用频率合成技术制成的信号发生器。

    所谓频率合成技术就是指从一个高稳定和准确的参考频率源,经过技术处理,生成大量离散的频率输出。技术处理方法可以是传统的用硬件实现频率的加、减、乘、除基本运算,可以是锁相环技术,也可以是各种数字技术和计算技术。参考频率可由高稳定的参考振荡器(一般为晶体振荡器)产生,所生成的一系列离散频率输出与参考振荡器频率有严格的比例关系,并且具有同样的准确度和稳定度。基于频率合成原理制成的信号发生器,由于可以获得很高的频率稳定度和精确度,因此发展非常迅速。尤其是最近随着现代电子技术的发展,其应用更是有了质的飞跃。

1.3 频率合成技术

频率合成技术在本世纪30年代开始提出,它的发展己经有70年的历史。在这70年的历史中,大致可以分成三个发展阶段:直接式频率合成技术,锁相环频率合成技术以及直接数字频率合成技术。

所谓直接频率合成技术就是用倍频、分频和混频电路对一个或几个基准频率进行加、减、乘和除的运算,从而产生所需要的频率信号,并通过窄带滤波器选出。这是最先出现的一种合成器类型的频率信号源。这种频率合成器原理简单,易于实现。其合成方法大致可分为两种基本类型:一种是所谓非相关合成方法,另一种是所谓相关合成方法。这两种合成方法的主要区别在于所使用的参考频率源的数目不同。

非相关合成方法使用多个晶体参考频率源,所需的各种频率分别由这些参考源提供。它的缺点在于制作具有相同频率稳定性和精度的多个晶体参考频率源既复杂又困难,而且成本很高。相关合成方法只使用一个晶体参考频率源,所需的各种频率都由它经过分频、混频和倍频后得到的,因而合成器输出频率的稳定性和精度与参考源一样,现在绝大多数直接频率合成技术都使用这种合成方法。

直接频率合成器的频率范围宽,频率转换较快,可以达到微秒级,频率间隔较小( Hz),工作稳定可靠;但是寄生输出大,需要大量的模拟元件,结构复杂,体积大,成本高。直接频率合成技术所固有的缺点,在锁相环(Phase-LockedLooPs)频率合成技术中得到了很大的改善。锁相环频率合成技术(简称PLL)是在40年代初根据控制理论的线性伺服环路发展起来的,最早用于电视机的扫描同步电路,以减少噪声对同步的影响,从而使电视的同步性能得到重大改进。同时,它的低噪声跟踪特性也得到人们的高度重视,发展越来越快,以致于今天被广泛的应用于无线电技术领域的各个方面。锁相频率环合成技术也叫间接式频率合成,这种合成方法所使用的电路较直接式频率合成简单。它主要是将含有噪声的振荡器放在锁相环路内,它的相位锁定在希望的信号上,从而使振荡器本身的噪声被抑制,使它的输出频谱大大提纯。

1.4 DDS技术

直接数字频率合成技术 (Direct Digital Synthesis)完全不同于我们己经熟悉的直接频率合成技术和锁相环频率合成技术。直接数字频率合成技术(简称DDS)的理论早在七十年代就被提出。它的基本原理就是利用采样定理,通过查表法产生波形,由于硬件技术的限制,DDS技术当时没能得到广泛应用。随着大规模集成电路技术的飞速发展,DDS技术的优越性己逐步显现出来。不少学者认为,DDS是产生信号和频率的一种理想方法,发展前景十分广阔。与其他频率合成方法相比较,直接数字频率合成技术的主要优点是易于程控,相位连续,输出频率稳定度高,分辨率高。其频率分辨率可以达到10-3。而且频率转换速度快,可小于100ns,特别适宜用在跳频无线通信系统。其相位噪声主要决定于参考时钟振荡器。

         DDS工作原理框图如图1所示。其基本结构包括:相位累加器PA、波形查询表ROM、数模转换器DAC及低通滤波器。

二、核心程序

...................................................................[Pyy,wy]=periodogram(rom_y,[],'onesided',pp);
%figure;%figure2 只有相位截断,没有量化 figure1
%%psdplot(Pyy/max(Pyy),wy);%      归一化显示出图;
Hpsd=dspdata.psd(Pyy/max(Pyy),wy)
plot(Hpsd)
xlabel('只有相位截断误差');
%%%%%%%%%%%%%%
rom_x=cos(2*pi*add_y/(2^N));
[index,quants2] = quantiz(rom_x,pat,codebook);%量化
[Pzz,wz]=periodogram(quants2,[],'onesided',pp);
figure;%没有相位截取和DAC的非线性等,figure2,只有量化%%psdplot(Pzz/max(Pzz),wz);%      归一化显示出图;
Hps=dspdata.psd(Pzz/max(Pzz),wz)
plot(Hps)
xlabel('只有量化误差');
%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%
[index,quants1] = quantiz(rom_y,pat,codebook);%量化
[Pxx,wx]=periodogram(quants1,[],'onesided',pp);    %频谱分析;
figure;       %figure3 相位截断加量化
%%psdplot(Pxx/max(Pxx),wx);%     归一化显示出图;
Hp=dspdata.psd(Pxx/max(Pxx),wx)
plot(Hp)
xlabel('相位截断误差和量化误差同时有');
grid on
up113

三、仿真结论

 

 

这篇关于DDS直接数字频率合成器的MATLAB性能仿真的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/737842

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

黑神话,XSKY 星飞全闪单卷性能突破310万

当下,云计算仍然是企业主要的基础架构,随着关键业务的逐步虚拟化和云化,对于块存储的性能要求也日益提高。企业对于低延迟、高稳定性的存储解决方案的需求日益迫切。为了满足这些日益增长的 IO 密集型应用场景,众多云服务提供商正在不断推陈出新,推出具有更低时延和更高 IOPS 性能的云硬盘产品。 8 月 22 日 2024 DTCC 大会上(第十五届中国数据库技术大会),XSKY星辰天合正式公布了基于星

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87