本文档主要介绍基于 IW-RFSOC-2T2R-47DR 板卡实现的正交振幅调制(QAM) 调制、解调模块及其样例工程的基本原理与使用方法。
QAM是一种常见的数字调制技术,通过同时调制信号的振幅和相位来传输信息。其原理是将两个正交的调制信号叠加在一起,以增加信号传输效率和频谱利用率。在QAM中,调制的信号通常表示为I(实部)和Q(虚部)两个分量,每个分量对应于一个基带数据流,通过调节振幅和相位来编码不同的符号。在实际应用中,QAM被广泛用于各种数字通信系统中,例如Wi-Fi标准(如802.11),以及4G LTE和5G移动通信系统中的物理层。通过调整QAM的调制阶数(即可支持的符号数),可以平衡数据速率和信号传输的可靠性,从而适应不同的通信需求和信道条件。
本文档介绍的工程包含了一组QAM调制解调器,实现了163.84M Symbol/s 的QAM-256, QAM-64, QAM-16, QPSK 四模可动态配置调制解调器。调制器部分集成了导码生成器和符号调制器,可实现自定义导码及帧长度生成。解调器端包含了帧头探测、星座校准、符号判决和调试探针模块,除了生成判决数据外还可利用程序设置探测序列、设置探测阈值、校准星座图以及读回调试数据。
取出 IW-RFSOC-2T2R-47DR 板卡(后文简称为“板卡”)平放在桌面上,接入随机附赠的电源适配器、使用USB Type-C调试线缆接入PC端、使用RJ45以太网线缆接入PC端并使用SMA线缆将 CH6 和 CH4 通道相接,具体连接状态如下图所示。
请注意,板卡的以太网接口支持两种连接方式,分别为跨路由/交换连接和直接连接。如下图所示,可以以左图中的方式将PC端与板卡接入以太网中,板卡将通过DHCP服务器获取IP地址,获取到的IP地址会打印在串口上,可以利用串口调试类软件获取其工作的IP地址。也可以以网线直接连接至PC上,板卡在DHCP请求超时后会自动为自己分配IP地址:192.168.100.100,请确保为PC机相应网卡分配了同一子网的地址。
打开Xilinx Vitis,点击“File”> “Platform Project...”创建平台工程
按照下图配置创建平台工程。
创建完平台工程并编译成功后,点击“File”> “Application Project...”创建应用工程
选择刚创建的平台工程。
选择下图中的处理器并新建System工程。
新建独立域。
选择“Empty Application(C)”。
将板卡的配置拨码开关调整至JTAG启动模式,打开电源开关。对刚创建的“System”工程右键,并选择“Program Flash”。
“Image File”选择文件列表中提供的“BOOT.bin”文件,“Flash Type”选择“qspi-x8-dual_parallel”,“Init File”选择文件列表中提供的“XCZU47DR_FSBL.elf”,勾选“Blank check after erase”,勾选“Verify after flash”。点击“Program”开始烧录。
烧录成功后可以得到如下图所示的提示,显示"Flash Operation Successful"即为烧写成功。
关闭板卡电源,将板卡的配置拨码开关调整至QSPI Flash启动模式,使用串口调试软件打开并监听USB-JTAG端口,再次打开板卡电源,在串口上可以读取到如下图所示的消息,其中包含了板卡的IP地址及状态,这表示板卡已成功启动。
解压并打开文件列表中提供的“QamCTL.zip”压缩包,双击运行其中包含的可执行程序“QamCTL.exe”。其UI如下图所示,分为几个板块,其具体功能为:
星座图仪表盘(1):根据板卡采集的数据绘制星座图上的星座点,在没有数据时仅显示如图 14所示的网格点图,其上展示的星座网格点会根据解调器的“调制模式”选项发生变化,而并不会根据调制器的“调制模式”选项发生变化。
设备控制面板(2):通过以太网IP地址连接至板卡,并对板卡上的部分硬件参数进行配置和监控。
调制解调控制面板(3):配置板卡上的序列生成器、调制器以及解调器。
时钟树配置指配置为RFSoC芯片提供参考时钟的LMK04828芯片 ,输入各个节点的预设频率并点击“设置”即可实时计算LMK04828芯片寄存器参数并实时生效。
在部分固件中禁用了此选项中的部分或者全部配置参数,如果切实需要进行自定义配置可联系我们提供启用配置选项的固件版本。
NCO配置指配置RFConverter中提供的NCO的频率和相位,输入希望得到的频率和相位并点击“设置”按钮即可实时计算寄存器参数并实时生效。
系统状态展示了LMK04828芯片中两个锁相环(PLL1和PLL2)的工作状态,其状态和锁定状态LED与板卡端同步,并且展示了板卡端8颗LED的显示状态,LED状态含义如图 15所示。
序列生成器支持切换不同的发送序列,并支持从控制台写入需要发送的序列内容 ,其中“顺序”指从“0x00”至“0xFF”自增并循环的序列,“随机”指固件中写入的一段在编译过程中随机生成的序列,该序列对于已经编译好的固件是固定的。
调制器支持切换不同的前导码和前导码长度 ,并支持自定义载荷长度和时隙长度,同时也支持切换四种调制模式:QAM-256、QAM-64、QAM-16和QPSK。
在部分固件中禁用了自定义序列输入和自定义前导码,同时仅支持自动校准星座图,如果切实需要进行自定义配置可联系我们提供启用这些配置选项的固件版本。
解调器支持切换不同的前导码和前导码长度 ,并支持自定义载荷长度和自定义探测阈值,支持自动或手动校准星座图 。同时也支持切换四种解调模式:QAM-256、QAM-64、QAM-16和QPSK。
所有的配置参数均保存在板卡端RAM,控制台在每次更改参数时会从板卡端重新同步所有参数,因此板卡断电后所有参数会恢复默认值,控制台端不会存储板卡参数。
上图展示了LED状态示意图,控制台上的展示状态与板卡端8颗LED的点亮状态是同步的,其中每项的含义为:
连接至板卡后保持默认配置并按下图所示按“A”到“G”进行操作即可实时渲染QAM-64星座图。
为了避免产生一些额外问题,强烈建议在修改板卡配置时关闭绘图功能,并在修改完成之后再开启。
其余运行效果如下列图所示。下列图分别展示了QAM-256、QAM-16、QPSK星座图。
使用Vivado的ILA模块读取固件中的探针即可验证收发数据的一致性,该操作可以和星座图渲染同时进行,先将板卡调制和解调端都设置为QAM-64模式,打开Vivado Hardware Manager,连接好板卡后下图所示加载探针信息文件。
其中,ILA1是用于采集解调端基带和输出数据的,ILA2是用于采集调制端基带和输入数据的。如下图所示设置ILA1和ILA2的触发方式,将ILA1调整为如下图所示的连续触发模式并开始采集,最后在ILA2中点击开始采集即可同时采集到调制端和解调端的同一帧数据。
在ILA2的slot2和ILA的slot4可以得到类似下图的数据,由于这两个slot均为32位采集,而实际总线占用的数据线为8位,因此可以在Vivado中选中其低8位创建虚拟总线,从图中可以看出解调数据与调制数据一致。
将板卡的回环线从ADC端断开连接,并将其接入频谱分析仪或示波器,可以观测到如下图所示的频谱。