首页 > 其他分享 >基于sigma-delta和MASHIII调制器的频率合成器simulink建模与仿真

基于sigma-delta和MASHIII调制器的频率合成器simulink建模与仿真

时间:2024-02-24 14:23:39浏览次数:17  
标签:simulink 频率 sigma 噪声 MASH 合成器 调制器 delta III

1.算法运行效果图预览

 

 

      其误差当系统进入稳定状态的时候,频率误差就小于1E-9,并且随着频率的增加,其稳定性将更好。

 

2.算法运行软件版本

matlab2022a

 

3.算法理论概述

        频率合成器是现代无线通信系统中的关键组件,用于生成精确且可调的频率信号。基于Sigma-Delta(Σ-Δ)调制器和MASH III(Multi-stage noise shaping and High-order single-loop)调制器的频率合成器结合了两种技术的优势,提供了高分辨率和低噪声的性能。

 

3.1 Sigma-Delta调制器原理

         Sigma-Delta调制器(Σ-Δ ADC)以其高分辨率和内在的噪声整形特性而著称。在频率合成器中,Σ-Δ调制器用于将低频的模拟信号或相位误差转换为高速的单比特数据流。

 

          Σ-Δ调制器通常由一个差分器、一个积分器(或多个积分器)、一个量化器和一个反馈DAC(数模转换器)组成。

 

          Σ-Delta调制器的工作原理基于过采样和噪声整形。输入信号与反馈信号之差被积分,然后量化。量化产生的误差被反馈回输入端,形成闭环系统。

 

3.2 数学模型

Σ-Delta调制器的数学模型可以用以下差分方程表示:

 

Y[n] = X[n] + (1 - Z^-1) * E[n]

 

其中,Y[n]是输出信号,X[n]是输入信号,E[n]是量化误差,Z^-1表示单位延迟。

 

3.3 噪声整形

        噪声整形是Σ-Δ调制器的关键特性,它将量化噪声推向高频,从而在低频范围内实现高信噪比(SNR)。

 

3.4 MASH III调制器原理

        MASH III调制器是一种多级噪声整形和高阶单环结构,结合了多级Σ-Δ调制器的优点。MASH III调制器由多个级联的Σ-Δ调制器组成,每一级都有自己的量化器和反馈DAC。每一级的输出都被下一级用作输入的一部分,从而形成级联结构。最后一级的输出经过一个数字误差校正滤波器(DECF),以消除前面各级产生的量化噪声。MASH III调制器的数学模型相对复杂,涉及到多级Σ-Δ调制器的联合分析和数字滤波器的设计。

 

       通过精心设计的噪声整形和误差消除机制,MASH III调制器能够在保持高分辨率的同时,显著降低带内噪声。

 

3.5 基于Sigma-Delta和MASH III的频率合成器

        结合Σ-Δ调制器和MASH III调制器的频率合成器,通常用于实现高分辨率的频率控制和低噪声性能。这种合成器可以用于各种应用,包括无线通信、音频处理和传感器接口。基于Σ-Δ和MASH III的频率合成器通常包括一个相位累加器、一个Σ-Δ调制器、一个MASH III调制器和一个DAC。

 

         相位累加器根据所需的频率生成相位值,这些值被Σ-Δ调制器转换为高速数据流。然后,MASH III调制器对这些数据流进行进一步处理,以消除量化噪声并提高分辨率。最后,DAC将这些数字信号转换为模拟信号。

 

        基于Sigma-Delta和MASH III调制器的频率合成器结合了两种先进技术的优势,提供了高分辨率和低噪声的性能。这种合成器在无线通信、音频处理和传感器接口等领域具有广泛的应用前景。通过精心设计和优化,可以实现出色的杂散性能、快速的频率切换和低功耗操作。

 

 

 

 

4.部分核心程序

 

 

 

 

