信号发生器的工作原理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了信号发生器的工作原理相关的知识,希望对你有一定的参考价值。
信号发生器用来产生频率为20Hz~200kHz的正弦信号(低频)。除具有电压输出外,有的还有功率输出。所以用途十分广泛,可用于测试或检修各种电子仪器设备中的低频放大器的频率特性、增益、通频带,也可用作高频信号发生器的外调制信号源。另外,在校准电子电压表时,它可提供交流信号电压。低频信号发生器的原理:系统包括主振级、主振输出调节电位器、电压放大器、输出衰减器、功率放大器、阻抗变换器(输出变压器)和指示电压表。
主振级产生低频正弦振荡信号,经电压放大器放大,达到电压输出幅度的要求,经输出衰减器可直接输出电压,用主振输出调节电位器调节输出电压的大小。
电源自适应的方波发生器原理图
右图的电路是一种不用电源的方波发生器,可供电子爱好者和实验室作简易信号源用。电路是由六反相器CD4096组成的自适应方波发生器。当输入端输入小信号正弦波时,该信号分两路传输,其一路径C1、D1、D2、C2回路,完成整流倍压功能,给CD4096提供工作电源;另一路径电容C3耦合,进入CD4096的一个反相器的输入端,完成信号放大功能(反相器在小信号工作时,可作放大器用)。该放大信号经后级的门电路处理,变换成方波后经CD4096的12、8、10脚输出。输出端的R2为可调电阻,以保证输出端信号从0~1.25V可调。该方波发生器电路简单,制作容易,因此可利用该方波发生器电路,作市电供电的50Hz方波发生器。制作时,市电220V的正弦波,应经变压器隔离降压(1~0.75V)处理后,输入到电路的输入端,以保安全。
现在信号发生器大多数都是采用直接数字合成技术(DDS)产生信号的。
DDS技术是一种把一系列数字量形式的信号通过DAC转换成模拟量形式的信号合成技术。目前使用最广泛的一种DDS方式是利用高速存储器作查找表,然后通过高速DAC产生已经用数字形式存入的正弦波。
DDS的理论基础是SHannon抽样定理。抽样定理内容是:当抽样频率大于等于模拟信号频率的2倍时,可以由抽样得到的离散信号无失真的恢复原始信号。在DDS中,这个过程被颠倒过来了。DDS不是对一个模拟信号进行抽样,而是一个假定抽样过程已经发生且抽样的值已经量化完成。
参考技术B 信号发生器是一种能提供各种频率、波形和输出电平电信号的设备。在测量各种电信系统或电信设备的振幅特性、频率特性、传输特性及其它电参数时,以及测量元器件的特性与参数时,用作测试的信号源或激励源。工作原理:
信号发生器用来产生频率为20Hz~200kHz的正弦信号(低频)。除具有电压输出外,有的还有功率输出。所以用途十分广泛,可用于测试或检修各种电子仪器设备中的低频放大器的频率特性、增益、通频带,也可用作高频信号发生器的外调制信号源。另外,在校准电子电压表时,它可提供交流信号电压。低频信号发生器的原理:系统包括主振级、主振输出调节电位器、电压放大器、输出衰减器、功率放大器、阻抗变换器(输出变压器)和指示电压表。
主振级产生低频正弦振荡信号,经电压放大器放大,达到电压输出幅度的要求,经输出衰减器可直接输出电压,用主振输出调节电位器调节输出电压的大小。
Linux信号及工作原理
什么是信号
信号可以理解为软件中断,是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是差不多的。信号是异步的,一个进程不必通过任何操作来等待信号的到达。信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件。
谁来产生信号
信号事件的发生有两个来源:
(1) 硬件来源,比如我们按下ctrl+c,会产生SIGINT信号。
(2) 软件来源,比如我们调用alarm函数来产生SIGALRM信号。
常用信号
Linux信号的编号是从1-64,其中32和33空缺,没有对应的信号。通过kill -l 可查看所有的信号。
1~31之间的信号叫做不可靠信号, 信号可能会丢失, 也叫做非实时信号。
34~64之间的信号叫做可靠信号, 信号不会丢失, 也叫做实时信号。
信号响应方式
信号有如下三种响应方式:
(1) 忽略信号,即对信号不做任何处理,但是有两个信号不能忽略,即 SIGKILL 及 SIGSTOP。
(2) 捕捉信号,定义信号处理函数,当信号发生时,执行相应的自定义处理函数。
(3) 执行缺省操作,Linux 对每种信号都规定了默认操作。
信号处理过程
信号处理的大致流程如下:
信号产生 -> 信号注册 -> 信号在进程中注销 -> 信号处理函数执行完毕
我们主要讲一下“信号注册” 和“信号在进程中注销”。其他两个都比较好理解。
信号注册指的是在目标进程中注册,该目标进程中有未决信号的信息。啥叫未决信号呢,实际执行信号的处理动作称为信号递达,信号从产生到递达之间的状态,称为信号未决。
先来看一下对应的结构体:
struct sigpending{
//未决信号链的头部与尾部
struct sigqueue *head, *tail;
//未决信号集
sigset_t signal;
};
struct sigqueue{
struct sigqueue *next;
//信号所携带的信息
siginfo_t info;
}
信号注册的过程就是将信号值加入到未决信号集siginfo_t中,将信号所携带的信息加入到未决信号链的某一个sigqueue中去。
因此,对于可靠的信号,可能存在多个未决信号的sigqueue结构,对于每次信号到来都会注册。而不可靠信号只注册一次,只有一个sigqueue结构。
只要信号在进程的未决信号集中,表明进程已经知道这些信号了,还没来得及处理,或者是这些信号被阻塞。
信号在进程中注销是指进程已经接收到信号了,会在链表中移除。在进程的执行过程中,每次从系统调用或中断返回用户空间的时候,都会检查是否有信号没有被处理。如果这些信号没有被阻塞,那么就调用相应的信号处理函数来处理这些信号。可靠信号和不可靠信号的处理有所不同:
- 不可靠信号:由于不可靠信号在未决信号链中只有一个sigqueue结构,因此将它删除的同时,也会将信号从未决信号集中删除。
- 可靠信号:由于可靠信号在未决信号链中可能有多个sigqueue结构,如果只有一个,也将信号从未决信号集中删除掉。如果有多个则不从未决信号集中删除信号,注销完毕。
以上是关于信号发生器的工作原理的主要内容,如果未能解决你的问题,请参考以下文章