多相滤波器

前言

多相滤波器解决的是:多速率问题。

通过降采样、插值来改变信号的输出速率(主要利用Nyquist采样定理,保证不混叠),从而降低数据率,多相滤波器为这类操作提供了实现框架。在满足采样定理的前提下,内插/抽取并配合滤波器使用(防止混叠),可以改变数据的速率。

多相滤波的结构也多用在信道化中(即构建滤波器组),固化系数借助硬件实现快速运算。

一、信道化实现思路

信道化的基本思路为:

clc;clear all;close all
N = 256;
h = firls(N, [0 .2 .25 1], [1  1 0  0],[.001 .0001]);
D = 8;
% PolyPhase Componets
i = 1:length(h);
h_channel = zeros(D,length(h));
im = sqrt(-1);
for j = 1:Dh_channel(j,:) = h.*exp((-im*2*pi*((j-1)*(i-1)))/D);
end
figure(1)
for i = 1:D+1switch icase 1subplot (2,1,1);plot(abs(fft(h)));title('Orignal LPF ')otherwisesubplot (2,1,2)plot(abs(fft(h_channel(i-1,:))));hold on;title('channelize')end
end

  对应频谱图:

即将频带切分成若个个区域。基于该特性,有信道化的基本思路:

如果是实信号,D信道化之后进行D倍抽取仍然不会有频谱混叠,而经过本振以及低通滤波器之后的信号为复信号,故可以进行2D倍抽取。

 可以看出,信道化接收机的抽取器位于滤波器之后,当抽取率D很大或者滤波器阶数较高,计算效率将难以提升,这时候借助多相滤波器便可以优化。

假设LPF:

并取Q=N/D,N为滤波器阶数,D为抽取率。则滤波器可重写为:

定义:

滤波器可重写为:

其中为多相分量,这也是多相滤波器说法的缘由。

第k个信道可写为:

进一步取

从而有

根据这一系列推导,即可得出实信号多相滤波器信道化的实现思路:

两处相位相乘分别为:,p = 0,1,...,D-1

 

二、多相滤波器设计步骤

  • 根据指标,确定滤波器类型以及阶数N
  • 求解h(n)
  • 根据信道个数,并用下式确定多相滤波器:

三、复杂度简要分析

以滤波器阶数N=256,抽取率(信道个数)D=16,每个信道输出1个数据,则:

  • 基于低通滤波器组的信道化需要乘法:M1 = D x (1+N) = 4112次;
  • 基于多相滤波器的信道化需要乘法:M2 = N+2*D+D*log2D = 352次;

多相滤波器的实现思路节约了资源,且便于硬件实现。

 

四、应用实例

考虑带宽1GHz的情况,如果信道个数为16,则每一个的宽度为1e9/16=62.5e6,考虑到滤波器为实数的共轭对称性,故LPF构造依据:

对其进行仿真验证:

输入信号为70MHz的1)余弦信号;2)复指数信号,对于1)理论上应落在2、16两个信道,2)只落在2信道。

clc;clear all;close all
load coef_lpf.mat;
fs = 1e9;
t = 0:1/fs:1e-6;
f0 = 70e6;
sig = sin(2*pi*t*f0);
len = length(sig);
h = coef_lpf;
N = length(h);
D = 16;
y = zeros(D,len);
% PolyPhase Componets
i = 1:length(h);
h_channel = zeros(D,length(h));
im = sqrt(-1);
x_fre = linspace(0,fs,N);
for j = 1:Dh_channel(j,:) = h.*exp((-im*2*pi*((j-1)*(i-1)))/D);y(j,:) = filter(h_channel(j,:),1,sig);
end
figure()
for i = 1:D+1switch icase 1subplot (2,1,1);plot(x_fre,abs(fft(h)));title('Orignal LPF ')otherwisesubplot (2,1,2)plot(x_fre,abs(fft(h_channel(i-1,:))));hold on;title('channelize')end
end
x_fre1 = linspace(0,fs,len);
figure()
plot(x_fre1,abs(fft(sig)));
for iter = 1:Dif mod(iter,4) ==1figure()j = 1;endsubplot(4,1,j)j = j+1;plot(x_fre1,abs(fft(y(iter,:))));title(['信道',num2str(iter)]);
end

  仿真结果:

信道化结果:

情形一:

与理论分析相符。

情形二:

