原文网站:http://radioware.nd.edu

在深入学习gnuradio之前你需要知道的

学习GNU Radio需要有一定电脑基础和深入的通信与信号处理知识,本文列举了一些有用的资源,包括教程、网页链接和一些在线教程。本教程的目的是帮助GNU Radio爱好者们为这个令人兴奋的工具做一些准备。

目录

1、对gnuradio有一个清楚的认识

2、为gnuradio编写程序

3、数字信号处理(DSP)

4、通信系统

5、准备好了吗?

相信你已经发现gnuradio中的乐趣,并且已经开始急切的想要使用它了。 不幸的是,除了无穷的乐趣外,这其中也包含许多挑战。 依据你使用gnuradio的目的,你需要广泛的知识,包括(无线)通信系统、数字信号处理、基本的硬件和电路设计、面向对象的编程等等。不管怎样,你的兴趣和激情都能让那些东西学起来容易得多。本文列举了一些有用的文章和资源,它们或许在你投入gnuradio之前是很重要的。这里也有一些gnuradio 社区推荐的文章,在这里你也能发现一些有用的信息。 记住,在你开始学习gnuradio之前,那些基础并不是你必须要掌握的,但在接下来的教程中你很可能会去回顾这些知识。

1、对gnuradio有一个清楚的认识

如果你还没有一个比较清楚地认识,请读Eric Blossom的Exploring GNU Radio,这是一个对于软件无线电的一个简短介绍。Eric是整个gnuradio工程的创建人。请确保你对ADC怎么工作以及为什么需要射频前端有一定的理解,回顾一下在信号与系统课程中学习的抽样定理,然后阅读一下这两篇文章:“The Universal Software Radio Peripheral”和“What Goes in the FPGA”。这篇文章提供了两个例子:拨号输出和FM接收机。你应该做到至少理解其中的一个。不能理解FM接收机?不用担心,看第二篇文章,Eric Blossom的 Listen to FM Radio in Software, Step by Step。并非要把每行代码都读懂,但你需要清楚信号是怎么从空气中传到声卡的。

寻找任何与gnuradio相关问题的答案都应该从 GNU Radio Wiki开始, Gnuradio协会在提供援助方面也表现的相当慷慨,它通过mailing list提供帮助。However, before posting a question that is stumping you, do an exhaustive search of the list's archive to make sure that it has not already been addressed. 然而,在你发表困扰你的问题之前,最好先仔细在邮件列表里搜索一番,确保你的问题没有被处理过,阅读一下发送邮件的参考以确保提供有用的信息,这对于别人解答你的问题也会有帮助。Gnuradio是软件定义无线电的支柱,射频前端是另外的东西。典型的,Ettus Research的USRP正是出于此目的。

§ Ettus Research - USRP的制造商。在这里您可以订购USRP及配件。

§ USRP - Frequently Asked Questions - 概述USRP和常见问题列表。

你不必拥有USRP(或任何射频前端)使用GNU Radio,但实际的实验需要一个前端。

2、为gnuradio编写程序

要充分利用gnuradio,你应该会自己编写代码。在“Exploring GNU Radio'”中,你知道里gnuradio的软件结构包含两层:所有的信号处理模块是用C++编写的,python用来创建网络或流图并且负责把信号处理模块粘到一起。在这种方案中,python相当于一种较高层的语言。Gnuradio已经提供了许多有用的经常使用的模块,所以很多情况下,你不需要用到C++。使用python在应用层开发是高效的,接下来的教程python在gnuradio应用中的使用。然而,要完成更复杂的任务你必须要使用C++来建立自己的模块,这种情况下,Eric Blossom的How to write a block 正是你所需要的,在后续的教程中我们会将这些内容。

你可能想要知道gnuradio中实现了哪些模块,不幸的是,不幸的是,GNUradio很多地方还没有很好的文档记录,但你仍然使用Doxygen生成有两个非常有用的资源。安装gnuradio-core和usrp模块之后,您可以找到两个html包位于

