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

原文网站: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部分提到的文章。

时间: 2024-08-29 14:31:07

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

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

第 1 章 人们是怎样思考和学习的 抓住听众心理--演讲者要知道的100件事 "我从来没有'教导'过我的学生:我只是尝试提供一些他们可以用来学习的东西." --阿尔伯特·爱因斯坦(Albert Einstein) 如果你想与人有效地交流并有说服力,你就需要知道人们是如何思考.过滤信息以及认知的.让他们接受信息不是个问题,如果你想让听众记住.采取行动,那么你呈现信息的方式应该与他们思考和学习的方式相匹配. 1 人更容易处理少量信息 人类的大脑一次只能处理很少量的信息--确切地说是有意识地

《抓住听众心理——演讲者要知道的100件事》一22 .人们会从错误中学习

22 .人们会从错误中学习 抓住听众心理--演讲者要知道的100件事 本文仅用于学习和交流目的,不代表异步社区观点.非商业转载请注明作译者.出处,并保留本文的原始链接.

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

20.人们学习的最优长度是20分钟 抓住听众心理--演讲者要知道的100件事本文仅用于学习和交流目的,不代表异步社区观点.非商业转载请注明作译者.出处,并保留本文的原始链接.

网站开发人员应该知道的61件事

有人在Stack Overflow上发问,动手开发网站之前,需要知道哪些事情? 不出意料地,他得到了一大堆回答. 通常情况下,你需要把所有人的发言从头到尾读一遍.但是,Stack Overflow有一个很贴心的设计,它允许在问题下方开设一个wiki区,让所有人共同编辑一个最佳答案.于是,就有了下面这篇文章,一共总结出六个方面共计61条"网站开发须知". 我发现,这种概述性的问题,最适合这种集合群智.头脑风暴式的回答方式了.这也是我第一次觉得,Stack Overflow做到了Wikip

关于Node.js:所有PHP开发人员应该知道的5点

我最近开始和Node.js打交道.以前做PHP开发,特别是Drupal,我发现向Node.js转移很容易,而且过程很愉快!但是我也需要学会从 一些不同的角度思考.下面我列出了5项我认为PHP工程师应该知道的Node.js特点. 1. Node.js是构建于Chrome的JavaScript引擎的 Google的浏览器Chrome,有一个非常快速的JavaScript引擎,叫做V8.这个JS引擎可以被独立出来.Node.js就是建立在V8之上的.这 也是为什么Node.js会运行的如此之快.对于开

iOS 开发者一定要知道的 14 个知识点

本文讲的是iOS 开发者一定要知道的 14 个知识点, 作为一个 iOS 开发者(现在对 Swift 中毒颇深 ).我从零开始创建应用.维护应用,并且在很多团队待过.在我的职业生涯中,一句话一直响彻耳边:"如果你不能解释一件事情,那你根本就不理解它." 所以为了充分的理解我每天的日常,我创建了一个清单,在我看来,它适合任何 iOS 开发者.我会试着清晰的解释每一个观点.[请随时纠正我,提出你的意见,或者干脆也来一发你觉得应该在列表上的"必须知道"的知识] Topic

App开发团队必须知道的 iOS 11 更新点

本文讲的是App开发团队必须知道的 iOS 11 更新点,WWDC 2017 已经过去差不多一个季度了,最近随着 Xcode 9 正式版以及 iPhone 8.iPhone X 的发布,iOS 11 的全面适配也被提上了日程.我整理了一下更新点,包括开发.设计.产品甚至是市场都应该注意的点,分享出来希望对大家有所帮助. 新增框架 ARKit iOS 11 引入了新的 ARKit 框架,让您轻松创建无可比拟的 iPhone 和 iPad 增强现实体验. 通过将数字对象和信息与您周围的环境相融合,A

我希望在我写第一个安卓 APP 前知道的 6 件事情

本文讲的是我希望在我写第一个安卓 APP 前知道的 6 件事情, 我的第一个 APP 是极其糟糕的. 实际上, 它已经糟糕到了让我把它从商店下架, 我甚至不愿费事儿再把它写进简历. 如果在我写它之前知道一些关于安卓开发的事情, 这个 APP 本来不会这样糟糕. 这有一个你在开发你的第一个安卓 APP 时需要牢记的事情的列表. 我下面要说的这些经验教训都是从我的第一个安卓 APP 的源码里的真实的错误中得来的. 将这些(经验)铭记在心将会帮助你写一个你可以为之骄傲的 APP. 当然, 如果你像一个

开发者所需要知道的iOS7 SDK新特性

春风又绿加州岸,物是人非又一年.WWDC 2013 keynote落下帷幕,新的iOS开发旅程也由此开启.在iOS7界面重大变革的背后,开发者们需要知道的又有哪些呢.同去年一样,我会先简单纵览地介绍iOS7中我个人认为开发者需要着重关注和学习的内容,之后再陆续对自己感兴趣章节进行探索.计划继承类似WWDC2012的笔记的形式,希望对国内开发者有所帮助. 相关笔记整理如下: 总览 开发者所需要知道的iOS7 SDK新特性 工具 WWDC2013笔记 Xcode5和ObjC新特性 UIKit动力学