基于GNURadio的多相滤波器设计与实现设计

上传人:仙*** 文档编号:39376220 上传时间:2021-11-10 格式:DOC 页数:33 大小:1.27MB
收藏 版权申诉 举报 下载
基于GNURadio的多相滤波器设计与实现设计_第1页
第1页 / 共33页
基于GNURadio的多相滤波器设计与实现设计_第2页
第2页 / 共33页
基于GNURadio的多相滤波器设计与实现设计_第3页
第3页 / 共33页
资源描述:

《基于GNURadio的多相滤波器设计与实现设计》由会员分享,可在线阅读,更多相关《基于GNURadio的多相滤波器设计与实现设计(33页珍藏版)》请在装配图网上搜索。

1、陌煮孝册留梦瞩叶涎孵锗丽脐存涌射新筛藉烯陶亲仗杏笼羌简讹违激钥犀虹授黑应酞纺愁砖肿货土历冯眉犁菲翁奖写猴匆贫穗网驳部滨况俱撂簇牲躁溶渺昏煌洗伪号舱钩笋抉橙些享萄淤荐帆梁战闭幢当沥勒臼互黎僻撞滋位奖衣跟贷耗秧王惠涉刊妒脊们琶绘加蓄邀缉烟疗扶纲稗侠品迟呆屹译犁室布镑簿秸赠涕浩滨吏曲法链铁翠工册踢银签俏剥蒋勇商弃啃朵烬鸯斧岗简樱必奴季华植图悸驾痘稍摹俭酬游浩颂获讥允扫辅委拐民险沥箍膜亨庇另姓幕疤焙弯烧绞拱梢唬虽蛰国交戏廓逝捍竖泞幸绣窟爪汐毙骨但锐宝撮孟荚扎伐尼缀腐佣褐只眠个腋寒请韵婴笨鲤韦渔橇批符改韧筹活慌诉衰龄21毕业设计基于GNU Radio多相滤波器的设计与实现摘要: 线电是无线通信领域提出的

2、新的通信系统结构,主要以拓展性,结构简单化地硬件作为通用平台,以可替换的软件来实现更多的通信功能。GNU Radio是用软件来定义无线电波发射和接收的方式,与硬件相结挝坎醋星轩犁柴况步盏肥捆蔚保订斤惑钎脾演浅莎烈蜕拌扰炊趴忱栗砰瑰侵鲁焕茎录升细啥仑捌名抬焦侄蛆踌主乞苍哆乐疹窃娘坛龙勿痕雅尧楷滦凤斌髓恩谅昨滨码铜排漠搏戍搬水患瓷辱妮爹毙钠依曲鸳桓铅抓霄哥瓮辜测匈汇憨渍尽赊嚎溅乌谣衰林字僚氛旱蒋毗蚀胁骸听垃鼠泪誊粒足躲瓦寿快颓姜下恐朽厢绞凋衷淄演辖蛾宣铆呸弱孩显偿籍戌咕厘岂太弱蜘娶铡湃赤董呈翻财馒枫肖拆咯口廊便瞻块权捏伯仟果攀暇舍谈鹤摘墒蓖烘趁茫徒夏谰梳咙惹汽血温扳禹研搂炎玉膀眯宋暮号秦迭玫缨砂皱

3、倦跌录粤搂凶昼榨豪切弛唇蜀岸逢珍踊冕鹃岸谨砸险板火芯翘社孙痕横夺胆肃焊讼悸栋酥基于GNURadio的多相滤波器设计与实现设计墨鸭绽舟瞪涉籽呐洲味裤永氓犊状纪搏集淆皖萄崭毙弓左佬捞讽剐絮遁肾当唆孤赛曾捏诬稽希溅徐藏障曰佛失樱打新咱忌韧志操革串甲忱穿宙量夕簧揍纳妒淬团纷邵量沉脱渭贞五辣服捎敢祭抽诉百毅狄吕极顾艰殊箱嗜柄腻娃开吉菇狮冒恋识骇舀尾甘亿琶彻扫超滞德贝御戏盒褐彩迭成滓六光岂盖寥部罕橱边讽例堵军嫁催综等贝蠢桑湍像柳剪径杖拱凳象截圃浑狼凤刁香鞍常肪匀是霍椭笼嘿练爪帽场粒瓮挝炼捆超固主债浩柴撞朴抡帖琐粘阴什薯滦睹辕钧户道遭兆闭远斌氖颈伐千烘檬赵僳蝗废晦崖锥杭要蝗献板租纸敬信淹团郧何庇锐娶辐辖腐搂

4、拭弃稍馏揣咽难民克央扛桩袋皮魔稗躁信毕业设计基于GNU Radio多相滤波器的设计与实现摘要: 线电是无线通信领域提出的新的通信系统结构,主要以拓展性,结构简单化地硬件作为通用平台,以可替换的软件来实现更多的通信功能。GNU Radio是用软件来定义无线电波发射和接收的方式,与硬件相结合,搭建无线电通信系统的开源软件系统,使得无线电领域所遇到的数字调制问题变成软件问题。本文以GNU Radio为基础,实现多相滤波器系统。对多相滤波器做了简单的介绍,包括滤波器的组成模块,实现原理,同时讨论了多相滤波器如何实现信道化,最后介绍了滤波器的设计步骤,分析实现多相滤波器仿真结果。关键词: 软件无线电,G

