YunSDR小课堂-软件定义无线电概论(第60讲)

第一章——软件定义无线电概论-3

1.5 软件定义无线电的处理架构

微电子产业在过去六十年中迅速发展,推动了微处理器系统的诸多进步,使我们日常所依赖的诸多应用成为可能。随着时间推移,这一演进速度正如著名的摩尔定律所描述,该定律定义了集成电路上可容纳晶体管数量的长期趋势。尤其是摩尔定律指出集成电路中晶体管数量大约每两年翻一番,这进而影响微处理器系统的性能,例如

图 1.8 Pluto 软件定义无线电中采用的集成零中频架构.png

图 1.8 Pluto 软件定义无线电中采用的集成零中频架构

    处理速度与存储器在过去半个世纪中,微电子产业对数字通信系统领域产生了显著影响,微处理器系统在数字收发器的实现中被日益广泛应用,从而催生了更加多功能、高性能且便携的通信系统平台,这些平台能够执行越来越多的高级操作和功能。
    随着微电子和微处理器系统的最新进展,软件定义无线电(SDR)技术应运而生,其基带无线电功能可完全通过数字逻辑与软件实现,如图1.3所示。用于SDR实现的微处理器系统类型多样,包括:

通用微处理器因其在可重构性方面具有高度灵活性,且便于新设计的实现,常用于软件定义无线电(SDR)的实现和原型开发。另一方面,通用微处理器并非专为数学计算设计,且可能存在功耗效率较低的问题。

数字信号处理器(DSP)专门用于执行数学计算,能够相对轻松地实现新的数字通信模块,且处理器功耗较为高效(例如,DSP广泛应用于移动电话中)。 然而,DSP不适合执行计算密集型任务,且运行速度相对较慢。

现场可编程门阵列(FPGA)在定制数字信号处理应用中效率极高,因为它们可以实现定制的全并行算法。DSP应用通常使用大量的二进制乘法器和累加器,这些功能可以集成于专用的DSP切片中,如图1.9所示。

这包括25 ×18位二补码乘法器、一个48位累加器、一个节能预加器、单指令多数据(SIMD)算术单元,该单元包含双24位或四12位的加/减/累加器。

如MathWorks HDL Coder等工具,使得创建新模块及面向FPGA的设计更加便捷,因为它能够从MATLAB函数、Simulink模型和Stateflow图表生成可移植且可综合的Verilog和VHDL代码,图表制作,且非常适合将信号处理算法从概念转化为实际产品。

图1.9基本DSP48E1切片功能.png

图1.9基本DSP48E1切片功能[5]

图形处理单元(GPU)在计算能力方面极为强大。

这些处理器由于满足大众市场游戏中实时计算机图形的需求,已被推动达到极高的性能和低成本水平。在过去10年中,它们演变成通用可编程架构及其支持生态系统,从而使它们能够应用于广泛的非图形领域[6]。 由 Nvidea等厂商提供的GPU加速库,包含高度优化的函数,其性能比仅使用CPU的方案提升2倍至10倍。用于线性代数、信号处理以及图像与视频处理的GPU加速库,为未来基于这些架构的软件定义无线电应用奠定了基础[7]。

先进RISC机器(ARM) 凭借低成本、小体积、低功耗和卓越的计算能力,近年来受到广泛关注。这类处理器结合功能强大的射频前端模块,使其成为移动通信与计算的理想平台。

Arm Cortex-A系列和Cortex-R52处理器新增的SIMD指令集 NEON[8],加速了信号处理算法和功能,提升了软件定义无线电应用的运行效率。

这是算法开发者充满机遇的时代;在硬件上实现信号处理应用的方法有许多新颖且先进的技术。挑战在于确保无论选择何种硬件运行算法,该硬件及开发方法在五年后依然得到支持。

1.6 软件定义无线电的软件环境

如第1.2节所述,在其最基础层面上,大多数商用软件定义无线电平台将实时射频信号转换为数字基带采样,并采用软件定义机制实现调制和解调技术,以传输现实世界的数据。参照图1.3,通信系统中模拟与数字世界的分界点位于模数转换器(ADC)与数模转换器(DAC),信号信息在此于连续信号与离散采样信号值之间转换。通常,射频收发机可配置以选择中心频率、采样率、带宽及其他参数,从而发送和接收目标信号。这涉及调制与解调技术的开发过程,该过程通过两步开发流程实现。

  针对特定采样率、带宽及环境,开发、调试并优化调制与解调算法。这通常在主机PC上完成,因而调试和可视化更为便捷。在开发的此阶段,射频前端模块的调制与解调均在主机上进行,为实验与测试算法提供了高度灵活性。

