matlab程序估算DDS、DAC输出杂散
这几天注意到DDS输出杂散手算比较麻烦,而且ADIsinDDS又只能算到3阶。本着懒惰是第一驱动力的原则,也为了加深对DDS输出杂散的印象,就用matlab写了一个简单的程序,用于仿真估算在特定采样率下,特定输出频率下的DDS杂散计算,目的是为了在设计时可以简单地对采样频率、输出频率进行规划。
程序目前相对简单,只计算了1~5次镜像和3、5、7、9次谐波,感觉已经够用了,如果不够用后期我会继续更新。
注意,该程序旨在方便估算输出杂散频率,确定不了输出杂散功率
由于matlab2016不允许在代码里直接调用子函数,所以有两个函数打包成.m文件了。完成程序下载链接:DDS输出杂散计算程序matlab.zip
DDS输出杂散计算程序matlab.zip-电信文档类资源-CSDN下载DDS输出杂散计算程序matlab.zip更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/qq770648116/39152277
clear all;
close all
%====================================================%
% DAC/DDS输出杂散计算
% Likeng 2021.11.09A
% 该程序用于计算特定输出频率、采样率下DDS输出杂散的估算
% 目前默认算到9次谐波导致的杂散,且分析频率为3.5倍的采样率
% 如需修改,可以修改变量f_stop。
% 注意,该程序旨在方便估算输出杂散频率,确定不了输出杂散功率
%
% 程序需要输入以下参数
% fc:DDS时钟频率(采样频率)
% f_rd1:DDS输出频率(即基波)
% Count:分析点数
%====================================================%
fc=100;%MHz DAC采样时钟频率
f_rd1=30.72;%MHz DAC输出频率
Count=1001;%分析点数
%=====================================================%
f_start=0;%起始频率
f_stop=fc*3.5;%终止频率%基波、各次谐波计算
f_rd3=3*f_rd1;
f_rd5=5*f_rd1;
f_rd7=7*f_rd1;
f_rd9=9*f_rd1;
A_rd1=Amp(f_rd1,fc);
A_rd3=Amp(f_rd3,fc);
A_rd5=Amp(f_rd5,fc);
A_rd7=Amp(f_rd7,fc);
A_rd9=Amp(f_rd9,fc);%各次谐波实际出现频率计算
f_rd3_real=Search_frd(f_rd3,fc);
f_rd5_real=Search_frd(f_rd5,fc);
f_rd7_real=Search_frd(f_rd7,fc);
f_rd9_real=Search_frd(f_rd9,fc);%各次镜像计算
f_img1=fc-f_rd1;
f_img2=fc+f_rd1;
f_img3=2*fc-f_rd1;
f_img4=2*fc+f_rd1;
f_img5=3*fc-f_rd1;
A_img1=Amp(f_img1,fc);
A_img2=Amp(f_img2,fc);
A_img3=Amp(f_img3,fc);
A_img4=Amp(f_img4,fc);
A_img5=Amp(f_img5,fc);%包络计算
f=linspace(f_start,f_stop,Count);
A1=sin(pi*f/fc);
A2=pi*f/fc;
A=abs(A1./A2);figure;
%画包络
plot(f,A,'--',...[fc/2,fc/2],[0,Amp(fc/2,fc);],'--',...[fc*3/2,fc*3/2],[0,Amp(3*fc/2,fc)],'--',...[fc*5/2,fc*5/2],[0,Amp(5*fc/2,fc)],'--',...[fc*7/2,fc*7/2],[0,Amp(7*fc/2,fc)],'--',...'Color',[0 0.447 0.741]);%包络
hold on;%画基波、各次谐波
plot([f_rd1,f_rd1],[0,A_rd1],'-^','Color',[0.635 0.078 0.184]);
plot([f_rd3,f_rd3],[0,A_rd3],'--',...[f_rd5,f_rd5],[0,A_rd5],'--',...[f_rd7,f_rd7],[0,A_rd7],'--',...[f_rd9,f_rd9],[0,A_rd9],'--',...'Color',[0.466 0.674 0.188]);%画各次镜像plot([f_img1,f_img1],[0,A_img1],'-^',...[f_img2,f_img2],[0,A_img2],'-^',...[f_img3,f_img3],[0,A_img3],'-^',...[f_img4,f_img4],[0,A_img4],'-^',...[f_img5,f_img5],[0,A_img5],'-^',...'Color',[0.635 0.078 0.184]);%画各次谐波实际位置plot([f_rd3_real,f_rd3_real],[0,A_rd3],'-^',...[f_rd5_real,f_rd5_real],[0,A_rd5],'-^',...[f_rd7_real,f_rd7_real],[0,A_rd7],'-^',...[f_rd9_real,f_rd9_real],[0,A_rd9],'-^',...'Color',[0.929 0.694 0.125]);grid on;
xlabel('频率(MHz)');
ylabel('相对幅度');
title('DAC输出杂散');figure;
%画包络
plot(f,A,'--',...[fc/2,fc/2],[0,Amp(fc/2,fc);],'--',...[fc*3/2,fc*3/2],[0,Amp(3*fc/2,fc)],'--',...[fc*5/2,fc*5/2],[0,Amp(5*fc/2,fc)],'--',...[fc*7/2,fc*7/2],[0,Amp(7*fc/2,fc)],'--',...'Color',[0 0 0]);%包络hold on;
%画基波
plot([f_rd1,f_rd1],[0,A_rd1],'-^');hold on;%画各次谐波实际位置plot([f_rd3_real,f_rd3_real],[0,A_rd3],'-^',...[f_rd5_real,f_rd5_real],[0,A_rd5],'-^',...[f_rd7_real,f_rd7_real],[0,A_rd7],'-^',...[f_rd9_real,f_rd9_real],[0,A_rd9],'-^'...);axis([0 fc/2 0 1]);%调整图像查看频率grid on;xlabel('频率(MHz)');
ylabel('相对幅度');
title('DAC输出杂散(第一奈奎斯特区)');
set(gca,'Fontname','Monospaced');%防止中文乱码
本人不才,该代码仅仅与ADIsimDDS对比过几个参数,并且跟资料中的实例相验证,并没有用DDS真实地去一个个试过,代码仅供参考,如有不对之处请指出!
matlab程序估算DDS、DAC输出杂散相关推荐
- 定位高速DAC近端杂散问题流程
定位高速DAC近端杂散问题流程 1. 如何确定杂散来源 直接数据频率合成器(DDS)因能产生频率捷变且残留相位噪声性能卓越而著称.另外,多数用户都很清楚DDS输出频谱中存在的杂散噪声,比如相位截断杂散 ...
- 有关DDS的一些初步理解:相位噪声和无杂散动态范围
DDS,Direct Digital Frequency Synthesis,直接数字频率合成 1)原理 两个重要的组成: 1.1)相位累加器,例如范围从0~2^N-1 1.2)只读存储器,例如存储着 ...
- ADC DAC时钟域杂散串扰
学习笔记之ADC DAC时钟域杂散串扰 前些天定位板子的DAC杂散问题,发现时钟杂散会传递到整个时钟域,而且PLL芯片无法做到隔离,下面针对这个问题定位过程做下笔记. 1. 板卡简介 单板集成高速DA ...
- matlab密度特征,关于用MATLAB应用程序估算风险中性密度的性能分析和介绍
由于场外期权合约的买卖在交易双方间私下进行而非通过公开市场,因而可能很难确定合约的价格有利于买方还是卖方.为对这些合约进行定价,金融分析师往往依据看涨期权或看跌期权价格估算出风险中性密度(RND)值. ...
- 注意力机制 | CNN-LSTM-Attention基于卷积-长短期记忆网络结合注意力机制多输入单输出回归预测(Matlab程序)
注意力机制 | CNN-LSTM-Attention基于卷积-长短期记忆网络结合注意力机制多输入单输出回归预测(Matlab程序) 目录 注意力机制 | CNN-LSTM-Attention基于卷积- ...
- FPGA 20个例程篇:20.USB2.0/RS232/LAN控制并行DAC输出任意频率正弦波、梯形波、三角波、方波(二)
通过上面的介绍相信大家对数字变频已经有了一个较为整体性的认识,下面笔者来对照XILINX的DDS IP核对数字变频技术展开更进一步的说明,做到了理论和实践很好地结合,这样大家再带入Modelsim进行 ...
- 晶振噪声及杂散_如何判断是否需要使用分立式晶振和振荡器呢?
你在解决系统计时问题时,是不是需要使用分立式晶振和振荡器呢?对于大多数硬件设计师来说,这看起来的确是一个显而易见的方法,又有谁会到互联网上费时费力地搜寻那些包括时钟发生器IC和缓冲器/分布器件的经优化 ...
- 牛顿(Newton)插值及其MATLAB程序
拉格朗日插值的优点是格式整齐和规范,有误差估计方式,它的缺点是没有承袭性,当需要增加节点时,必须重新计算插值的基函数li(x).本文给出具有承袭性的牛顿插值法及其MATLAB程序.与牛顿插值有关的差商 ...
- 拉格朗日(lagrange)插值及其MATLAB程序
一.n次拉格朗日插值 根据<插值多项式的性质>中的定理6.1可得 其中(6.19)称为基函数,(6.18)称为拉格朗日多项式,用(6.18)计算插值称为拉格朗日多项式插值. 方法2:通过M ...
最新文章
- 独家 | SVP:一种用于深度学习的高效数据选择方法
- python里面map函数_python中的map()函数
- [2DPIC调试笔记]parameter_antenna_radiation1013(3)
- oracle查询重复数据出现次数
- Android-一张图理解MVP的用法
- ug弹簧可变性装配_弹簧可配置魔术
- 对Group_concaT函数利用剖析 (转)
- lonlifeOJ1152 “玲珑杯”ACM比赛 Round #19 概率DP
- windows 安全删除硬件并弹出媒体 选项灰色、无法弹出
- 轻松拿到国外主流设计风格的图片素材
- 基于MATLAB的计算机视觉和图像处理代码
- TypeError: empty() received an invalid combination of arguments
- 【论文阅读】8-Non-local Scan Consolidation for 3D Urban Scenes
- Kubernetes等待部署完成 kubectl wait rollout
- 易乐游服务器系统,易乐游云服务器
- java读取excel表格数据
- linux版qq怎么创建桌面快捷方式,Linux_ubuntu系统怎么把网页版QQ添加到程序列表?,新手教程:ubuntu网页QQ快捷方 - phpStudy...
- 冯诺依曼 图灵计算机结构,冯诺依曼与图灵
- 4.Python数据结构及算法----无序和有序列表:链表
- HTML学习笔记(五)
热门文章
- 辩护律师与非律师辩护人的权利区别
- 对scoped的理解
- SQL Server 2008 R2 RTM 中文版 序列号(转)
- 【Tools】WinEdt编译错误 Error Launching Console Application XeLaTeX ...系统找不到指定的文件。
- 【夯实基础 】 js获取的clientHeight、offsetHeight和scrollHeight的区别
- 《结网》—互联网产品经理的工作
- Hadoop权威指南——关于Sqoop
- 啦啦外卖45.9系统APP语音推送开发websocket消息推送不使用极光推送
- 电脑界面超出显示器范围,不是两个显示器 就是界面大 显示器小 拉动鼠标到屏幕边界面就动.和看网页一样
- 百度小程序接入搜索结果-标准化服务SPU指导手册