RFSOC学习记录(六)混频模式分析

混频

混频器(Mixer)是RFSOC通过ip核实现在数字域的频率搬移,主要功能是在不改变采样率的情况下,把信号的频谱中心移动到目标频率附近

他主要通过一个数控振荡器,生成复指数信号与本振信号相乘,在ip核设置的过程中主要由三个模式

BYPASS

这个又叫直通模式,即不进行任何数字混频,基带信号直接通过ADC/DAC进行输入输出,NCO和Mixer全部旁路

我们接下来都以DAC为例,假如外接频谱仪,则我们看到的信号频率就是你在PL端设计的信号频率,可能是用dds或者rom等形式输出,输出信号的频率分布直接受采样定理限制,且不涉及IQ处理,一般使用实信号或者单边带信号。

在使用DAC生成低频信号或者ADC直采低频基带的时候可以选择这个模式

COARSE

通过简单的乘法器实现频谱翻转,但是只有±Fs/2、±Fs/4、0这三种选项,不是用可编程的正弦表,而是通过硬件乘以±1,±j来实现频率的平移

他的优点是硬件代价小,延迟很低速度快,精度固定

FINE

精混频也是我们使用的最多的一种,他通过高分辨率的NCO实现任意频率的精确搬移,NCO的精度通常在48bit-64bit

NCO

通过可调的相位累加器(phase accumulator)产生离散时间的正余弦信号,是纯数字域产生的信号,频率和相位都可以编程控制,在ip核里表示就是直接输入值就可以了,可以实现极高 的频率分辨率(<1Hz), 且频率、相位变化时没有跳变或者漂移,可以与SYSREF信号实现跨通道的相位对齐,其输出的频率公式是

在精混频的模式下,每个通道都有独立的NCO,频率范围在±Fs/2,NCO也可以设置负频率,可以控制初始相位和配置增益,也可以支持通过SYSREF触发NCO更新,在IQ混频模式下

在DAC上变频里用于把基带搬到中频或者射频,ADC下变频中则设置和对应DAC一样的NCO值用来把信号搬移回基带

Planner实例

我们使用Xilinx官方的频率规划器,用一个DAC 和ADC的例子来分别说明

先以dac为例,假设dac采样率2GSPS,基带中心频率500mhz,带宽50mhz,混频700mhz

那在数据输入的时候我们看到的就是500mhz的数据,经过混频之后得到了1200mhz的中心频率,带宽保持不变

但在这里最后一步我们可以看到在2800mhz左右出现了频率,那是因为原来在第二奈奎斯特区的信号(1.2GHz)在频谱上以fs进行展开,则折叠在第四奈奎斯特区信号频率为2fs-fc=4-1.2=2.8ghz

我们再以adc为例,假设ADC 采样率 fs=4 GSPS,基带信号中心频率100MHz,带宽 100 MHz,载波信号设置为2.5GHz,带宽100MHz,那混频之后的信号中心频率 fc=2.6 GHz,带宽 100 MHz

此信号位于 奈奎斯特第 2 区 ,经过 ADC 采样后理论上信号折叠到基带的 1.4~1.5 GHz 区间,然后使用 Fine Mixer NCO = -1.4 GHz,即可将信号数字下变频到 0~100 MHz

我们看一下效果

设置完成之后发现信号的频谱确实出现在1.45GHz-1.55GHz的位置,那我们下变频只需要把NCO设置为-1.4GHz就可以了

我们可以看到这边出现了两个频率分量,那是因为我们可以看到在QMC的时候下面有一个real的标志,我们信号乘以实信号的时候会出现和频和差频两路信号,即

会发现出现了0GHz和2.9GHz的频率分量,但是2.9GHz会在采样域里再折叠回4-2.9=1.1GHz,就是我们在这看到的

但是当我们继续下一步数据路径变成复数IQ的时候,数字下变频只留下了单边带,就只剩下了最终我们需要的信号

相关推荐
立志成为大牛的小牛3 小时前
数据结构——四十一、分块查找(索引顺序查找)(王道408)
数据结构·学习·程序人生·考研·算法
蒙奇D索大3 小时前
【计算机网络】[特殊字符] 408高频考点 | 数据链路层组帧:从字符计数到违规编码,一文学透四大实现方法
网络·笔记·学习·计算机网络·考研
遇印记3 小时前
蓝桥java蜗牛
java·学习·蓝桥杯
格鸰爱童话4 小时前
next.js学习——react入门
学习·react.js·node.js
B0URNE4 小时前
【Unity基础详解】Unity3D全程学习路线
学习·unity·游戏引擎
9ilk5 小时前
【仿RabbitMQ的发布订阅式消息队列】 ---- 功能测试联调
linux·服务器·c++·分布式·学习·rabbitmq
('-')5 小时前
《从根上理解MySQL》第一章学习笔记
笔记·学习·mysql
d111111111d6 小时前
STM32外设学习-串口发送数据-接收数据(笔记)
笔记·stm32·学习
Elias不吃糖6 小时前
eventfd 初认识Reactor/多线程服务器的关键唤醒机制
linux·服务器·c++·学习