GNU Radio创建Zadoff-Chu序列C++ OOT块


前言

本文实现在 GNU Radio 中创建 Zadoff-Chu 序列 C++ OOT 块,仅做代码调试记录。


一、ZC序列是什么?

参考我之前的博客:ZC序列理论学习及仿真

二、创建自定义的 C++ OOT 块

参考官方教程 Creating C++ OOT with gr-modtool 创建自定义的 OOT块

1、创建 OOT 模块

GNU Radio 附带 gr_modtool,这是一个用于创建树外 (OOT) 模块的软件工具。 OOT 模块可以被视为自定义 GNU Radio 块的集合。使用 gr_modtool 创建一个名为 myModule 的 OOT 模块:

gr_modtool newmod myModule 

创建目录 gr-customModule,其中包含 OOT 模块的所有骨架代码,但它还没有任何块。进入 gr-myModule 目录:

cd gr-myModule 

列出 OOT 模块中的所有文件和目录:

ls

在这里插入图片描述

2、创建 OOT 块

①、在 gr-myModule 目录下添加一个名为 Zadoff-Chu 的新块:

gr_modtool add ZadoffChu

将显示块的类型:

GNU Radio module name identified: myModule
('sink', 'source', 'sync', 'decimator', 'interpolator', 'general', 'tagged_stream', 'hier', 'noblock')

②、ZC 序列作为信号源输入模块,因此这里将模块类型设置为 source

Enter block type: source

③、使用 C++ 代码实现

Language (python/cpp): cpp
Language: C++
Block/code identifier: ZadoffChu

④、输入版权所有者的名称或组织:

Please specify the copyright holder: gnep

⑤、输入两个参数,分别是 ZC 序列的长度和根索引。
为了保证 ZC 序列的优良特性,应保证 ZC 序列的长度和根索引互质

Enter valid argument list, including default arguments: 
int zc_len=300, int root_index=11

⑥、选择是否需要 QA 代码:

Add Python QA code? [Y/n] n
Add C++ QA code? [Y/n] n

⑦、然后将创建或修改多个文件:

Adding file 'lib/ZadoffChu_impl.h'...
Adding file 'lib/ZadoffChu_impl.cc'...
Adding file 'include/myModule/ZadoffChu.h'...
Editing swig/myModule_swig.i...
Adding file 'grc/myModule_ZadoffChu.block.yml'...
Editing grc/CMakeLists.txt...

相关配置如下图:
在这里插入图片描述

3、修改 C++ 文件

修改 gr-myModule/lib/ 目录下的 ZadoffChu_impl.ccZadoffChu_impl.h 文件和 grc/myModule_ZadoffChu.block.yml 目录下的配置文件

ZadoffChu_impl.cc 核心部分程序:

float arg;
if (_zc_len % 2 == 0) {	// N is odd
	arg = -1 * pi * _root_index * n * n / _zc_len;
} else {				// N is even
	arg = -1 * pi * _root_index * n * (n + 1) / _zc_len;
}

grc/myModule_ZadoffChu.block.yml 部分核心配置:

parameters:
- id: zc_len
  label: zc length
  dtype: int
  default: 300
- id: root_index
  label: root index
  dtype: int
  default: 11

详细代码及配置文件文末自取

4、编译及安装 OOT 块

1、该块需要编译和安装,确保目前位于 gr-myModule 目录中:

cd gr-myModule

2、如果 build/ 目录已存在,请将其删除:

rm -rf build/

3、创建 build/ 目录

mkdir build

4、进入 build 目录

cd build/ 

5、运行 cmake 来构建 makefile

cmake ..

6、编译模块

make

7、安装模块

sudo make install

8、更新 myModule 库的链接

sudo ldconfig 

三、测试

打开 gnuradio-companion

gnuradio-companion

可以看到安装成功的 ZadoffChu 序列模块
在这里插入图片描述

1、grc 图

在这里插入图片描述

2、运行结果

①、时域图

请添加图片描述

②、时域幅值模图

请添加图片描述

③、IQ 曲线

请添加图片描述

四、其他

删除 OOT 块的命令为 gr_modtool rm 模块名
在这里插入图片描述

五、资源自取

文件内容如下:GNU Radio创建Zadoff-Chu序列C++ OOT块
在这里插入图片描述


我的qq:2442391036,欢迎交流!


相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-04-15 05:24:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-15 05:24:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-15 05:24:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-15 05:24:04       20 阅读

热门阅读

  1. xss攻击原理与解决方法

    2024-04-15 05:24:04       25 阅读
  2. Kotlin 面试题

    2024-04-15 05:24:04       23 阅读
  3. 责任链模式学习进阶--一起学习吧之数据库

    2024-04-15 05:24:04       20 阅读
  4. RS-232、RS-422及RS-485串行数据标准的选择及使用

    2024-04-15 05:24:04       21 阅读
  5. css 太极图案例带来的收获

    2024-04-15 05:24:04       55 阅读
  6. 物联网智能仓储系统毕业设计报告

    2024-04-15 05:24:04       20 阅读
  7. 方法引用(详)

    2024-04-15 05:24:04       17 阅读
  8. 【华为OD机试C++】图片整理

    2024-04-15 05:24:04       21 阅读