GNU Radio入门
目录
信号源 4
1.正弦信源和常量信源 4
2.噪声源 4
3.空信源 4
4.矢量信源 4
5.文件信源 5
6.音频信源 5
7.USRP信源 5
信宿 5
1.空信宿 5
2.矢量信宿 5
3.文件信宿 6
4.音频信宿 6
socket error 100545.USRP信宿 6
简单运算 6
添加常量 6
加法器 6
减法器 6
数乘 7
乘法器 7
除法器 7
log函数 7
复数型的转换 7
浮点类型的转换 7
滤波器 8
1.FIR设计器 8
2.低通滤波器 8
3.高通滤波器 8
4.带通滤波器 8
5.带阻滤波器 8
6.希尔伯特滤波器 8
7.升余弦滤波器 8
8.高斯滤波器 9
9.FIFIR抽取滤波器 9
10. FIR插值滤波器 9
11.带有FIR抽取滤波器的DDC(数字下变频器) 10
12. 希尔伯特变换滤波器 10
13 .延时组合滤波器 10
14.IIR滤波器 10
15.单极IIR滤波器 11
FFT 11
FM调制与解调 11
数控振荡器 11
数字传输block 12
如何编写C++ blocks 12
利用模板 12
命名规则 12
导入所需模块
定义初始化函数
定义输入输出接口
gr.io_signature(min, max, size):
min 最小的连接端口数,max 最大的连接端口数,一般模块都是min,max都是一样的,但
也可以设计不一样的,这时候就是模块有些端口可以连接,也可以不连接
先是定义输入接口,然后是定义输出接口,如果模块不存在输入接口,如python入门教程appsource模块,就可以将输入端口的签名写成gr.io_signature(0, 0, 0), 同理对于不存在输出的sink 模块也可以将输出端口的签名写成gr.io_signature(0, 0, 0)
连接内部模块
第一行几乎都是#!/usr/bin/env python 如果将这一行放在脚本的开始处并且给此文件一个可执行模式,就可以直接执行Python脚本。用'chmod'命令可使脚本为可执行模式:
$ chmod +x wfm_rcv_gui.py
现在脚本wfm_rcv_gui.py变为可执行模式了。可以在shell中运行程序,用如下命令: $ ./wfm_rcv_gui.py arguments
可以用: $ python ./wfm_rcv_gui.py arguments 而无需专门给脚本设置可执行模式。
一个模块包括可执行的声明和函数的定义。每个模块都有自己的私有成员变量表,它是一个全局变量表,所有在模块内定义的函数都可以使用它。
gr里面的信号生成器sig_source_f,实数乘法模块,和scopesink2里的scope_sink_f模块,fftsink2 中的 fft_sink_f 模块
sig_source_f(fs,wav_style,fc,am)
fs 信号采样率,wav_style 产生周期信号样式,如gr.GR_SIN_WAVE 正弦波,gr.GR_TRI_WAVE三角波,fc 周期信号频率,am 周期信号幅度
“gr”是gnuradio中重要的一个子package,也是GNU Radio软件的核心。“流图”类的类型在gr中定义,它对安排信号流向来说非常关键。“eng notation”模块能给工程师的标记带来方便,使用它可以按照工程惯例赋一些常量字或者常量字符。usrpheight读音中带有接口用以控制USRP。blks是一个子package,如果查看这个路径,它几乎是空的。实际上它将任务交给了gnuradio中的子package blksimpl,用__init__.py文件描述。blksimpl可以实现一些有用的应用,例如FM接收机,GMSK,等等。
gnuradio.wxgui为GNU Radio提供可视化的工具,是由wxPython构建的。
大部分代码由类'wfm_rx_graph'oracle安装未能启动监听程序定义
以下语句: class wfm_rx_graph (stdgui.gui_flow_graph): 定义了一个新的类'wfm_rx_graph',它继承于父类'gui_flow_graph',父类gui_flow_graph由刚刚从gnuradio中导入的stdgui模块定义。根据名称空间的规定,将其写为stdgui.gui_flow_graph。
有一种重要的类在GNU Radio中非常关键:'flow graph(流图)'类。GNU Radio中定义了一系列与'GRAPH(图表)'相关的类。我们会发现stdgui.gui_flow_graph是继承自gr.flow_graph的,而gr.flow_graph是在sub-package gr中定义的。另外,gr.flow_graph又是继承于'root'类gr.basic_flow_class。在GNU Radio中,还有很多别的类是继承于gr.basic_flow_graph。这个大的'GRAPH family'使二叉树的度可以小于二是否正确GNU Radio编程变得简洁且简单,同时使信号处理的顺序看起来清晰而直接。
初始化函数init
定义一个新方法(函数)的语句如下:
def funcname(arg1 arg2 ...)
__init__方法在任何类中都是非常重要的。在定义了一个类之后,我们可以用这个类去初始
化一个实例。__init__用于在已知初始化阶段创建一个对象。类初始化将自动为新创建的类实例引用__init__函数。
在Python中没有明确标记,是用“行缩进”的方式来标明一组语句的开始和结束。所以当用Python语言写程序时,一定要注意代码的编辑和布局。有时候会发现程序执行时出现一些莫名其妙的错误,这时候可以去检查一下是不是缩进有错误。
Python并不要求变量或参数的声明。
在各种随机化方法的优缺点Python中注释语句前加‘#’号。所有‘#’号后面的语句都会被Python解释器忽略。
参数前的`*'号是Python 的一个特殊功能。它表示函数调用时,参数可为任意。这些参数将被包含在一个元组中。参量的数量是可变的,可能会出现0 或者更多常规参量。
非常典型的信号处理程序包括三个基本要素:信源、信宿和一系列信号处理模块。
source_c(arg1,arg2) 后缀c表示信号的数据类型为复数,第一个参数用于指定启动哪一个USRP,若只有一个USRP,则设为0,第二个参数用于设定USRP的抽取率。
set_pga() 设置pga(可编程增益放大器)值(以dB为单位)。
由Doxygen生成的关于USRP的一篇文档很重要,在以下路径中: /usr/local/share/vs/html 可以在这篇文档中查到所有USRP提供的函数。
blksimpl模块定义了类wfm_rcv。类wfm_rcv的基类是hier_block,此基类在模块gr.hier_block中定义。gr.hier_block可以看成是一个子流图(sub-graph),包含了很多信号处理模块,在更大的流图中,可以将它看成是一个复杂的模块。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论