APP下载

基于Scilab的IIR滤波器设计

2020-08-24孙小娟

科学咨询 2020年12期
关键词:阶数滤波器分量

孙小娟

(重庆电子工程职业学院 重庆 401331)

一、引言

动态信号是指信号中的某些属性随着时间的变化而连续变化的一类信号,用确定性动态信号代替数字信号,使用两种频率值来代替逻辑值,即把逻辑值映射到频率上,这样做可以避免数字信号本身存在的位翻转、漂移和时钟抖动现象,从而保障安全攸关系统的可靠性。

为了得到确定性动态信号的稳定输入输出,需要使用带通滤波器,这样既可以滤除杂波信号,又保证容错能力。就单位脉冲响应而言,常用的滤波器有IIR滤波器和低通、高通、带通、带阻等几种IIR滤波器。从性能上来说,FIR滤波器由于其阶数高,故信号延时较大。在相同的设计要求下,IIR滤波器由于采用递归结构,其传递函数的极点在单位圆内,可以采用比FIR滤波器较少的阶数来达到设计要求,因此具有阶数低、选择性好、经济效益高的优势,因此,本文选择IIR滤波器设计本文需要的带通滤波器。

二、基于安全动态信号的安全关键逻辑简介

(一)Scilab软件简介

Scilab是一种轻量级的开源科学工程计算软件,它提供了可以满足不同工程与科学需要的工具箱,例如SCICOS、图与网络工具箱和信号处理工具箱等[1],基本功能可以和软件Matlab相媲美。

(二)基于动态信号的安全关键逻辑简介

如果计算机中的安全关键逻辑出现了异常,将会导致安全攸关系统出现故障甚至瘫痪,因此计算机中使用的安全关键逻辑的可靠性必须得到保证。用确定性动态信号代替数字信号,使用两种频率值来代替逻辑值,即把逻辑值映射到频率上。如表1所示,可以把逻辑真用60Hz代替,逻辑假用120Hz代替,二者的逻辑关系可以用如下方法实现:

表1 逻辑值映射

假设有两个正弦信号A和B,信号A的频率 为60Hz,信号B的频率 为120Hz,将两个正弦信号相乘,则可以得到两个信号的和与差:

观察其频谱,从两个动态信号的相乘结果并不能看出明显的逻辑关系。。所以,需要再引入一个辅助动态信号H,将A*B与H相乘,取H的频率为90Hz,结果如表2所示。

表2 H=90Hz时,A⋆B的频率

用60Hz表示逻辑“真”,120Hz表示逻辑“假”。如果A和B都为逻辑真(60Hz)时,从表格中第二行来看,看到A*B*H中没有150Hz的频率分量;当A和B中至少有一个为假(120Hz)时,从三、四、五行可以发现,A*B*H含有150Hz的频率分量,则可以规定A*B*H信号中含有150Hz频谱分量时表示的逻辑为“真”,不含有150Hz频谱分量时表示的逻辑为“假”。再从纵列来看, A列、B列以及A*B*H列,含有150Hz的一列就与逻辑运算中的逻辑“与非”相对应。对应地,当信号A、B的频率均为60Hz,即逻辑真时,A*B*H中含有210Hz的频率分量;当信号A、B中只要有一个信号的频率为120Hz,即逻辑假时,信号A*B*H中就不含有210Hz的频率分量,则可以规定信号A*B*H中含有210Hz的频率分量表示逻辑“真”,不含有210Hz的频率分量时表示逻辑“假”。再从纵行来看,A列、B列,以及A*B*H列,含有210的一列就与逻辑运算中的逻辑“与”相对应。

如果120Hz表示逻辑“真”,60Hz表示逻辑“假”,其他与上表一致。观察表可知,则A、B两列,以及A*B*H中含有150和210的两列,与逻辑运算中的“或”和“或非”是相对应。同时,信号A*B*H中出现30Hz和330Hz频谱分量,与出现上表中频谱分量150Hz和220Hz的情况类似。也就是说,A*B*H中含有30和330的这两列也可以用来表示逻辑“与”和逻辑“与非”,或者是逻辑“或”和逻辑“或非”。

安全关键逻辑的结构如图1所示。在本文中以逻辑“与”和“与非”为例说明,以60Hz的正弦波表示逻辑“真”,120Hz的正弦波表示逻辑“假”。

图1 安全攸关系统逻辑的结构