/usr/local/share/doc/gnuradio-core-x.xcvs/html/index.html

/usr/local/share/doc/usrp-x.xcvs/html/index.html

我已经在我的浏览器中添加了书签。虽然他们不够清晰,他们可以提供你很多信息。GNUradio Doxygen生成的文档也可以在线here。如果你还没有机会使用Python,请学习Python在线教程。这里有一些最重要的部分:

§ Section 2: Using the Python Interpreter

§ Section 3: An Informal Introduction to Python

§ Section 6: Modules

§ Section 7: Input and Output

§ Section 9: Classes

这些概念将在GNUradio编程中经常使用。如果面向对象编程(OOP)听起来陌生,你应该仔细阅读Section 9更多。 If object oriented programming (OOP) sounds unfamiliar to you, you should read section 9 more carefully. 下面的链接也可以帮助您掌握面向对象的本质:

§ Lesson: Object-Oriented Programming Concepts

§ Introduction to Object-Oriented programming Using C++

§ The Object Oriented Programming Web

对于更高级的开发,C++知识是必要的。For more advanced development, C++ knowledge will be necessary. 以下文献可能对你有用:

§ C++ Language Tutorial

§ C++ Reference

在这个阶段,Python是更重要,所以一定要掌握它。

3、数字信号处理 (DSP)

我们大多数人学习了信号与系统课程,在这门课中学到的东西是非常重要的。然而,这是不够的。请确保你不会迷路,如果把信号从模拟形式转换到数字形式、到时域或者到频域。你需要知道一些概念包括抽样定理、z变换,如何得到一个信号的频谱和有限脉冲响应(FIR)和无限脉冲响应(IIR)过滤器。在这里我推荐几本经典的书:

§ Signals and Systems (2nd edition) - Alan V. Oppenheim, Alan S. Willsky

§ Discrete-Time Signal Processing (2nd edition) - Alan V. Oppenheim, Ronald W. Schafer, John R. Buck

§ Digital Signal Processing: Principles, Algorithms and Applications (3rd edition) - John G. Proakis, Dimitris Manolakis

阅读关于离散时间傅里叶变换和FIR,IIR滤波器的章节。我知道书是昂贵的和乏味的,这里还有一些其他有用的在线资源:

§ Digital Signal Processing Tutorial

§ The Scientist and Engineer's Guide to Digital Signal Processing

4、通信系统

我们知道真正发送和接收的信号不是在基带,它们需要调制和解调。此时你可能在你的一些课程学习了调幅和调频收音机的概念,这两个属于模拟世界。为开发更有用和有趣的方案,我们需要数字通信。在这一点上,特别重要的和有趣的是数字调制,解调和同步。在大三时,你可能对通信原理更感兴趣。此外,我建议你读:

§ Chapters 4 and 5 - Digital Communications (4th edition) - John G. Proakis

这两个章节中介绍的知识正是我们需要的。这里是另一本很不错的书:

§ Digital Signal Processing in Communication Systems - Marvin E. Frerking

这本书有一个实际工程重点,包含很多很好的例子。Frerking对于一个给定的发射机或接收机的设计问题通常提供了多种解决方案,提出了实用的算法而不是纯粹的理论讨论,它甚至可以用作通信系统设计的字典。

5、准备好了吗?

我上面列出四个主题,并不意味着在使用GNUradio之前你需要一个接一个的完成。你当然也可以在本教程学习过程中学习它们。但是至少你应该阅读我在GNUradio部分提到的文章。

