GNU Radio 学习日志by lll

 一、GNURadio简介

GNU Radio是一个设计框架,用户可以用来设计、模拟和部署的真实高效无线电系统。这是一个高度模块化,自带flowgraph流程图,集成处理各种信号的库,可以很方便的将各个模块结合到一起来处理复杂的信号。

GNU Radio已经被广泛应用于无线电世界,可以用电脑软件处理包括音频处理、移动通信、卫星跟踪、雷达系统、GSM网络、数字信号广播等等

二、GNUradio 特点

1.开源

2.数字;信号处理

理论知识

1.小信号理论

2.数字信号特点

      (1)  a有限量数值 b只有时间是变量?

        (2)数字信号能够用一个数字序列来表示,我们通常称作样本,样本之间固定的时间间隔决定了采样频率。

        (3)流程图进行编译:当创建一个信号处理应用,也就是一个完整的块处理图,这样的图在GNU Radio中称为flowgraph流程图。

安装过程 心得

1.终端 cmd行操作

2.获取安装库失败:unbuntu系统下获取网址速度太慢

        查到的解决方法:用梯子;换一个网络代理

        自己解决方法:换了一个网络代理以后解决是很快;第二个gr-etcetera我是通过利用pybombs recipes add gr-etcetera git+https://mirrors.tuna.tsinghua.edu.cn/pybombs/recipes/gr-etcetera.git解决的,本质应该也是从镜像网站下载到的。

3.安装 pip包失败

        换为pip3命令行Ubuntu下 HackRF的GNURadio环境搭建 - 哔哩哔哩

4.在python运行中 SyntaxError: invalid syntax

        重新安装了pip pybombs包

5.运行前端无法显示python自动生成的页面结果 理想如下:

解决方案:id名不合法;传递数据类型不一样

 三、GRC简介

1.GRC:(gnuradio-companion的简写,GNU Radio的图形化界面编程工具,类似于simulink)来创建不同的通信程序。简单来说,GRC是一种帮助我们用图形化的形式来创建python脚本程序的工具。

2.首先,看一下GRC的主界面。主界面包括五个部分:

(1)界面右侧的GNU Radio的模块库,用于调用已集成到GRC中的模块

(2)GRC的工具栏,用于GRC程序的打开、创建、编译、执行等操作

(3)GRC的终端,用于显示GRC程序,将模块拖拽到此处,用线将不同的模块连接起来,形成通信程序。

(4)工作空间,用于显示GRC程序运行过程中的调试信息

(5)变量,用于显示GRC程序中的变量名称及其数值

3.

4.修改属性以及颜色展示:

这里的参数,当你修改了参数的值之后,在你未保存之前,参数栏的颜色会变成蓝色。关于该模块的解释说明,可以查看”Documentation”选项卡。

为了更好的区分不同程序,你可以把每个程序的“Option”模块的ID参数,修改为不同的值,例如“tutorial_two_1”,你可以根据自己的需要来命名。这个ID的参数,会决定你生成的python脚本的名称。即如果你的ID是“tutorial_two_1”,那么生成的Python脚本的名字就是“tutorial_two_1.py”。在GNU Radio 3.8中,如果你不修改ID的默认值,当你运行GRC流图的时候,则会提示错误。

四、搭建GRC流程图 基础部分

1.

2.注意前后模块的变量种类要一样

3.修改id名

(一)采样率

1.定理:在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中最高频率fmax的2倍时(fs.max>2fmax),采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的2.56~4倍;采样定理又称奈奎斯特定理。

概念理解:

频谱波峰:

频域波形:

2.实操:

(二)搭建AM发射器

原理:

flowgraph:

(三)搭建AM接受器

(四)UHD频谱分析-接入式硬件

需要提前下载UHD USRP

五、PSK解调调制(模拟仿真)

笔记目录:

