PFB Channelizers and Synthesizers — Rondeau Research
Hierarchical Polyphase Channelizer - GNU RadioPolyphase Channelizer - GNU RadioHierarchical Polyphase Channelizer - GNU Radio
Polyphase Filterbanks - GNU Radio
Polyphase Synthesizer - GNU Radio
GRCON是每年gnuradio使用者的会议,每年的主页上,example上会更新一些例子,本文介绍16年中提出的《PFB通道和合成器》的使用
Polyphase Channelizer使用和说明
作用:接收复数信号,并将其信道化为等带宽的信道。
详细描述:每个信道被抽取为新速率f=fs/M,即输入采样率fs除以通道数量M。PFB Channelizer采用上述生成的tap,构建一组滤波器。每组包含几个滤波器,每个滤波器包含(taps.size()/decim)个tap的数量。滤波器原型中的每个抽头都会按顺序插入到下一个滤波器中。当所有输入抽头都用完后,滤波器库中剩余的滤波器将以 0 填满,以确保每个滤波器都有相同数量的抽头。
每个滤波器都使用 GNU Radio 的 FIR 滤波器类进行操作,该类接收输入流,并进行内积计算,计算结果为滤波器的抽头数。为了在 GNU Radio 结构中有效处理这个问题,每个滤波器的输入必须来自自己的输入流。因此,必须向信道化器提供输入流已去交织的流。使用 "流到流 "模块最容易做到这一点。
滤波器的抽头应基于输入采样率。
例如,使用 GNU Radio 的 firdes 工具来构建滤波器,我们可以构建一个采样率为 、3 分贝带宽为 、过渡带宽为 的低通滤波器。 我们还可以指定使用的带外衰减 、 和滤波器窗口函数(本例中为 Blackman-harris 窗口)。第一个输入是滤波器的增益,我们在此将其指定为统一。
滤波器输出也可以过采样。过采样率是实际输出采样率与正常输出采样率之比。它必须与通道数合理地联系起来,对于 [1,N] 中的 i,取 N/i,从而得出输出采样率为 [fs/N, fs],其中 fs 是输入采样率,N 是通道数。
例如,对于 fs = 6000 Hz 的 6 个通道,正常采样率为 6000/6 = 1000 Hz。允许的过采样率为 6/6、6/5、6/4、6/3、6/2 和 6/1,其中 6/1 过采样率的输出采样率为 6000 Hz,或正常 1000 Hz 的 6 倍。6/5 = 1.2,因此输出率为 1200 Hz。
Polyphase Channelizer参数:
- Channels:指定通道数
- Taps:用于填充过滤器库的原型过滤器。
- Oversampling Ratio:超采样率是实际输出采样率与正常输出采样率之比。它必须与通道数合理地联系起来,对于 [1,N] 中的 i,取 N/i,从而得到 [fs/N, fs] 的输出采样率,其中 fs 是输入采样率,N 是通道数。
- Attenuation:阻带衰减值
- Sample Delay:滤波器的采样延迟
- Channel Map:通道映射可以用来重新安排哪个通道到哪个输出流。
滤波器组的设计
参数包括:
gain | overall gain of filter (typically 1.0) |
sampling_freq | sampling freq (Hz) |
cutoff_freq | beginning of transition band (Hz) |
transition_width | width of transition band (Hz) |
attenuation_dB | required stopband attenuation |
window | one of fft::window::win_type |
cutoff_freq:通带截止频率 transition_width:过渡带带宽
例子1:广播信道化
以广播FM的例子为例,全频谱带宽是20 MHz,每个信道是200 kHz。信道化过程中,我们会在信道带宽处对频带进行混叠,因此,超出信道边界的滤波器最终会对相邻信道的片段进行混叠。 相反,我们将选择一些参数来滤除频带的边缘,其过渡期间大致与信道相接。
我们让停止带的起始点稍微超出频道,以便给我们一个具有较少抽头数量的滤波器,并且知道任何混叠对FM质量都可以忽略不计。即使如此,最终的过滤器由1091个taps组成,看起来很长。然而,由于我们将这个滤波器分离到100个通道的滤波器组中,每个通道实际上只由11个tap组成(即[1091/100])。在计算上,这些过滤器变得非常轻量级,特别是如果我们可以并行化计算。更大的问题可能是内存使用,这取决于实现filterbank的平台。综合滤波器的设计问题与分析滤波器相同。我们可以很容易地接收100个频道的调频音频,并将它们合成在一起以广播100个频道的FM。
合成滤波器组的使用
(flowgraph意义:取出一个通道用于调频解调,并简单地丢弃其余的)
AGC2:增益调整
WBFM receive block:用于解调
Polyphase Arbitraty Resampler:修正采样率(前后采样率不一致)
Audio Sink:音频(允许信号通过您的扬声器或其他音频设备播放,should be set to 48kHz.)
Channels 5 (98.9 MHz) and 10 (99.9 MHz)
中心频率97.9Mhz,选取了通道5和10
例子2.1:信道化
在信道化时,设计滤波器需确保它在信道的带宽内,以防止混叠。那么当合并相邻信道时,边缘的信号总和将与正确的能量重新组合,这将引入我们需要避免的相邻信道混叠
为了克服混叠问题,重新设计了滤波器组,以产生相同带宽的通道,但现在的采样率是原来的两倍。 这样,我们就将相邻通道移到了滤波器过渡宽度之外,因此,相邻通道中剩余的信号是专门设计用来保持当前通道中溢出到相邻通道中的部分信号,但不会产生混叠。 从这里我们可以看出,使用相同的原型滤波器合成这两个通道的信号,可以使两个通道的边缘相加,从而使它们之间没有损失
由于信道发生器现在可以产生两倍采样率的通道信号,因此我们也必须改变合成滤波器库,使其具有类似的功能。 这种结构接收两倍采样率的通道,并产生一个信号,将现在两倍输出采样率的通道合成在一起。 也就是说,合成 N 个采样率为 2fs 的通道,产生的信号采样率为 2fsN。
如图 4 所示,重构滤波器由pfb channelizer 和pfb synthesizer组成。 除了合成抽头的增益系数为 M/2(M 为通道数),使输出信号与输入信号处于同一电平外,两个滤波器组的原型滤波器是相同的
GNU Radio 的 firdes 滤波器设计程序能让我们相当轻松地设计出所需的重构滤波器。 firdes 工具有一个low_pass_2 函数,可以设计一个以增益、带宽、过渡宽度、窗口函数和带外衰减为设计参数的低通滤波器。 为了在信道边缘达到所需的 6 dB 滚降,我们只需将原型滤波器的带宽设置为与信道带宽相等,因为该工具将其定义为通带的末端。然后,我们就可以将窗口、衰减和过渡带作为自由度来调整滤波器了
在我们的分析中,我们将研究6个频道,每个频道的采样率为2 kHz。这种方法没有失去通用性,但与大量通道相比,这少量通道可以更容易地绘制和可视化过程。鉴于此,我们的滤波器设计参数如表2所示。
脉冲信号通过这种结构时,接收器会输出两倍采样率的脉冲信号。虽然这是一个任意的例子,使用的是干净的已知信号,但这种结构和原型滤波器设计的重要结果是,产生的信号被分割并重新组合在一起,而信号几乎没有任何变化。图 5 所示的输出显示,信号的采样率是原来的两倍,滤波器造成的通带失真非常小。
Fig. 5. Fig. 7.
例子3:信道化
与例2不同,不是将所有六个通道合成在一起,而是使用两个合成滤波器库将前四个通道和后两个通道合成在一起。 设计如图 6 所示,结果如图 7 所示。 图中没有显示重构通带的特写;但是,两个、四个和全部六个重构通道的例子都具有相同的 5 × 10(-4 )dB 最大纹波。 虽然波纹取决于原始滤波器,但结果并不随信道数量的变化而变化,因此该技术可扩展至大量信道。
在这个例子中,重建滤波器的一般用途变得更加明显。 任何信号都可以用一组这种类型的滤波器进行分解和重构,这意味着我们现在可以更轻松地对不同带宽和不同频率的信号进行信道化处理。不过,在设计过程中会遇到一个限制。要以两倍采样率工作,信道化器和合成器都必须有偶数个滤波器或信道。这可能意味着在某些应用中需要多使用一个通道
Channel Mappings(信道映射)
GNU Radio channelizer和synthesis filterbanks能够通过调用设置信道映射(set channel map)函数,使用信道映射或排列来控制输出信道的位置。这一机制提供了每个输入通道在滤波器库输出端的位置映射。对于通道器来说,默认映射是通道 0 为 0 Hz 通道,或输入频段的中间位置。通道数在频谱中正向增加,并在 M/2 处绕到频谱的负半部分。对于偶数通道,M/2 通道跨越频谱的正负边缘
通道映射函数使用一个数字向量,该向量由输入通道值指定,并将映射到输出通道作为数组的索引。 这种设置让我们可以灵活地选择通道位置和方式,包括将同一通道指向多个输出。
图8所示。在合成滤波器组中的信道映射使用[10,11,0,1,2,3]作为将频谱向下移动两个通道的方法。
合成滤波器库也是如此:数组的索引是输出通道编号,该索引上的值是输入通道。图 8 演示了这一点。请记住,过采样合成滤波器库的输出采样率是采样率的两倍,因此通道数也是采样率的两倍。默认情况下,对于 M 个输入通道,通道映射是从通道 0 到 M。所有从通道发生器输入的通道都会直接映射到相应的输出索引值。这就是为什么在上图中,我们看到脉冲覆盖了频谱的正半部分;合成滤波器库产生的另一半通道没有输入,因此输出为 0。在图 8 中,我们使用的是映射序列 [10, 11, 0, 1, 2, 3]。这些通道是按其从信道化器输出的顺序映射的,但我们使用这种映射技术将整个频谱下移了两个通道。
例子4:Reconstructing FM
将FM频段信道化为 10 个 100 kHz 信道,选择其中 6 个进行重组,并将调频解调为音频。 GNU Radio 流程图如图 9 所示,它使用 USRP B2006 接收以 101.3 MHz 为中心的 1 MHz 信号。 101.5 MHz 处有一个强大的调频电台。 我们使用表 III 中的参数将信号导入十个频道。 其中前六个通道覆盖频谱的正半部分,进入合成滤波器库。 在本实验中,我们终止了其他四个通道。 合成器参数如表 IV 所示,与信道器几乎相同。 不过,该滤波器的设计频率为 600 ksps,因为我们只是将 6 个 100 kHz 的通道合成在一起。 增益参数是信道化器中信道总数的一半,它使输出正常化。 为了方便起见,我们使用一个非常便宜的半带去噪滤波器将输出去噪 2 次。 流程图的其余部分将执行调频解调和一些信号处理,以便我们调整音频音量,并对音频进行重新采样,使其符合音频子系统所需的速率,就像我们在上述调频信道器中所做的那样。合成器滤波器库用于将产生的信号设置为直流的通道映射为[10, 11, 0, 1, 2, 3]。
在流程图的不同位置,我们使用频率汇将信号的 PSD 可视化。图 10 显示了这些仪器工具的输出结果,其中显示了恢复后的信号,中间是标准调频以及高清广播边带。在输入频谱上,我们添加了 10 个信道的信道边界,以显示其在信道化器中是如何分割的。在这种情况下,我们只需要其中的五个信道来重建信号,但为了满足滤波器库必须在偶数信道下工作的要求,我们使用了六个信道。