Vidya Viswanathan, MathWorks
无线工程师可以使用软件定义的无线电硬件作为具有成本效益的实时平台,用于一系列无线工程任务,包括使用实时射频信号进行空中实验室和现场测试,以及定制无线电功能的快速原型。使用MATLAB®和仿真软金宝app件®,用户可以从设计和模拟通信算法到生成针对Xilinx的生产实现®Zynq®7000所有可编程SoC和模拟设备AD9361射频敏捷收发器。
在我们的演示中,我们将演示如何:
Vidya Viswanathan是MathWorks India的应用工程师,专门从事数字信号处理应用程序的设计和实现。她与不同领域的客户密切合作,帮助他们采用MATLAB®和仿真软金宝app件®.她感兴趣的领域包括FPGA和ASIC设计,无线通信和图像处理。Vidya持有m.s. Ramaiah Institute of Technology的电子与通信工程学士学位,以及Indian Institute of Technology Hyderabad的通信与信号处理硕士学位。
记录日期:2020年9月24日
欢迎参加使用MATLAB和Simulink进行软件定义无线电开发的MathWorks网络研讨会。金宝app我的名字是Vidya Viswanathan,我是MathWorks India的应用工程师,专门从事无线设计和FPGA实现。如果您对所呈现的内容有任何疑问,我请求您将它们张贴在您在WebEx窗口中看到的问答窗口中。我们将在最后花几分钟时间来解决这些问题,或者我们会跟进您的问题。
如果您在物流方面遇到任何问题,您可以在聊天窗口中与我们联系。在网络研讨会期间,您的屏幕上将会弹出几个投票问题。我请求您留意WebEx窗口右侧的投票问题。有了这些,让我们开始会话。
那么什么是软件定义无线电系统呢?如果我必须用简单的术语来说,软件定义的无线电就是物理层功能由软件定义或软件编程的无线电。sdr的可编程性支持在任何时间点升级设计、添加新功能以及重用算法。
这就是我们对特别提款权制度的看法。有一个模拟前端使用本振器和混频器进行直接射频转换。有数据转换器来从数字领域获取数据。还有SDR的数字前端,负责高速率数字信号处理算法,比如数字上转换下转换,IQ平衡,直流偏移校正。然后是基带处理IQ数据修正。
我们认为这样的系统可以用商用的、现成的硬件来构建。这里有一个这样的系统的例子。您有一个基于fmc的可调RF卡连接到FPGA评估板,FPGA评估板又连接到运行MATLAB或Simulink等环境的桌面计算机,使用千兆以太网等接口,您可以使用该接口调整中心频率和RF倾斜等射频参数。金宝app
那么,既然无线电已经存在了好几年了,为什么真正研究软件定义无线电的实现工作流是重要的呢?因此,除了使用无线电的传统应用之外,无线通信的新应用领域也在快速增长。随着一切都连接起来,即使是非传统的应用,如公共安全、监控、医疗监控、农业监控、智能电表,也开始使用尖端的无线技术。此外,5G、LTE和V2X等新的无线标准的出现也使这成为可能。然而,这要求系统具有更高的适应性,并需要快速设计、模拟和原型无线电。在这方面,软件定义无线电可以被认为是这些应用的完美选择。
尽管特别提款权的想法很有吸引力,但开发这样的系统也面临一些挑战。考虑到sdr的性质,创建一个健壮的系统需要许多不同的技能集,从基带dsp、射频和天线分析、硬件和软件架构设计、FPGA或硬件设计,以及嵌入式软件开发等等。其中每一个都是一个领域,所需的技能集和用于每个领域的设计环境都是非常不同的。因此,要成为所有这些领域的专家实际上是很困难的。因此,需要有一个通用的设计环境,可以处理多个领域,并允许每个领域的专家轻松协作。这就是这节课背后的想法,看看MATLAB和Simulink如何作为一个共同的开发平台。金宝app
在我们开始工作流程之前,下面是Orolia这样的组织如何使用MathWorks基于模型的设计工作流来开发用于紧急定位信标的接收器的示例。虽然他们在通信系统设计或领域方面有很多经验和专业知识,但他们在FPGA设计方面的经验有限。所以他们明白这实际上会占用大量的设计时间,而且这也会影响他们提出第一个原型的时间。因此,在Simulink和HDL Cod金宝apper的帮助下,他们能够将FPGA实现时间减少50%,使他们有更多的时间进行快速的算法创新和技术进步,同时仍然能够轻松地满足他们紧张的截止日期。
因此,让我们更详细地看看所涉及的工作流。因此,可以将软件无线电开发阶段大致定义为四个方面。系统建模,这涉及到整个系统的仿真,以识别潜在的设计问题。算法开发完成后,可以通过MATLAB和Simulink集成来做硬件前端,用实际信号进行测试。金宝app一旦你使用它来获得关于所开发的算法的信心,设计过程的下一部分将涉及硬件和软件开发,用于原型设计,并使用MATLAB中的验证基础设施或框架进行快速验证。这个过程的最后一部分将涉及硬件的独立开发以及与外围设备的集成。
那么让我们更详细地看一下第一步,那就是整个信号链的建模和仿真,基带,RF前端,以及测试框架。MATLAB和Simu金宝applink为无线设计人员提供了在单一环境中建模多域系统的能力,因此允许用户分析不同组件之间的相互关系,以及一个组件如何影响另一个系统的性能。在MATLAB和Simulink中,以库函数和块集的形式,您拥有大量的波形生成功能以及算法开发功能。金宝app
您可以设计和架构您的射频前端,并在您的系统中包括非线性的影响。您还可以设计您的数据转换器,如模拟到数字转换器或dac,并最终将sim与天线以及传播通道的影响集成在一起。因此MATLAB提供了一组丰富的库函数和图形用户界面,以生成不同无线标准的标准兼容波形,如5G, LTE, WLAN, Zigbee, NFC,以及蓝牙低功耗。您还可以重用此框架来设计自定义波形并为其提供参数化。
MATLAB和Simulink的处理能力也使您能够从波形生成开始进行完整的物理层开金宝app发,包括信道的影响和射频损伤以及实际接收机的设计。有几组用于标准和非标准无线系统的端到端链路级模拟示例,您可以将它们用作算法开发的起点。这些都以MATLAB代码和Simulink模型的形式提供,您可以根据正在制作的系统轻松配置和修改。金宝app
通过将物理层设计与射频前端的行为方面集成在一起,可以进一步提高您所创建的系统或端到端仿真、链路级仿真的保真度。射频前端模型的引入使用户能够开发更实用和健壮的接收机。通过射频块集对射频前端进行仿真,利用该框架集成MATLAB和Simulink,运行完整的芯片,对射频前端进行基带闭环仿真。金宝app
还有一组可用的模块和Simulink模型可用于商用、现货RF前端收发器,如模拟设备AD9361和AD9371金宝app收发器。这些行为模型已经在实验室环境下的实际硬件设置下进行了测试,我们已经能够将仿真模型和硬件模型之间的结果联系起来。因此,如果您正在涉及这些射频收发器的SDR平台上工作,则可以直接将这些模型插入基带算法中。
还有一些参考示例展示了如何将基带处理与收发器模型连接起来。现在让我们来看一个例子。我这里有一个基于qpsk的发射机,其中基带算法是在Simulink中定义的,它连接到我的AD9361的发射机模型。金宝app然后有一个信道表示,它也依次连接到AD9361接收机,解调算法发生在那里。你可以看到星座和错误率估计。
因此,仔细观察AD9361接收器架构实际上可以让您了解到,这个特定的模型实际上具有完整的收发器模型架构,包括RF前端,模拟和数字滤波器系列,模拟到数字转换器,以及AD9361收发器中的AGC。如果你感兴趣,你可以在屏幕上看到的链接中下载这些型号的射频收发器。如果您正在进行自定义射频前端设计,有多个示例向您展示了如何使用射频发射机和接收机模型模拟实际无线电,同样,这些示例的范围包括LTE、WLAN、5G以及基于非标准协议的无线电。
因此,让我们进入SDR设计的下一部分,即使用流式RF数据验证算法。这里,我们看到的是基带处理和测试基础设施仍然在MATLAB和Simulink环境中。金宝app然而,我实际用于测试基带处理的数据来自真实场景。
因此,您可以将MATLAB直接连接到多个射频仪器和SDR平台,以使用真实信号进行无线电的超DL测试。你可以得到一个接近实时的RF数据流到MATLAB中,我说接近实时的原因是因为你会受到接口传输速率和主机性能的限制。但你可以引入连续的数据爆发,然后将其用于进一步的算法设计或下游分析。因此,这可以帮助您在开始研究设计的硬件和软件方面之前验证您的设计。这是通过系统对象和块来实现的,这些对象和块可以帮助您轻松连接到不同的SDR平台,并优化无线电参数。
让我们来看看一个例子,一个FM广播信号是如何被SDR平台捕获并带入MATLAB的。因此,第一步将涉及配置或连接到无线电硬件。这样你就有了连接到硬件的功能。然后,您可以开始配置某些参数,如中心频率、基带采样率以及接收到的样本的数据类型,然后使用捕获函数将数据实际记录到MATLAB工作空间中的文件或变量中。
在这个例子中,我所做的是创建一个文件,在这个文件中我捕获了FM信号。一旦我有了这个文件,我就可以使用基带文件读取器将其导入MATLAB。一旦它被带入MATLAB环境,你可以用它来做任何类型的分析,或者你也可以把它传给你的接收器。
在这里,我创建了一个频谱分析仪,我实际上要查看接收到的FM银行的频率。所以你可以看到在这个视图中有一个光谱视图和一个光谱图你正在观察这个信号。同样的事情也可以复制到LTE信号上,你可以从真实场景中捕获到MATLAB环境中,并执行单元搜索。
同样,与之前看到的类似,我首先连接到radio对象。然后我使用Capture函数来获取接收到的波形,然后我收集它几秒钟。然后我实际使用LTE工具箱中的函数来进行单元搜索并找出信号的单元ID是什么。所以你可以看到,检测到的细胞ID或记录的细胞ID实际上与我所期望的或我所看到的接收到的相匹配。这可以帮助你验证你开发的算法是否足够健壮,以及是否需要任何进一步的修改来适应细胞引入的实际损伤。
让我们来看看有哪些不同的SDR平台实际上支持这种无线电流以及在MATLAB环境中捕获射频信号。金宝app你可以在这里看到特别提款权平台的列表。如果您也有兴趣了解这些配置的更多细节,我建议您实际单击链接,其中包含到支持包的链接。金宝app
好的,现在,我们已经看到了关于SDR设计的两个不同方面。一个是计算系统建模,第二个是算法和验证与现实生活信号。那么让我们转到SDR开发的下一个方面,这基本上涉及到将算法划分为硬件和软件组件,然后在实现平台上开始原型设计,实现平台可以是FPGA,也可以是片上系统平台。
因此,这涉及到针对fpga的RDL代码的设计,以及针对处理器的C代码的设计,并且能够在这两者之间以及与RF前端通信,在任何这些标准开发端口上进行完整的实现或原型设计。所以如果你看一下我们到目前为止开发的无线参考算法,我们用于开发这些参考算法的框架与硬件实现工程师实际看到的是完全不同的。所以我的意思是,如果你考虑一下我们之前构建的无线参考算法,它主要是在一个数据向量或一个数据帧上工作。我们假设我们有大量可用的计算数据。我们所做的大部分操作都是在浮点精度上进行的。
然而,如果你看看硬件实现方面,重要的是要理解你将如何处理数据样本不断进来的流位,以及你如何使用定点架构。所以这两个方面是脱节的,我们要研究的是找出一种方法来平滑从无线参考算法到硬件实现的过渡。这涉及到几个中间步骤,这是我们要看的更详细的部分。
所以,如果你仔细观察无线算法设计的工作流程,你可以——第一步将整个方面分为三个不同的部分。首先是刺激因素。第二个是参考算法。第三部分是你想对结果做的任何验证或分析。所以我可以写一个测试脚本,或者我可以在MATLAB框架中使用现有的例子来创建不同种类的波形,然后输入到我的参考算法中。然后我可以再次使用MATLAB环境来进行可视化,或者我可以用它来得到误差矩阵。
现在,重要的一点是让这个更能代表硬件上实际实现的是把这个参考算法转换成基于样本或基于流的过程。这就是我们结合使用MATLAB和Simulink环境的地方。金宝appMATLAB更基于脚本,非常适合处理大型数据矩阵。而Sim金宝appulink,由于它是在软件的基础上工作的,并且内置了时间的概念,它可以用来更好地表示基于样本的过程。
所以我们将把参考算法转化为基于样本的处理,并开始引入流的性质,并相应地修改算法。另一个重要的方面是,当你处理流数据时,要能够计算出你从什么时候开始投票样本,在什么时候结束数据,在所有这些中间,有多少是有效样本。因此我们可以创建这些控制信号,这也将帮助您与MATLAB黄金参考进行比较。
因此,一旦我以这样一种方式构建了我的模型,它实际上考虑了图中的一些硬件方面,下一步涉及到的是定点量化。MATLAB和Simu金宝applink允许你修改信号的数据类型,从浮点数,这是默认的数据类型,到定点表示,这是适合你正在研究的硬件架构。选择正确的定点数据类型集非常重要,因为这不仅控制了算法的准确性,而且还控制了它将在FPGA平台上占用的资源量。在定点设计器的帮助下,您可以将MATLAB和Simulink浮点算法转换为等效的定点表示。金宝app在每个阶段,你可以将它与你开始时的黄金参考进行比较,看看引入的量化量是多少,以及是否在你所寻找的容错范围内。
因此,关于无线设计,我们试图简化将参考算法转换为硬件友好版本的过程的方法之一是引入无线HDL工具箱,它基本上由基于流媒体的无线设计的硬件ip组成,其工作方式在FPGA架构上非常友好。我们还有一组参考应用程序,您可以将其作为不同标准的起点,如5G、LTE、WLAN或任何自定义配置。您可以使用Wireless HDL工具箱中的模块创建您的参考Simu金宝applink模型。这样做的好处是,一旦您创建了这个系统,并将其与初始参考进行比较,您就可以使用代码生成技术从这个环境中实际生成可合成的开放RTL代码。
因此,就像我们如何看待FPGA方面的阐述一样,Simulink也可以用来表示软件方面。金宝app如果你看一下这个模型,我把它简化成两个方面,算法一是FPGA的目标。算法二是处理器上的东西。
因此从这个模型出发,在HDL Coder和Embedded Coder的帮助下,我可以生成相应的编程语言,HDL Coder的情况下生成HDL Verilog, Embedded Coder的情况下生成cc++代码。如果你仔细看这个表示法,这是一种我们把算法转换成类似Simulink的高级表示法的形式这是迈向硬件实现的第一步。金宝app但是如果你看看最终的硬件平台,你将运行这个,有另一个重要的方面实际上进入画面,除了FPGA和处理器方面,这是这两者和外围设备之间的互连。
所以这些相互联系对算法设计的影响是非常重要的。因此,尽管从算法模型直接过渡到算法代码,但由于这些互连的一些影响,当直接插入硬件环境时,这些代码可能直接工作,也可能不直接工作。因此,我们的想法是弥合这个差距,从这个算法模型过渡到更接近我的硬件平台的样子,这是我们接下来要研究的主要内容。
除了您的FPGA算法和处理器算法,Simulink还允许您模拟FPGA和处理器之间的互连。金宝app如果它与外部内存环境相互作用,在这种情况下引入的延迟是什么?如果您正在使用基于axis的寄存器,那么与之相关的不同配置是什么?FPGA和处理器交互的I/ o是什么?所有这些方面实际上都可以首先模拟,还有你的算法。这让你对硬件的期望有一个更现实的看法,这是SoC块集启用的。
在这个过程中涉及的不同步骤是模拟硬件架构和算法,然后将其部署到原型FPGA或SoC平台上。第三步也是可以完成的是分析硬件的结果并将其带回MATLAB模拟环境中来真正理解操作系统的影响或者是否有真正的输入输出样本的流细节以及核心算法实际上利用了多少资源。所以如果你已经能够模拟整个系统,然后如果你进入代码生成过程,你可以更确信你可以从硬件中得到什么,你实际上已经发现了一些潜在的问题并纠正了算法中的问题。
因此,下一个方面将是提出这篇综述的独立实现,其中您不仅要考虑算法方面,而且还要考虑互连。这是通过参考设计实现的。让我们通过一个简单的模型,来看看这样一个系统是如何开发的。
我在这里考虑的示例是一个5G蜂窝搜索参考应用程序。因此,您可以看到一个重要的方面是创建5G参考波形,您可以在5G工具箱的帮助下轻松完成。然后你必须定义或构建你的单元格搜索算法它将在你自己的硬件上运行,可能有某些部分将在你的软件上运行。
在这种情况下,我在我的软件上运行了一个搜索控制算法,它可以帮助我选择最强的SS块,也可以校正频率偏移,并帮助确定单元格ID。所以软件组件实际上提供了一个输入到FPGA,频率偏移和子载波间距。解调后的解码实际上是找出SSS, PSS,以及小区ID,实际上是在硬件方面实现的,也就是FPGA代码。
就像我前面提到的,您可以使用Wireless HDL工具箱中的参考示例,该工具箱由一个Simulink模型组成,该模型实际执行完整的单元格搜索。金宝app该Simu金宝applink模型可以在MATLAB环境下的数据刺激下进行测试。因此,您可以使用5G工具箱创建一系列测试波形,将其输入到Simulink模型中,并将您从MATLAB黄金参考和Simulink模型中得到的结果进行比较。金宝app这一步很重要的原因是你可以看到延迟的影响以及你的定点架构将带来的量化。有一整套的中间信号你可以点击,你可以对它们进行编辑分析或比较。
因此,一旦你用模拟的数据集测试了这个特定的算法,下一步涉及的是包括架构方面的模拟,如果可能的话,从直播中捕获射频信号。所以我们在这里看到的是NR单元搜索算法的模型,其中相同的FPGA逻辑由接收器算法组成。我还有处理器模块,内存接口模拟器,以及射频数据转换器。这是Xilinx RFSoC架构的代表。
所以如果你仔细观察子系统的FPGA部分,你可以看到单元搜索接收器的Simulink模型,你可以观察到这是一个完全使用定点表示的模型。金宝app这基本上给出了你正在检测的单元格ID。所以这是模型的处理器部分,它包括任务管理器以及将数据发送到主机的能力。所以现在,我可以模拟整个系统,基本上由捕获的射频数据和算法组成,看看在什么时候发现PSS或完成SSS解调。这还包括,除了算法方面,由于内存接口也被使用而引入的一些延迟。
现在,我已经模拟了整个系统,并对硬件环境的完整开发有了信心。这个过程的下一个方面就是在硬件上实现这个。借助我们在硬件支持包中提供的参考设计,您可以针对不同的FPGA和SoC平台。金宝app
您可以在这里的屏幕上看到两个链接。这包括一组不同硬件的参考设计,这不仅能帮助你选择从代码产品中生成的算法代码还能与设计的其他部分集成,你为你正在研究的特定硬件生成比特流。下载188bet金宝搏在这个例子中,我实际上已经通过连接到前端Simulink模型来编程RFSoC,并直接在RFSoC硬件上运行硬件和软件方面。金宝app
我也可以用它来绘制特定的信号来理解PSS搜索和解调的硬件状态。这是我要探查的硬件的数据。你也可以看到处理器发送解码的cell ID以及PSS和SSS SNR值,这是我在MATLAB环境中使用UDP Receive块可视化的。这将帮助您完成关于SDR平台的完整原型和开发框架。我以RFSoC为例,但就像我前面提到的,在这个工作流中我们支持一整套硬件。金宝app
因此,在我们研究所支持的不同平台之前,我还想让您注意到另一个客户成功的故事。金宝appRF Pixels使用这个特殊的工作流程在Zynq RFSoC硬件上瞄准他们的LTE参考算法。同样,在HDL Coder的帮助下,他们能够减少实际提出第一个原型的时间,并且他们能够更容易和快速地进行设计的迭代,从而将迭代时间从几周减少到几天。还有这篇文章的链接。如果你有兴趣了解更多关于他们如何使用这个工作流的细节,你可以看一下。
这里是我们支持的不同SDR平台的快照。金宝app当我说这些是支持的定位平台时,我的意思是除了算法代金宝app码,对于这些特定的硬件平台,我们有可用的参考设计。但是,您也可以使用生成的代码。如果您可以创建或集成自定义参考设计,您也可以重用此框架来针对自定义SDR平台。
为了开始特别提款权的开发,我们再次有了一些我们放在一起的参考应用程序。根据系统的规模,可以在不同的硬件环境中实现这些功能。因此,您将看到一整套基于5G、LTE或qpsk的系统正在RFSoC或基于zynq的SDR系统上建模和测试。
如果我必须总结一下,我们已经在这个特别的会议上看到了MATLAB和Simulink可以作为无线开发的统一平台,这涉及到算法的设计,这将是基带,射频前端,天线和信道效果金宝app。然后,您可以通过连接到实际仪器或RF测试仪器和SDR平台,通过我们拥有的集成工作流和连接到这些硬件的支持来验证该算法。金宝app一旦你验证了你的算法,你就可以使用代码生成技术将你开发的算法实际定位到FPGA、处理器或片上系统环境上。
因此,如果您有兴趣了解更多关于我为软件定义无线电开发介绍的基于模型的设计工作流的信息,您实际上可以访问MathWorks网站中的SDR页面。这里有一组白皮书、视频以及参考示例,您可以使用它们来开始这个工作流程,它将涵盖您刚才在本次网络研讨会上看到的所有方面。如果您正在与RFSoC开发委员会合作,我们有一个专门的页面来讨论我们支持RFSoC平台的方式。金宝app再一次,它的链接已经提供了,我们可以看到有什么参考例子,以及我们提供了什么样的支持,关于RFSoC目标。金宝app
如果你想在这个特殊的工作流程中获得更多的实践经验,我们提供了一系列的培训。这些都是实际操作培训,包括无线通信算法设计,HDL代码生成部分,软件开发或Linux操作系统的定制,或者我们刚刚看到的Zynq平台上的完整软件定义无线电。如果您有兴趣根据自己的需要定制这些培训课程,使其更适合您正在处理的需求,我建议您联系MathWorks内部的培训服务团队,这里提供了联系他们的链接。
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。