? GNU Radio ?    发布于 2016-12-08   1719人围观   2条评论

使用GRC开发交互式项目 - Part 1

当我开始使用GRC来开发Nutaq demonstration projects到时候,我发现GRC是一个快速、易用的开发环境。在GRC中,你可以用用户输入的组件去快速实现一个信号检测的GUI。可是,我想,这几乎是一个线性的工作流程:源模块->处理模块->仿真模块,而没有反馈机制。虽然用户可以在GUI中查看时域频域和动态改变项目的参数,但是这种反馈机制的确实限制了其应用范围。

如果我直接用python去写一个应用,我可以用任何我需要用的算法,但是我喜欢基于模型的GRC环境。GRC让你很容易理解一个设计,而非通过阅读上百行的代码。

另一种开发自己定制blocks的方法是使用更多复杂的算法或者整合状态机到我的数据流中。这种方式更加吸引人。但是免不了需要写数行代码,这个导致GRC不能不言自明。

最近,我发现Measurement Tools中probe block的存在。用这些模块,数据流可以被转化为变量。一旦你能拿到这些变量,你可以用算法和数学方式去应用反馈到项目参数中去。这正是我在寻找的。

Probe blocks

Probe Signal

title

Probe Signal block将数据流转化成一个变量中。为了获取当前数据流的值,必须调用其level函数。这个函数是异步于数据流的,它仅仅可以检测当前数据流的值,而非每一个采样点。其他blocks如Probe Signal Vector可以轮询一个向量流的值,Probe Rate可以轮询一个数据流的平均吞吐量。

在一个Python项目中,the Probe Signal的level函数需需要被执行去获取当前值。

val = self.probe.level()

因为在GRC中这个函数不能直接被调用,所以Function Probe block需要使用

Function Probe

title

这个Function Probe block用来以某一速率调用另一个

查看更多
? GNU Radio ?    发布于 2016-12-08   2389人围观   0条评论

GNU Radio Companion

  • 目标
    • 用标准的模块或库创建流图
    • 学习调试流图
    • 理解GNU Radio中的采样和throttle
    • 学习使用文档理解模块的功能
  • 学习前提
    • git的基本知识
    • GNU Radio 3.7.4或者更新版本
    • Tutorial 1

2.1. 建立教程

开始之前,我解释一些如何规划整个教程。Github上的教程包括了所有的图片、grc文件和模块文件。我们可以参考这些文件,但是为了学习和增长经验,我们需要自己去时间。所以,我建立俩个文件夹,一个存放专门存放solutions,另外一个专门存放work:

  1. /home/user/gnuradio/tutorials/solutions
  2. /home/user/gnuradio/tutorials/work

2.1.1 克隆仓库

开始之前,我们需要克隆仓库。首先,打开终端并切到solutions目录。克隆仓库到本地。

  1. $ git clone https://github.com/gnuradio/gr-tutorial

2.1.2 安装模块

在被克隆的仓库中,我们运行以下命令,编译安装solutions

  1. mkdir build
  2. cd build
  3. cmake ..
  4. make -j8
  5. sudo make install
  6. sudo ldconfig

如果我们想要自己去做这些教程,我们可以卸载这些模块。

  1. sudo make uninstall
  2. sudo ldconfig

2.2 了解GRC

我们在Tutorial1中已经知道GNU Radio是一个工具的集合,可以用来开发软件无线电。在这个教程中,我们将要探索如何使用GRC(GNU Radio的图形化工具)。GRC允许我们图形化创建Python文件,而不是单单使用命令和代码。

在终端(ubuntu:ctrl+alt+t)中打开gnuradio-companion,让我们开始GRC的学习之旅。

  1. $ gnuradio-comp
查看更多
? GNU Radio ?    发布于 2016-12-08   1979人围观   0条评论

其实么,不准备翻译这个的,因为确实这一节废话比较多,但是呢,为了完整性,所以还是花了点时间稍微翻译了一下。所以不细致的地方勿喷。

GNU Radio和Software Radio的介绍

什么GNU Radio?

GNU Radio是一个能够使用户独立设计、仿真、部署高性能的无线电系统。它是一个高度模块化、面向流程图的架构。这让我们可以可容易理解处理过程,并用来解决复杂的信号处理问题。

