VCO简介与实现
Posted zhui-meng6
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VCO简介与实现相关的知识,希望对你有一定的参考价值。
一、简介
VCO是Voltage Controlled Oscillator(电压控制振荡器)的缩写,是一种电子元件,用于产生可变频率的信号。VCO通常由一个振荡器和一个电压控制电路组成,能够根据输入的电压信号来调整输出信号的频率。
二、原理
VCO的工作原理是基于一个振荡器,通常是一个多谐振荡器或晶体振荡器。VCO的频率取决于振荡器的特性,例如电容、电感、晶体等。电压控制电路负责将输入的电压信号转换为振荡器的频率控制信号。通常,电压控制电路使用一个电压控制电容(VCO)或电压控制电感(VCL)来实现频率控制。
VCO广泛应用于各种电子设备中,如频率合成器、FM收音机、音乐合成器等。VCO的输出信号可以用于调频广播、调幅广播、数字通信等应用。由于VCO产生的信号频率可变,因此它也是一种基础元件,可用于许多电路中,如电压控制滤波器、相位锁定环路等。
VCO也是模拟合成器的核心元件之一,可以产生各种不同的声音效果。VCO通常与其他电子元件,如滤波器、包络控制器和音量控制器等组合使用,以产生复杂的音乐效果。
三、示例代码
该代码实现了一个简单的VCO,其基于正弦波产生器来产生可变频率的信号。在代码中,我们使用sine_wave函数产生正弦波,并使用相位来控制输出信号的频率。具体来说,我们使用相位phase来表示正弦波的位置,然后在每个采样时使用相位和频率来计算正弦波的输出。我们使用dt来表示每个采样的时间间隔,然后使用phase += dt * FREQUENCY来更新相位。当相位超过1时,我们将其限制在0到1之间,以保持正弦波的周期性。在代码中,我们将产生的可变频率信号输出到控制台上,以供进一步处理或保存到文件中。
#include <stdio.h>
#include <math.h>
#define SAMPLE_RATE 44100.0
#define FREQUENCY 440.0 // 频率(单位:Hz)
#define AMPLITUDE 0.5 // 幅度
float phase = 0.0; // 相位
// 产生正弦波
float sine_wave(float frequency, float amplitude, float phase)
return amplitude * sinf(2.0 * M_PI * frequency * phase);
int main()
float dt = 1.0 / SAMPLE_RATE;
float t = 0.0;
float output = 0.0;
for (int i = 0; i < SAMPLE_RATE * 2; i++)
output = sine_wave(FREQUENCY, AMPLITUDE, phase); // 产生正弦波
phase += dt * FREQUENCY; // 更新相位
if (phase >= 1.0)
phase -= 1.0;
printf(“%!!(MISSING)!(MISSING)!(MISSING)!(MISSING)!(MISSING)!(MISSING)f(MISSING)\\n”, output);
return 0;
WSFC CNO与VCO误删恢复
在前面的文章中老王反复的和大家强调过CNO,VCO起到的作用
基本上,CNO和VCO,主要负责提供群集的Kerberos验证,作为管理访问点的一部分,提供用户访问
CNO VCO每次启动联机时需要联系到域控制器,CNO会与AD同步自己的计算机密码,也会帮助VCO同步密码,CNO负责维护与VCO的关联关系
可以说,如果我们的群集模型部署为传统AD架构,那么CNO和VCO将是非常重要的,一旦我们不小心删除了CNO或VCO对象,就会导致群集无法正常联机,应用无法和群集进行Kerberos验证。
在2008R2之后,AD域推出了回收站的功能,开启回收站功能后,允许AD对象在墓碑时间之内,可以被恢复回来,但恢复回来后的计算机对象,大多情况需要重新同步密码
本文老王将为大家介绍,一旦误删了CNO对象应该如何进行恢复
实验环境
DC&iscsi
lan:10.0.0.2 255.0.0.0
iscsi:30.0.0.2 255.0.0.0
HV03
MGMET:10.0.0.11 255.0.0.0 DNS 10.0.0.2
ISCSI:30.0.0.11 255.0.0.0
CLUS:18.0.0.11 255.0.0.0
HV04
MGMET:10.0.0.12 255.0.0.0 DNS 10.0.0.2
ISCSI:30.0.0.12 255.0.0.0
CLUS:18.0.0.12 255.0.0.0
当前域控制器为2008R2,已开启回收站功能,2012之后可通过GUI界面启动回收站功能
群集名称当前为BJcluster,上面跑了一个DTC,名称为hello
AD中CNO/VCO信息如下
在2008之后的AD中,默认情况下,当我们创建AD对象时,可以选择是否要使用防止意外删除功能
默认情况下,当我们创建OU时,该功能被默认启用,除非我们手动修改它,勾选了防止意外删除选项后,该OU将不能被随便删除,除非取消放置意外删除选项
但是对于用户对象和计算机对象,默认情况下并未启动该功能,即是说,只要对于AD有权限的管理员,就可以删除我们的计算机对象
要规避误删计算机对象,有两种方案可以选择
针对于CNO,VCO计算机对象,勾选防止被意外删除
2. 统一设定群集计算机OU层面,拒绝Everyone删除计算机对象
两者区别在于,一个是OU级,一个是对象级别,一旦设置了该功能之后,那么普通管理员将不能随便删除计算机对象
这是预防措施,那么我们就来看下,如果没有做这些预防措施,就是某个管理员不小心删除了CNO的情况,应该如何处理
删除CNO对象
这时如果群集当前名称在线,则并不会立即提示报错,但是当下一次群集故障转移或冷启动时,就会出现报错,打开事件查看器,可以看到1685错误
查看Cluster Log可以看到,群集名称,CNO当前无法进行验证
使用ADRecycleBin工具恢复误删除对象(2012开始可通过自带AD管理中心恢复)
恢复完成后可以在AD中看到被恢复的CNO对象
恢复完成计算机对象后,通常我们需要重置计算机对象的密码,让CNO计算机对象可以重新正常工作
WSFC2008时代开始,群集帮我们内置了重置计算机密码的修复机制,我们可以在群集中,通过修复来对CNO,或VCO执行重置计算机密码操作
针对CNO执行修复,需要对于CNO具备管理权限的账户,因为我们需要连接到AD中,重置该计算机账户的密码
针对于VCO执行修复,需要对于VCO账户具备权限CNO账户来执行,因此需要确保CNO账户对VCO账户具备重置密码权限
打开故障转移群集管理工具->群集核心资源->群集名称->更多操作->修复
点击修复之后,可以看到群集正在处理,处理完成后,群集计算机对象会变成正常联机状态
查看日志中可以看到,修复过程群集使用我们的账户,连接到AD,重新帮我们设置CNO的密码及身份
现在群集CNO已经被恢复,可以正常工作,正常接受Kerberos验证
对于VCO的误删恢复操作,其实和CNO差不多,假设我们不小心误删除了VCO对象,如果事先VCO名称是联机的,那么可能短时间内,不会在事件管理器中看到报错,但是如果对VCO对象进行Kerberos验证,则会立刻发现无法验证,所以VCO对象的误删除,通常会是应用开发人员报告身份验证无法进行才会被发现,或者管理员查看Cluster Log也能够看到VCO计算机对象无法找到,无法执行身份验证的报错
针对于VCO对象的恢复过程,误删之后,首先使用恢复工具,恢复VCO计算机对象
恢复完成后,在故障转移群集管理工具中,首先对于VCO名称脱机
右键点击服务器名称->更多操作->修复
注意,这里的修复,实际上是拿着CNO计算机账号,去帮助我们重置同步VCO的计算机密码,因此需要确保CNO对象对于VCO计算机对象具备重置密码权限,默认创建VCO之后是有的
修复完成后,群集角色正常联机
查看Cluster Log可以看到 hello VCO对象已经被CNO重置计算机密码,现在可以正常进行Kerberos身份验证了
如上,为误删除CNO,VCO对象后的修复方式,希望大家看到后可以有所收获,虽然WSFC 2008之后有了很好的修复机制,但还是建议大家做好防止误删的操作,可以做在计算机级别或OU级别。
本文出自 “老王的微软技术研究乐园” 博客,请务必保留此出处http://wzde2012.blog.51cto.com/6474289/1969115
以上是关于VCO简介与实现的主要内容,如果未能解决你的问题,请参考以下文章