数字锁相环MATLAB代码
matlab 三阶锁相环

matlab 三阶锁相环摘要:一、Matlab三阶锁相环概述1.三阶锁相环基本原理2.Matlab实现方法二、二阶锁相环与三阶锁相环的区别1.应用场景2.性能特点三、Matlab仿真及代码实现1.仿真环境搭建2.代码编写与调试四、锁相环在实际应用中的优势与局限1.电网电压不平衡情况下的表现2.响应速度与控制精度正文:一、Matlab三阶锁相环概述Matlab三阶锁相环(PLL)是一种在信号处理、通信和控制等领域广泛应用的相位锁定技术。
其基本原理是通过检测输入信号与参考信号之间的相位差,控制环路输出信号的相位,使其与输入信号保持同步。
在Matlab中,可以通过编写代码实现三阶锁相环的算法,并进行仿真验证。
1.三阶锁相环基本原理三阶锁相环主要由相位检测器、环路滤波器和压控振荡器(VCO)组成。
当输入信号与参考信号之间存在相位差时,相位检测器输出一个误差信号,该信号经过环路滤波器处理后,控制VCO的频率,从而使输出信号的相位与输入信号保持一致。
2.Matlab实现方法在Matlab中实现三阶锁相环的方法主要包括以下几个步骤:(1)创建仿真环境:搭建相应的仿真模型,包括输入信号、相位检测器、环路滤波器和VCO等模块。
(2)编写代码:根据三阶锁相环的原理,编写相位检测器、环路滤波器和VCO的Matlab代码。
(3)调试与优化:对代码进行调试,观察仿真结果,根据需要对算法进行优化。
二、二阶锁相环与三阶锁相环的区别1.应用场景:二阶锁相环主要用于载波信号的同步,而三阶锁相环适用于更广泛的信号处理、通信和控制领域。
2.性能特点:二阶锁相环具有结构简单、响应速度快的特点,但在电网电压不平衡、含有直流分量及高次谐波时,锁相结果存在较大的误差。
相比之下,三阶锁相环具有更好的抗干扰能力和更低的相位噪声,能适应更复杂的信号环境。
三、Matlab仿真及代码实现1.仿真环境搭建:搭建一个基于双二阶广义积分器的三相锁相环(DSOGI-PLL)仿真模型,包括输入信号、DSOGI模块、锁相环控制模块和VCO模块。
4阶锁相环matlab

4阶锁相环matlab4阶锁相环是一种广泛应用于通信系统和控制系统中的控制算法,其主要用于抑制信号的相位偏移和频率误差。
本文将以回答关于4阶锁相环在Matlab中的应用为主题,一步一步地介绍相关知识和实例。
第一步:了解锁相环的基本原理要学习和应用4阶锁相环,首先需要了解锁相环的基本原理。
锁相环是一种控制系统,它通过比较输入信号和参考信号的相位差异,并根据差异调整输出信号的相位和频率,使其与参考信号同步。
在一个理想的锁相环中,输出信号的相位和频率将与参考信号完全一致。
第二步:了解4阶锁相环的结构4阶锁相环是一种具有更高精度和更快响应速度的锁相环。
它由相位解调器、低通滤波器、环路滤波器和控制电压产生器等组成。
相位解调器用于将输入信号分解为正弦和余弦分量,低通滤波器用于提取正弦分量,环路滤波器用于对正弦分量进行进一步处理,而控制电压产生器则根据环路滤波器的输出产生对输出信号的调整。
第三步:编写Matlab代码实现4阶锁相环在Matlab中实现4阶锁相环可以通过调用DSP System Toolbox 中的相位锁定环模块来完成。
以下是一个简单的示例代码:matlab设置相关参数omega_n = 2*pi*1e4; 自然频率zeta = 0.707; 阻尼系数Kp = 1; 比例增益Ki = 1; 积分增益创建4阶锁相环loop = dspPLL('PhaseDetectorGain', Kp, ...'LoopBandwidth', omega_n, ...'DampingFactor', zeta, ...'LoopFilterGain', Ki);生成输入信号fs = 1e6; 采样率t = 0:1/fs:1;fin = 1000; 输入信号频率inputSignal = cos(2*pi*fin*t);执行锁相环[outputSignal, controlVoltage] = loop(inputSignal);绘制输出信号和调整电压figure;subplot(2,1,1);plot(t, inputSignal, 'b', t, outputSignal, 'r');xlabel('Time (s)');ylabel('Amplitude');legend('Input Signal', 'Output Signal');subplot(2,1,2);plot(t, controlVoltage, 'g');xlabel('Time (s)');ylabel('Control Voltage');legend('Control Voltage');通过上述代码,可以生成一个包含输入信号、输出信号和调整电压的图形,并显示相应的波形。
matlab 锁相环传递函数 -回复

