基于软件无线电的调频广播接收机的设计_第1页
基于软件无线电的调频广播接收机的设计_第2页
基于软件无线电的调频广播接收机的设计_第3页
基于软件无线电的调频广播接收机的设计_第4页
基于软件无线电的调频广播接收机的设计_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要本设计要设计并实现一种基于软件无线电技术的调频广播也就是FM接收机,可提供稳定的信号接收,支持音频输出,以及灵活的功能扩展,以此契合现代通信系统对高效高性能接收设备的需求。本设计对调频广播接收机和软件无线电技术现状做了分析,指出传统硬件接收机存在的局限性以及软件无线电在信号处理领域的应用趋势。说明了调频广播接收机原理,覆盖信号调制与解调过程,以及软件无线电的核心概念和优势,想出了基于USRPB210和GNURadio的系统设计方案,详细描述了射频前端配置、带通滤波器设计、FM解调算法以及信号处理流程优化方法,实现了87.5MHz–108MHz的FM信号接收,支持频谱扫描和信号强度显示功能,保证接收灵敏度和动态范围。通过仿真实现和测试验证了系统性能,包括增益调整、滤波参数优化及解调算法改进,仿真结果表明系统性能满足设计指标,实现了音频输出、稳定信号接收及频谱分析功能。关键词:软件无线电,调频广播接收机,频谱扫描,信号强度显示