window  = hann(length(yout));
[Pyy,w] = periodogram(yout,window,100000);
PSD2    = 1/M+1/100*(2*(w)).^4;
Len     = length(PSD2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure;
semilogx(w/pi,10*log10(pi*Pyy),'b');
hold
semilogx(w(Len/100:Len)/pi,10*log10(PSD2(Len/100:Len)),'k','linewidth',2);
grid on
xlabel('Normalized Frequency (x\pi rad/sample)')
ylabel('Power/frequency(dB/rad/sample)');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure;
plot(yout,'linewidth',2);
grid on;
xlabel('times');
ylabel('sigmadelta调制器输出');
grid on
 
figure;
hist(yout,5)
xlabel('output yout')
ylabel('number of occurance');
 
 
 
 
figure;
plot(yout2(1:3*Len/4),'linewidth',2);
grid on;
xlabel('times');
ylabel('V');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
%分析频率稳定度
Fre = yout3;
K   = 1;
t1  = yout3(1:end-K);
t2  = yout3(K+1:end);
 
Err = abs(t1-t2)./t1;
ttt = Err(20:end);
idx = find(ttt==0);
ttt(idx)=[];
 
 
figure;
loglog(ttt,'linewidth',2);
grid on;
xlabel('times');
ylabel('频率稳定度');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
%最后进行杂散分析
N        = 16;             %累加器的位数;
K        = fix((2^N)*0.2); %频率控制字,即累加的步长;
D        = 8;             %8bit DAC
g        = gcd(K,2^N);
pe       = 2^N/(g);
n        = 1:pe;
pp       = pe+1;          %频谱分析点数
add_y    = mod(n*K,2^N);  %累加器的输出表达式;
 
%设定量化区间
pat             = -1 + 1/ (2^ (D - 1) ):1/ (2^ (D - 1) ):1 - 1/ (2^ (D -1) ); 
%设定量化码本值
codebook        = -1 + 1/ (2^D):1/ (2^(D - 1) ) :1 - 1/ (2^D); 
rom_x           = cos(2*pi*add_y/(2^N));
[index,quants2] = quantiz(rom_x,pat,codebook);
[Pzz,wz]        = periodogram(quants2,[],'onesided',pp);
 
figure; 
psdplot(Pzz/max(Pzz),wz);

  

标签:simulink,频率,sigma,噪声,MASH,合成器,调制器,delta,III
From: https://www.cnblogs.com/matlabworld/p/18031027

相关文章

  • WPF PART_LeftThumb_DragDelta事件
    PART_LeftThumb_DragDelta事件是拖拽过程中实时触发的。当用户按住Thumb控件并拖动时,该事件会在每次鼠标或手指移动时实时触发,而不是按照时间间隔定时触发。这使得应用程序可以实时响应用户的操作,更新UI或执行其他操作。 DragDeltaEventArgs.HorizontalChange是指拖动操作期间......
  • 基于Mamdani模糊神经网络的调速控制系统simulink建模与仿真
    1.算法运行效果图预览   2.算法运行软件版本matlab2022a 3.算法理论概述      基于Mamdani模糊神经网络的调速控制系统是一种结合模糊逻辑与神经网络技术的智能控制方法,旨在提高调速系统的性能。随着工业技术的不断发展,对调速控制系统的性能要求也越来越高。......
  • QPSK simulink实现
    调制部分总体框架各模块参数升余弦滚降滤波器滚降系数为1单双极性变换各阶段波形BufferDemuxRaisedCosineTransmitFilterQPSK信号功率谱密度解调部分经过AWGN信道后,假设已经进行了载波同步部分模块参数载波模块PulseGenerator由于经过了串并转换......
  • datetime.date + datetime.timedelta 结果仍然是 datetime.date 因而不能与时间进行比
    importpandasaspdimportdatetimedefmain():foo=pd.Timestamp.now()bar=datetime.date.today()+datetime.timedelta(days=-1)res=bar+datetime.timedelta(hours=24)print(res,type(res))if__name__=='__main__':ma......
  • pandas.Timedelta(days=1) 可以 与 datetime.timedelta(days=1) 效果一致
    pandas.Timedelta(days=1)可以与datetime.timedelta(days=1)效果一致https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Timedelta.html#pandas-timedelta但pandas.Timedelta可以有其他写法......
  • ★教程4:FPGA/MATLAB/Simulink联合应用开发入门与进阶X例——前言★教程3:simulink学
        专业即算法,算法即数学,数学即万物。从事MATLAB算法仿真工作15年,从事FPGA系统开发工作12多年。擅长解决各种算法仿真、建模、通信、图像处理、AI、智能控制等。 1.无线基带,无线图传,编解码2.机器视觉,图像处理,三维重建3.人工智能,深度学习4.智能控制,智能优化目录1.FPG......
  • ★教程4:FPGA/MATLAB/Simulink联合应用开发入门与进阶X例——目录
    1.订阅本教程用户可以免费获得本博任意1个博文对应代码;2.本课程的所有案例(部分理论知识点除外)均由博主编写而成,供有兴趣的朋友们自己订阅学习使用。未经本人允许,禁止任何形式的商业用途;3.本课程我们更侧重于各种实例的完整设计介绍。更全面的介绍FPGA,MATLAB,Simulink的联合开发应......
  • MATLAB的Simulink使用及实例
    MATLAB的Simulink使用及实例今天我们来新建一个如图所示的simulink文件新建一个Simulink有两种方法第一种在命令行直接输入similink,然后回车键就好了(注意simulink第一个S是小写哦)第二种我们可以直接在MATLAB上面找到simulink,如下图所示点进去就可以了点进去之后会出现......
  • 如何在simulink中获取足端轨迹?
    哈喽大家好,我是咕噜美乐蒂。很高兴又和大家见面啦。在机器人控制的应用中,足端轨迹是一个非常重要的参数,可以用来评估机器人的运动性能和精度。在Simulink中获取足端轨迹需要考虑到模型的复杂性、仿真器的选择、输出信号的设置以及数据处理等多个方面。美乐蒂在本文中将详细介绍如......
  • SigmaPlot 15:高效精准,让科学绘图更简单
    SigmaPlot15是一款广受欢迎的科学绘图软件,它为科学家、数据分析师和研究者们提供了一款强大且易于使用的工具,以创建高质量的图表和图形。这款软件具备丰富的功能,能够满足各种科学绘图需求。点击获取SigmaPlot15SigmaPlot15具有直观的用户界面,使得用户可以轻松地学习和使用。......