matlab 锁相环传递函数-回复Matlab 锁相环传递函数的设计是一个重要的过程,可以用于控制和稳定信号的频率和相位。
在本文中,我们将逐步介绍如何设计和实现一个基本的锁相环传递函数。
首先,让我们来了解一下什么是锁相环传递函数。
锁相环(PLL)是一种用于从输入信号中提取频率和相位信息的控制系统。
传递函数是描述系统行为的数学模型,它通过输入输出的关系来表示系统的动态响应。
为了开始设计锁相环传递函数,我们首先需要定义系统的基本组成部分。
一个典型的锁相环系统通常包括一个相位比较器、一个低通滤波器、一个电压控制振荡器(VCO)和一个分频器。
1. 相位比较器:相位比较器是锁相环的核心部分,它比较输入信号和反馈信号的相位差,然后生成一个代表相位误差的控制信号。
常见的相位比较器有边沿触发型和采样相位比较器。
采用何种类型的相位比较器取决于具体应用的要求。
2. 低通滤波器:低通滤波器的作用是平滑相位误差的控制信号,以去除高频噪声和不稳定性。
滤波器通常是一个一阶或多阶的低通RC滤波器,其截止频率需要根据系统动态响应的要求来确定。
3. 电压控制振荡器(VCO):VCO 是锁相环的输出部分,它根据低通滤波器的输出控制信号来产生带有特定频率的输出信号。
VCO 可以是连续振荡器或数字控制振荡器,具体选择取决于应用的要求。
4. 分频器:分频器用于将VCO 的输出信号分频为参考信号,并发送到相位比较器进行比较。
分频器通常是一个可编程的计数器,根据实际需要选择不同的分频比。
现在我们可以开始进行传递函数的设计了。
传递函数是由锁相环的各个组成部分共同构成的。
1. 相位比较器传递函数:相位比较器的传递函数由具体的相位比较器类型决定。
边沿触发型相位比较器通常具有一个高增益范围,传递函数可以表示为H_cp(s) = K_cp/s,其中K_cp 是相位比较器的增益。
2. 低通滤波器传递函数:通常,锁相环的低通滤波器采用一阶RC滤波器,其传递函数可以表示为H_lp(s) = 1/(sT_lp + 1),其中T_lp 是滤波器的时间常数。
matlab pll锁相环原理

标题:MATLAB中的PLL锁相环原理一、介绍PLL锁相环的概念PLL(Phase-Locked Loop)锁相环是一种常用的控制系统,广泛应用于通信系统、数字信号处理和电力系统等领域。
它通过比较输入信号与本地参考信号的相位差,实现对输入信号的精确跟踪和同步。
在MATLAB中,我们可以通过编写代码来模拟PLL锁相环,并深入理解其工作原理。
二、PLL锁相环的基本结构PLL锁相环由相位比较器、低通滤波器、VCO(Voltage-Controlled Oscillator)和分频器等组成。
它的基本结构如下:1. 相位比较器:用于比较输入信号和本地参考信号的相位差,并产生控制电压。
2. 低通滤波器:将相位比较器输出的控制电压进行滤波,去除高频噪声,得到稳定的调节电压。
3. VCO:根据低通滤波器输出的调节电压,调节其输出频率,实现对输入信号的跟踪。
4. 分频器:将VCO输出的信号进行分频,得到本地参考信号,用于与输入信号进行比较。
三、PLL锁相环的工作原理PLL锁相环的工作过程可以分为锁定和跟踪两个阶段。
1. 锁定阶段:在初始时刻,输入信号的频率与VCO的输出频率不同步。
相位比较器会检测到二者之间存在相位差,产生相应的控制电压,通过低通滤波器传递给VCO。
VCO根据控制电压,调节其输出频率,使其逐渐与输入信号频率同步,最终达到锁定状态。
2. 跟踪阶段:一旦锁定完成,PLL锁相环会持续监测输入信号的频率变化,并调节VCO的输出频率,确保其始终与输入信号同步。
低通滤波器起到平稳调节的作用,使得VCO的输出频率能够迅速跟随输入信号的变化。
四、MATLAB中的PLL锁相环模拟在MATLAB中,我们可以利用Simulink工具箱来建立PLL锁相环的模型,并进行仿真分析。
我们需要使用Simulink中的基本模块,如正弦波源、相位比较器、低通滤波器、VCO和分频器等,按照PLL锁相环的基本结构进行搭建。
1. 步骤一:建立模型我们在Simulink中建立PLL锁相环的模型,将各个基本模块按照PLL 锁相环的基本结构进行连接,确保输入信号能够经过相位比较器、低通滤波器和VCO等模块,最终输出同步的信号。
数字锁相环matlab