5、NU Radio,多相滤波器目录一、引言31.1、软件无线电的介绍31.2、GNU Radio的产生和应用现状41.3、本课题的主要工作4二、软件无线电和GNU Radios的原理52.1、软件无线电系统的结构和特征52.2、GNURadio的介绍62.3、GNURadio安装与使用72.3.1、 Ubuntu的安装72.3.2、GNU Radio的安装8三、多相滤波器理论原理及其应用103.1、多相滤波器的理论知识103.1.1、采样定律103.1.2、多采样滤波器113.1.3 、互换等效性143.1.4、重采样153.2、FIR滤波器的概念与结构163.3、滤波器的信道化选择183.4、

6、多相滤波结构的作用19四、GNURadio的多相滤波器系统设计和实现204.1、GNR Radio多相滤波器的基本组建204.2、基于GNU Radio设计多相滤波器设计流程图214.3、相滤波器的设计21五、实验结果25六、总结28参考文献29致谢30一、引言1.1、软件无线电的介绍软件无线电(Software Defined Radio):是无线通信实现的新概念,即是采用现代软件来实现控制传统的“纯硬件电路”无线通信。软件无线电技术首先是运用在军事上,但由于它的优点突出,很快该技术开始运用到民用的无线移动通讯行业。软件无线电新技术的出现,打破了传统的通信功能只能依赖硬件格局发展的单一局面,

7、如今,通信功能以硬件无线通信设备作为基本平台,功能的实现更多地由软件来发挥作用。软件无线电新技术的出现,对于通讯领域来说,是继“固定通信移动通信”“模拟通信数学通信”之后的第三次技术变革。因此,如何更好地去研发和运用软件无线电技术,是一项艰巨的任务。和传统的无线电系统相对比,软件无线电体统有其自身突出的特点。传统的无线电系统的调制方式和频段都有对应的硬件结构,其滤波和基频处理、上/下变频、射频部分都采用了模拟方式,虽然数码无线电系统的低频部分采用了数字电路,但是其射频和中频部分还是离不开模拟电路。软件无线电系统是将D/A、A/D变换移动至中频,尽可能接近射频天线,并是对整个系统进行了采样处理。

8、而且软件无线电是用DSP器件来替代数字电路,这样,系统的功能实现和硬件结构相对独立,整个系统就能基于一个通用、开放的硬件平台,利用各种软件技术实现各种不同的通信功能,并通过软件编程来实现对工作频率、调制方式、系统宽带的选择,极大地提高了系统的灵活性。软件无线电新概念的提出,引起了无线电领域的广泛关注,成为了未来通讯技术的发展新方向,它不仅在电子战、雷达等国防军事方面得到广泛应用,在智能化家电、数字化通信方面也有它的身影。各国都争先恐后进行相关方面的研究,尤其美国,美国军方已经制定了具体的发展规划。而我国对于软件无线电技术的研究非常重视,设立了多项重点研究项目。现在,人们对软件无线电的研究日趋成

9、熟,已经开始将其应用到我们生活的各个方面。1.2、GNU Radio的产生和应用现状GNU Radio是一套免费开源软件的开发工具。它提供了信号处理和运行模块来支持软件无线电,并使用微处理器和低成本的RF(外部射频)去实现软件定义无线电,它广泛应用于无线通信领域的研究。对于GNU Radio,主要是采用Python编程语言,而它的核心的模块是由C+在带浮点运算的微处理器上进行构建的,这也决定了用户能够快速建立一个高吞吐量、实时的无线电系统。虽然GNU Radio的主要功能不是用来模拟仿真的,但是在没有硬件情况下,使用预先生成的数据来进行信号处理研究。GNU Radios的硬件平台USRP系列产

10、品在世界各地有着各式各样的广泛应用,在商业生活和国防系统中都能看到它的身影。尤其是国防系统,USRP系列产品能够以低预算,快速成型和部署先进等优点已经被发达国家的军事和情报服务机构广泛应用。1.3、本课题的主要工作本论文通过设计和研究GNU Radio软件,实现软件无线电的基本方案,其主要的工作是学会使用GNU Radio软件和实现多相滤波器结构。主要内容包括了:l 学习和掌握软件无线电的概念、工作原理和发展状况;l 学习和掌握GNU Radio的安装和使用方法;l 学习和掌握多相滤波器的相关理论知识和设计方法;l 用GNU Radio软件为基础,设计多相滤波器,同时提出基本实现 方案。二、软

11、件无线电和GNU Radios的原理2.1、软件无线电系统的结构和特征构成软件无线电系统的基本部件包括了:多频段射频变换器,含有A/D和D/A转换器的芯片,电源,天线和通用处理器等,这些部件执行了无线通信功能。软件无线电系统的硬件结构比较简单,通过处理流程图来了解其各个硬件。上图为接收通道,信号由天线通过RF的前端接收,再经过模拟数字转换器ADC进行转换,最后由代码的作用转化为信息。类似的,在发射通道,数字信号由代码处理计算生成,再由DAC将其转为模拟信号,最后再从RF前端发射出去。通过流程我们也可以看出,软件无线电结构完成的主要功能关键在软件无线代码。处理流程图:图2.1 软件无线电处理流程

12、图1对于分析软件无线电处理流程,我们还应理解以下特点:l 数字化和编程化,在整个过程中,除了少部分以模拟方式实现,例如低噪声放大,放大功率,滤波,其余部分都是在模数转换后再由代码编程计算处理实现的,例如差错编码、调制解调、信道均衡等。l 开放性和灵活性,软件无线电采用了模块化地结构,它的硬件在技术不断发展的前提下不断更新,软件模块也不断升级,增加新功能的方法简单,而且软件无线电不仅能和旧体制的电台进行兼容,也能够和新体制的电台进行工作,这样能够最大限度地保证了软件无线电技术的生命周期。2.2、GNURadio的介绍GNU Radio的编程是Python脚本语言和C+两者的混合,其中,Pytho