在深入学习gnuradio之前你需要知道的相关推荐

  1. 学习Go之前你应该知道的10件事 | Gopher Daily (2021.04.21) ʕ◔ϖ◔ʔ

    每日一谚:Don't use an interface if it's not clear how the interface makes the code better. Go技术生态 编写好的单元 ...

  2. 学习PCL库你应该知道的C++特性

    要学会PCL首先要对C++进行学习,所以这里我们首先对PCL库的代码中常见的C++的技巧进行整理和概述,并且对其中的难点进行细化讲解.首先我们搞清楚PCL库的文件形式.是一个以CMake构建的项目,库 ...

  3. Hive学习笔记,你想知道的Hive

    1. 什么是Hive(蜂巢)? Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能.Hive是基于HDFS之上的数据仓库,也就是说Hive中 ...

  4. Word学习笔记:P10-你应该知道的Word表格技巧(上)

    文章目录 一.Word表格技巧 1.1 插入表格 1.2 调整表格 1.2.1 调整行高与列宽 1.2.2 删除内容 1.2.3 移动行和列 1.3 表格模板 1.4 表格公式 一.Word表格技巧 ...

  5. 《抓住听众心理——演讲者要知道的100件事》一20.人们学习的最优长度是20分钟...

    本节书摘来异步社区<抓住听众心理--演讲者要知道的100件事>一书中的第1章,第20节,作者: [美]Susan M. Weinschenk 译者: 杨妩霞 , 杨煜泳 责编: 赵轩,更多 ...

  6. ktt算法 约化_答:那些深度学习《面试》你可能需要知道的

    本文是问题"那些深度学习<面试>你可能需要知道的"的回答,答案均以英文版Deep Learning页标标记. 1.列举常见的一些范数及其应用场景,如L0,L1,L2,L ...

  7. 入门深度学习?这里有5件你应该知道的事

    作者|PURVA HUILGOL 编译|Flin 来源|analyticsvidhya 开始你的深度学习生涯? 对于新手来说,深度学习是一个复杂而令人生畏的领域.像隐藏层.卷积神经网络.反向传播等概念 ...

  8. 《抓住听众心理——演讲者要知道的100件事》一第 1 章 人们是怎样思考和学习的...

    本节书摘来异步社区<抓住听众心理--演讲者要知道的100件事>一书中的第1章,第1.1节,作者: [美]Susan M. Weinschenk 译者: 杨妩霞 , 杨煜泳 责编: 赵轩,更 ...

  9. 关于机器学习,你应该知道的3个热门专业术语

    https://www.toutiao.com/a6683842829510246923/ 2019-04-25 22:43:48 关于机器学习,你应该知道的3个热门专业术语 原创: 吴郦军.罗人千 ...

最新文章

  1. ubuntu g++编译32位应用
  2. android设置gradle位置,android studio gradle 位置更改
  3. 10 分钟上手 Vue 组件 Vue-Draggable
  4. java学习(145):file常用方法2
  5. python trie
  6. plpgsql语句的兼容性
  7. Docker是什么,有什么用?一看就明白
  8. 苹果Mac经典办公套件:Microsoft 365 支持辅助功能,高效工作
  9. 视频教程-Oracle 11G 入门到项目实战-Oracle
  10. 安卓彩虹DS网网站源码去授权版 附详细视频教程
  11. CSS提高图片清晰度
  12. 网络编程——Java Email
  13. eclipes创建web项目
  14. 2016小米校招笔试题
  15. cmd、命令大全、DOS命令、使用方法(超全),是我喜欢的文章
  16. java后端系统学习总结 03_java Web基础学习
  17. 力扣 1539. 第 k 个缺失的正整数
  18. SQLServer中用户 'sa' 登录失败解决办法
  19. 鸿蒙系统研究之六:U-Boot引导
  20. 编程题A-实部与虚部的和

热门文章

  1. 第三次的面试的 笔试题目
  2. 树莓派 gpio / 串口通信
  3. 电源纹波,有这样几种测试方法,值得收藏
  4. 2012益和VA产品座谈会召开
  5. 使用three.js搭建室内场景
  6. c++ 队列_Day 5:用两个栈实现队列
  7. 腾然教育MCN-创作者签约须知
  8. 通过确定性机会“捡钱”
  9. 4 ZooKeeper
  10. 运维新手必备的10个基本Linux命令