sig = exp(-1j*2*pi*t*f0);

  信号只在信道2出现:

 

多相滤波的实现思路也非常多,这里仅列举一种:

clc;clear all;close all;
load coef_lpf.mat;
h = coef_lpf;
%%产生信号
fc = 70e6;
c = 3.0e8;
fs = 1e9;
theta = 30/180*pi;
lambda = c/fc;
d = lambda/4;
len = 2048;
t = 0:1/fs:1/fs*(len-1);
st = exp(-1j*2*pi*t*fc);
Phase = 2*pi*d*sin(theta)/lambda;
st = st/trace(st*st');
Interformer01 = st;
%%信道化
D = 16;
si = 1:length(h);
h_channel = zeros(D,length(h));
im = sqrt(-1);
for j = 1:Dh_channel(j,:) = downsample(h.*exp((im*2*pi*((si-1)*(j-1)))/D),1);
end
figure()
for i = 1:Dplot(abs(fft(h_channel(i,:))));hold on;
end
Interformer_channel = zeros(D,len/D);
for i = 1:DInterformer_channel(i,:) = downsample(filter(h_channel(i,:),1,Interformer01),D);
end
figure()
for i = 1:Dsubplot(4,4,i)plot(real((Interformer_channel(i,:))));
end
%%信道化实现思路
si_new = 1:length(h)/D;
Interformer01_py = (reshape(Interformer01,D,len/D));
% Interformer01_py = Interformer01_py.*repmat((exp(1j/2*pi*si_new)),length(h)/D,1);
% h_py = reshape(h,D,length(h)/D);
h_py = fliplr(reshape(h,D,length(h)/D));%.*repmat((exp(1j/2*pi*si_new)),D,1);
Interformer02_channel = zeros(D,len/D);for i = 1:DInterformer02_channel(i,:) = downsample(filter(h_py(i,:),1,Interformer01_py(i,:)),1);
%    Interformer02_channel(i,:) = Interformer02_channel(i,:)*(-1)^(i-1)*exp(-1j*pi/2/D*(i-1));
end
Interformer02_channel = fft(Interformer02_channel);
figure()
for i = 1:Dsubplot(4,4,i)plot(real((Interformer02_channel(i,:))));
end

  信道化结果:

直接信道化:

多相实现:

该方式比直接实现,兔耳效应更明显。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/242872.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RS232通信实验

RS232通信实验 1 通信的基本感念 2 F28335的SCI介绍 3 SCI配置步骤 4 硬件设计 5 软件设计 #include "uart.h"void UARTa_Init(Uint32 baud) {unsigned char scihbaud0;unsigned char scilbaud0;Uint16 scibaud0;scibaud37500000/(8*baud)…

贷款为什么要查看征信?

大家都是知道,绝大多数贷款机构在申请贷款的时候都是需要提供个人征信报告,那为什么申请贷款,需要查询个人征信报告呢?大家不要小看一张征信报告那么简单,其实它包含了借款人很多的信息,通过查看个人征信报告&#xf…

GPS NMEA 0183 4.10协议/GPS Linux串口驱动

NMEA 0183是美国国家海洋电子协会(National Marine Electronics Association)为海用电子设备制定的标准格式。现在已经成为GPS导航设备统一的RTCM(Radio Technical Commission for Maritime services)标准协议。 下图为GYM-1010-B…

欠条和借条傻傻分不清?小心借出的钱要不回!

在民间接贷中,经常会涉及到两个名词,一个是借条,另一个是欠条,两者到底有什么关系,又有什么区别呢?其实欠条和借条有相同的地方,但是也有很大的区别,如果把两者混了,可能…

TCL基础知识

TCL基础知识 置换 TCL解释器运用规则把命令分成一个个独立的单词,同时进行必要的置换 TCL置换分为以下三类 变量置换 $ 命令置换 [] 反斜杠置换 \ 用 $ 表示变量置换 TCL解释器会将认为 $后面为变量名,将变量置换成它的值 用[]表示命令置换 []内是一…

芝麻信用很高,为什么贷款还是被拒了?

之前见过这样一个朋友,他的芝麻信用680以上,借呗额度是2万,但是去申请贷款的时候还是被拒了。看到这很多人可能觉得为什么芝麻信用这么高,贷款还是会被拒了呢?其实芝麻信用不能等同于个人信用,就目前情况来…

Synopsys TCL

Synopsys TCL TCL在EDA工具中的扩展与应用 通过对设计的案例的分析,了解和学习DC获取电路并进行解析的方法 综合软件当中TCL的常见指令 语法格式:get_ports portsName 指令功能:返回design中对应的ports object 语法格式:ge…

只有房子没有工作能贷款吗?

通常来说抵押贷款需要满足几个基本的条件,有可供抵押的房产,有稳定的工作和收入来源,信用良好,如果借人只有房产,没有工作一般是比较难贷到款的。原因是没有工作就没有收入来源,对还款就没有保障。可能有的…

总线及数据传输技术【待完善】

作者:桂。 时间:2017-08-05 14:41:36 链接:http://www.cnblogs.com/xingshansi/p/7290224.html 前言 最近的工作内容涉及硬件,三个高频词汇:总线、接口、协议,例如I2C、PCIe、RS-232C、RapidIO&#xff0…

初识TCL

初识TCL 安装TCL编辑器 如果你的电脑上装有编写TCL脚本的软件(Vivado等),执行在命令串口输入tcl,点击就行 输入expr 2 2 每一条命令都由一个或多个“单词”组成,单词之间用空格或制表符(即空白字符&…

如何看透借款人的隐形负债?

借款人的负债有两种情况,一种是显性负债,另一种是隐性负债。显性负债比较好判断,而隐性负债则比较难以判断。因此如何全面的掌握借款人真实负债是每个信贷员和风控人员都必须掌握的功课。一、显性负债显性负债就是通过材料可以直接看出的负债…

产生脉冲之间的延迟

产生脉冲之间的延迟 题目要求 FPGA产生两个输出脉冲,要求这两个脉冲之间的延迟为0.5ns,请描述你的实现方案 题目分析 1 使用计数器延迟不太可能,FPGA内部逻辑没有一个专用的delaybuffer。 2 IOB (input output block) iodelay。去实现小分辨…

Chipscope使用

作者:桂。 时间:2017-08-07 06:47:31 链接:http://www.cnblogs.com/xingshansi/p/7297482.html 前言 Chipscope在FPGA调试中被用来观察内部信号,程序里加入Chipscope相当于有了数字示波器。 本文主要记录Chipscope的基本操作&…

设计FIFO深度

设计FIFO深度 假设FIFO的写时钟为100MHZ,读时钟为80MHZ。在FIFO输入侧写数据侧,每100个时钟,写入80个数据,FIFO读出侧每个时钟读出一个数据。设计合理的FIFO深度,使FIFO不会溢出。 如果读出侧每3个时钟读出1个数据&am…

银行假流水怎么识破?

银行流水作为借款人最有效的还款证明,审核的时候一定要特重视,特别是要注意区分借款人的假流水。(1)真假流水有哪些特征真流水特征:银行流水能真实的反映借款人的工作或生意情况,能从借款人的生意来往合同中…

模拟电子技术基础笔记

模拟电子技术基础笔记 二极管的特性 1 单向导电性(小写是交流,大写是直流) 二极管的应用 1、整流二极管 利用二极管单向导电性,可以把方向交替变化的交流电变换成单一方向的脉动直流电。 2、开关元件 二极管在正向电压作用下电阻…

simulink简介

simulink简介 simulink是基于matlab的框图设计环境,可以用来对各种动态系统进行建模、分析和仿真,它的应用领域十分广泛,任何能用数学模型来描述的系统都可以在simulink中进行仿真分析,如:空气动力学、导航制导、通讯、电子、机械…

建模与仿真的流程

建模与仿真的流程 以例子为例 第一步:建立模型,列出输出表达式 第二步:解出输出方程 可以参考:解单位冲激 第三步:在simulink中建立仿真图 ctrlr:表示旋转90 按住ctrl可以引出多条线 点击保存&…

vcs 入门

synopsys vcs 软件是仿真和验证的软件,必须掌握。 vcs 即 verilog compile simulator 支持 verilog, systemVerilog, openvera, systemC等语言,同时也有代码覆盖率检测等功能。 可以合第三方软件集合使用,例如 Vera , Debussy ,S…

输入输出及子模块

输入输出及子模块 常用模块库 1 事先规划好功能子系统 2 建立好系统后对系统进行功能划分 在进行动态系统的建模过程中,可以根据需要将模型中比较复杂,或者共同完成某一功能的基本模块(低一层次的子系统)封装起来,并…