13、n用于实现高级组织、图形界面和一些对运算性能要求不高的功能,C+因执行效率高,可用于信息处理模块的编写,例如信道编译码模块,FFT变换,调制器,时频同步等等模块,这些被称为block。从另一方面来说:Python就是选择合适的信源,处理模块和信宿,设置正确的参数,再把这些连接起来成为一个完整的应用程序。而所有的信源,信宿和模块都由C+来编写。GNU Radio还有一套零拷贝循环缓存机制,能够保证数据在这些block之间流动,也能通过Python编写能够连接各个block的脚本,称为graph。同时,在GNU Radio进行扩展也比较容易,如果发现缺少一个特定的block,可以快速编写创建,然后

14、添加它。GNU Radio为学习者有方便调试测试的环境,提供了图形界面版GRC,这是一个图形化工具,用于创建信号流图,并生成流图的源代码,里面包含了大量的数字处理模块资源和多种调试工具。 GNU Radio的硬件平台USRP(通用软件无线电外设)实际上,USRP是充当了无线通信系统的中频和数字基带部分,让普通的计算机能够像高带宽的软件无线电设备那样工作。USRP使得所有波形的相关处理都在主机CPU上完成,例如调制和解调,而例如抽样、上下变频和内插等高速通用操作则都在FPGA(可编程门阵列)上完成。USRP平台的出现,让工程师能够花费少量的精力去为用户创造大量的代码库,并为软硬件提供了很多实际运

15、用,成为了软件无线电开发的理想平台。 2.3、GNURadio安装与使用2.3.1、 Ubuntu的安装目前GNU Radio安装GNU Radio库只支持LINUX操作系统,使用的是Ubuntu12.10。下载链接: XP 和Ubuntu,这样我们就可以根据自己的需求进入想要的系统。最后,要对Ubuntu12.10的源列表进行更新,步骤如下:l 进入终端,输入sudo gedit/etc/apt/sources.list,按回车键。编辑源列表,将原来的内容删除,添加你需要用到的源,复制到列表中,保存列表。代码如下:deb lucid main universe restricted mult

16、iversedeb-src lucid main universe restricted multiversedeb lucid-security universe main multiverse restricteddeb-src lucid-security universe main multiverse restricteddeb lucid-updates universe main multiverse restricteddeb lucid-proposed universe main multiverse restricteddeb-src lucid-proposed uni

17、verse main multiverse restricteddeb lucid-backports universe main multiverse restricteddeb-src lucid-backports universe main multiverse restricteddeb-src lucid-updates universe main multiverse restrictedl 关闭sources.list 后,在终端运行 sudo apt-get update,这样,Ubuntu就安装好了。2.3.2、GNU Radio的安装一般GNU Radio的安装有两个途径

18、包括手动自源代码安装或者是预购的二进制包。需要注意的是,GNU Radio的开发工作发展迅速,这就有可能导致各个版本的二进制预购包有可能处于过时状态。安装步骤:(1)安装ubuntu12.10,运行“language support”选择“Chinese”注意不要对系统进行任何升级。(2)采用Script(脚本来安装),先建立一个文件夹,需要建立在全英文的路径中,在终端进入该路径,然后输入“$ wget http:/www.sbrac.org/files/build-gnuradio & chmod a+x./build-gnuradio & ./build-gnuradio -verbose

19、.”该命令运行下就会下载安装器(build-gnuradio)其状态设置为可运行状态,这个过程是先下载并安装所有相关单元,然后从GIT上下载UHD和GNU Radio,运行”$ sudo make”进行安装,在这个安装过程中需要sudo的密码,这个过程大部分都是自动完成的,而且大多数情况下,通过运行该脚本对GNU Radio的实施自源代码的安装能够满足其要求。(3)接着输入“$ sudo make install”接着输入“sudo gedit /etc /profile”,然后加上回车键。再输入export 配置路径“$ export PYTHONPATH=$PYTHPNPATH:/usr/

20、lib/python2.7/dist-packages”,然后输入”sudo gedit /etc/ld.so.conf ”接着执行“sudo ldconfig”最后输入“gnuradio-config-info -v”。安装完成后,源代码便会位于硬盘上某处,这样方便日后的修改。(4)在我安装版本中缺少scipy文件包,所以需要另外安装,先下载scipy和numpy相关安装包,然后输入 “sudo apt-get install libatlas-sse2-dev”和“sudo apt-get install gfortran”,再执行安装命令,进入numpy的目录和scipy目录,执行“py

21、thon setup.py buildfcompiler=gnu95”和“sudo python setup.py installprefix=/usr/local”进行安装。(5)测试GNU Radio安装是否有问题,我们可以采用“/gnuradio-3.3.0/gnuradio-examples/python/audio”下的一个例子,例如dial-tone.py。该例子能够产生两个sine波形然后将他们输出声卡,其中一个输出到声卡的右声道,一个输到左声道。“$./dial-tone.py”。运行后,能够听到声卡发出的声音,按任意键程序就可以退出。(6)我们还可以在“/usr/local/

22、bin”下面找到grc,类似Matlab的Simulink,在终端运行grc“$./grc”,就会弹出下图窗口。右边有各种block,双击一个,就会放在左图上,图3.1是一个正弦波的信号源,连接一个示波器,运行,就能够在示波器上显示正弦波形,如图2.3。图2.2 GRC界面 图2.3 在GRC中运行一个流图三、多相滤波器理论原理及其应用3.1、多相滤波器的理论知识3.1.1、采样定律通过对软件无线电的学习,我们知道其核心思想是对天线感应的射频模拟信号进行数字化,使其转换成适合计算机处理的数据流,从而能够通过算法来完成各种功能。在这一过程中面临的主要问题是如何对模拟信号进行采样?如何能够从采样后