ABSTRACTThisdesignaimstodesignandimplementanFMradiothatisanFMreceiverbasedonsoftwaredefinedradiotechnology,whichcanprovidestablesignalreception,supportaudiooutput,andflexiblefunctionexpansion,soastomeettheneedsofmoderncommunicationsystemsforefficientandhigh-performancereceivingequipment.ThisdesignanalyzesthecurrentsituationofFMradioreceiverandsoftwaredefinedradiotechnology,andpointsoutthelimitationsoftraditionalhardwarereceiversandtheapplicationtrendofsoftwaredefinedradiointhefieldofsignalprocessing.ThispaperillustratestheprincipleofFMradioreceiver,coversthesignalmodulationanddemodulationprocess,andthecoreconceptsandadvantagesofsoftwaredefinedradio,andcomesupwithasystemdesignschemebasedonUSRPB210andGNURadio,describesindetailtheRFfront-endconfiguration,bandpassfilterdesign,FMdemodulationalgorithmandsignalprocessingprocessoptimizationmethod,realizesFMsignalreceptionfrom87.5MHzto108MHz,supportsspectrumscanningandsignalstrengthdisplayfunctions,andensuresreceivingsensitivityanddynamicrange.Thesimulationresultsshowthatthesystemperformancemeetsthedesignindicators,andrealizesthefunctionsofaudiooutput,stablesignalreceptionandspectrumanalysis.Keywords:Software-DefinedRadio,FMBroadcastReceiver,SpectrumScanning,SignalStrengthDisplay目录29962第一章绪论 [10]。FM调制原理调频也就是FM,属于一种调制方式,借助改变载波信号的频率来传送调制信号的信息,其中载波的振幅维持不变,调频信号的频率会依照调制信号的改变而发生变化,比如说,要是调制信号的幅度加大,那么载波频率会相应跟着增加,要是调制信号的幅度变小,载波频率也会相应跟着降低。假设载波信号为:其中,是载波振幅,是载波频率。调制信号为,调频指数为。调频信号可以表示为:这里,表示调制信号的积分,反映了调制信号随时间的累积变化对载波频率的影响。调频指数:调频指数表示调制信号的最大频率偏移量。它决定了调制信号变化时载波频率的变化范围。例如,如果调频指数为75kHz,调制信号的最大幅度变化会使载波频率在±75kHz之间变化。调制信号的影响:调制信号的变化率决定了载波频率的变化速度。调制信号的频率成分越高,载波频率的变化速度越快。调制方法有下边几种:直接调频法:通过改变VCO的控制电压直接调整振荡频率,实现调频。VCO输出频率与控制电压线性相关。调制信号作用于VCO控制端,使振荡频率随调制信号变化。间接调频法:先调相,再用积分电路将调相信号转换为调频信号。调相通过改变载波相位传递信息,调频信号频率变化通过调相信号积分实现。FM解调原理FM解调是将调频信号中的调制信号恢复出来的过程。因为调频信号的频率变化包含了调制信号的信息,所以解调的关键是检测频率变化并将其转换为调制信号。对于调频信号:解调过程是提取的变化率,即:这样就可以恢复出调制信号。解调方法有下边几种:相位鉴频法:通过测量相位变化来解调频率变化,将FM信号微分后,利用鉴相器检测相位变化,恢复调制信号。斜率鉴频法:调频信号通过特定滤波器后,幅度随频率变化。检测幅度变化可得到调制信号。锁相环鉴频法:由鉴相器、环路滤波器和VCO组成,VCO频率自动跟踪FM信号频率。锁定时,VCO频率与FM信号频率一致,鉴相器误差信号经环路滤波后得到调制信号。PLL鉴频法通过比较调频信号与VCO输出信号的相位,输出误差信号。环路滤波器平滑误差信号,VCO频率由控制电压决定。此方法解调精度高,适应宽频率范围,对噪声有抑制作用。系统组成与性能指标天线在接收射频信号时起着捕捉的作用,一般会处理87至108MHz频段的信号,信号经过下变频操作后,与本振信号进行混频,转变成10.7MHz的中频信号,这样就简化了后续处理,在解调阶段,中频信号凭借鉴频器等算法恢复为音频信号,并依靠滤波处理来保证音频的纯净度。音频信号驱动扬声器发出声音,实现了从无线信号到声音的转换,整个过程中的每个环节对性能都有关键影响。射频前端处理射频前端在调频广播接收机里占据着关键地位,主要承担着接收无线信号以及对其展开初步处理的工作,它的性能会直接对接收机的整体性能产生影响。天线会捕捉空间当中的调频广播电磁波信号,其中拉杆天线比较适合用于便携设备,而环形天线则适用于在固定位置进行接收,接收到的信号要经过放大以及滤波等处理,低噪声放大器可对天线所接收到的微弱信号加以放大,其采用特殊的晶体管工艺与电路设计来降低噪声,提升信号质量。带通滤波器会筛选出目标频段内的调频广播信号,滤除掉干扰,中心频率以及带宽参数要精确设置,这样才能覆盖整个调频广播频段,混频器会把放大且滤波后的射频信号和本振信号进行混频,将其转换为固定频率的中频信号,方便后续处理。中频处理与解调在中频处理阶段,会针对中频信号开展精细的处理工作,从中提取出承载着音频信息的基带信号,中频放大器的作用是将中频信号给予放大,同时补偿可能出现的损耗情况,以此来保证信号有足够的强度,而中频滤波器则是负责去除其中存在的干扰,保证信号的纯净程度,解调器可从调频中频信号里还原出原始的音频基带信号,借助数字鉴频算法可实现高精度的解调,有效减少失真现象的发生。音频处理与输出音频处理可把音频基带信号转化为声音信号,然后经由声卡输出,以此带来不错的听觉体验,音频放大器可对音频信号起到放大作用,驱动像扬声器或者耳机这样的负载,音频滤波器可以对音频频谱特性给予优化,将噪声以及杂波去除掉,音量控制模块可让用户对音频输出音量作出调节,以便适应不同的环境以及个人喜好。声卡会把数字音频信号转变为模拟信号,开展信号调理工作,驱使音频设备发出声音。频谱扫描与信号强度显示频谱扫描借助采样以及FFT算法来获取信号频谱信息,达成频谱扫描功能,信号强度显示是依据信号功率来计算强度的,凭借功率检测电路或者对采样信号幅度进行分析获取信号功率,最终以恰当的方式将其展示出来。关键性能指标灵敏度具体而言就是接收机可检测到的最小信号强度,当接收机的灵敏度越高时,它就越有捕捉微弱信号的能力,可实现接收范围的扩展。选择性,意味着接收机从众多信号里筛选出所需信号的那种能力,有优秀选择性的接收机,可对其他电台以及干扰信号进行有效抑制,以此提升接收的清晰度。音质包含了声音的清晰度、保真度以及立体声效果等多个方面,高品质的调频广播接收机,应当可精准地还原原始音频信号,让听众享受到清晰且逼真的声音体验。频率稳定性方面,接收机的本地振荡器要维持稳定的频率,目的在于保证正确的混频以及信号处理,要是频率稳定性不足,那么接收信号就可能会出现漂移、失真等问题。软件无线电技术软件无线电(SoftwareDefinedRadio,SDR)技术,作为一种前沿的无线通信技术,为高清音频传输提供了一种创新的解决方案。SDR技术通过软件来模拟硬件功能,使得通信设备能够摆脱硬件演进的限制。其核心理念是尽可能地将A/D转换器置于天线附近,并利用数字信号处理软件取代传统的模拟处理流程。软件无线电的成功实现在很大程度上依赖于硬件技术,即半导体技术的进步,同时功能模块和软硬件之间的接口也决定着软件无线电技术的发展。尽管如此,仍然可以相信软件无线电技术无论是对军方的协同作战,还是对第三代移动通信,乃至未来的第四代技术都将是切实可行的方案。软件无线电在军用领域和民用领域都有着广阔的应用前景REF_Ref31268\r\h[5]。软件无线电技术展现了极高的灵活性和可扩展性,能够迅速适应多样化的通信标准和应用场景REF_Ref6757\r\h\#'[0[11-REF_Ref6763\r\h\#'012]。软件无线电架构操作系统方面,一般会采用Linux操作系统,这是因为它有开源的特性,并且可定制性较强,可对软件无线电所需的各类开发工具以及驱动程序给予良好的支持。信号处理软件库中,像GNURadio这类软件,它可提供丰富多样的信号处理模块与工具,借助图形化界面或者编程的方式,来搭建信号处理流程,达成调制解调、滤波以及频谱分析等功能。应用层软件是依据不同的通信需求进行开发的,比如实现无线语音通话、数据传输以及广播接收等功能的软件,其可以借助底层的信号处理软件库来完成具体的信号处理任务。软件无线电软件架构如图2-2所示:图2-SEQ图\*ARABIC\s12软件无线电软件架构GNURadio与USRP平台特性GNURadioGNURadio是专业领域中的首选工具,因其功能强大和社区资源丰富而备受青睐,广泛应用于信号处理和无线通信研究。GNURadio通过图形界面用户搭建GRC流图实现调频广播基带信号解调。解调模块框图如图2-3所示:图2-SEQ图\*ARABIC\s13GNURadio中解调模块框图开发便捷性方面:GNURadio是基于Python和C++构建的,Python语法有简洁的特点,不用进行编译操作,对于快速开展开发工作而言颇为适宜,GRC作为图形化开发环境,使得开发流程得到了简化,成本与资源方面:GNURadio是免费开源项目,它可支持多种硬件平台,像是USRP、RTLSDR、HackRF等,这些硬件成本不高而且容易获取。社区与技术支持方面:GNURadio有一个规模庞大且活跃的社区,该社区能提供丰富的文档、示例代码以及教程,开发者和维护者会积极给予技术支持,GNURadio提供开源的数据流块库和示例代码,用户可直接进行调用,以此提升开发效率,灵活性与可扩展性方面:GNURadio的设计有模块化特点,用户可依据自身需求挑选合适的数据流块来构建系统,如此一来系统有灵活性又拥有可扩展性。GNURadio允许借助软件定义无线电功能,提升系统的灵活性以及可重构性,学习与教育价值方面:GNURadio易于学习且便于教学,是用于教育数字信号处理技术的理想工具,它可帮助学生直观地分析信号,加深对通信原理的理解,GNURadio的开放性鼓励全球技术人员展开协作创新。用户可以自由地对代码进行修改和开发,推动技术不断进步。USRP灵活性和可重构性方面,USRP属于软件定义无线电设备,借助软件配置来达成无线电功能,像是频率、带宽以及调制方式等,用户可对软件参数给予调整,迅速切换通信协议或者频段,而无需更换硬件,它的这种灵活性适用于多种无线通信场景,覆盖移动通信、卫星通信、雷达系统以及认知无线电等。性能和功能较为强大,USRP采用高质量的ADC和DAC,以此保证信号数字化和模拟化进程中的质量,达成高性能的数据传输与处理,它支持多通道配置,借助连接多个设备构建复杂的无线通信系统或者进行并行处理,提升系统的处理能力与灵活性,众多USRP型号含有FPGA,用于实时的、计算密集型的信号处理任务,减轻主机计算机的负担。开放性与兼容性上,USRP和GNURadio等开源软件平台实现集成,提供丰富的信号处理库以及工具,方便开发自定义的无线电应用,USRP还提供开源通用硬件驱动,支持多种编程语言以及软件无线电框架来控制硬件和信号处理,部分USRP型号硬件开放,提供原理图,为用户的定制和开发给予更多空间。成本与性价比方面,USRP价格不高,有出色的扩展能力以及广泛的软件兼容性,有较高的性价比,它支持多种子板和天线接口,可依据需求选择硬件扩展功能,提升适用性,社区与技术支持方面,USRP拥有庞大且活跃的用户和开发者社区,能提供丰富的资源与支持,社区成员包含科研人员、工程师以及业余无线电爱好者等,他们分享经验、代码和解决方案,帮助新用户入门并解决问题。USRP由于灵活性和可编程性,在无线通信、信号处理、频谱监测等教学和科研中得到广泛应用,为学生和研究人员提供了理想的实验平台,可快速验证新理论、算法和协议,应用场景广泛,USRP大多时候用于通信原理实验课,比如调制解调、信号传输与接收等实验,帮助学生理解无线通信的基本原理和技术。研究人员利用USRP探索新的通信技术和协议,像MIMO、认知无线电、频谱感知等,USRP用于模拟通信环境和场景,协助开发者发现并解决潜在问题,加快产品上市进程,用于模拟和测试无线网络场景,为无线网络的研究和发展提供支持,用于电子战系统,如信号干扰、情报收集等,以适应复杂的战场环境。还可用于GPS模拟、人体姿态识别、航天信号接收等场景。系统设计与平台选型需求分析与指标分解需求分析接收机要拥有核心功能,音频输出方面,接收机要支持音频输出,把FM信号转化为声音,借助音频设备进行播放,它需要集成高质量音频解码模块以及输出电路,以此保证音频信号可被准确还原并且实现高质量播放,稳定接收并解调FM信号这一功能上,接收机要稳定地接收FM信号,运用先进的接收技术以及解调算法,保证在各种环境下都可以稳定接收并解调信号。频谱扫描功能上,接收机应有频谱扫描能力,自动对频率范围进行扫描,实时显示频谱图或者信号强度的变化,帮助用户迅速定位目标信号,了解电磁环境状况,信号强度显示方面,接收机要实时展示FM信号强度,借助直观的界面让用户知晓信号质量,调整接收机位置以及天线方向,获得最佳接收效果。在实现核心功能的需要注意一些要点,要保证接收机有稳定性和可靠性,防止长时间使用后出现故障或者性能降低的情况,要优化用户界面以及操作流程,保证用户可轻松上手并且快速掌握使用方法,还要提供完善的售后服务以及技术支持,保证用户的问题可及时得到解决。指标分解接收频率范围方面,该设备所覆盖的范围是从87.5MHz至108MHz,其中囊括了商业电台以及特殊频率,可为用户提供种类较为丰富的广播内容。灵敏度上,有100dBm灵敏度的该设备可以保证即便处于信号较弱的环境当中,依然可实现稳定接收,这种特性使其适用于复杂电磁环境以及偏远地区。动态范围不少于90dB,在这样的动态范围内,设备可保持音频输出处于稳定且清晰的状态,可有效防止出现过载失真的情况,适应音量的变化。音频输出信噪比大于等于60dB,在此情况下,背景噪音可得到良好控制,使得音频输出纯净又清晰,可提升用户的听觉体验。软件无线电方案对比软件平台选型GNURadioGNURadio作为一个软件平台,主要用于构建无线电应用当中的信号处理工作,它有丰富多样的信号处理模块库,编程人员可借助连接这些模块去构建完整的无线电系统,这些模块是运用C++来实现的,而模块之间的连接以及流向图的搭建是依靠Python完成的,GNURadio有着直观的用户图形界面,有超过100个开源的信号处理模块可供下载以及维护。其应用场景十分广泛,涉及了无线通信、雷达、无线电天文学等诸多领域。其优势在于开源免费,社区支持强大,用户可以通过软件定义无线电功能。然而,性能受限于计算机硬件,特定无线电通信标准可能需要自行开发应用程序REF_Ref16997\r\h[13-REF_Ref6936\r\h16]。SDR++SDR++是一款有跨平台特性的开源软件无线电软件,它采用模块化方式进行设计,可支持多VFO功能、拥有广泛的硬件兼容性、实现SIMD加速的DSP处理、提供跨平台支持以及达成全频谱水瀑布更新,其应用场景覆盖了业余无线电通信、教育与科研、专业信号处理等多个领域。SDR++的优势体现于它有无冗余且简单易用的用户界面,能带来良好的用户体验,并且有着精良的技术架构设计,然而作为一个相对较新的项目,SDR++在社区支持以及第三方插件方面,或许不像GNURadio那样丰富。SDR这是一款专门针对Windows系统设计而成的图形界面,它可支持多种SDR设备,像RTLSDR、NooElecNESDR等这类低成本方案都在其支持范围内,SDR对于业余无线电爱好者以及预算有限的用户来说较为适用,可用来接收和分析无线电信号,它有界面友好、容易上手的特点,并且可支持多种低成本SDR设备。不过SDR的功能相对比较简单,在专业性方面比不上GNURadio和SDR++。MATLAB&SimulinkMATLAB是一种专门用于算法开发、数据分析、可视化以及数值计算的程序设计环境,Simulink则是一个可对动态系统开展多域建模与模型设计的平台,这两者可以借助USB3.0接口连接USRP等软件无线电硬件,提供无线电回路设计以及建模仿真的环境。其应用场景囊括学术研究、无线通信系统开发与实验、无线网络研究等诸多领域,MATLAB和Simulink的优势体现在有强大的算法开发以及数值计算能力,以及图形化的建模和仿真环境,学习起来较为容易,使用也比较方便,不过它们需要购买商业许可证,成本相对较高。AirspySDK该软件是专门为AirSPY系列SDR量身打造的,可让用户较为便捷地对无线电信号展开处理与分析工作,其应用场景主要是和AirSPY系列SDR协同使用,以此来实现无线电信号的接收以及分析,它的优势体现在针对特定硬件做了优化,性能表现不错,不过它也存在不足,那就是仅适用于AirSPY系列SDR,在通用性方面比较差。HackRFHackRF官方所提供的图形用户界面软件,可用来对HackRFSDR设备实施控制以及开展调试工作,该软件的应用场景主要是和HackRFSDR设备搭配起来使用,实现信号的接收、发送以及调试功能,它的优势体现为与HackRF硬件联系紧密,而且操作较为简便。不过其功能存在一定限度,主要是针对HackRF设备而言的。硬件平台选型目前,教学实验中常见的软件无线电硬件平台主要有USRP、HackRF、RTL-SDR等,射频范围很宽,均可覆盖从50MHz到6GHz的范围REF_Ref16270\r\h[8]。USRP:USRP属于高性能SDR平台,主要应用于无线通信研究、教育以及军事领域,其频率覆盖范围为1MHz至7.2GHz,可提供高达400MHz的带宽,可契合复杂信号处理的需求,它借助以太网或者USB与主机进行连接,还支持LabVIEW、MATLAB、GNURadio等多种开发工具,很适合用于高级通信系统的开发与测试工作。其多通道和灵活硬件架构使其成为无线通信研究和教育的理想选择,尤其适合高性能和复杂信号处理需求REF_Ref16997\r\h[13,REF_Ref16270\r\h17]。HackRF:HackRF是由GreatScottGadgets公司推出的一款开源软件定义无线电也就是SDR平台,它所支持的频率范围是1MHz至6GHz,采样率为20Msps,比较适合开展无线信号监测以及分析工作,HackRF的硬件与软件都是开源的,用户可自由进行修改与扩展,它在安全研究以及无线信号实验里颇受青睐。借助GNURadio等工具,用户可较为轻松地实现各类无线信号处理功能,让其成为研究人员与开发者的理想之选,特别适合那些需要灵活信号处理以及开源支持的应用场景。RTL-SDR:RTL-SDR是一款依托RealtekRTL2832U芯片打造的低成本SDR接收器,其最初被设计用来接收数字电视信号,不过后来在各类无线电通信应用里得到广泛运用,它所支持的频率范围是64MHz至1.7GHz,成本不高,而且容易获取,RTL-SDR可支持多种操作系统以及像GNURadio和Gqrx这样的开源软件,对于入门级用户与业余爱好者而言较为合适。它可当作全波段收信机来使用,也可以作为频谱分析仪,甚至还可以用于接收气象卫星图像以及开展射电天文学研究。RTL-SDR是理想的入门级SDR平台,尤其适合广播接收、业余无线电和简单的信号分析应用场景REF_Ref17233\r\h[18]。CPU/GPU:像英特尔的x86系列处理器,它可运行各种各样的软件算法,不过其处理速度相对而言比较慢,大多时候被应用于控制以及部分信号处理任务当中。DSP:德州仪器所推出的TMS320系列产品,其设计是专门面向数字信号处理领域的,该系列有高速乘法累加运算的能力,可以较高效率去完成如滤波、调制解调等各类信号处理算法。FPGA:像赛灵思推出的Virtex系列以及阿尔特拉推出的Stratix系列产品,借助编程手段可达成硬件逻辑功能的实现,有并行处理方面的能力,可对大量数字信号给予快速处理。常用于实现实时性要求高的信号处理功能,如数字下变频、上变频等REF_Ref1179\r\h[19]。系统实现与测试开发环境搭建硬件连接与配置USRPB210设备USRPB210采用XilinxFPGA和AnalogDevices射频芯片的组合架构,具有强大的数字信号处理能力与灵活的射频配置特性。它的射频前端支持的频率范围能够完全覆盖87.5MHz-108MHz调频广播频段,并且具有较高的灵敏度和动态范围潜力,可以满足-110dBm灵敏度和不小于90dB动态范围的指标要求。设备配备TX和RX两个射频通道,在本接收机的设计中主要使用RX通道来接收信号。天线挑选适用于87.5MHz至108MHz频段范围的全向天线,把天线借助射频同轴电缆连接至USRPB210的RX2射频接口之处,要保证天线与USRPB210的连接处于紧密状态,以此来降低信号所产生的损耗,可依据实际的使用环境状况对天线的高度以及方向作出调整,避开周围障碍物给信号接收造成的遮挡情况,并且降低电磁干扰对信号产生的影响,实现对接收效果的优化。音频输出设备在计算机端,需确保音频驱动程序正确安装,能够将GNURadio处理后的音频信号通过声卡输出到外部音频设备,保证音频输出信噪比≥60dB。将解调后的音频信号转换并放大后输出到扬声器或耳机。GNURadio环境部署安装GNURadio软件,要保证该软件的版本可与USRPB210的驱动程序相互兼容,还需要安装UHD驱动,其作用是达成计算机与USRPB210之间的通信以及对设备进行控制。在Linux系统(如Ubuntu)上安装GNURadio和UHD(USRPHardwareDriver)。安装Python开发环境以及如NumPy、Matplotlib等相关库,这些库可用于信号处理以及界面开发方面,对GNURadio的工作环境给予配置,设置USRPB210的设备地址以及连接参数,以此保证GNURadio可准确识别并控制USRPB210设备。依靠USB3.0把USRPB210连接到运行GNURadio的计算机上。运用Python的PyQt等相关库去开展图形用户界面也就是GUI的开发工作,将频谱扫描结果、信号强度以及当前接收频率等各类信息给予呈现,于GUI里设置频率调节、音量调节等功能,用户可借助界面操作对接收机的工作状态加以调整。GRC搭建功能模块与实现打开GNURadioCompanion(GRC)软件,界面中左侧是可用的模块库,包括信号源、接收器、滤波器、调制解调器等。模块定义选项设置(Options):在这一部分当中可让用户去配置流程图的全局选项,其中包含了像是流程图标题以及输出语言等一系列关键要素,这些设置会对流程图的展示情况以及输出格式产生影响,构建起一个统一的配置平台,方便用户开展定制化调整工作。变量定义(Variable):变量定义属于构建以及实施流程图进程里颇为关键的步骤,借助设定如采样率、增益等变量,用户可精准把控流程图之中的参数数值,对信号处理流程给予精细调节,这些变量的配置会直接对流程图的执行成效以及输出质量产生影响。QTGUIRange:让用户得以在图形用户界面当中创建滑动条,借助滑动条在特定数值区间内对变量值加以调整,这样直观的调整办法使得变量设定过程得到简化,有效提升了信号处理任务的效率以及精确度。QTGUISink:QTGUISink是GNURadio里常用的可视化显示模块,其可用于显示信号频谱,还可展示信号强度,借助配置不同的显示类型,QTGUISink可以波形图、柱状图、数值显示等多样形式呈现信号强度,比如采用波形图的形式来显示信号强度随时间的变化趋势,这方便用户去观察信号强度的动态变化情况,以数值形式直接显示信号强度的具体数值,如此便于精确分析信号强度大小。它支持用户与显示界面开展交互操作,像缩放、平移显示区域以及调整显示参数等,使用户可以更灵活地查看信号强度的细节信息。QTGUILabel:在图形用户界面当中,QTGUILabel发挥着展示文本标签的作用,其可对界面上的控件给予标识,提供相应的说明信息或者显示状态信息,借助这些标签,用户界面的可读性以及易用性得到了提高,可用户在操作期间更清楚地理解每个控件所有的功能以及所处的状态。函数探针(Functionprobe):函数探针被用于对指定信号的函数值进行监控以及展示,借助这一控件,用户可以实时观察信号在经过特定函数处理之后所呈现的结果,这对调试和优化信号处理流程有着很大的帮助,它提供了一种直观的途径来观察信号处理的效果,能帮助用户更深入地理解信号处理的过程。Python模块(PythonModule):Python模块能让用户在流程图里执行Python代码块,Python作为一门功能强大的编程语言,有着丰富的库与工具,可用于复杂的信号处理或者控制逻辑,借助执行Python代码块,用户可以实现更灵活且强大的信号处理功能,契合各种复杂应用场景的需求。信号强度阈值检测defif_power(power,throttle):ifpower>=throttle:returnfloat(0)else:returnfloat(1)这段程序定义了一个名为if_power的函数,它接收两个参数power和throttle,并根据power值是否大于或等于throttle来返回不同的浮点数值。函数定义:if_power(power,throttle)接受两个参数:power:代表当前信号强度或功率值。throttle:代表设定的阈值。条件判断:如果power≥throttle(即信号强度超过阈值),函数返回0.0否则(信号强度低于阈值),函数返回1.0。数据类型转换:使用float()确保返回值是浮点数类型。这个函数作为一个简单的阈值检测器,用于控制信号处理流程中的某些环节,在频谱扫描中标记信号。频谱扫描f_low=87e6f_high=108e6rx_freq=f_lowstep=100e3defsweeper(prob_level):globalf_low,f_high,rx_freq,stepifprob_level:rx_freq+=stepifrx_freq>=f_high:rx_freq=f_lowreturnrx_freq这段程序实现了一个基础的频谱扫描器,它能够在87.5MHz至108MHz的FM广播频段内执行频率步进扫描。sweeper函数充当频率扫描控制器的角色,依据输入的触发信号(prob_level)来调节接收频率(rx_freq),使其在FM频段内逐步移动。其主要功能是自动遍历FM频段,检测并记录信号的强度,从而实现频谱监测。频率范围设定如下:f_low=87e6:起始频率为87MHz(对应FM广播频段的下限87.5MHz,可能是笔误)。f_high=108e6:终止频率为108MHz(对应FM广播频段的上限)。扫描控制参数包括:rx_freq:当前接收频率,初始值设为f_low。step=100e3:频率步进值为100kHz(鉴于FM频道间隔通常为200kHz,此处设置为半频道间隔以提升扫描的精确度,也可以继续缩小频率步进,更加精确的锁台)。FM信号接收在GNURadio中添加USRPSource模块,设置接收频率范围为87.5MHz-108MHz,根据信号处理需求合理设置采样率。调整USRPSource模块的增益参数,以优化信号接收的灵敏度和动态范围。配置设备的接收通道为RX2通道,确保正确接收射频信号。UHD:USRPSource参数设置如图4-1所示:图4-SEQ图\*ARABIC\s11UHD:USRPSource参数设置中心频率:设置为变量‘freq’,初始值为87.5MHz。采样率:设置为960KHz。增益:设置为变量‘gain’,创建滑块,根据信号强度调整。天线:选择合适的天线端口,例如RX2。FM信号解调使用FM解调算法模块对滤波后的中频信号进行解调。在GNURadio中,可选择合适的FM解调算法,如鉴频器解调算法,并根据信号特点调整解调参数,如鉴频器灵敏度、带宽等,将中频信号转换为音频信号。当用户通过GUI选择一个FM信号的频率时,调整USRPB210的中心频率到该频率,并开始接收信号。使用FM解调模块对信号进行解调,提取音频信号。FM解调模块流图如图4-2所示:图4-SEQ图\*ARABIC\s12FM解调模块流图RationalResampler乃是用于处理不同采样率音频信号的模块,该模块可保障音频处理设备能把接收到的多种采样率信号,转化为统一的采样率,保证系统正常运作以及信号处理的精确性,RationalResampler模块在信号发送之前,会将其采样率转变为适宜传输的速率,而在接收端又会转换回设备可处理的采样率,以此保证通信链路中信号的准确传输与处理,它可调节自身采样率来契合处理需求,有利于数据处理、分析以及存储。RationalResampler参数设置如图4-3所示:图4-SEQ图\*ARABIC\s13RationalResampler参数设置插值:设置为变量‘audio_rate*audio_interp’,48kHz*4。WideBandFMReceive,也就是宽带调频接收模块,主要是用来接收宽带调频信号的,并且要对该信号开展解调处理工作,最终把调制在载波之上的原始信号给还原出来。在传统的调频广播体系当中,广播电台会把音频信号实施宽带调频操作,接着以特定的频率发射出去,WideBandFMReceive模块有接收这些广播信号的能力,经过解调处理之后,会把音频信号输出至收音机之类的播放设备,让用户可收听广播节目。WideBandFMReceive参数设置如图4-4所示:图4-SEQ图\*ARABIC\s14WideBandFMReceive参数设置音频输出将FM解调模块输出的音频信号连接到AudioSink模块,设置音频采样率和输出格式,使其与计算机的音频设备兼容。通过AudioSink模块,音频信号得以输出至外部音频设备,从而实现声音的播放。将解调后的音频信号通过音频解码芯片和放大器输出,确保音频输出的信噪比≥60dB。音频输出模块流图如图4-5所示:图4-SEQ图\*ARABIC\s15音频输出模块流图AudioSink参数设置如图4-6所示:图4-SEQ图\*ARABIC\s16AudioSink参数设置采样率:设置变量为`audio_rate`,48kHz。MultiplyConst模块:在此处可用来调节音量,借助滑块控件可实现动态调整,在实际开展信号处理工作时,输入信号的幅度有可能出现过大或者过小的情况,无法契合后续处理模块的相关要求,MultiplyConst模块可以把输入信号乘上一个指定的常数,以此达成对信号幅度的线性缩放,比如当接收端收到的信号幅度较为微弱,为了方便后续的解调、滤波等处理工作,可借助该模块把信号幅度放大到适宜的水平,相反的,如果信号幅度过大,可能会超出后续模块的处理范畴,造成信号失真,这种时候可以运用该模块对信号进行衰减。MultiplyConst:设置为1。频谱扫描和信号强度显示借助GNURadio的流图设计工具来构建信号处理流程,一开始先对采集得到的信号实施FFT变换,以此达成频谱扫描功能,扫描87.5MHz至108MHz这个范围之内的信号强度情况,接着添加功率检测模块,用于对接收信号的功率展开实时计算,随后把功率值转换成为dBm单位并且实时显示出来,这样能让用户直观地了解接收信号的强度状况。借助GNURadio的频谱显示模块可实时呈现接收信号的频谱图,对频谱显示模块做细致参数配置,像设定合适的频率范围、分辨率以及更新速率等,以此保证用户可清晰观察到信号的频率分布,有效执行频谱扫描功能。若要达成信号强度的可视化呈现,首要之事便是计算信号的强度数值,借助ComplextoMagSquared模块,可把复数信号转变为强度值信号,此模块承担着对每一个信号样本展开强度值计算的工作,随后着手计算平均功率,把信号强度给予展示。频谱扫描和信号强度显示模块流图如图4-7所示:图4-SEQ图\*ARABIC\s17频谱扫描和信号强度显示模块流图直流阻断器(DCBlocker):该模块专门用于移除信号里的直流分量,所谓直流分量,指的是信号当中的恒定部分,这部分有可能对信号处理造成干扰,直流阻断器借助特定算法,可以有效地将这些不必要的直流分量过滤掉,以此保证信号的纯净程度和精确程度。串流转向量(StreamtoVector):该模块有一项关键作用,即将持续的串流数据转化成向量数据,这一转化对于信号处理而言意义重大,能让数据以一种更为条理化且有序的形式得以处理,经过向量化处理的数据,在后续进行分析与处理时会更加便捷,比如开展快速傅里叶变换操作。快速傅里叶变换(FFT):快速傅里叶变换是一种能对信号频谱展开分析的算法,有较高效率,FFT模块一般会处理连续的采样数据流,把输入信号划分成多个固定长度的数据块,这些数据块大多时候被称作帧或者向量,每个块含有一定数量的样本点,紧接着,FFT算法针对每个数据块开展计算,把时域信号转变为频域信号。此转换过程覆盖将信号分解成不同频率的正弦波与余弦波的组合,还要计算每个频率分量的幅度以及相位,FFT的输出以复数形式呈现,其中复数的实部对应余弦波的系数,虚部对应正弦波的系数,以此全面呈现每个频率分量的幅度和相位信息。复数转幅度(ComplextoMag):该模块所有的功能是把复数信号转变为幅度信号,在信号处理领域当中复数信号一般含有实部以及虚部,实部与虚部分别代表着信号的余弦波成分与正弦波成分,借助把这些复数转化为幅度信号,可以更为直观的方式去理解以及分析信号的强度大小情况。积分(Integrate):该模块针对信号开展积分操作,此乃信号处理里常见的操作方式,主要用于计算信号在某段时间范围内的能量累积情况,依靠积分可帮助知晓信号的总能量,这对诸多信号处理应用而言颇为关键。对数(Log10):该模块有对信号取对数的功能,其目的在于呈现对数刻度的频谱图,对数刻度可更为有效地呈现信号的动态范围,当信号强度出现较大变化的时候。最大值(Max):该模块的作用是对向量里的最大值展开计算,于信号处理领域而言,寻得最大值可帮助知晓信号的强度以及范围。QTGUI数值接收器(QTGUINumberSink):该模块有在图形用户界面也就是GUI里呈现输入数据流数值的功能,它可于一个简易的文本框当中呈现数据流里的数值,并且还可有选择地展示出一个条形图,所显示的数值可以是输入流的平均值,若处于这种情形下,所有接收到的数据项都会被用来进行平均计算。探测信号(ProbeSignal):该模块用于监控指定信号的值。当接收机对探测信号进行频谱扫描时,可以直观地验证频谱显示的准确性;通过检测探测信号的强度,可以校准信号强度显示模块,确保其输出数据真实反映信号的实际强度。信号源(SignalSource):此模块的功能是生成特定波形的信号源,如正弦波。信号源是信号处理系统的基础,它提供了进行各种信号处理操作所需的原始信号。系统测试与分析测试方案设计基于上一节所讨论的内容,已经成功地绘制出了一个完整的GRC流图,这个图表详细地展示了整个流程的各个阶段以及它们之间的关系。如图4-8所示:图4-SEQ图\*ARABIC\s18接收机完整GRC流图通过将USRPB210设备、电脑以及天线进行连接,如图4-9和图4-10所示:图4-SEQ图\*ARABIC\s19USRPB210与电脑连接示意图图4-SEQ图\*ARABIC\s110USRPB210与天线连接示意图运行GNURadio中的GRC流图,等待加载后如图4-11所示:图4-SEQ图\*ARABIC\s111GRC流图运行界面FMFrequency:用于显示当前频率。MaxPower:用于显示当前最大信号强度。volume:用于调节声音大小。gain:用于调节增益大小。freq:用于调节频率大小。根据实验运行的结果,可以明确地观察到,本次设计的接收机具备了稳定接收并解调调频(FM)信号的能力,并且能够支持音频的输出功能。除此之外,该接收机还实现了频谱扫描的功能,能够对信号的频谱进行有效地分析和展示。同时,它还具备了信号强度显示的功能,可以直观地向用户展示当前信号的强度水平,从而帮助用户更好地调整接收机以获得更佳的接收效果。性能指标验证接收频率范围验证接收频率范围是调频广播接收机的基本指标之一,本设计要求覆盖87.5MHz至108MHz的频段。可以使用信号发生器产生不同频率的测试信号,逐步从87.5MHz开始,逐个频率点向上扫描至108MHz。在每个频率点上,通过频谱分析仪观察接收机的接收效果,确保在整个频段内都能稳定接收信号。在整个频段内接收机都能正常工作,且没有出现频率盲区,接收频率范围指标合格。灵敏度验证灵敏度是衡量接收机在低信号强度下工作能力的重要指标,本设计要求达到-110dBm。测试灵敏度时,同样需要借助信号发生器。将信号发生器的输出频率设置为接收机的中心频率,例如95MHz,然后从较高的功率开始,比如-50dBm,逐步降低信号发生器的输出功率。在每个功率点,观察接收机的解调输出信号质量,比如音频输出是否清晰。当降低到-110dBm时,接收机仍能正常解调信号,且音频输出清晰可辨,灵敏度指标合格。动态范围验证动态范围反映了接收机在处理强弱信号时的能力,本设计要求达到90dB以上。测试动态范围时,先将信号发生器的输出频率设置为接收机的中心频率,输出功率设置为较高值,比如0dBm,确保接收机能够正常接收信号。然后逐步降低信号发生器的输出功率,直到接收机的输出信号开始出现失真或无法解调。记录下接收机能够正常解调信号的最高输入功率和最低输入功率,两者的差值就是动态范围。差值大于或等于90dB,动态范围指标合格。音频输出信噪比验证音频输出信噪比是衡量音频信号质量的关键指标,本设计要求达到60dB以上。使用信号发生器产生一个标准的音频调制信号,比如1kHz的正弦波,将其调制到接收机的中心频率上,然后将信号发生器的输出功率设置为接收机能够正常接收的功率,例如-80dBm。通过音频分析仪测量接收机音频输出的信噪比。如果测量结果达到60dB以上,音频输出信噪比指标合格。问题与优化问题与解决办法​在安装Ubuntu操作系统期间,遭遇了不少技术难题,像系统安装时出现黑屏状况、计算机死机,以及安装过程中提示找不到硬盘、无法识别USB设备等情况,为应对这些难题,多次更换新的U盘,制作启动盘时认真挑选了正确的镜像文件,保证安装过程中设置了正确的分区类型以及目标系统类型,比如计算机若支持UEFI模式,那就选择GPT分区。另外还进入计算机的BIOS设置界面,保证BIOS更新到最新版本,并在BIOS中关闭安全启动功能,防止与Ubuntu操作系统安装过程产生兼容性问题,为方便学习与操作,本设计选用了容易上手的软件平台GNURadio,初步搭配了硬件平台威视锐Y430,在尝试理解威视锐YunSDR和GNURadio的开发指南时,发现其中有些步骤描述不清晰,部分资料也不好查找。虽说YunSDR提供了一套模块化解决方案,但没找到相应资源,致使本设计无法顺利调试实验箱,幸好在学校实验室帮助下,成功借到了更适合本设计的USRPB210,为设计提供了更好的硬件支持,起初,本设计打算实现自动搜台和自动存储功能,来提升电台信号的接收效率。不过由于对GNURadio软件掌握程度有限,在调整和优化时碰到了一些技术难题,设计时发现接收到的电台信号中噪声过大,影响了信号质量和清晰度,为解决此问题,曾尝试依靠判断信号强度决定何时停止搜台,可这种方法过于机械,缺乏灵活性,而且因对GNURadio模块中的信息存储模块了解不够,设计时尝试将指定电台频率正确存储到文件夹中遇到险阻。尽管投入了大量精力和时间,最终还是没能成功实现这一功能,之后会继续深入研究GNURadio软件,寻找更多学习资源和帮助,以便克服这些挑战,实现自动搜台和存储功能。设计优化调整设备参数:借助自动增益控制即AGC可动态调节USRPB210的射频与中频增益,以此来平衡信号接收的灵敏度并且防止出现过载情况,开展分段增益测试,绘制增益同信噪比也就是SNR的关系曲线,确定最佳增益范围,射频前端配置方面要挑选适宜目标频段的天线,启用低噪声放大器也就是LNA,并且依据信号带宽比如FM信号的200kHz来设置恰当的采样率比如512kHz,充分运用12位ADC的动态范围减少量化噪声,提高信号接收的质量。优化滤波参数:对带通滤波器的带宽、截止频率以及阶数等参数加以调整,提高对干扰信号的抑制能力,减少信号在滤波进程中的损耗与失真,在设计带通滤波器时,带宽应当略宽于信号带宽比如220kHz,精确设定截止频率以抑制邻频干扰,推荐采用6阶FIR或者IIR滤波器比如Butterworth型,兼顾滚降陡度与计算效率,控制通带波动小于0.5dB以及群延迟来降低信号失真,可以借助GNURadio的滤波器设计工具进行实时调整。改进解调算法:尝试不同的FM解调算法或者对现有解调算法的参数给予优化,提升解调的准确性与稳定性,降低音频信号的失真程度,优化现有FM解调算法比如相位差分法或锁相环的参数,例如把相位步长设为信号带宽的1/10,或者调整PLL环路带宽为信号带宽的1/20来提高噪声鲁棒性,同时可以尝试新算法,如基于DFT或卡尔曼滤波的解调方法,结合去加重滤波截止频率约2.1kHz来提高音频保真度。优化软件流程:对GNURadio里的信号处理流程进行优化,减少不必要的处理环节,提高系统的运行效率和实时性,合理分配计算机资源,避免因资源不足致使信号处理延迟或者丢帧现象,精简GNURadio信号处理流程,删除冗余模块,合并简单处理步骤,在早期进行下采样以降低计算量,依靠调整缓冲区大小比如1024或2048、启用多线程以及设置进程优先级,优化实时性并减少延迟。其他功能实现:依靠Python开发新模块比如RDS解码、立体声解调、信号记录与回放、自动频率控制并集成到GNURadio,遵循标准接口保证兼容性,利用gr_modtool生成模块模板并借助pytest验证功能,提升系统扩展性与维护性,综合实施上述优化后,系统会在信号质量、干扰抑制、解调精度、运行效率以及功能多样性方面有所提升,建议优先优化设备参数与核心算法,再逐步扩展功能,并借助性能测试框架持续验证效果。结束语SEQequ\r\hSEQchap\h经济性、安全与环境影响分析GNURadio所有的开源免费特性可有效降低开发成本,其模块化架构使得构建系统变得更加便利,USRPB210硬件平台可支持宽频段,借助软件重配置可以减少专用设备需求,降低硬件成本,即便如此,USRPB210和高性能计算机的采购费用依旧需要纳入考量范围。GNURadio提供了支持高级加密的算法库,USRPB210硬件滤波设计可抵御干扰,然而开源代码可能存在安全漏洞,网络连接同样需要进行保护,定期更新软件、实施权限管理以及进行网络加密是提升安全性必不可少的措施,USRPB210的模块化设计可减少硬件冗余以及电子废弃物,其低功耗特性可节能。但配套计算机的能耗以及设备的快速迭代可能会增加环保压力,合理规划使用周期并加强回收利用是关键所在。全文总结本设计借助USRPB210设备以及GNURadio软件框架,成功构建出一款契合参数指标的调频广播接收机,该接收机可稳定地接收和解调87.5MHz至108MHz频段范围内的FM信号,拥有频谱扫描以及信号强度显示功能,并且音频可稳定输出。在实际运用当中,可以依据需求对方案加以优化和扩展,像是增添更多信号处理功能、优化用户界面等,以此提高接收机的实用性并提升用户体验,软件无线电技术提升了调频广播接收机的性能,提高了信号解调准确性,提高了抗干扰能力,同时降低了开发成本与周期,这为广播设备升级提供了经济高效的解决办法,保证设备在各种环境下可提供稳定的收听体验。随着技术不断进步,调频广播接收机将在功能集成度和智能化方面取得进展,它将拥有更强大的多信号处理能力,实现对多样化广播信号的接收与处理,智能化信号识别与自适应调整功能会提升用户体验,保持调频广播的持续吸引力,本次设计工作验证了软件无线电技术在调频广播接收领域的应用潜力,还积累了宝贵的实践经验。未来调频广播接收机也会更加智能化、高效化,为人们带来更丰富的音频享受。后续工作展望在技术发展的滚滚浪潮当中,FM接收机正迎来一系列创新变革,这些变革将会重塑它的功能以及应用场景,一方面,随着集成电路技术持续不断地演进,FM接收机的集成度持续提升,越来越多的功能模块被整合在一块,这让它的体积和功耗大幅减小,还提高了系统的可靠性与稳定性。软件无线电的可重构性变得日益明显,借助软件升级,FM接收机可灵活适应不同的广播标准,并且兼容多种无线通信信号,另一方面,智能化的浪潮也已经到来,FM接收机借助人工智能和机器学习技术会拥有自动调谐、信号评估、干扰识别等智能化功能,优化接收效果,提升用户体验。另外凭借研究和应用先进的抗干扰算法,像自适应滤波和干扰对消,FM接收机在复杂电磁环境下的性能会得到提升,保证广播信号稳定接收,在设计层面,低功耗设计成为关键的考量因素,借助采用节能芯片设计和电源管理策略,FM接收机的功耗会降低,以契合便携设备对电池续航的严格要求,让它更便于在移动终端上应用。技术融合的趋势也给FM接收机给予了新的发展机遇,结合物联网、5G等前沿技术,它的应用场景不断拓展,比如在物联网设备中集成FM接收机功能,可有力支持智能城市、智能家居等领域的发展,在音频体验方面,FM接收机同样注重音频处理能力的提升,并且采用先进的解码和还原技术,高保真音频播放将成为现实,契合用户对高质量广播音频的追求。在保持高性能的前提下,接收机的尺寸和重量不断变小,使它可轻松集成到小型化和便携式设备中,如耳机、智能手表等,这会让用户可随时随地享受收听体验,极大地拓展了FM接收机的使用场景以及便利性。参考文献彭建森,马英,刘忠成.基于软件无线电的高清音频传输系统设计[J].现代电子技术,2024,47(21):13-20.余俪.基于无线电广播技术的调频收发系统设计与实现[J].数字技术与应用,2017,35(03):199-199.邹云海.基于软件无线电的调频广播接收机设计[D].成都:西南交通大学,2010.张勇.基于SDR的调频广播监测系统应用[J].中国有线电视,2015,(11):1255-1258.潘力,董晓平.现代传播新技术与广播发展[M].中国传媒大学出版社,2006(7-81085-751-7张健.软件无线电的基本理论构架[D].成都:电子科技大学,2000.宋晓鸥.基于软件无线电的地下通信接收机设计与实现[J].电子器件,2014,37(04):669-673.罗宁,杨宇红.基于NI-USRP软件无线电平台的FM调制解调器设计[J].电子技术(上海),2015,42(12):44-47.王峰.软件无线电调频接收机的仿真与设计[D].长沙:湖南大学,2013.桑志国.基于软件无线电平台USRP的RF信号分析系统的研究及设计[J].工业控制计算机,2018,31(11):36-37+40.ZulkifliYF,WahdiyatIA,MaulanaT,etal.Super-widebandantennawithmodifiedelliptical-shapedforbroadspectrumcapabilityinsoftware-definedradioapplications[J].e-Prime-AdvancesinElectricalEngineering,ElectronicsandEnergy,2025,11100933-100933.SoftwareDefinedRadio–BuildanFMReceiverinLessThan15Minutes|ElektorMagazine魏景新.基于USRP平台的软件无线电调频广播接收研究[J].电子制作,2017,25(03):37-38+42.DOI:10.16589/11-3571/tn.2017.z1.019.李婷.GNURadio的认知无线电在移动通信中的应用[J].长春大学学报,2019,29(06):19-22.李楠.基于GNURadio的认知无线电在移动通信中的应用研究[J].信息通信,2020,(05):224-225.Khan,BilalMuhammad,Mustaqim,Muhammed,Khawaja,BilalA.,etal.Spectrumsensinginsatellitecognitiveradios:Blindsignaldetectiontechnique[J].MICROWAVEANDOPTICALTECHNOLOGYLETTERS,2016,58(06):1377-1384.DOI:10.1002/mop.29812.段锐,刘光辉,符庆阳,等.基于USRP的软件无线电系统实验研究[J].实验技术与管理,2021,38(04):201-205.DOI:10.16791/ki.sjg.2021.04.040.石剑,蒋立平,王建新.基于RTL-SDR的软件无线电接收机设计[J].电子设计工程,2018,26(07):73-76+81.高亮亮.基于软件无线电的数字接收机的设计与实现[J].科技咨询导报,2007(8):64-65.附录基于软件无线电的调频广播接收机设计图及相关程序附录1系统设计GRC流程图附录2系统设计程序#!/usr/bin/envpython3#-*-coding:utf-8-*-##SPDX-License-Identifier:GPL-3.0##GNURadioPythonFlowGraph#Title:Nottitledyet#GNURadioversion:fromPyQt5importQtfromGNURadioimportqtguifromPyQt5importQtCorefromGNURadioimportanalogfromGNURadioimportaudiofromGNURadioimportblocksfromGNURadioimporteng_notationfromGNURadioimportfftfromGNURadio.fftimportwindowfromGNURadioimportfilterfromGNURadio.filterimportfirdesfromGNURadioimportgrimportsysimportsignalfromPyQt5importQtfromargparseimportArgumentParserfromGNURadio.eng_argimporteng_float,intxfromGNURadioimportuhdimporttimeimportjieshouji_hfashf#embeddedpythonmoduleimportjieshouji_thasth#embeddedpythonmoduleimportsipimportthreadingclassjieshouji(gr.top_block,Qt.QWidget):def__init__(self,throttle_0=(-80)):gr.top_block.__init__(self,"Nottitledyet",catch_exceptions=True)Qt.QWidget.__init__(self)self.setWindowTitle("Nottitledyet")qtgui.util.check_set_qss()try:self.setWindowIcon(Qt.QIcon.fromTheme('GNURadio-grc'))exceptBaseExceptionasexc:print(f"QtGUI:CouldnotsetIcon:{str(exc)}",file=sys.stderr)self.top_scroll_layout=Qt.QVBoxLayout()self.setLayout(self.top_scroll_layout)self.top_scroll=Qt.QScrollArea()self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)self.top_scroll_layout.addWidget(self.top_scroll)self.top_scroll.setWidgetResizable(True)self.top_widget=Qt.QWidget()self.top_scroll.setWidget(self.top_widget)self.top_layout=Qt.QVBoxLayout(self.top_widget)self.top_grid_layout=Qt.QGridLayout()self.top_layout.addLayout(self.top_grid_layout)self.settings=Qt.QSettings("GNURadio","jieshouji")try:geometry=self.settings.value("geometry")ifgeometry:self.restoreGeometry(geometry)exceptBaseExceptionasexc:print(f"QtGUI:Couldnotrestoregeometry:{str(exc)}",file=sys.stderr)###################################################Parameters##################################################self.throttle_0=throttle_0###################################################Variables##################################################self.hf_function_probe=hf_function_probe=0self.freq=freq=875e5self.volume=volume=1self.variable_qtgui_label_0=variable_qtgui_label_0=0self.samp_rate_device=samp_rate_device=960e3self.samp_rate=samp_rate=96e4self.gain=gain=60self.freq_lable=freq_lable=str(freq/1e6)+'MHz'self.freq_0=freq_0=float(hf.sweeper(hf_function_probe))self.fft_size=fft_size=1024self.fft_function_probe=fft_function_probe=0self.audio_rate=audio_rate=48000self.audio_interp=audio_interp=4###################################################Blocks##################################################self._volume_range=qtgui.Range(0,5,0.05,1,200)self._volume_win=qtgui.RangeWidget(self._volume_range,self.set_volume,"Volume:","slider",float,QtCore.Qt.Horizontal)self.top_layout.addWidget(self._volume_win)self.hf_probe_signal=be_signal_f()self._gain_range=qtgui.Range(0,74,1,60,200)self._gain_win=qtgui.RangeWidget(self._gain_range,self.set_gain,"gain","counter_slider",float,QtCore.Qt.Horizontal)self.top_layout.addWidget(self._gain_win)self._freq_range=qtgui.Range(85e6,11e7,1e4,875e5,200)self._freq_win=qtgui.RangeWidget(self._freq_range,self.set_freq,"freq","counter_slider",float,QtCore.Qt.Horizontal)self.top_layout.addWidget(self._freq_win)self.fft_probe_signal=be_signal_f()self._variable_qtgui_label_0_tool_bar=Qt.QToolBar(self)ifNone:self._variable_qtgui_label_0_formatter=Noneelse:self._variable_qtgui_label_0_formatter=lambdax:str(x)self._variable_qtgui_label_0_tool_bar.addWidget(Qt.QLabel("StoreFrequency"))self._variable_qtgui_label_0_label=Qt.QLabel(str(self._variable_qtgui_label_0_formatter(self.variable_qtgui_label_0)))self._variable_qtgui_label_0_tool_bar.addWidget(self._variable_qtgui_label_0_label)self.top_layout.addWidget(self._variable_qtgui_label_0_tool_bar)self.uhd_usrp_source_0=uhd.usrp_source(",".join(("",'')),uhd.stream_args(cpu_

温馨提示

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

评论

0/150

提交评论