GNU Radio目前已经有许多方面的应用,比如音频处理、移动通信、卫星追踪、雷达系统、GSM、DRM等等。

它自身并不需要特定硬件平台的支持。它也不为特定的无线电通信标准(例如,802.11,ZigBee,LTE等)提供开箱即用的应用,但是它可以(并且已经被)用于开发基本上任何频带限制通信标准。(这段来着谷歌翻译)

为何需要GNU Radio?

以前,开发无线通讯设备时,工程师不得不开发特定的芯片来编码或者解码特定的发射信号,还要给这些东西debug

Software-Defined Radio(SDR),即软件无线电,采取模拟信号处理,并且在屋物理和经济可行的情况下,将其移动到计算机上处理无线电信号。

当然,你可以在从头开始编写的程序中使用计算机连接的无线电设备,根据需要连接算法以及自己移入和移出数据。但这很快变得麻烦:为什么要重新实现标准过滤器?为什么你必须关心数据在不同处理块之间如何移动?使用高度优化和对等处理的实现方式不是比自己写更好吗?你又如何使你的程序在多核架构上运行流畅,但在嵌入式设备上也同样运行良好并消耗很少的功率?

GNU Radio是专用于为商用计算机写信号处理程序的框架。GNURadio提供了许多可复用的模块和标准算法库,并对大量通用平台进行了高度优化,因此其具有很高的扩展性。它还自带了许多例子,以供新手开始学习。

数字信号处理

作为一个软件框架,GNU Radio致力于数字化信号,使用通用计算机来实现通信功能。

一个小小的信号理论


数字信号处理需要处理的信号是数字的。但是什么是数字信号。为了更好的理解,让我们看一个普通的信号场景:用一个手机记录声音。

物理上,人说话会产生一个声信号。在

查看更多
? GNU Radio ?    发布于 2016-12-08   4358人围观   0条评论

最近在学校做GNU Radio,因为毕设要用到这个,所以在阅读官网教程的时候,因为个人英文水平虽然可以阅读英文文档,但是读完之后却很难组织起一个架构,所以还是决定翻译一下。一来,练习自己的英文。二来,整理自己的思路

目前还在更新中。翻译完一篇文档,会更新到这里来。至于我翻译的是哪里,对照官网一看便知晓啦。当然了,得自备梯子啦。

查看更多
? linux ?    发布于 2016-11-13   793人围观   0条评论

大概俩年前在linux(redhat)开发过arm上的驱动,开发断断续续持续了一年的时间。从去年11月份之后就很少再接触linux上的东西了,最近准备系统看一下基础的一些东西(计划三天),然后开始学习安全方面的东西。方便忘记的时候查看。

  1. 用户组 和 用户权限关系
    • 创建新用户 sudo adduser <username>
    • 删除用户 sudo deluser <username>
    • su -l <username> 切换用户
    • groups <username> 查看用户属于哪个用户组
    • 只有root和sudo组用户才能给其他非sudo用户添加到sudo组
      • 比如 sudo usermod -G sudo <username>
  2. 文件权限
    • ls -a 查看所有文件(包括隐藏文件)
    • ls -l 查看文件权限、大小、用户、用户组等信息
    • drw-rwx-rwx,第一个位表示文件类型(file <filename>),剩下九位,分成三组,对应着用户、用户组、其他用户组的权限信息。
    • chmod <三个数字> 改变权限
    • chmod <u><g><o> <-|+> <rwx>直接操作对应项
  3. 创建属于自己的命令
    • 像系统命令那样使用,需要将命令所在的路径添加到当前shell进程的$PATH中去,echo PATH=$PATH:<directory of custom commands>,然后就可以任意目录下调用自定义命令
    • 但是每次关闭启动shell之后,都需要进行这样的操作太麻烦,因此需要往/home/<username>/.zshrc中写入PATH的配置,如下 echo "PATH=$PATH:<directory of custom commands> >> .zshrc,这样每次启动shell,都会执行.zshrc中的代码,也就执行了$PATH中写入命令行所在目录的操作。不同的shell的配置文件不一样
    • 修改完.zshrc这样的配置,可以source .zshrc来让其立即生效,source的别名时.,因此也可以写成. ./.zshrc,注意区分
  4. 查找文件
    • 主要是find命令,可以使用find -name
    • find还有其他比较强大的模式,用到的时候在看看
查看更多