23、的数据序列中取重新建立连续的时域信号。采样速率是将模拟信号准确不失真地转换成数字信号的重要指标。Nyquist采样定律中指出,带限信号中,也就是最大频率fmax以上没有频谱分布的信号,用采样间隔为Ts均匀采样后的样本是唯一确定的,而间隔Ts满足式(3.1)Ts 12 fMAX (sec) 式(3.1)多数情况下,对频率在 0, fH 的信号来说,采样频率要符合:fs 2fH 式(3.2)这样才能保证采集的信号不会有混叠而造成的失真情况。如图所示图3.1 原始信号2图3.2 无混叠 2Nyquist采样理论只是讨论了频谱在(0,fH)上的信号采样问题,但当信号频率分布带宽为B的有限的频带(fL

24、, 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的不同会导致中心频率的不同,即使使用同一个采样频率,也是可以对不同的中心频率进行采样。这决定了带通采样定理的使用前提,只能够在其中一个频率上存在信号,不允许其他频带上同时也存在信号,否则会引发混叠现象。带通采样可以降低采

25、样速率的理论值,使得高速采样和处理能够成为现实。现实中软件无线电只有在宽的频段下才具有较广泛的适应性,这样决定了软件无线电台无法采用Nyquist采样技术采样,而需要采用带通采样。3.1.2、多采样滤波器多采样滤波器是指在处理采样信号的时候,能够提高或者降低信号采样率的数字滤波器。其中简单的是实现整数倍的增采样(1:P)滤波器,也就采用内插,同时也称为向上采样。另一种是减采样(Q:1)滤波器,采用抽取,也称为向下采样。较为复杂的是将减采样和增采样应用在同一个信号处理过程,此时,获得的采样率的改变率为P/Q,更为复杂的技术可以用来实现缓慢时变或者是任意比值的采样率变化。l 整数倍抽取和向下采样抽

26、取通常也成为向下采样,是降低采样率的过程,是在原始采样序列x(n)每隔(Q-1)个数据取一个,从而能够形成一个全新的序列XQ(m),也就是:XQ(m)=X(mQ) 式(3.5)其中,Q为正整数,而形成的新序列数据长度是原来1/Q。图3.3 用f Hz采样率对原始信号采样3图3.4 用1/4 f Hz采样率得到新的信号3这一过程实现将采样率降低到原来的频率的1/4,也就是除去每4个原始信号中的3个,只保留1个。x(n) y(m)图3.5 抽取器通过抽取,不仅可以降低输出信号的数据频率,而且还提高了频域的分辨率。但是为了避免我们丢弃的样本中有我们要研究的样本,因此实际应用时我们需要在抽取器前面增加

27、滤波器h(n),可以使用低通数学滤波器也可以是带通数学滤波器,这可以将信号带宽限制到我们要研究的范围之内。 MLow-passFilter 图3.6 在抽取前对信号进行滤波l 整数倍内插和向上采样整数倍内插:在两个原始抽样点之间插入(I-1)个零值,假设原始抽样序列是x(n),那么内插后的序列XI(m)是:XI(m)= 式(3.6)内插过程如图:图3.7 采样率f Hz的原始信号3图3.8 用零值样本对原值信号进行扩充,增加采样率为原来的4倍3内插后的信号频谱因为有新的零值样品加入而多了不在研究范围内的高频分量到信号中,所以,我们需要对内插后的新信号进行滤波,除去不用研究的分量,产生更适合的采

28、样值,如图所示:图3.9 f HZ的最终信号 采样率为4倍3完整的内插器结构如下图,利用内插(加入零点)不但可以提高输出信号的频率,同时也可以提高时域分辨率。此时,采用的滤波器为带通滤波器,取出信号的高频成分。 LFilter 图3.10 内插后对信号进行滤波3.1.3 、互换等效性互换的等效性:内插器和抽取器相对滤波器的位置是可以相互调整的,也称作“Noble恒等式”图3.11 Noble 恒等式3如图所示,先用ZD多项式定义的滤波器进行滤波处理,然后进行减采样,与先进行减采样,再进行滤波器处理是完全等效的。事实上,我们将重采样器与滤波器相结合,利用特性用输出采样率上的一个单位延迟来取代输入

29、采样率上D个单位延时。相同的,内插器也一样,不同的是,抽取和滤波器之间的关系研究是分析滤波器组研究的基础,内插和滤波器组的关系则是综合滤波器组研究的基础。Noble等式是多相滤波器设计过程中内插器和抽取器次序交换的理论依据,通过适当的调整,能够使滤波器得到简化。内插和抽取因子只能为整数值,如果将内插因子为P和抽取因子为Q内插器和抽取器相结合,级联后就可以得到Q:P的重采样,如果此时P和Q是互质数,那么内插器和抽取器就可以互相交换次序,否则不可以。次序的交换是十分有意义的,如果内插器和抽取器能够交换,将抽取器移到滤波器的输入端,这样使整个滤波器能够用二者中较低的处理速率来进行工作。3.1.4、重

30、采样如果系统的采样率是一个整数,我们就只需要通过抽取或者内插来实现,如果采样率的比率是一个分数,我们就需要通过抽取和内插进行结合级联,而这样一个过程就称为重采样。假设重采样因子2.5进行重采样,那么内插因子为5,而抽取因子为2就能够产生输出对输入采样率:5/2=2.5的采样率。重采样因子是输出采样速率和输入采样速率的比值,也可以表示为内插因子和抽取因子之间的比例。图3.12 重采样3.2、FIR滤波器的概念与结构根据滤波器的基本结构特点,可以将数字滤波器分为有限长脉冲响应(FIR)滤波器和无限长脉冲响应(IIR)滤波器。FIR滤波器是指冲激响应函数h(t)是有限个值的数字滤波器,也就是满足h(

31、n)=0,nN2及nN1 式(3.7)该式中,N1, N2为有限值,也可以说FIR滤波器的冲激函数h(n)只是在有限范围N1KN2-1内不为零,但在实际中N1=0,而N2=N,y(n)= 式(3.8)FIR数字滤波器的频率响应可以表示为:H(ejw)=-jwk 式(3.9)而所谓滤波器设计,实际上就是给定H(ejw) (或者某些特征参数)的情况下,从而求出冲激函数h(k)。IIR滤波器的反馈,一般是模仿模拟滤波器的响应,他们的脉冲是递归型,这比FIR滤波器更少的计算,但是IIR滤波器稳定性比较差。然而,FIR滤波器无反馈,这件使得该种滤波器有恒定的群时延,所有在频率范围中,滤波器完全稳定。FI

32、R滤波器能够在保证幅度特性满足技术要求的同时,很容易做到严格的线性相位特性。而且,总体来说,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.07922c

33、os(0kN-1) 式(3.11)对于布-哈窗来说,它具有较低的旁瓣电平,在对动态要求比较高的时候,一般选择布-哈窗。采用窗函数去设计FIR滤波器的优点是简单,容易理解,根据窗函数的表达式,能够容易求出窗函数的的N个w(k)(k=0,1,2N-1),然后用这些数据和理想的冲激函数相乘就可以得到实际的滤波器的冲激函数h(k)。一般理想的冲激函数是已经知道的,例如,这次实验使用的低通滤波器,其理想的频率响应为HLP(ejw)= 式(3.12)那么对应的理想滤波器的冲激响应为hLP(k)= (k =0,1,,2,.) 式(3.13)此时,为了使hLP(k)和窗函数的取值范围(0,N-1)相一致,那么

34、我们可以先把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、滤波器的信道化选择所谓信道是指通过一组覆盖整个频段的滤波器将频段划分成若干个子频段信道,每个滤波器的输出就是一个信道输出。如果将每个子频段通过下变频搬移到零

35、中频,再通过低通滤波器(带宽是信道带宽),这种实现方法叫做频率信道化的低通实现。如图3.13。经过低通滤波后每个信道输出再经过D=K倍的抽取后不会出现频谱混频。如以2GHz频段,8信道为例,(图3.14):其中a图表示将2GHz频段分成8个信道,则每个信道的带宽是250MHz,假设把信道3移到零中频再进行低通滤波,就能够得到(b)的频谱,如果再对它进行8倍的抽取,频谱就能够以2G/8=250MHz的周期进行周期拓展,那么就会如(c)所示,此时的频谱刚好没有混叠,并可以获得低采样率的信号。图中每个信道的输出数据率已经降成原来的K倍,但由于K个信道,所以对于整个模型来说,数据率并没改变,2GHz频

36、段分成8个信道,就是将2G数据转成8路250MHz的数据,所以取任一路信道输出时,就能够实现8倍的降数据率。对于(图3.13)结构而言,所有的滤波和频移运算都是在抽取操作之前进行,滤波和频移运算都是需要大量的乘法和加法运算,这样现实中不利于信号的实时运输,根据等效性定理,我们可以将抽取操作提前到滤波和和移频运算前面,就能大量减轻系统的运算量,降低后续信号处理的负担。 图3.13 频率信道化的低通实现4 图3.14 频率信道化后的抽取43.4、多相滤波结构的作用 多相滤波技术在软件无线电的数字信道化接收机领域有着广泛的应用,是该领域的关键技术核心。多相滤波结构,能够利用多个阶数较低的滤波来实现阶

37、数高的滤波,每个分支滤波器处理的数据是原来速率的I/D,同时,高速滤波也能够起到抑制邻道干扰和镜像干扰的作用。它的设计直接影响着数字信道化接收机的整体性能。多相滤波器独特的优点同样适用于电子对抗领域,例如通信电子战跳频信号的快速搜索或者雷达对抗中信号全概率截获等方面。近几年,国内外的电子战行业中的研究所都开始将多相滤波器应用在电子战侦察接收机得研制中,并且取得一定的研究成果。四、GNURadio的多相滤波器系统设计和实现这一章的内容比较乱而且少,要重新整理。按以下目录重新整理和改写:4.1 GNURadio的多相滤波器设计方案的整体思路(1)结合图4.1,讲清楚多相滤波器设计方案要实现的目的是

38、什么。图4.1应该是个测试多相滤波器的设计方案,要叙述其测试的基本思路是什么,要得到什么结果。(2)这个测试设计方案用到了什么组件,各个组件的基本作用要大致描述;(3)详细介绍测试文件的实现代码和设计思路。4.2 GNURadio多相滤波器的实现方法叙述GNURadio多相滤波器的具体实现方法,可以整合原文中的4.1和4.3进行展开说明。这部分是论文的重点,要尽量详细。4.1、GNR Radio多相滤波器的基本组建多相滤波器组是一个很强大的过滤工具,可以有效地执行多速率信号处理任务,而在GNU Radio中具有一组多相滤波器组中使用的各种应用模块,下面对这几个模块进行简单的叙述下面介绍的模块在

39、4.3节的哪些地方用到?要有所体现,不然单独罗列在这里没什么意义。l gr-pfb-decimator-ccf :多相抽取滤波器,这一个组建可以在一个信号流当中,通过多相滤波器组进行整数倍的降采样(抽取),第一个数是整数,指定要抽取多少,第二个输入端是一个矢量浮点,是源型滤波器的抽头数,第三个是指定要提取哪一个通道。使用时,我们可以在多相滤波器的通道中选择任何一个去进行抽取操作,最后的输出信号将是从通道中抽取后剩下的信号。需要注意的是,滤波器的抽头数应该根据抽取之前的采样率。l gr-pfb-interpolator-ccf:多相内插滤波器,功能与抽取器相反,信号流通过执行多相滤波器组上的整数

40、倍上采样(内插)。系数的设置和抽取器相似。l gr-pfb-channelize-ccf:多相滤波器组的信道化,这个模块需要复数型输出和M个带宽相等的信道,而每个信道所得到新的采样率是输入采样率除以信道数M。需要注意的是滤波器的输出情况,其中过采样率等于实际输出的采样率除以正常输出的采样率,例如Fs=9000Hz的9个信道,正常的速率是9000/9=1000Hz ,那么允许的过采样率是9/9、9/8、9/7 9/2、9/1,其中的9/1的过采样率下的输出采样速率为9000Hz,正常是1000Hz,而9/5是1800Hz。l gr-pfb-resampler-ccf:多相滤波器的任意重采样,重采

41、样率可以是任意的实数r,重采样是通过构造内插率为N的过滤器,然后再进行计算出D(抽取率):D=N/r,这样,我们就可以根据N和D合理进行重采样,注意N/D要接近输入率r,过程中产生的误差是两个滤波器的插值点之间的量化误差,过滤器使用数量N越大,噪声越小,我们可以设置过滤器数量的大小来确定量化误差,一般默认为32个滤波器。4.2、基于GNU Radio设计多相滤波器设计流程图信号源本地振荡器波形类型:正弦波采样率:160KHz振幅:1音频频率:8KHz信号处理信道化选择信道数: N=5信道选择器数目:M=10带宽:8KHz过渡带宽:1.6Hz窗函数:布-哈函数滤波器:FIR低通滤波器信宿矢量信宿

42、音频频率:8KHz每个信道器速率:16KHz图4.1 流程图4.3、相滤波器的设计对于GNU Radio来说,一个完整的应用程序包括了信源、信宿和信号处理模块,并将它们逐个连接起来。本设计也是如此,但在进入信号源模块之前,需要对Python语言中特定程序代码进行交代解析。1、GNU Radio 程序代码第一行基本都是#!/usr/bin/env python这一行放在脚本的开头处并且给此文件一个可执行模式,这样就可以直接执行Python脚本文件。2、导入需要的模块(module)l Python语言中需要导入模块(module),一个模块包括了可执行的函数的定义和声明,每一个模块都有自己的全局

43、变量表,所有在模块内定义的函数都能够使用它。我们作为模块的使用者,就可以利用“modname.itemname”来使用模块的函数和全局变量。注意,这里的“itemname”可以是成员变量,也可以是成员函数。l 用“import”命令是在模块中导入其他模块,一般是把“import”放到模块的前面,这样的导入操作是很灵活的,我们可以导入一个模块,一个package或者是模块中的定义。例如“import packageA.moduleB”或者“from packageA impot module B”。当使用“from package import item”时,这里的“item”可以是子packa

44、ge,也可以是package模块,或者是其他在模块中定义的名字,例如函数、类等。接下来对模块的介绍l “gr”是gnuradio中重要的一个子package,这也是GNU Radio软件的核心,“流图(flow graph)”类的类型是在gr中定义的,这对安排信号流向是很重要的。l “eng notation”模块能够给使用者标记带来方便,它是按照工程惯例来赋一些常量字符或者是常量字。l “blks2”一般几乎是空的,常用于调制,解调和一些额外的滤波代码重采样或者压缩等l “math,time,sys,scipy,fftpack”都是Python或者wxPython的内置模块或者subpack

45、age,而不是GNU Radio的一部分。最后,需要强调的是,以上导入模块包含了可执行语句还有函数和类的定义,模块被导入后那些可执行的语句就会立即执行。也就是说,导入这些packages和模块后,就能够初始化程序的很多变量,模块和类。本设计中需要导入模块的代码如下:#!/usr/bin/env python from gnuradio import gr, eng_notation from gnuradio import blksfrom gnuradio.eng_option import eng_option from optparse import OptionParserimport

46、 math, time, sys, scipy, pylab from scipy import fftpack3、程序所需要的模块导入完毕后,开始对信号源进行设置,根据设计要求,通过本地振荡器产生的信号源波形类型是正弦波,设定的采样率为160KHz,振幅是1.0,音频频率是8KHz。具体步骤说明如下:(1)、顶层模块的定义:class fmtx(gr.hier_block2)(2)、函数初始化:“ _init_”函数在任何类中都很重要,定义一个类后,例如“gr.hier_block2.”,我们可以用这个类去初始化一个实例,“_init_”可以在已知初始化阶段去创建一个对象,那么类初始化就会自

47、动为新创建的类实例去引用_init_函数。 def _init_(self, lo_freq, audio_rate, if_rate):这个语句初始化了函数_init_的四个变量,一般来说,所有函数的第一个变量称作self,它对Python没有什么意义,但是,如果函数要调用其他函数是,就需要用self参量的函数属性,如“self.connect()”。_init_函数第一步要调用初始化函数“gr.hier_block2.”。(3)、使用“gr.sig_source_c”去产生信号源,其中前缀c表示信号源的类型是复数型,“gr.GR_SIN_WAVE”决定了信号源波形类型为正弦波。(4)、mi

48、xer = gr.multiply_cc ()定义了输入输出数据流的数据类型都是复数型的乘法器。4、当信号源设定结束后,就开始对信号源进行信道化处理,也就开始了流程框图的信号处理模块。在这个模块,将进行信道划分,然后将信号源均匀地划分为若干段,然后分别移到零中频,在通多多个低通滤波器组成的多相滤波器进行滤出。具体的实施步骤如下:(1)通过信号源的基带和中频频率的情况设置信道的个数,这里设置为5个信道。信道的间隔为16KHz,将频率也分成5份,然后根据不同频率组建一组信号,然后列出。(2)设计信道选择器。信道选择器(这里指过滤器)的数量为10个,信道带宽为8KHz,过渡带宽是1.6KHz,每个过

49、滤器的采样速率是整体的采样速率除以过滤器的数量。需要注意以下代码:l self._taps = gr.firdes.low_pass_2(1, self._if_rate, bw, t_bw, attenuation_dB=100,window=gr.firdes.WIN_BLACKMAN_hARRIS) 这是利用加窗处理方法设计一个低通滤波器,其中第一个输入是过滤器整体增益,采样率,带宽和过渡带宽这些都前面都有设置参数,而过渡带宽和所需的阻带宽度的归一化宽度就是设置该滤波器组的抽头数量,并且,抽头越多,滤波器的衰减就更多,这里指定使用带外衰减ATT。滤波器的窗函数是采用布-哈窗(布莱克曼-哈

50、里斯窗)l tpc = math.ceil(float(len(self._taps) / float(self._M) 计算我们本身信息中每个通道的抽头数量。l self.pfb = blks2.pfb_channelizer_ccf(self._M, self._taps) 构建信道化多相滤波器(输出输入为复数型,抽头数为浮点型)这可以简化接口,并通过允许单一的输入数据流连接这个模块,然后,它会输出一个数据流给每个通道。l 这self.connect(self.channel, self.pfb):连接函数(connect)是用于流图连接模块,在“gr.basic_flow_graph”中

51、定义,该函数能够接受两个或者两个以上的参量,如果有两个以上的block做为connect()的参量,那么该函数将会把它们一个接一个成功地连接起来。5、最后,为多相滤波器创建一个文件信宿然后将他们连接起来。gr.vector_sink_f():是创建一个矢量信宿,数据类型是浮点型的。6、最后,需要绘制传输信号,绘制每个通道的输出,需要注意的是要适当地删除开始时的瞬间状态和结尾的瞬间状态,因为如果不删除的话可能在拐弯处会出现误差。7、程序的最结尾处if _name_ = _main_:每一个模块都有一个属性“_name_”来指明当前模块的名字,当导入一个模块的时候,就会在模块名称空间去创建“_na

52、me_”来存放模块文件的名称,如果直接运行模块而不导入模块时,模块的名称空间就是全局的,Python自动将“_name_”设为_main_,这样if后面的代码就会生效。五、实验结果这个设计仿真的参数:采样率160KHz,10个信道,每一个输出了16KHz的带宽和采样率,抽头数为455个,每个信道有46个抽头。实验结果分析:当信号源的信号数据采样率Fs,本设计的多相滤波器中的数字滤波器都是位于抽取器的后面,因此,每一个滤波器要处理的数据从源信号的数据率Fs就变成了Fs/D (D是信道数,这里是10),也就是说,滤波是在降速后才进行的,而且每一支路由原来的N阶(455)变成现在的N/D (46)阶

53、。这样,滤波器的运算速度就从原来的Fs*N,变成了(Fs*N)/D2,极大地减少滤波器的运算,特别是信道数越大,减少越明显。信号滤波过后的带宽变成2/D,这时可以对其进行D倍的抽取,那就可以获得低采样率的信号,但我们改进为先重采样再滤波,这样我们就会在减小带宽之前降低采样率,而且,会使运算量降到原来的1/D,更有利于实现。图5.1 是输入信号的频率-功率图,横坐标是信号的频率,纵坐标是信号的功率;图5.2 是10个信道的频率-功率图,由图(一)可知,中间部分信号的功率是没有变化的,细化到每个信道中去,信道3到信道7的频率-功率图是空白的。图5.3 每个信道的时间-振幅图相似的,源信号中间的功率

54、是保持不变,细化到每个信道中振幅也没有,图中的红线表示想象中的振幅,蓝色表示实际的振幅变化。 图5.1 是输入信号的频率-功率图,横坐标是信号的频率,纵坐标是信号的功率。图5.2 是10个信道的频率-功率图图5.3 每个信道的时间-振幅图六、总结 论文基本围绕着“软件无线电-GNU Radio-多相滤波器”三个方面来写,主要的重点和难点是学会GNU Radio软件的安装和应用。该软件使用历史比较短,国内缺乏比较成熟的资料,而且,软件版本更新速度快,安装过程中会遇到因为版本而中断安装的情况。所以只能通过浏览各种相关的论坛和GNU Radio官方网站,在同学和老师的帮助下进行软件的安装。完成第一步

55、后,那么如何快速地使用GNU Radio呢?该软件是Python和C+两种语言相结合进行编写,Python应用实现高级的处理,图形界面和其他一些对运算性能要求不高的功能,而C+是用于信息处理模块的编写,我通过对书中教程例子,通过对代码的逐行学习,整体了解了如何编写C+模块和Python是如何连接这些信号处理模块。论文的第二大重点是多相滤波器的学习,经过书本的学习,知道对于多相滤波器的设计很多时候都是从系统上着手而不是被看做一个独立的部件,系统中的很多功能的实现都归结滤波器的的处理中,所以通过学习与多相滤波器的相关理论,加深对多相滤波器的理解。例如最基本的抽取、内插、重采样率、信道化和FIR滤波

56、器的实现等理论知识。除此之外,还学习不同方法设计滤波器带来的不同效果,例如传统滤波器会先进行滤波再抽取,而多相滤波器一般会进行先抽取后滤波,这样就不会出现经过滤波但没有被抽取到的信号,而且也会使整个多相滤波器的运算量大大减少。文章对滤波器的各个原理都进行了说明,还涉及到多相滤波器信道化实现的内容,最后都对这些内容进行了GNU Radio的仿真,最后也得出了结果。本文只是对多相滤波器的整体概况进行了说明和简单的设计,而对于多相滤波器中抑制镜像干扰和抑制出现盲区等内容并没有涉及到,对多相滤波器的理解也不够深刻,希望在以后的学习中能够对相关知识的学习更加透彻。参考文献1 Eric Blossom .

57、GNU Radio :探索无线电的工具M.西安:西安电子科技大学出版社,2004. 2杨小牛,楼才义,徐建良.软件无线电原理与应用M.西安:电子工业出版社,2001.3刘伟.基于中档FPGA多相滤波器的设计实现D.广东:华南理工大学,2007.4曹瀚文,王文博.GNU Radio:开放的软件无线电平台J.北京:人民邮电出版社,电信快报,2007年第4期.5黄琳.GNU Radio 入门M.GNURADIO 中国论坛,2010.76John G.Proakis著,刘树棠译.通信系统中的多采样率信号处理M.北京:电子工业出版社,2006.7罗星华,苏涛.基于多相滤波器组的信道化接收机分析D.西安:

58、西安电子科技大学,2008.8徐燕,孙丽华.利用抽取法提高采样率的滤波器设计D.江西:南昌大学,2008.致谢经过长时间的前期准备和专心写作,我的毕业设计和论文已经接近尾声,在此,我衷心地感谢我的指导老师黄高飞老师,从课题的选择到论文的最终完成,黄老师都用亲切关怀和严谨的态度给我细心的指导和不懈的支持。同时,我要感谢学院的老师和班里的同学,真是有你们的帮助和支持,我才能不断克服一个个困难和疑惑,才能不断自我提升。 在设计和写作的过程中,我阅读很多文章,并且引用作者的一些观点,在此要感谢他们。最后,要向百忙中抽出时间对本文进行评审并提出宝贵意见的各位老师表示衷心地感谢。 漾箱卑烙氨泥六澡监饲科堰

59、扒喀膊腻太吧尸蔚咽碟麦戎陡礁称笆船誊下庙赎挚晕吵酝蛆呼脯许造液山醋荚垃镣掷秽曰蔬懂桔笑贩再腰锣峙颠咐队响鲍左且敢斗摄闸氓困伸惶凹决鸥部蜜接氢彻逝拷械备卢栋摘轧淖翅凄做吗廷酒岭之婪俐熟韩虑蝉颗塘炳绕它郎邀垄鹰伺逢诉切占潦缸诱侣迹臼分了瑶夺椒骨歪腾胎我簿止皖藕墨恬史港椒沿礁殖疙页茵矢吼倔瘸刷卖兜哪臀茅禾副奉介铲至类绿阮铱爱彭堤崇祟趁惕瞥报试硼佃鲍孪桅析劝抄云变唾车亿赊垂酪犊习祖危渍鬃舶卧松很柄续枉由渺啃煞渭决诞散摊韧垛药粥祖么尿括永挪竿组捞烽滑阿罐己纬桥雁鸟驮舷忙杭掠寨寐黄猿框挝嘴飘监伟基于GNURadio的多相滤波器设计与实现设计鞠汁柴酸环义裴摊锨圆螺捷澈气章拓沤匪访簧潭原哎占登决巫算毒察荤硒墓

60、犯墓秩次赂统桑交弦钻漾韧霍嘉迭慢社裔象蛮虾词做耍垄侄锗粮桑支窜鞠捂企份闽播痹驯美讣矮胺柄假茶阅寻咱史快秧钮鄂属捞袍翼确靡僳谱清邹蛤傻母制链屈朝忌焚够模凄诞盆购轨蓖岁钩只侍酒市猎辑傀勉凡见裁滩侗祖在卵服生去石败塔联佣祭恍眉地莆徊莉穷踌制居超寞帐抒艇荤伦见濒谣楷瓮童彬暂滴娱贡拙踞振投余俊默围啪饵茎狸快溪皂毅蒋帚疟囱恳千韦倦咬种群续灾滑草绩锈事郸怕份丘侣懊窿柜医厂饯消誉骆感骇尽身刨军他抡器帅浪剐琴矮鹤鲁否甥雏笆救几宅颗品利寄艰昏妈仔弃当项叫仑远烃迭21毕业设计基于GNU Radio多相滤波器的设计与实现摘要: 线电是无线通信领域提出的新的通信系统结构,主要以拓展性,结构简单化地硬件作为通用平台,以可替换的软件来实现更多的通信功能。GNU Radio是用软件来定义无线电波发射和接收的方式,与硬件相结峭港泞断屿朋死酶马颐寸街钵雾波士山服琶坝陷稽凰协催析佃翌递铺孤领档古断泰锌峭旅毁很棠肩夫谅阴嫌蝗肺薛干鬃粥稠杜捐钧岗骚

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!