概念笔记:

  • constellation modulator实现的功能是MPSK调制,其中有一个参数是‘constellatio:要把二者的ID名设置相同,即可实现MPSK调制,调制的具体信息要在object里面设置
  • sps (sample per second) 采样速率的意思,这个参数经常作为变量去设置滤波器
  • firdes(意为fir滤滤为波器设计 des是design的缩写),波器设置常用的函数,只需写firdes.lowpss(.),括号内输入滤波器的参数即可实现滤波器设计,该值常作为变量用在环路中
  • 根升余弦 (RRC) 脉冲整形滤波器:它为我们提供了一个参数来调整the roll-off factor of the filter,通常在数学上称为“alpha”。下面的 mpsk_rrc_rolloff.grc 流程图生成了一个图示,显示了不同的values of the excess bandwidth。典型值介于 0.2(红色迹线)和 0.35(绿色迹线)之间。
     

  • 来自AI:在GNU Radio中,decimating FIR(有限冲激响应)滤波器是一种用于降低信号采样率的同时保持信号带宽的滤波器。这种滤波器通过丢弃一些采样点来减少数据的率,这个过程称为下采样(decimation)。这对于减少处理带宽和速度非常有用,同时可以减少硬件资源的需求。

    要在GNU Radio中实现decimating FIR滤波器你可以使用`firdes`模块中的函数来设计滤波器,然后使用`gr.filter`模块中的`fir_filter_ccf`块来实现。以下是一个简单的例子,展示了如何创建和应用一个decimating FIR滤波器:

    
    
    
    from gnuradio import gr, firdes
    from gnuradio.filter import firdes
    
    # 定义滤波器参数
    sample_rate = 48000  # 原始采样率
    decimation_rate = 4  # 下采样率
    bandwidth = 5000      # 滤波器的带宽
    taps = fird.low_pass(1, sample_rate, bandwidth, 5000, firdes.WIN_BLACKMAN_hARRIS)
    
    # 创建decimating FIR滤波器
    decimating_filter = gr.fir_filter_ccf(decimation_rate, taps)
    
    # 示例流图
    src = gr.vector_source_c(np.random.randn(1000), 'sc16')  # 生成随机数据
    sink = gr.vector_sink_c()  # 数据接收
    
    # 将源数据通过decimating FIR滤波器
    src >> decimating_filter >> sink
    
    # 运行流图
    gr.top_block().run()
    ```
    
    

    在这个例子中,我们首先定义了原始采样率`sample_rate`和下采样率`decimation_rate`,以及滤波器的带宽`bandwidth`。然后使用`firdes.low_pass`函数设计了一个低通滤波器的系数`taps`。接着,我们创建了一个`gr.fir_filter_ccf`块,将其参数设置为`decimation_rate`和`t`,这样每个原始采样点会被保留下来,然后丢弃接下来的三个采样点,从而实现4倍的下采样。

    请注意,decimating FIR滤波器的设计需要考虑到下采样率,以确保信号的完整性不会因为下采样而丢失重要的信息。通常,你需要确保滤波器的滚降特性在整个信号带宽内都是适当的,以便在降低采样率后能够重建信号。

  • 滤波器模块中找了很久taps=rrc_taps 值:firdes.root_raised_cosine (1.0,samp_rate,samp_rate/sps,excess_bw,11*sps)

(一)发射一个信号

1.

(二)qpsk信号生成

官方手册讲解:

在星座图中,我们可以直观的看到过采样(因为我们把Sample per symbol设置成了4,其实实际上我们并不需要这么大的sps,所以叫做过采样)和滤波操作的作用。例如,过采样的结果就是我们在一个符号中生成了4个采样值。在本例子中,均方根升余弦滤波器带来了自干扰,也就是符号间干扰或叫码间干扰(inter-symbol interference, ISI)。ISI对于信号接收和还原来说是一个不利因素。我们将在后续的时钟恢复环节重点解决这个问题。

此刻,我们先观察生成的QPSK信号。在频域图形中,一方面,滤波器可以使得频域信号的带外功率明显降低;另一方面,“Throttle”模块的输出信号被看作是QPSK发射信号,图形中的图标是“Tx”(蓝色曲线),“Decimating FIR Filter”模块的输出信号被看作是QPSK接收信号,图形中的图标是Rx(红色曲线),通过对比发现,经过了“Decimating FIR Filter”模块的作用,接收信号的带外功率明显减少了,即在有效带宽之外,红色曲线的带外功率明显要低于了蓝色曲线的带外功率。

(二)加上信道仿真

解决思路:控制变量

针对加性噪声、频率偏移、时钟偏移分别解决

(三)解决时钟偏移——时钟恢复time recovery

一开始没有看懂官方手册的教程

(四)解决——多径效应

(五)相位矫正和频率微调

(六)解码

附录、错误语法汇集(目前遇到的

invalid literal:python语法错误;十进制语法错误:decimal

invalid synatax:语法错误,基本在工作状态都是这个错误,具体那里错了需要在前面输出结果查找

  • 25
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GNU Radio书》是一本介绍了GNU Radio软件框架的指南。GNU Radio是一个开源的信号处理工具包,可用于开发和实现软件定义无线电(SDR)系统。该书通过详细讲解GNU Radio的核心概念、基本原理和应用范例,为读者提供了一个全面的了解GNU Radio的手册。 这本书首先介绍了GNU Radio的背景和特点,包括其在无线电和通信领域中的应用。然后,它详细讲解了GNU Radio的体系结构和组件,如信号流图、块、连接和消息传递系统,使读者能够理解GNU Radio的工作原理。 接下来,该书通过一系列实例和案例,教读者如何使用GNU Radio进行信号处理和调试。它讲解了如何创建各种信号处理流程,如调制、解调、滤波和解码等。此外,它还介绍了如何使用GNU Radio进行频谱分析、频偏测量和通信系统模拟等高级功能。 此外,该书还涵盖了GNU Radio的一些高级主题,如性能优化、并行处理和硬件加速技术。它介绍了GNU Radio的各种工具和库,如信号生成器、信号分析器和信号源,以及如何使用它们进行开发和调试。 总体而言,这本书是一本全面介绍GNU Radio的指南,适合那些对无线电和通信领域感兴趣的读者。它通过简明易懂的语言和实例,帮助读者了解GNU Radio的基本原理和应用,为读者进一步探索SDR系统提供了坚实的基础。无论是对于学术研究者、工程师还是无线电爱好者,这本书都是一本值得阅读的指南。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值