基于gnuradio的多相滤波器设计与实现.docx
- 文档编号:12105532
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:28
- 大小:962.62KB
基于gnuradio的多相滤波器设计与实现.docx
《基于gnuradio的多相滤波器设计与实现.docx》由会员分享,可在线阅读,更多相关《基于gnuradio的多相滤波器设计与实现.docx(28页珍藏版)》请在冰豆网上搜索。
基于gnuradio的多相滤波器设计与实现
毕业设计
基于GNURadio多相滤波器的设计与实现
摘要:
线电是无线通信领域提出的新的通信系统结构,主要以拓展性,结构简单化地硬件作为通用平台,以可替换的软件来实现更多的通信功能。
GNURadio是用软件来定义无线电波发射和接收的方式,与硬件相结合,搭建无线电通信系统的开源软件系统,使得无线电领域所遇到的数字调制问题变成软件问题。
本文以GNURadio为基础,实现多相滤波器系统。
对多相滤波器做了简单的介绍,包括滤波器的组成模块,实现原理,同时讨论了多相滤波器如何实现信道化,最后介绍了滤波器的设计步骤,分析实现多相滤波器仿真结果。
关键词:
软件无线电,GNURadio,多相滤波器
一、引言
1.1、软件无线电的介绍
软件无线电(SoftwareDefinedRadio):
是无线通信实现的新概念,即是采用现代软件来实现控制传统的“纯硬件电路”无线通信。
软件无线电技术首先是运用在军事上,但由于它的优点突出,很快该技术开始运用到民用的无线移动通讯行业。
软件无线电新技术的出现,打破了传统的通信功能只能依赖硬件格局发展的单一局面,如今,通信功能以硬件无线通信设备作为基本平台,功能的实现更多地由软件来发挥作用。
软件无线电新技术的出现,对于通讯领域来说,是继“固定通信—移动通信”“模拟通信—数学通信”之后的第三次技术变革。
因此,如何更好地去研发和运用软件无线电技术,是一项艰巨的任务。
和传统的无线电系统相对比,软件无线电体统有其自身突出的特点。
传统的无线电系统的调制方式和频段都有对应的硬件结构,其滤波和基频处理、上/下变频、射频部分都采用了模拟方式,虽然数码无线电系统的低频部分采用了数字电路,但是其射频和中频部分还是离不开模拟电路。
软件无线电系统是将D/A、A/D变换移动至中频,尽可能接近射频天线,并是对整个系统进行了采样处理。
而且软件无线电是用DSP器件来替代数字电路,这样,系统的功能实现和硬件结构相对独立,整个系统就能基于一个通用、开放的硬件平台,利用各种软件技术实现各种不同的通信功能,并通过软件编程来实现对工作频率、调制方式、系统宽带的选择,极大地提高了系统的灵活性。
软件无线电新概念的提出,引起了无线电领域的广泛关注,成为了未来通讯技术的发展新方向,它不仅在电子战、雷达等国防军事方面得到广泛应用,在智能化家电、数字化通信方面也有它的身影。
各国都争先恐后进行相关方面的研究,尤其美国,美国军方已经制定了具体的发展规划。
而我国对于软件无线电技术的研究非常重视,设立了多项重点研究项目。
现在,人们对软件无线电的研究日趋成熟,已经开始将其应用到我们生活的各个方面。
1.2、GNURadio的产生和应用现状
GNURadio是一套免费开源软件的开发工具。
它提供了信号处理和运行模块来支持软件无线电,并使用微处理器和低成本的RF(外部射频)去实现软件定义无线电,它广泛应用于无线通信领域的研究。
对于GNURadio,主要是采用Python编程语言,而它的核心的模块是由C++在带浮点运算的微处理器上进行构建的,这也决定了用户能够快速建立一个高吞吐量、实时的无线电系统。
虽然GNURadio的主要功能不是用来模拟仿真的,但是在没有硬件情况下,使用预先生成的数据来进行信号处理研究。
GNURadios的硬件平台USRP系列产品在世界各地有着各式各样的广泛应用,在商业生活和国防系统中都能看到它的身影。
尤其是国防系统,USRP系列产品能够以低预算,快速成型和部署先进等优点已经被发达国家的军事和情报服务机构广泛应用。
1.3、本课题的主要工作
本论文通过设计和研究GNURadio软件,实现软件无线电的基本方案,其主要的工作是学会使用GNURadio软件和实现多相滤波器结构。
主要内容包括了:
●学习和掌握软件无线电的概念、工作原理和发展状况;
●学习和掌握GNURadio的安装和使用方法;
●学习和掌握多相滤波器的相关理论知识和设计方法;
●用GNURadio软件为基础,设计多相滤波器,同时提出基本实现方案。
二、软件无线电和GNURadios的原理
2.1、软件无线电系统的结构和特征
构成软件无线电系统的基本部件包括了:
多频段射频变换器,含有A/D和D/A转换器的芯片,电源,天线和通用处理器等,这些部件执行了无线通信功能。
软件无线电系统的硬件结构比较简单,通过处理流程图来了解其各个硬件。
上图为接收通道,信号由天线通过RF的前端接收,再经过模拟数字转换器ADC进行转换,最后由代码的作用转化为信息。
类似的,在发射通道,数字信号由代码处理计算生成,再由DAC将其转为模拟信号,最后再从RF前端发射出去。
通过流程我们也可以看出,软件无线电结构完成的主要功能关键在软件无线代码。
处理流程图:
图2.1软件无线电处理流程图[1]
对于分析软件无线电处理流程,我们还应理解以下特点:
●数字化和编程化,在整个过程中,除了少部分以模拟方式实现,例如低噪声放大,放大功率,滤波,其余部分都是在模数转换后再由代码编程计算处理实现的,例如差错编码、调制解调、信道均衡等。
●开放性和灵活性,软件无线电采用了模块化地结构,它的硬件在技术不断发展的前提下不断更新,软件模块也不断升级,增加新功能的方法简单,而且软件无线电不仅能和旧体制的电台进行兼容,也能够和新体制的电台进行工作,这样能够最大限度地保证了软件无线电技术的生命周期。
2.2、GNURadio的介绍
GNURadio的编程是Python脚本语言和C++两者的混合,其中,Python用于实现高级组织、图形界面和一些对运算性能要求不高的功能,C++因执行效率高,可用于信息处理模块的编写,例如信道编译码模块,FFT变换,调制器,时频同步等等模块,这些被称为block。
从另一方面来说:
Python就是选择合适的信源,处理模块和信宿,设置正确的参数,再把这些连接起来成为一个完整的应用程序。
而所有的信源,信宿和模块都由C++来编写。
GNURadio还有一套零拷贝循环缓存机制,能够保证数据在这些block之间流动,也能通过Python编写能够连接各个block的脚本,称为graph。
同时,在GNURadio进行扩展也比较容易,如果发现缺少一个特定的block,可以快速编写创建,然后添加它。
GNURadio为学习者有方便调试测试的环境,提供了图形界面版GRC,这是一个图形化工具,用于创建信号流图,并生成流图的源代码,里面包含了大量的数字处理模块资源和多种调试工具。
GNURadio的硬件平台—USRP(通用软件无线电外设)实际上,USRP是充当了无线通信系统的中频和数字基带部分,让普通的计算机能够像高带宽的软件无线电设备那样工作。
USRP使得所有波形的相关处理都在主机CPU上完成,例如调制和解调,而例如抽样、上下变频和内插等高速通用操作则都在FPGA(可编程门阵列)上完成。
USRP平台的出现,让工程师能够花费少量的精力去为用户创造大量的代码库,并为软硬件提供了很多实际运用,成为了软件无线电开发的理想平台。
2.3、GNURadio安装与使用
2.3.1、Ubuntu的安装
目前GNURadio安装GNURadio库只支持LINUX操作系统,使用的是Ubuntu12.10。
下载链接:
XP和Ubuntu,这样我们就可以根据自己的需求进入想要的系统。
最后,要对Ubuntu12.10的源列表进行更新,步骤如下:
●进入终端,输入sudogedit/etc/apt/sources.list,按回车键。
编辑源列表,将原来的内容删除,添加你需要用到的源,复制到列表中,保存列表。
代码如下:
deblucidmainuniverserestrictedmultiverse
deb-srclucidmainuniverserestrictedmultiverse
deblucid-securityuniversemainmultiverserestricted
deb-srclucid-securityuniversemainmultiverserestricted
deblucid-updatesuniversemainmultiverserestricted
deblucid-proposeduniversemainmultiverserestricted
deb-srclucid-proposeduniversemainmultiverserestricted
deblucid-backportsuniversemainmultiverserestricted
deb-srclucid-backportsuniversemainmultiverserestricted
deb-srclucid-updatesuniversemainmultiverserestricted
●关闭sources.list后,在终端运行sudoapt-getupdate,这样,Ubuntu就安装好了。
2.3.2、GNURadio的安装
一般GNURadio的安装有两个途径包括手动自源代码安装或者是预购的二进制包。
需要注意的是,GNURadio的开发工作发展迅速,这就有可能导致各个版本的二进制预购包有可能处于过时状态。
安装步骤:
(1)安装ubuntu12.10,运行“languagesupport”选择“Chinese”注意不要对系统进行任何升级。
(2)采用Script(脚本来安装),先建立一个文件夹,需要建立在全英文的路径中,在终端进入该路径,然后输入“$wgethttp:
//www.sbrac.org/files/build-gnuradio&&chmoda+x./build-gnuradio&&./build-gnuradio--verbose.”该命令运行下就会下载安装器(build-gnuradio)其状态设置为可运行状态,这个过程是先下载并安装所有相关单元,然后从GIT上下载UHD和GNURadio,运行”$sudomake”进行安装,在这个安装过程中需要sudo的密码,这个过程大部分都是自动完成的,而且大多数情况下,通过运行该脚本对GNURadio的实施自源代码的安装能够满足其要求。
(3)接着输入“$sudomakeinstall”接着输入“sudogedit/etc/profile”,然后加上回车键。
再输入export配置路径“$exportPYTHONPATH=$PYTHPNPATH:
//usr/lib/python2.7/dist-packages”,然后输入”sudogedit/etc/ld.so.conf”接着执行“sudoldconfig”最后输入“gnuradio-config-info--v”。
安装完成后,源代码便会位于硬盘上某处,这样方便日后的修改。
(4)在我安装版本中缺少scipy文件包,所以需要另外安装,先下载scipy和numpy相关安装包,然后输入“sudoapt-getinstalllibatlas-sse2-dev”和“sudoapt-getinstallgfortran”,再执行安装命令,进入numpy的目录和scipy目录,执行“pythonsetup.pybuild—fcompiler=gnu95”和“sudopythonsetup.pyinstall—prefix=/usr/local”进行安装。
(5)测试GNURadio安装是否有问题,我们可以采用“/gnuradio-3.3.0/gnuradio-examples/python/audio”下的一个例子,例如dial-tone.py。
该例子能够产生两个sine波形然后将他们输出声卡,其中一个输出到声卡的右声道,一个输到左声道。
“$./dial-tone.py”。
运行后,能够听到声卡发出的声音,按任意键程序就可以退出。
(6)我们还可以在“/usr/local/bin”下面找到grc,类似Matlab的Simulink,在终端运行grc“$./grc”,就会弹出下图窗口。
右边有各种block,双击一个,就会放在左图上,图3.1是一个正弦波的信号源,连接一个示波器,运行,就能够在示波器上显示正弦波形,如图2.3
。
图2.2GRC界面图2.3在GRC中运行一个流图
三、多相滤波器理论原理及其应用
3.1、多相滤波器的理论知识
3.1.1、采样定律
通过对软件无线电的学习,我们知道其核心思想是对天线感应的射频模拟信号进行数字化,使其转换成适合计算机处理的数据流,从而能够通过算法来完成各种功能。
在这一过程中面临的主要问题是如何对模拟信号进行采样?
如何能够从采样后的数据序列中取重新建立连续的时域信号。
采样速率是将模拟信号准确不失真地转换成数字信号的重要指标。
Nyquist采样定律中指出,带限信号中,也就是最大频率fmax以上没有频谱分布的信号,用采样间隔为Ts均匀采样后的样本是唯一确定的,而间隔Ts满足式(3.1)
Ts≤1/2fMAX(sec)式(3.1)
多数情况下,对频率在[0,fH]的信号来说,采样频率要符合:
fs≥2fH式(3.2)
这样才能保证采集的信号不会有混叠而造成的失真情况。
如图所示
图3.1原始信号[2]
图3.2无混叠[2]
Nyquist采样理论只是讨论了频谱在(0,fH)上的信号采样问题,但当信号频率分布带宽为B的有限的频带(fL,fH)上,又该如何对待呢?
这就提出了带通采样定理:
频率带限信号x(t),带宽为B,频带限制在(fL,fH)内,那么采样速率fs满足
fH=2
式(3.3)
式中,f0为中心频率,k满足fs≥2(fH—fL)最大正整数(0,2,3…),这样fS进行等间隔采样所得的信号采样值x(nT)能准确地确定原信号x(t)。
又因为中心频率满足:
f0=
B式(3.4)
我们可以发现,k的不同会导致中心频率的不同,即使使用同一个采样频率,也是可以对不同的中心频率进行采样。
这决定了带通采样定理的使用前提,只能够在其中一个频率上存在信号,不允许其他频带上同时也存在信号,否则会引发混叠现象。
带通采样可以降低采样速率的理论值,使得高速采样和处理能够成为现实。
现实中软件无线电只有在宽的频段下才具有较广泛的适应性,这样决定了软件无线电台无法采用Nyquist采样技术采样,而需要采用带通采样。
3.1.2、多采样滤波器
多采样滤波器是指在处理采样信号的时候,能够提高或者降低信号采样率的数字滤波器。
其中简单的是实现整数倍的增采样(1:
P)滤波器,也就采用内插,同时也称为向上采样。
另一种是减采样(Q:
1)滤波器,采用抽取,也称为向下采样。
较为复杂的是将减采样和增采样应用在同一个信号处理过程,此时,获得的采样率的改变率为P/Q,更为复杂的技术可以用来实现缓慢时变或者是任意比值的采样率变化。
●整数倍抽取和向下采样
抽取通常也成为向下采样,是降低采样率的过程,是在原始采样序列x(n)每隔(Q-1)个数据取一个,从而能够形成一个全新的序列XQ(m),也就是:
XQ(m)=X(mQ)式(3.5)
其中,Q为正整数,而形成的新序列数据长度是原来1/Q。
图3.3用fHz采样率对原始信号采样[3]
图3.4用1/4fHz采样率得到新的信号[3]
这一过程实现将采样率降低到原来的频率的1/4,也就是除去每4个原始信号中的3个,只保留1个。
x(n)
y(m)
图3.5抽取器
通过抽取,不仅可以降低输出信号的数据频率,而且还提高了频域的分辨率。
但是为了避免我们丢弃的样本中有我们要研究的样本,因此实际应用时我们需要在抽取器前面增加滤波器h(n),可以使用低通数学滤波器也可以是带通数学滤波器,这可以将信号带宽限制到我们要研究的范围之内。
图3.6在抽取前对信号进行滤波
●整数倍内插和向上采样
整数倍内插:
在两个原始抽样点之间插入(I-1)个零值,假设原始抽样序列是x(n),那么内插后的序列XI(m)是:
XI(m)=
式(3.6)
内插过程如图:
图3.7采样率fHz的原始信号[3]
图3.8用零值样本对原值信号进行扩充,增加采样率为原来的4倍[3]
内插后的信号频谱因为有新的零值样品加入而多了不在研究范围内的高频分量到信号中,所以,我们需要对内插后的新信号进行滤波,除去不用研究的分量,产生更适合的采样值,如图所示:
图3.9fHZ的最终信号采样率为4倍[3]
完整的内插器结构如下图,利用内插(加入零点)不但可以提高输出信号的频率,同时也可以提高时域分辨率。
此时,采用的滤波器为带通滤波器,取出信号的高频成分。
图3.10内插后对信号进行滤波
3.1.3、互换等效性
互换的等效性:
内插器和抽取器相对滤波器的位置是可以相互调整的,也称作“Noble恒等式”
图3.11Noble恒等式[3]
如图所示,先用ZD多项式定义的滤波器进行滤波处理,然后进行减采样,与先进行减采样,再进行滤波器处理是完全等效的。
事实上,我们将重采样器与滤波器相结合,利用特性用输出采样率上的一个单位延迟来取代输入采样率上D个单位延时。
相同的,内插器也一样,不同的是,抽取和滤波器之间的关系研究是分析滤波器组研究的基础,内插和滤波器组的关系则是综合滤波器组研究的基础。
Noble等式是多相滤波器设计过程中内插器和抽取器次序交换的理论依据,通过适当的调整,能够使滤波器得到简化。
内插和抽取因子只能为整数值,如果将内插因子为P和抽取因子为Q内插器和抽取器相结合,级联后就可以得到Q:
P的重采样,如果此时P和Q是互质数,那么内插器和抽取器就可以互相交换次序,否则不可以。
次序的交换是十分有意义的,如果内插器和抽取器能够交换,将抽取器移到滤波器的输入端,这样使整个滤波器能够用二者中较低的处理速率来进行工作。
3.1.4、重采样
如果系统的采样率是一个整数,我们就只需要通过抽取或者内插来实现,如果采样率的比率是一个分数,我们就需要通过抽取和内插进行结合级联,而这样一个过程就称为重采样。
假设重采样因子2.5进行重采样,那么内插因子为5,而抽取因子为2就能够产生输出对输入采样率:
5/2=2.5的采样率。
重采样因子是输出采样速率和输入采样速率的比值,也可以表示为内插因子和抽取因子之间的比例。
图3.12重采样
3.2、FIR滤波器的概念与结构
根据滤波器的基本结构特点,可以将数字滤波器分为有限长脉冲响应(FIR)滤波器和无限长脉冲响应(IIR)滤波器。
FIR滤波器是指冲激响应函数h(t)是有限个值的数字滤波器,也就是满足
h(n)=0,n≥N2及n<N1式(3.7)
该式中,N1,N2为有限值,也可以说FIR滤波器的冲激函数h(n)只是在有限范围N1≤K<N2-1内不为零,但在实际中N1=0,而N2=N,
y(n)=
式(3.8)
FIR数字滤波器的频率响应可以表示为:
H(ejw)=
-jwk式(3.9)
而所谓滤波器设计,实际上就是给定H(ejw)(或者某些特征参数)的情况下,从而求出冲激函数h(k)。
IIR滤波器的反馈,一般是模仿模拟滤波器的响应,他们的脉冲是递归型,这比FIR滤波器更少的计算,但是IIR滤波器稳定性比较差。
然而,FIR滤波器无反馈,这件使得该种滤波器有恒定的群时延,所有在频率范围中,滤波器完全稳定。
FIR滤波器能够在保证幅度特性满足技术要求的同时,很容易做到严格的线性相位特性。
而且,总体来说,FIR滤波器的设计技术比较成熟,方法也多,现实应用更为广泛。
设计FIR滤波器的方法之一是用一个窗函数w(k)去截取理想滤波器的冲激函数hLP(k),这样就可以得到一个可用的FIR滤波器的冲激函数h(k):
h(k)=hLP*w(k)式(3.10)
实际运用中,窗函数w(k)有各种形式,例如汉宁窗、矩形窗、凯撒(Kaiser)窗,还有这次实验应用的布-哈窗(布莱克曼-哈里斯窗,Blackman-Harris)。
布-哈窗的表达式如下:
WBH(k)=0.42323-0.49755cos
+0.07922cos
(0≤k≤N-1)式(3.11)
对于布-哈窗来说,它具有较低的旁瓣电平,在对动态要求比较高的时候,一般选择布-哈窗。
采用窗函数去设计FIR滤波器的优点是简单,容易理解,根据窗函数的表达式,能够容易求出窗函数的的N个w(k)(k=0,1,2…N-1),然后用这些数据和理想的冲激函数相乘就可以得到实际的滤波器的冲激函数h(k)。
一般理想的冲激函数是已经知道的,例如,这次实验使用的低通滤波器,其理想的频率响应为
HLP(ejw)=
式(3.12)
那么对应的理想滤波器的冲激响应为
hLP(k)=
(k=0,±1,,2,….)式(3.13)
此时,为了使hLP(k)和窗函数的取值范围(0,N-1)相一致,那么我们可以先把hLP(k)移动到
处(在频域上只是增加一个固定相移)
hLP(k)=
式(3.14)
最后,再和w(k)相乘就可以得到实际的滤波器系数h(k):
h(k)=hLP(k-N/2)*w(k)(0≤k≤N-1)式(3.15)
此外,数字滤波器的阶数N,和滤波器的归一化过渡带宽度成反比,过渡带越窄,滤波器的阶数也就会越大,从而实现起来难度会越大,在实际应用需要权衡两者的关系,这样决定了用窗函数设计的数字滤波器的特性无法达到最佳状态。
3.3、滤波器的信道化选择
所谓信道是指通过一组覆盖整个频段的滤波器将频段划分成若干个子频段——信道,每个滤波器的输出就是一个信道输出。
如果将每个子频段通过下变频搬移到零中频,再通过低通滤波器(带宽是信道带宽),这种实现方法叫做频率信道化的低通实现。
如图3.13。
经过低通滤波后每个信道输出再经过D=K倍的抽取后不会出现频谱混频。
如以2GHz频段,8信道为例,(图3.14):
其中a图表示将2GHz频段分成8个信道,则每个信道的带宽是250MHz,假设把信道3移到零中频再进行低通滤波,就能够得到(b)的频谱,如果再对它进行8倍的抽取,频谱就能够以2G/8=250MHz的周期进行周期拓展,那么就会如(c)所示,此时的频谱刚好没有混叠,并可以获得低采样率的信号。
图中每个信道的输出数据率已经降成原来的K倍,但由于K个信道,所以对于整个模型来说,数据率并没改变,2GHz频段分成8个信道,就是将2G数据转成8路250MHz的数据,所以取
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 gnuradio 多相 滤波器 设计 实现