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

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调制器的数学模型可以用以下差分方程表示:

Yn = Xn + (1 - Z^-1) * En

其中,Yn是输出信号,Xn是输入信号,En是量化误差,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,10log10(piPyy),'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(2piadd_y/(2^N));

index,quants2 = quantiz(rom_x,pat,codebook);

Pzz,wz = periodogram(quants2,\[\],'onesided',pp);

figure;

psdplot(Pzz/max(Pzz),wz);`

相关推荐
小白羊丨7 小时前
如何诊断 Prompt 模板导致的效果下降?
人工智能·算法·prompt
OPEN-F9 小时前
C++11/14新特性精讲:移动语义与智能指针实战
开发语言·c++·算法
lisin-lee-cooper9 小时前
【leetcode658】有序数组找出k个最接近x的数
java·数据结构·算法
sunburn-9 小时前
Java堆(Heap)详解与实战教学
java·开发语言·数据结构·ide·算法
智碳能碳管理平台10 小时前
工业能耗台账标准化:能碳管理系统的数据口径怎么设计
算法·能碳管理系统·智碳能碳管理平台·企业能碳管理系统·碳排放核算软件·绿色工厂申报saas·能碳管理平台
带多刺的玫瑰10 小时前
Leecode#15刷题之三数之和
算法·leetcode·职场和发展
哭泣方源炼蛊10 小时前
并查集进阶 P1(带权并查集,并查集分类)
数据结构·c++·算法·二进制·带权并查集
牧羊人.33311 小时前
动手学深度学习 02 | 手写数字识别
图像处理·人工智能·深度学习·算法
武帝为此11 小时前
【InnoDB存储引擎介绍】
数据库·算法
shehuiyuelaiyuehao12 小时前
算法32,连续数组,前缀和+哈希表
算法·leetcode·职场和发展