数字锁相环matlab摘要:1.数字锁相环的概述2.Matlab 在数字锁相环中的应用3.数字锁相环的实现方法4.结论正文:1.数字锁相环的概述数字锁相环(Digital Phase-Locked Loop,简称DPLL)是一种数字信号处理技术,用于在数字通信系统中实现信号同步。
在数字通信系统中,信号的同步至关重要,因为只有实现信号同步,才能确保接收端正确地解调出原始信号。
数字锁相环通过比较接收信号与本地生成的信号,并根据两者之间的相位差来调整本地信号的相位,从而实现信号的同步。
2.Matlab 在数字锁相环中的应用MATLAB 是一种广泛应用于信号处理和通信系统的软件工具,它可以方便地实现数字锁相环的模型和算法。
使用MATLAB 可以搭建数字锁相环的仿真模型,对锁相环的性能进行分析和评估,以及对锁相环的算法进行优化。
此外,MATLAB 还提供了丰富的通信系统工具箱,如通信系统工具箱、信号处理工具箱等,为数字锁相环的设计和分析提供了强大的支持。
3.数字锁相环的实现方法数字锁相环的实现方法主要包括以下几种:(1)基于滤波器的实现方法:该方法通过设计一个滤波器,使得滤波器的传递函数与输入信号的相位相关,从而实现信号的同步。
(2)基于频率检测的实现方法:该方法通过检测输入信号的频率,并将其与本地信号的频率进行比较,从而实现信号的同步。
(3)基于相位检测的实现方法:该方法通过检测输入信号与本地信号之间的相位差,并根据相位差来调整本地信号的相位,从而实现信号的同步。
(4)基于最大似然估计的实现方法:该方法通过计算输入信号与本地信号之间的最大似然估计,从而实现信号的同步。
4.结论数字锁相环是一种重要的信号处理技术,广泛应用于数字通信系统中。
MATLAB 作为一种强大的信号处理工具,可以方便地实现数字锁相环的模型和算法。
数字锁相环的实现方法有多种,每种方法都有其独特的优点和适用场景。
4阶锁相环环路计算matlab

