LimeSDR 中文教程 (三)

这是这个系列教程的第三篇。我们会以之前的教程为基础,如果你没看可以点这里。

 

上一次我们详细看了RX部分,这样就能更好理解LimeSuite程序里的设置选项。上一篇文章理论比较多,这一篇文章理论会少一些,我们会做更多实际操作。

 

开始

我们会使用“self test”例子作为本文的基础。原因是只要你有LimeSDR,你不需要额外的硬件(比如RF口上不需要接东西)就能使用。如果你想看一下步骤,可以点击这个链接并观察例子3.7。(self test中的例子)

 

这个例子中使用的频率是2100MHz,在英国是3G蜂窝网络的频段,你大多数情况下都没有在这个频段发射的许可。我们使用了内部环路,这样就不会真正发射出信号,但是任然会有一小部分射频能量从我们接着天线的口上漏出来。因此做这个测试时最好移除天线(或者你也可以换到你有权使用的频段上去),这样你就不会不小心地在这个频段发射出信号了。我们的内部环路加在高频率的通道上,因此你选择的频段也必须在这个范围内。

 

 

当你根据步骤到达3.7并得到上面的FFT图像后,我们可以具体理解一下这个例子到底做了些什么。

 

加载”self_test.ini”

在LMS7002M芯片内部有上千个寄存器,因此要手动设置会非常麻烦。我们使用ini文件来解决这个问题,它里面包含了LMS7002M的寄存器设置,可以自动设置它们,我们不需要关心。如果你对这个感兴趣,可以看看这个文档。

 

下面是self_test.ini中的一部分,我们提取出来作为例子。

 

 

[file_info]

type=lms7002m_minimal_config

version=1

[lms7002_registers_a]

0x0020=0xFFFD < Reset and PWR settings

0x0021=0x0E9F < SPI/I2C control

0x0022=0x07DF < Pad Drive control settings

 

 

 

 

SXT/SXR

SXT是用来控制TX PLL(发射部分的锁相环)和时钟发生器的,它和SXR非常类似,所以我们可以同时观察。我们暂时不需要调整参数,只需要点击calculate和tune按钮,但是最好还是理解一下到底是怎么回事。

 

接下来要说的东西需要更多的知识:

之前的文章我们讲过RX PLL(锁相环),以及如何合成一个时钟。实际上PLL只是把时钟的相位与另一个时钟源做了同步。我们说的另一个时钟源是由参考时钟和乘法器、除法器一起生成的。PLL保证了所有这些合成的时钟都是同步的,这样我们可以减少相位差和相位噪声。

 

我们可以看一下下面的PLL结构图,可以发现PLL由3部分组成:

 

  • Inputs (Nint,Nfract & PLLCLK(ref)) 输入参数
  • A feedback loop 负反馈环路
  • A VCO  压控振荡器

 

 

 

 

回到self test例子中,我们可以看到当按下calculate按钮后,这个选项卡中的许多参数都自动调整了。你可以试试改变频率,然后看看那几个参数会对应变化(记得看完了要改回来,然后按一下calculate)。

 

CLKGEN

这个时钟发生器部分和前面说的有点相似,它用来控制LMS7002M的数字部分,因此有些参数需要优化一下。我们的主要目标是在发射部分的DAC(数模转换)中做过采样,以此提升SNR(信噪比),更高的时钟一般来说效果都会更好。

 

内部环路

这个顾名思义就能知道是什么,它控制了SKY13323射频芯片,把它选为了环路模式。

 

加载WCDMA波形

FPGA的一部分功能是波形回放功能,它能够按照正确的格式给LMS7002M提供已知的波形数据。

 

 

 

 

当我们加载波形后,还需要勾选MIMO,这样波形就会在两条发射通道上同时播放。如果你没有把相应的波形文件放到LimeSuite要求的文件夹下时,WCDMA按钮是无效的。如果你碰到这个问题,可以点击Custom按钮来加载你那里的WCDMA波形。

 

改变参数

我们终于可以来调节信号了。我们可以只对A通道做更改,而不更改B通道,这样就能看出效果。你先要保证你能做到self test中的两个波形看上去差不多的样子。波形的IQ图像应该和我们的截图一致。现在两个通道的图形应该是一样的,但是我们马上会做一些更改。

 

