1.gnuradio·加解扰模块分析
2.gnuradio·进阶系列|SRRC滤波
3.sdr开发篇 6. zynq+ad9361的linux工程搭建
gnuradio·加解扰模块分析
加解扰模块在通信系统中起到至关重要的作用。其基本概念,如维基百科所述,旨在恢复定时并减少载波间干扰。扰码器通常基于线性反馈移位寄存器实现,以增强信号的小偷源码镜像功率谱,使其更分散,符合最大功率谱密度要求。加性扰码和乘性扰码是两种主要的扰码结构。
加性扰码直接将输出送入寄存器,而乘性扰码则先与输入数据进行异或操作,再送入寄存器。具体而言,加性扰码的实现包括mask、seed、录像存储源码length和count等参数。当设置bits per byte为1时,通过向量源输入特定序列,可观察到扰码后的输出序列。解码过程相对简单,只需与加扰过程保持一致,即可还原原始数据流。
乘性扰码的实现涉及特定参数和头文件、函数。其与解扰模块的种子值设置不同,这与加性扰码形成对比。在实际应用中,乘性扰码需将字节数据转换为比特位进行操作。通信系统中,colmap源码解析使用repack bits模块能实现逐比特处理及数据流的位置对齐。在自同步过程中,扰码序列可能会产生garbage,但很快就能通过流图测试实现同步还原。
对扰码模块进行详细的测试和验证,可参考gnuradio源码下的qa_scrambler.py文件。了解扰码模块的实现和应用,有助于优化通信系统的性能,减少干扰,提升数据传输的可靠性。
gnuradio·进阶系列|SRRC滤波
基础知识
了解RC滤波器与平方根升余弦滤波器(SRRC)的基本概念。RC滤波器是升余弦滤波器的简写,而SRRC是其平方根形式。冲激响应是中原net源码滤波器对单位脉冲的响应,对于平方根升余弦滤波器而言,冲激响应被称为平方根奈奎斯特脉冲,对于升余弦滤波器则为奈奎斯特脉冲。在脉冲成形中,平方根升余弦滤波器是重要工具之一,并属于匹配滤波器范畴。
匹配滤波器与一般滤波器的区别在于目标。一般滤波器旨在保持信号频谱的保真度,同时滤除不必要的频谱分量;而匹配滤波器则在存在高斯白噪声的条件下,通过调整信号能量来最大化已知信号的信噪比。匹配滤波器改变信号的时域结构,在输出码元末端获得最大幅度值。
升余弦滤波器的频域表达式与对应时域表达式被详细描述,涉及两个奇点的popupWindow源码在线定义。升余弦滤波器的冲激响应示意图清晰展示了其频域与时域特性。
平方根升余弦滤波器的时域表达式同样被列出,两个奇点定义也一并说明。平方根升余弦滤波器的级联响应与单个响应示意图提供了更直观的视觉理解。
在gnuradio中实现升余弦滤波器算法。源代码提供了五个关键参数:滤波器增益、采样频率、符号率、滚降系数、抽头数。滤波器增益影响信号能量,采样频率在通信系统中通常设定为系统采样率,而符号率与每秒传输符号数相关联。gnuradio中的实现包括理论公式的量化与近似处理。
通过与matlab根升余弦滤波函数对比,理解span与sps参数的意义。span代表滤波器的符号长度,sps代表每符号样点数。matlab与gnuradio中的ntaps变量含义相同。
通过设定参数(内插系数、滚降系数、span、sps)分析两个软件在成型数据上的差异。内插系数的大小影响成型效果的接近度。
在实际应用中,使用gnuradio根升余弦滤波模块时,参考matlab API函数设计参数值。
对SRRC的深入分析已在先前的讨论中进行。
sdr开发篇 6. zynq+ad的linux工程搭建
SDR开发过程中,我们首先从hdl源码开始,从github下载_r1分支的zip包,解压后放置在工作区~/work/zynq_dev/ados。然后,创建Vivado工程,配置环境并编译,需要注意的是,这个工程需要针对xmzed进行修改。接着,对DDR和EMIO接口进行适配,并导出HDF文件。
接着,我们进入Petalinux 2.1工程阶段,拷贝适配后的HDF文件,并从github获取ADI的Linux内核和meta-adi。内核和meta-adi需下载、解压并配置,硬件信息目录中需要设置唯一的HDF文件。初次配置后,后续只需在修改后重新编译,配置启动方式、接口、SD卡,并解决source bitbake失败的问题。
内核配置中,USB和IIO功能默认开启。设备树部分,需在dash环境下修改,并在device-tree.bbappend中添加自定义设置。root文件系统配置时,由于meta-adi的影响,需要调整petalinux-user-image.bbappend以恢复默认设置。
编译工程时,注意分配足够的CPU资源,可能需要解决网络问题并设置全局代理。遇到错误时,如jesd-status-dev-r0的fetch问题,需替换相关文件。最后,打包boot.bin并制作SD卡文件系统,包括EXT和FAT分区,并进行启动测试。
测试阶段,通过拨码开关启动设备,使用默认root/root登录,进行IIO连接测试和Gnuradio发送信号测试。整个过程参考了相关教程和文档,如AD的开发指南和Linux驱动等。