一、锁相环环路计算的基本原理锁相环(PLL)是一种控制系统,它可以跟踪并锁定一个输入信号的相位和频率。
它通常包括一个相位比较器、一个数字控制环路滤波器、一个控制电压示数器和一个振荡器。
锁相环环路计算就是指计算和分析锁相环系统的环路参数,以实现系统设计和优化。
锁相环环路计算在数字信号处理、通信系统、雷达和仪器仪表等领域都有着广泛的应用。
在锁相环设计过程中,环路计算可以帮助工程师确定合适的环路带宽、相位裕度以及滤波器设计等参数,从而实现系统对输入信号的准确跟踪和稳定锁定。
二、锁相环环路计算的基本步骤1. 确定锁相环的工作频率范围和精度要求。
根据系统的应用需求和输入信号的特性,确定锁相环所需的频率范围和频率精度,这将指导锁相环环路的设计和计算。
2. 分析环路的稳定性和性能指标。
通过传递函数、脉冲响应和频率特性等分析方法,对锁相环环路的稳定性、相位裕度、噪声抑制和跟踪性能等指标进行评估和分析,为后续的计算和优化提供基础。
3. 计算环路滤波器的参数。
根据系统的稳定性要求和性能指标,计算锁相环环路滤波器的参数,包括带宽、阶数、极点位置和增益等,以实现对输入信号的精确跟踪和稳定锁定。
4. 优化振荡器的设计参数。
选择合适的振荡器类型、频率范围和相位噪声等参数,结合锁相环环路的设计要求进行优化,确保锁相环系统的性能达到最佳状态。
5. 模拟仿真和实际测试。
利用matlab等工具进行锁相环环路计算的模拟仿真,验证设计参数的有效性和系统性能的稳定性,然后进行实际测试和调试,对系统进行进一步优化和改进。
三、matlab在锁相环环路计算中的应用matlab是一种强大的数学建模和仿真工具,它在锁相环环路计算中有着广泛的应用。
通过matlab工具箱中的控制系统工具箱和信号处理工具箱,可以方便地进行锁相环环路的建模、分析和计算,为系统设计和优化提供有效的支持。
matlab提供了丰富的控制系统函数和工具,可以实现锁相环环路的传递函数建模、频率响应分析、环路稳定性评估和性能指标计算等功能。
数字锁相放大器原理及其Matlab仿真
数字锁相放大器原理及其Matlab仿真摘要:数字锁相放大器作为一种新型的放大器,其原理和应用逐渐受到人们的关注。
本文主要介绍数字锁相放大器的基本工作原理和Matlab仿真的方法。
基于数字信号处理技术,数字锁相放大器通过数字积分器和数字锁相环的组合实现了高精度的信号放大和相位锁定。
在Matlab环境下,仿真过程首先建立数字锁相放大器的模型,然后进行参数设置和仿真测试。
通过多次调整模型参数,并对仿真结果进行分析,得到最优的数字锁相放大器设计方案。
本文的研究可以为数字锁相放大器的实际应用提供参考。
关键词:数字锁相放大器、数字信号处理、数字积分器、数字锁相环、Matlab仿真正文:一、引言数字锁相放大器作为一种新型的放大器,其应用范围涉及多个领域,如精密测量、生物医学、材料科学等。
与传统的电子放大器相比,数字锁相放大器具有响应速度快、抗干扰性强、精度高等优点。
为了更好地掌握数字锁相放大器的原理和应用,本文通过Matlab仿真的方法进行研究,以期发现数字锁相放大器的最佳设计方案。
二、数字锁相放大器原理数字锁相放大器基于数字信号处理技术实现了高精度的信号放大和相位锁定。
其基本工作原理是:将待放大信号与参考信号做乘积,再将乘积信号通过数字积分器得到直流分量和交流分量。
然后将交流分量输入数字锁相环进行相位锁定,最后从数字锁相放大器的输出端可以获得相位锁定后的信号。
数字锁相放大器的电路图如下所示:图1 数字锁相放大器的电路图其中,$u_i$表示待放大信号,$u_{ref}$为参考信号,$v$为输出端信号,$n_i$,$n_{ref}$,$n$为噪声信号。
数字积分器的计算公式为:$$y(n)=y(n-1)+\frac{T}{2}\left(x(n)+x(n-1)\right)$$其中,$x(n)$为输入信号,$y(n)$为输出信号,$T$为采样周期。
数字锁相环的计算公式为:$$\theta_{n}=\theta_{n-1}+K_{p} \Delta \varphi_{n}+K_{i}\sum_{j=0}^{n} \Delta \varphi_{j}$$其中,$\theta_{n}$为相位偏差,$\Delta \varphi_{n}=2 \pif_{ref} T$为相位差,$K_{p}$和$K_{i}$为比例常数和积分常数。
基于matlab的数字锁相环DPLL的仿真
2、DPLL 基本模型和原理 全数字锁相环包括数字鉴相鉴频器(PFD) 、数字滤波器 (LPF) 、数字振荡器(NCO)三部分,如下图所示:
与模拟锁相环电路相比, 全数字锁相环实质上是通过将 前者替换成数字电路而得到的,所做的改变是将其中的鉴相 鉴频器(PFD)和环路低通滤波器(LPF)转换到离散系统。 环路低通滤波器(LPF)可以通过一个希望的传输函数的拉普 拉斯变换的 z 变换而得到。压控振荡器需要转换成数控振荡 器(Numerically Controlled Oscilaator) 。 锁相环闭环系统状态的变化依赖于 PFD 输出的相位误差。 相位误差输出一次, 锁相环状态改变一次; PFD 不输出相位误 差,锁相环里的所有信号均不改变状态。根据上面的分析, 可以将仿真过程分为两个过程:1)计算 PFD 输出的相位误 差;2)根据相位误差,计算锁相环里各个模块的状态。 PFD 电路用于检测参考信号和反馈信号之间的相位误差。 它的状态转换如下图所示:
Tk T0 T0 yk 1 N
式中 T0 / N 为数控振荡器周期相对于中心周期 T0 变化的最
Tk 小单位。 当无控制时,yk 1 =0, = T0 ; 有控制时周期以 T0 / N
或其倍数的量相对于 T0 作阶跃式的改变。与 T0 / N 相对应的相 位改变量为:
2 (rad ) N
所以 N 是表示 2 弧度内相位受控变化大小的一个量,也 叫模 2 内状态数。这就是说,数控振荡器输出脉冲的瞬时相 位 0 (k ) ,在 2 弧度内只能以 或其倍数离散地变化。在这时,
T0
/ N = , 为信号钟的周N
T0 Tc
三、参考代码和仿真结果
通过建立以上所介绍的全数字锁相环的仿真模型,在 matlab 中得到其仿真系统如下图所示:
matlab二阶数字锁相环在相位阶跃激励情况下系统的暂态响应
在MATLAB中实现一个二阶数字锁相环(PLL,Phase-Locked Loop)并对它进行相位阶跃激励的响应分析是一个相对复杂的过程。
二阶锁相环通常包括两个积分器,一个用于频率估计,另一个用于相位估计。
在数字实现中,这些积分器通常由离散时间滤波器(如FIR或IIR滤波器)实现。
以下是一个简化的二阶数字锁相环的MATLAB实现,以及对其进行相位阶跃激励的示例代码:matlab% MATLAB代码:实现二阶数字锁相环% 设定参数Fs = 1000; % 采样频率T = 1/Fs; % 采样周期L = 1000; % 采样点数t = (0:L-1)*T; % 时间向量% 设定PLL参数Kp = 0.1; % 相位增益Ki = 0.01; % 频率增益% 初始化PLL变量theta_hat = 0; % 估计相位omega_hat = 0; % 估计角频率error = 0; % 相位误差% 生成一个带有相位阶跃的输入信号f_in = 5; % 输入信号频率phase_step = pi/2; % 相位阶跃大小input_signal = cos(2*pi*f_in*t + phase_step);% PLL处理循环for n = 1:L% 计算相位误差error = atan2(imag(input_signal(n)), real(input_signal(n))) - theta_hat;% 更新相位和角频率估计theta_hat = theta_hat + Ki*error + Kp*omega_hat*T;omega_hat = omega_hat + Ki*error/T;% 如果需要,可以在这里添加低通滤波器来处理误差信号% 存储结果(如果需要)% pll_output(n) = cos(theta_hat);end% 绘制结果figure;subplot(2,1,1);plot(t, input_signal);title('输入信号(带有相位阶跃)');xlabel('时间 (s)');ylabel('幅度');subplot(2,1,2);plot(t, theta_hat);title('估计相位');xlabel('时间 (s)');ylabel('相位 (rad)');% 你可以根据需要添加更多的分析或可视化这段代码创建了一个简单的二阶数字锁相环,并对一个带有相位阶跃的输入信号进行处理。
锁相环设计与MATLAB仿真
锁相环设计与MATLAB仿真锁相环(Phase-Locked Loop,PLL)是一种电路设计技术,用于提取输入信号中的相位信息,并在输出信号中保持输入信号与输出信号的相位差稳定。
PLL广泛应用于通信系统、时钟生成器、频率合成器等领域。
锁相环主要由相位检测器(Phase Detector,PD)、环路滤波器(Loop Filter,LF)、振荡器(Voltage-Controlled Oscillator,VCO)和分频器(Divider)组成。
相位检测器用于比较输入信号和VCO输出信号的相位差,并产生一个低频的误差信号。
传统的相位检测器包括异或门相位检测器(XOR PD)和倍频器相位检测器(Multiplier PD)。
异或门相位检测器适用于窄带相位差测量,倍频器相位检测器适用于宽带相位差测量。
MATLAB提供了用于建模和仿真PLL的工具箱,可以方便地进行相位检测器的设计和性能分析。
环路滤波器用于滤波相位误差信号,根据滤波器的设计方法不同,可以实现不同的环路特性。
传统的环路滤波器包括积分环路滤波器和比例积分环路滤波器。
积分环路滤波器对误差信号进行积分,使得环路系统具有很高的稳定性和抗干扰能力,但响应时间较长。
比例积分环路滤波器在积分环路滤波器的基础上引入比例增益,可以更快地响应相位误差的变化。
振荡器(VCO)根据环路滤波器输出的控制电压来生成输出信号,并提供给分频器进行频率除法操作。
振荡器通常采用压控振荡器(VCO)或电流模式逻辑(Current Mode Logic,CML)结构,可以根据应用需求选择合适的振荡器设计。
分频器用于将振荡器输出的高频信号按照设定的分频比例进行分频,生成与输入信号相位对齐的输出信号。
分频器采用计数器和锁存器设计,计数器用于记录输入信号的周期数,锁存器将计数器的值锁定在一个周期,输出给相位检测器进行相位比较。
锁相环的设计和仿真可以通过MATLAB工具箱进行。
首先,设计相位检测器的传输函数和特性,选择适当的相位检测器类型和设计参数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
奈奎斯特型全数字锁相环(NR-DPLL)
注:本文截取于通信原理课程综合设计,载波提取部分中的锁相环解调部分中的基础锁相环。
MATLAB编程仿真实现,想要simulink实现的同学要失望啦。
代码在本文末,抱歉未加注释。
理解本文需要的知识:信号与系统,数字信号处理,同步技术。
载波的同步提取
提取载波信息可用锁相环进行跟踪载波或调制信息。
本文采用奈奎斯特型全数字锁相环(NR-DPLL )对接收信号进行载波同步提取,并用于相干解调。
NR-DPLL 结构介绍
数字锁相环的基本组成如下
图2-6 数字锁相环的组成
NR-DPLL 是基于奈奎斯特采样鉴相器、数字环路滤波器、数字控制振荡器的一种数字锁相环。
下面分别对各部分作简要介绍。
奈奎斯特采样鉴相器
奈奎斯特采样鉴相器的组成框图如图2-7所示。
图2-7 奈奎斯特采样鉴相器的组成框图
为了表述方便,设数字控制振荡器(NCO )输出的本振数字信号为
0002()cos(())k k k u t U t t ωθ=+
输入信号
101()sin(())i u t U t t ωθ=+ 其中
100()(),i i o t t t θωθωωω=∆+∆=-
输入信号经A/D 采样后,第k 个采样时刻采样量化后的数字信号为
01()sin(())i k i k k u t U t t ωθ=+ 对输入信号进行A/D 变换的采样速率由带通信号奈奎斯特采样定理确定,但为防止信号频谱混叠并保证信号相位信息的有效抽取,采样速率一般选取前置带通滤波器的两倍带宽以上。
令()(),()()i k i o k o u t u k u t u k ==,即()i u k 和()o u k 相乘后,经低通滤波得到的数字误差信号
()sin ()d d e u k U k θ=
式中
12()()()e k k k θθθ=-
数字环路滤波器
数字环路滤波器与模拟环路中环路滤波器的作用是一样的,都是为了抑制高频分量及噪声,且滤波器的参数直接影响环路的性能。
在实际应用中一阶数字环路滤波器的实现形式如图2-8所示。
图2-8 一阶数字环路滤波器的实现形式
其Z 域传递函数:
2
11
()z ()1c d u k G F G u k z -=+
-()=
按照图2-8中所实现的数字滤波器,其频率特性与理想积分滤波器的频率特
性一致;两种滤波器参数之间也有着一定的对应关系。
对理想积分滤波器的传递
函数式采用双线性变换,即令
1
1
21
1
s
z
s
T z
-
-
-
=
+
,得到
22
1
11
11
21
()
211
s s
T T G
F z G
z z
τ
ττ--
-
=+=+
--
式中,
s
T为采样周期,
2
1
1
2
2
s
T
G
τ
τ
-
=
2
1
s
T
G
τ
=
式和式表明了两种滤波器参数之间的对应关系,也可以说明图2-8所示的一阶数字滤波器就是模拟理想积分滤波器的数字化表示形式。
二阶数字滤波器可由两个一阶数字滤波器串联得到。
数字控制振荡器(NCO)
NCO采用直接数字相位综合技术(DDS),该技术主要是由时钟驱动读取三角函数表,功能框图如图2-8所示。
图2-9 基于DDS的NCO结构
Ok,截取结束。
接下来是编程中必须的参数计算以及思路分析。
首先是参数选择,时域响应最好取
ξ=,
根据经验
12=10ττ,
令NCO 相位控制增益
0K =1
’,鉴相灵敏度d K 1=,则0K s f =,环路增益
d 0K s
K K f ==,
再由理想二阶环路中
2
2
n
τξω=
,
n ω=
于是,
21
1
200
S
T G τ=
=
, 221120.10.097522
S T G
G ττ-=
=-= 以上两个参数同时缩小相同的倍数,捕获带也缩小相同的倍数。
而扩
大时,最大到两倍,大于两倍时捕获带不再变化,只是捕获时间短一些。
环路的3Db 带宽
2c n ωΩ==接下来是编程思想,离散信号过系统实际是系统冲击响应与信号卷积,所谓卷积就是错位相加,于是引申出一种叫做重叠保留法的计算方法,即信号可分段计算。
鉴相器输入的两个信号每次分别都仅是一个点,相乘后进入滤波器,此处就得用到这个所谓的重叠保留法。
输入一个点输出一个点,其他点保留与下次错位相加,再输出一个点。
鉴相器输出的信号过环路滤波器,通过Z 域传递函数计算。
最后是DDS ,网上有很多相关文档,自己看看,注意输入相位要累积,所谓驱动嘛,当然每次依然是输出一个点,这个点作为下次鉴相器输入信号之一。
仿真结果如下:
上图中输入频率是27Hz,锁相环自然频率为32Hz。
搞懂了这些编程思想,以及DDS后,自然谐振频率,输入信号频率自己去做调整。
但注意锁相环的参数限制。
到这里,NR-DPLL就完成了。
在此基础上平方环,科斯塔斯环,判决反馈环等等都很容易编程仿真实现。
仿真代码:
锁相环:
% function uo=pll(ui,Fs)
clear all
clc
fo=32;
fi=27;
% fi=length(ui)*1/(n*fo);
g1=*2;
g2=*2;
n=64;
t=0:1/(n*fo):(n*fo);
ui=sin(2*pi*fi*t);%输入信号
uo=zeros(1,length(ui));
uo(1)=dds_sin(10,n*fo,fo,0,1);%Nco输出初始信号
uo1(1)=dds_sin(10,n*fo,fo,0,1);
% erro=ph(ui(1),uo(1));%鉴相器输出
sig(1)=ui(1)*uo(1);
l=30;
hn=fir1(l,*fo/(n*fo));
temp=conv(hn,sig(1));
temp1=temp(2:end);
erro(1)=temp(16);
lpu1(1)=erro(1)*(g1+g2);
lpu2(1)=lpu1(1)*(g1+g2);
m=2*pi*fo/2048*(1:length(t));
for i=1:length(ui)-1
uo(i+1)=dds_sin(10,n*fo,fo,m(i)+lpu2(i)*1,1);
uo1(i+1)=dds_sin(10,n*fo,fo,m(i)+lpu2(i)*1-m(14),1);
sig(i+1)=ui(i+1)*uo(i+1);
temp=conv(sig(i+1),hn);
temp(1:l)=temp(1:end-1)+temp1;
temp1=temp(2:end);
erro(i+1)=temp(16);
lpu1(i+1)=g1*erro(i+1)+g2*erro(i+1)+g2*erro(i);
lpu2(i+1)=g1*lpu1(i+1)+g2*lpu1(i+1)+g2*lpu1(i)+lpu2(i);
end
% end
DDS代码
function [A] = dds_sin(N,fs,f,phi0,Nig)
% % [返回参数] (传递参数)
% f=8;
% N=8; %频率信号字长N:表示频率信号样点的字长
% fs=256; % 采样频率fs:DDS内部采样频率(输出频率信号的采样频率)
% phi0=0; % 初始相位phi0:输出信号的初始相位
% % df=1; %最小频率间隔df:DDS输出信号的最小频率间隔(频谱分辨率)
% Nsig=256; %输出频率信号样点个数Nsig
% % f0 输出信号频率
Nperiod=2^N; %这么多样点表示一个周期正弦信号n=0:(Nperiod-1);
Sroot=sin(2*pi*n/Nperiod);%*(2^(N-1)-1);
Asin=Sroot;
dphi=2*pi/Nperiod;
M=floor(2^N*f/fs);
M0=floor(phi0/dphi);
% A=zeros(1,Nsig);
% A=Asin(x);
for i=1:Nig
x=mod(M0+1+(i-1)*M,Nperiod);
if x==0
x=1;
end
A(i)=Asin(x);
end
% A1=A;
end
% x=mod(M0+(i-1)*M,Nperiod);
% xA=0:1/fs:(Nsig-1)/fs;
% plot(xA,A)
% title('DDS正弦信号时域图');xlabel('t/s');
% end。