以该算法为例,可能采用高级语言以浮点数形式实现,并将其编码至具备生产能力的环境中,同时权衡产品的尺寸、重量、功耗及成本(SWaP-C)。 当机载硬件与嵌入式处理器被编程执行特定应用的数字通信与信号处理功能时,这些平台才真正称为软件定义无线电。

尽管本书专注于SDR开发过程的首个算法步骤,但在审视开发流程时,第二个生产步骤亦不可忽视。除非你的目标仅是发表论文且不考虑实现可用原型,否则必须始终牢记完整的发展流程。

    第一步需要一种便捷的机制来捕获数据,以便进行信号分析及处理这些信号的算法开发。这使得拥有高效且可靠的基于PC的软件,来开发和测试无线通信系统中的数据传输及数字信号处理功能,显得尤为重要。

    满足此需求的软件环境之一为MathWorks公司开发的MATLAB。MATLAB是一种技术计算环境和编程语言,提供便捷的开发体验与卓越的可视化机制。

    另有产品Communications Systems Toolbox,提供物理层算法、信道模型、参考模型,以及与软件定义无线电硬件的接口,实现实时信号的发送与接收。

   MATLAB跨平台支持(Windows、Linux、Mac),兼容多种主流商用射频前端。

   使用MATLAB,可实现软件定义无线电的增量式和迭代式开发流程,包括:

   •算法开发和基于链路级仿真的设计验证;

   •通过连接商用软件定义无线电硬件,利用实时信号进行算法验证。

 MathWorks还提供Simulink,一种面向真实系统仿真及自动生成硬件和软件代码的环境。它使无线电开发人员能够进入第二阶段的生产开发。Simulink的这些功能为实现生产提供了路径:

  •硬件准确模型的开发与验证;

  •利用自动HDL和C代码生成,在软件定义无线电硬件上实现原型;

  •验证原型与已验证模型的一致性;

  •将实现方案部署到生产用的软件定义无线电硬件。

   虽然本书中大部分内容将忽略Simulink,但能够在从概念到生产的统一环境中完成流程,其强大功能不容忽视,尤其对于致力于实际生产无线电的开发者。

另一种软件定义无线电软件架构是流行的开源 GNU Radio 软件[9],这是一款自由软件(自由如同自由意志)开发工具包,提供实现软件定义无线电和信号处理系统。它既可配合外部射频硬件创建软件定义无线电,也可在仿真环境中独立使用。它被广泛应用于业余爱好者、学术界和商业环境,以支持无线通信研究及实际无线电系统。

   在GNU Radio中,各种模拟不同数字通信和数字信号处理算法的C++库通过Python和SWIG(一种将用C和C++编写的程序与包括Python在内的多种高级编程语言连接的软件开发工具)集成。这些库由开源社区开发并免费共享。

   作者在研究、产品开发以及本科和研究生教学中使用了包括MATLAB、Simulink和GNU Radio在内的多种工具。每种工具均有其优缺点,可在研究或开发周期的不同阶段应用。作者认为所有这些不同的软件环境均可正确或错误地用于教授无线物理层基础知识,尽管各工具的前置条件各不相同。对于选择GNU Radio路线的人士,具备Linux、Python、C++及SWIG的实操知识要求非常高。虽然这对计算机科学学生来说很常见,但对大多数通信专业的学生而言则不是如此,同时要求他们在学习通信理论的同时掌握该工具可能会遇到困难。可以使用GNU Radio中已有的块,避免理解Python和C++的需求,但这样会丧失一些演示和实验基础通信理论的机会,因为学生只是使用他人编写的块,对其内部原理了解有限。

   Simulink同样如此;它也是一款功能强大的工具,包含许多用于时序恢复和载波同步的预置块。然而,使用这些块并不能让许多学生理解其内部机制,因此学生难以掌握如何针对具体情况调整这些块。

  这就是本书选择MATLAB的原因。MATLAB是一个跨平台环境,允许学生使用其熟悉的工具,且所有呈现的块均为MATLAB脚本,完全开源透明。如果学生希望更深入理解某个内容,整个算法均在MATLAB代码中定义,通信理论没有任何掩盖。

文章来源:威视锐科技