GNU Radio在linux下的安装(二)
原文:https://wiki.gnuradio.org/index.php/InstallingGRFromSource
前言
上一篇说的是直接用apt-get install gnuradio安装,结果仿真什么的都没啥问题,但是在开发out of tree模块时,开始报错,因此怀疑是安装gnuradio的时候出现了问题,所以按照官网的另一套方法重新安装,然后解决了问题
正文
以防万一,我重装了ubuntu系统,然后apt-get update了一下软件源。事先需要装好git。
使用build-gnuradio脚本
Marcus Leech为Ubuntu和Fedora系统提供了build-gnuradio
build-gnuradio脚本提供了一些选项以便我们可以使用安装不同版本的GNU Radio。在不添加任何选项的情况下,直接运行build-gnuradio,它会从3.7系列中提取/构建最新发布的版本。
添加选项-m将获取并构建master / HEAD。
添加选项-o将获取旧的3.6系列
这里,我们直接新建src目录用以存储gnuradio的一些源代码,然后运行一下命令:
wget http://www.sbrac.org/files/build-gnuradio && chmod a+x build-gnuradio && ./build-gnuradio
这条命令会下载build-gnuradio脚本,然后改变其权限为可执行。这条命令最后的一部分表示执行改脚本。它会利用git下载并安装UHD and GNU Radio,所以事先需要先装好git。这个过程会花费很久的时间,所以如果命令窗口停滞了,不要慌,因为它还在继续下载、编译、安装一些东西,只不过没有打印出信息来罢了。官网上推荐用这个方法安装gnuradio,因为这个比较容易,并且它顺带下载了很多源码,可以方便以后开发时进行改动。
Failed to find package 'python-wxgtk2.8' in known package repositories
udo add
消息处理机制
介绍
GNU Radio原本只是一个在block与block之间传递的数据流系统。这样的系统对于采样序列、比特流来说还行,但是如果有控制数据(control data)、元数据(metedata)、分组结构(packet structures),那么这样的结构就显得并不是很友好。
我们通过引入tag stream机制(参见Stream Tags)部分解决了这个问题。tag stream是相对正常的data stream并行的一个流。不同的是,tag stream用来存储元数据(metadata)和控制信息(control infomation)。数据流中的特定样本会被打上tags,然后流向下游。这种机制允许其他block辨别具有某些特定行为的粒度(item)。
tag stream的优点:tag stream相对于data来说是并行的。
tag stream的缺点:tag stream仅仅只能在work函数中获取,并且只能流向一个方向。
我们有许多理由去设计一个更通用的、更广泛的消息传递体系。首先,需要允许下游的blocks和上游的blocks通信。其次,需要允许GNU Radio和应用之间更简单的通信。新的消息传递接口(message passing interface)解决了这些问题,其是基于异步的实现方式。
消息传递API(Message Passing API)
gr::basic_block实现了消息传递接口,gr::basic_block也是GNU Radio中所有blocks的父类。每个block有消息队列(messages queues)来存储输入的messages,也可以将messages发送到其他blocks的消息队列中。blocks也会区分输入和输出端口。
block会在构造函数(constructor)中声明输入和输出消息端口(message port)。消息端口以PMT对象表示,注册新的端口的API如下所示:
void message_port_register_
GNU Radio在linux下的安装(一)
原文:http://gnuradio.org/redmine/projects/gnuradio/wiki/InstallingGR
前言
这样安装在进行out of tree的模块开发时,好像会缺少依赖,一开始我这样安装的,然后出现了毛病,所以又重新按照官网的另一套方法安装的,见这里`
正文
推荐的安装GNU Radio的方法是从您的发行版的标准存储库里gnuradio包安装。 GNU Radio的开发极其快速,发行版提供的二进制文件可能已过时。请检查您要安装的版本是否是最新的!。如果您使用的是过期版本,不要期望在邮件列表上有任何帮助!确保发行版附带的版本不比当前的GNU Radio版本老(它应该至少是相同的次要版本,即第二个数字应该是相同的)。
在Ubuntu和Debian上,从二进制文件安装GNU Radio和执行一样简单:
$ apt-get install gnuradio
在Fedora上
$ yum install gnuradio
在其他发行版的linux上,请使用适合的安装命令
Tutorial 7: PSK Symbol Recovery
7.1 目标
- 了解信号失真和通道效应的问题。
- 识别恢复信号所需的阶段。
- 定时恢复
- 多径
- 相位和频率校正
- 解码信号和比特排序
7.3 介绍
在本教程中,我们将构建上一个教程,了解我们如何处理接收数字调制信号的问题。虽然我们专注于模拟而不是真实环境,但我们需要理解通过真实的硬件和通道效应接收真实信号的许多问题。在这里,我们将介绍设置仿真的各个阶段,然后逐步介绍如何恢复信号。
当我们实现恢复阶段时,我们应该记住,这只是一种处理数字信号接收的方法。存在针对这些步骤设计的各种算法和方法,并且不同类型的数字信号将表现不同。在这里,我们经过一组阶段,并使用在GNU Radio中容易获得的用于PSK信号接收和解调的算法。然而,这绝不代表这是完成此任务的唯一方法。
7.4 发射信号
第一阶段是发送信号。我们采取比特流,并将其调制到复杂的星座。为此,我们使用星座调制器块,它接收一个星座对象和确定我们如何控制传输信号的其他设置。首先,让我们看看星座对象。
7.4.1 星座调制器
教程4已经介绍了我们的QPSK调制解调器的调制方面。本教程中我们使用带有星座对象的星座调制器块。们可以设置星座点以及如何将符号映射到那些点。星座对象允许我们确定如何对符号进行编码,以及是否要使用Gray编码。调制器块可以使用具有或不具有差分编码的调制方案。星座调制器期望打包字节,所以我们有一个随机源生成器提供字节值为0 - 255.数字调制的手册页解释了更多的这些概念。
当处理每个符号的样本数时,我们有两个标准。首先,我们希望保持该值尽可能小,最小值为2。一般来说,我们可以使用这个值来帮助我们匹配所需的比特率与我们将使用的硬件设备的采样率。由于我们从模拟模式开始,每个符号的样本只有在确保我们在所有重要点匹配此速率时才重要。我们将在这里
Using GNU Radio with Hardware
目标
- GNU Radio如何将仿真和真实世界连接起来
- 你能做什么,你允许做什么?
介绍
到目前为止,本系列的所有教程都围绕着通过模拟使用GNU Radio作为原型开发平台。然而,GNU Radio的一个巨大优势是,从模拟到现实操作是非常容易的。在本教程中,我们将基于您迄今为止学到的内容,创建真实的发射器和接收器。本教程中,我们将采取您以前的QPSK设计,并将其变成实际的发射机。我们还将从头开始构建一个完整的FM无线电接收器,您可以使用它来收听您的本地FM广播电台。
仿真和实现
从仿真到实现也带来了一系列新的挑战需要解决。无线电和RF工程是非常复杂的学科,在构建实际的无线电系统时有很多需要考虑的。除了设计通信系统理论的挑战之外,现在还需要处理来自无线电硬件的损耗,由物理介质(即无线或有线信道)引入的问题,同步设计等。
要了解更多关于现实世界无线电损伤的信息,一个不错的入门是马特·艾特斯的约45分钟的教程。你可以找到它的视频:YouTube:实用软件收音机
如果您想直接在GNU Radio中了解有关无线电损耗的更多信息,请查看/ gr-channels / grc中的硬件损耗模型。
What Will I Need?
如果你没有实际的收音机工作,本教程仍然有用。第一部分(传输)将向您介绍与硬件接口的基础知识。对于第二部分,您可以简单地使用来自实际收音机的录音,而不对数据做任何处理。我们提供了一个录音,您可以在gr-tutorials存储库中找到它。您可以在流程图中使用它来模拟传递样本的硬件。
但是,如果你有一块可以与GNU Radio一起使用的无线电硬件,本教程将是最有用的。有越来越多的供应商为硬件提供GNU Radio驱动程序,它们从非常便宜的20美元接收器到非常高性能的数万美元系统。但是,如果你有一块可以与GNU Radio一起使用的无线电硬件,本教程将是最有用的。有越来越多的供应商为