为了滤除不合格的信号,专门检测特定频率的信号(如210Hz),需要使用带通滤波器。输入滤波器由通带为58Hz-62Hz和118Hz-122Hz的带通滤波器并联,将输入信号A、B相乘,再与H相乘,得到A*B*H,输出滤波器有两个,为通带分别为205Hz-215Hz和145Hz-155Hz的带通滤波器。

三、IIR数字滤波器设计

IIR数字滤波器的设计方法主要有三种,即计算机辅助设计、频域变换(原型变换法)和模拟数字变换。

就变换方法而言,主要有脉冲响应不变法、阶跃响应不变法和双线性变换法。脉冲响应不变法常用于设计有限带宽的低通和带通滤波器,不宜用来设计高通和带阻滤波器。阶跃响应不变法存在频率响应的混叠失真现象,但失真现象比冲激响应不变法小[2]。双线性变换法克服了混叠失真现象,适合设计具有“分段常数特性”的滤波器(如低通,带通,高通等)。

与IIR滤波器对应的模拟滤波器原型一般有:巴特沃斯滤波器、切比雪夫滤波器I 、II型和椭圆函数滤波器。巴特沃斯滤波器的通带和阻带比其它数字滤波器的平坦,同时考虑到安全攸关系统简单的原则,以及在安全关键逻辑中是通过判断输出信号的幅度来决定“真”“假”的,故本文最终选择选择使用双线性变换法设计基于巴特沃斯的IIR滤波器。

四、基于Scilab的IIR数字滤波器的仿真

(一)Scilab设计IIR数字滤波器仿真

采用模拟滤波器双线性变换法设计IIR滤波器:

Scilab软件中,直接设计IIR滤波器的函数有iir,函数原型为

[hz]=iir(n,ftype,fdesign,frq,delta);

[p.z.g]=iir(n,ftype,fdesign,frq,delta);

[cells, fact, zzeros, zpoles] = eqiir(ftype, approx, om, deltap, deltas);

下面设计一个3阶带通椭圆滤波器。通带截止频率为 0.15 和 0.25,通带允许波动为 0.08, 阻带允许波动为 0.03。

hz=iir(3,'bp','ellip',[.15 .25],[.08 .03]);

计算出的滤波器传递函数为:

画出其频响曲线,如图2所示:

图2 3阶带通椭圆滤波器频响曲线

如果需要,可以再画出其零极点图,如图3所示:

图3 3阶带通椭圆滤波器零极点图

需要计算零极点时:

由计算得到的零极点知,其零极点都在单位圆内,函数是稳定的。

(二)仿真结果测试与分析

在Scilab中对表1所示的“与”和“与非”逻辑进行仿真,仿真结果如图4所示。

图4 “与”和“与非”仿真结果

所有信号的时长均取为两秒,信号A的频率在第一秒内为60Hz,第二秒变为120Hz;信号B的频率在60Hz和120Hz之间每隔0.5s交替变换。这样就能够得到表1.1中的四种组合。其中,输出带通滤波器的阶数均设为6阶,由最后一组波形图可以看到,当信号A、B同时为60Hz时,带通滤波器(205-215Hz)有波形输出,而带通滤波器(145-155Hz)几乎没有波形输出,信号A、B为其他组合时,两个滤波器的波形输出情况正好相反。即仿真结果完全符号与其效果。由图2、3知,滤波后的信号比输入信号有大概0.1秒左右的延迟,这个延迟是由滤波器本身的计算过程产生的。滤波器的阶数越高,滤波计算量越大,信号的延时就会增加,因此在设计时应尽量选用阶数低的滤波器[3]。

五、结束语

本文就基于动态信号的安全关键逻辑中滤波器的设计部分做了详细的讲解,首先介绍了什么是基于动态信号的安全关键逻辑,提出了滤波器的设计。其次,描述了滤波器的种类、及各自的特点等等,在比较分析后,确定了设计采用双线性变换法的基于巴特沃斯滤波器的IIR数字滤波器,设计了安全关键逻辑系统中所需的滤波器,并分析了其性能,符合预期的效果。

猜你喜欢

阶数滤波器分量
用于能谱本底处理的阶数自适应型正交多项式模型法
确定有限级数解的阶数上界的一种n阶展开方法
画里有话
15相感应电机槽配合研究
一斤生漆的“分量”——“漆农”刘照元的平常生活
一物千斤
从滤波器理解卷积
开关电源EMI滤波器的应用方法探讨
复变函数中孤立奇点的判别
论《哈姆雷特》中良心的分量