主要内容

在MATLAB定点滤波器设计

设计过滤器使用定点输入。这个例子分析系数量化滤波器设计的影响。你必须有定点设计师™软件来运行这个例子。

介绍

定点过滤器是常用的数据存储在数字信号处理器和功耗是关键限制因素。您所指定的约束,DSP系统工具箱™软件允许您设计有效的定点过滤器。本示例的过滤器是一个低通滤波器equiripple冷杉过滤器。设计滤波器第一浮点输入获得一个基线。您可以使用此定点滤波器的比较基准。

数字滤波器设计

低通数字滤波器具有以下规格:

  • 采样率:2000 Hz

  • 中心频率:450 Hz

  • 过渡宽度:100 Hz

  • Equiripple设计

  • 最大1 dB通带波纹的

  • 最低80分贝的阻带衰减

samplingFrequency = 2000;centerFrequency = 450;transitionWidth = 100;passbandRipple = 1;stopbandAttenuation = 80;designSpec = fdesign.lowpass (“Fp,置,美联社,Ast”,centerFrequency-transitionWidth / 2,centerFrequency + transitionWidth / 2,passbandRipple stopbandAttenuation,samplingFrequency);LPF =设计(designSpec,“equiripple”,“SystemObject”,真正的)
LPF = dsp。FIRFilter属性:结构:“直接形式”NumeratorSource:“财产”分子:[-0.0013 -0.0055 -0.0112 -0.0125 -0.0048 0.0062 0.0081 -0.0022 -0.0104 -0.0027 0.0115 0.0093 -0.0098 -0.0171 0.0039 0.0242 0.0073 -0.0286 -0.0247 0.0268 0.0498 -0.0134 -0.0887 -0.0298 0.1895 0.3983 0.3983 0.1895 -0.0298……]InitialConditions: 0显示所有属性

查看基准频率响应。虚线红线显示用于创建过滤器的设计规范。

fvtool (LPF)

图1图:级响应(dB)包含一个坐标轴对象。坐标轴对象与标题级响应(dB),包含频率(赫兹),ylabel级(dB)包含2线类型的对象。

软件不能定点操作

的定点滤波器中包含的属性定点属性部分的显示对象。默认情况下,过滤器使用软件不能算术处理定点输入。不能与算术,过滤器使用尽可能多的产品,累加器和输出需要防止溢出或舍入。如果你不想使用软件不能算数,你可以设置FullPrecisionOverride财产然后设置产品、蓄电池和独立输出数据类型。

rng默认的inputWordLength = 16;fixedPointInput = fi (randn(100 1),真的,inputWordLength);floatingPointInput =双(fixedPointInput);floatingPointOutput = LPF (floatingPointInput);释放(LPF) fullPrecisionOutput = LPF (fixedPointInput);规范(floatingPointOutput-double (fullPrecisionOutput),“正”)
ans = 6.8994 e-05

的结果不能定点过滤浮点相当接近,但结果并不精确。这样做的原因是系数量化。在定点滤波器,CoefficientsDataType属性具有相同的字长(16)系数和输入。滤波器的频率响应在不能更清楚地显示了这一模式。的测量函数表明,这种滤波器的阻带衰减最小量化系数为76.6913分贝,小于80分贝为浮点指定过滤器。

LPF.CoefficientsDataType
ans = '字长相同输入'
fvtool (LPF)

图2图:级响应(dB)包含一个坐标轴对象。坐标轴对象与标题级响应(dB),包含频率(赫兹),ylabel级(dB)包含3线类型的对象。这些对象代表过滤器# 1:量化、过滤# 1:参考。

测量(LPF)
ans =采样率:2千赫通频带边缘:400 Hz 3-dB点:416.2891赫兹6分贝的观点:428.1081赫兹阻带边缘:500 Hz通带波纹:0.96325 dB阻带衰减器。:76.6913 dB过渡宽度:100 Hz

最后一次使用过滤器的定点输入和仍处于锁定状态。出于这个原因,fvtool显示了定点频率响应。dash-dot响应的参考浮点过滤器,和坚实的情节是响应的滤波器使用定点输入。不能匹配,因为所需的频率响应系数单词长度被限制为16位。这占了浮点和定点设计之间的区别。增加的比特数允许单词长度系数使量化误差更小,使您能够匹配的设计要求80 dB的阻带衰减。使用24位的单词长度系数达到80.1275 dB的衰减。

LPF24bitCoeff =设计(designSpec,“equiripple”,“SystemObject”,真正的);LPF24bitCoeff。CoefficientsDataType =“自定义”;coeffNumerictype = numerictype (fi (LPF24bitCoeff.Numerator,真的,24));LPF24bitCoeff。CustomCoefficientsDataType = numerictype(真的,coeffNumerictype.WordLength coeffNumerictype.FractionLength);fullPrecisionOutput32bitCoeff = LPF24bitCoeff (fixedPointInput);规范(floatingPointOutput-double (fullPrecisionOutput32bitCoeff),“正”)
ans = 4.1077 e-07
fvtool (LPF24bitCoeff)