在开始之前,我们需要知道选项卡中的某些选项是对两个通道同时有效的,比如SXT中的asan。我们之前看过LMS7002M的结构了,从中我们可以看到这些细枝末节。在我们前面看到的资料里,可以发现PLL模块是被两个通道共享的,因此改变这个参数对两个通道同时起作用。这就是为什么我让你们先了解了背景知识,这样你在这里才会理解。

 

我们暂时不更改发射参数,先更改接收部分的参数,改一下上一篇文章提到过的参数。我们现在看到的I/Q图像,可以注意到这个形状是一大块点(理论上应该填满这一块)。如果我们用的是别的信号,比如QAM64,那么这种形状就是不对的,因为那种调制对应的应该是离散的点。看懂星座图很有用,它能帮助你更改参数,你可以先随意调整一下,最终再做优化。

 

更改增益

我们知道LMS7002M的最前面一级是LNA,那么我们先来调整它,它现在的设置应该是GMAX,也就是达标了最大值。我们把它降低为GMAX-12,可以发现星座图看起来更紧密了,这意味着我们开始丢失信息了。

 

 

 

所以我们减少接收端的输入会造成这个现象。那么我们如果减少发射端的输出会得到相同结果吗?我们试试。先把RX的LNA改回GMAX,然后到TX PAD gain control处改为16,它是TX LNA的一部分(在TRF选项卡里)。

 

 

你可以看到,结果和之前的类似。另外,TBB选项卡里还有一个frontend gain,它调整的是基带增益。我们现在调整一组参数,先把TXPAD调整为12(TRF选项卡),然后再把frontend gain调整为60(TBB选项卡),这样还原到原来的增益。

 

 

我们看到增益确实增加了,但是信号出现了失真。不止是星座图变成了很大的一个点,而且对临近频段也造成了干扰。这是为什么?

 

这是因为我们对滤波器过载了,你可以看到IQ星座图里的严重失真(变成方的了)。在相邻频段还出现了毛刺。显然这个设置是不对的,这可以作为错误的设置的例子。一般来说,在调整完大多数设置后,我们只要调整TXPAD。大多数设置已经在self_test.ini里设置好了,所以我们可以直接按照那个文件里的参数为基础。对于RX增益也是如此,我们还没改过TIA和PGA增益,但是大多数应用中最好别改。

 

滤波器

回到self_test.ini(重新加载文件,并在TX和CLK中点击Calculate和Tune按钮)。我们知道TX和RX中的第二级都是滤波器,改变它们会有什么影响?

 

TBB(发射部分滤波器设置)

我们现在把TX滤波器设置为52MHz,我们可以更改这个滤波器参数,这么修改会造成更差的结果。幸运的是,下面还有一个Tune按钮会自动计算滤波器系数。输入100MHz,然后点击Tune按钮,你会得到一个稍微小一点的IQ图,因为我们发出了更多的噪声(这里不理解?噪声多了不是应该更大么)。注意我们在这里使用的是TXLPFL滤波器。

 

 

 

我们还可以去掉LPFLAD_TBB和LPFS5_TBB的勾选,绕过这些滤波器。这样我们会看到最大的星座图。我们对临近频率造成了很大的干扰,因为我们没有滤波器了,无法过滤高阶谐波。你最好不要发射这种信号,因为它会干扰其它频段,无委会会来找你。最后记得重新把滤波器加入,并且把滤波器调整为52MHz。

 

RBB(接收部分滤波器设置)

这个部分对许多要接收信号的人来说很有用,因为要提高接收质量就要做滤波。问题在于我们的WCDMA波形是很干净的。比如,我们选择LPF_Bypass,即去掉10MHz的输入滤波器后可能看不到什么区别。

 

 

 

手动调整输入滤波器参数可能会比较容易理解,这些滤波器是RC滤波器。再次选上LPFL,并把电容值增加到1200,我们可以看到,波形严重失真了,因为我们把高频率的信息过滤掉了。虽然我们可以手动调整滤波器,但是我还是推荐你自动选择这些值,这就和TX里面一样。点击Tune按钮会还原原本的设置。

 

最后

现在我们已经对上一篇文章里说到的大多数模块都做过设置了。尽管还有许多地方我们没有说到,比如Bias设置,ADC/DAC模块,以及LMS7002M的数字部分。但是这些设置对于新用户来说不太重要,我们以后再说。

 

大多数情况下,我们的修改都把信号越改越差,但是知道原理后可以帮助我们以后改得更好。

 

下一篇文章我们会看一些应用例子,做一些优化,这样你以后在使用LimeSDR时会更有信心。

你可能感兴趣的:(LimeSDR中文教程)