图图3:级响应(dB)包含一个坐标轴对象。坐标轴对象与标题级响应(dB),包含频率(赫兹),ylabel级(dB)包含3线类型的对象。这些对象代表过滤器# 1:量化、过滤# 1:参考。

测量(LPF24bitCoeff)
ans =采样率:2千赫通频带边缘:400 Hz 3-dB点:416.2901赫兹6分贝的观点:428.1091赫兹阻带边缘:500 Hz通带波纹:0.96329 dB阻带衰减器。:80.1275 dB过渡宽度:100 Hz

设计参数和量化系数

在许多定点设计应用程序中,单词长度系数不灵活。例如,假定你是限制与14位。在这种情况下,要求最低的阻带衰减不能达到80分贝。与14-bit滤波器系数量化可以实现最小衰减仅67.2987 dB。

LPF14bitCoeff =设计(designSpec,“equiripple”,“SystemObject”,真正的);coeffNumerictype = numerictype (fi (LPF14bitCoeff.Numerator,真的,14));LPF14bitCoeff。CoefficientsDataType =“自定义”;LPF14bitCoeff。CustomCoefficientsDataType = numerictype(真的,coeffNumerictype.WordLength coeffNumerictype.FractionLength);测量(LPF14bitCoeff“算术”,“固定”)
ans =采样率:2千赫通频带边缘:400 Hz 3-dB点:416.2939赫兹6分贝的观点:428.1081赫兹阻带边缘:500 Hz通带波纹:0.96405 dB阻带衰减器。:67.2987 dB过渡宽度:100 Hz

系数对FIR滤波器在一般情况下,每一位字长提供了大约5 dB的阻带衰减。因此,如果你的滤波器系数总是量子化的14位,你可以预期的最小阻带衰减只有70分贝左右。在这种情况下,它更实用设计滤波器阻带衰减小于70分贝。放松这个需求的结果在一个低阶的设计。

designSpec。Astop = 60;LPF60dBStopband =设计(designSpec,“equiripple”,“SystemObject”,真正的);LPF60dBStopband。CoefficientsDataType =“自定义”;coeffNumerictype = numerictype (fi (LPF60dBStopband.Numerator,真的,14));LPF60dBStopband。CustomCoefficientsDataType = numerictype(真的,coeffNumerictype.WordLength coeffNumerictype.FractionLength);测量(LPF60dBStopband“算术”,“固定”)
ans =采样率:2千赫通频带边缘:400 Hz 3-dB点:419.3391赫兹6分贝的观点:432.9718赫兹阻带边缘:500 Hz通带波纹:0.92801 dB阻带衰减器。:59.1829 dB过渡宽度:100 Hz
订单(LPF14bitCoeff)
ans = 51
订单(LPF60dBStopband)
ans = 42

过滤器订单减少从51到42,这意味着更少的水龙头需要实现新的冷杉过滤器。如果你仍然想要一个高阻带衰减最小前提下的比特数的系数,你必须放松其他滤波器设计约束:过渡宽度。增加过渡宽度可能使您能够获得更高的衰减系数相同的单词长度。然而,它几乎是不可能达到超过5 dB /单词长度系数,即使放松过渡宽度。

designSpec。Astop = 80;transitionWidth = 200;designSpec。成就= centerFrequency-transitionWidth / 2;designSpec。Fstop = centerFrequency + transitionWidth / 2;LPF300TransitionWidth =设计(designSpec,“equiripple”,“SystemObject”,真正的);LPF300TransitionWidth。CoefficientsDataType =“自定义”;coeffNumerictype = numerictype (fi (LPF300TransitionWidth.Numerator真的,14));LPF300TransitionWidth。CustomCoefficientsDataType = numerictype(真的,coeffNumerictype.WordLength coeffNumerictype.FractionLength);测量(LPF300TransitionWidth“算术”,“固定”)
ans =采样率:2千赫通频带边缘:350 Hz 3-dB点:385.4095赫兹6分贝的观点:408.6465赫兹阻带边缘:550 Hz通带波纹:0.74045 dB阻带衰减器。:74.439 dB过渡宽度:200 Hz

正如你所看到的,过渡宽度增加到200 Hz允许14-bit系数74.439 dB的阻带衰减,相比67.2987 dB达到过渡的宽度设置为100 Hz。增加过渡宽度的另一个好处是,过滤器订单也减少,在这种情况下从51到27日。

订单(LPF300TransitionWidth)
ans = 27