AD9361纯逻辑控制从0到1连载1-生成初始化脚本

AD9361要正常工作,首先需要做初始化的配置工作。而AD9361的寄存器很多,多达1024个,每个寄存器有8bit,每个bit或多个bit的组合,有不同的功能,使得初始化工作相当繁琐。好在ADI官方提供了界面化的软件,可以根据图形化的配置,生成初始化的脚本,我们要做的就是将这个脚本转换为对应的verilog语言。

首先,我们要了解如何生成配置脚本,下面按步骤介绍:

第一步:安装AD9361 Evaluation Software 2.1.3

具体安装步骤就不截图了,点击setup.exe,一直下一步就可以了。需要说明的是这个软件有多个版本,实际上每个版本都有相应的bug,我选取了个人认为最好用的版本2.1.3

第二步:打开软件,点击Run Project Wizard

第三步:物理通道和收发通道设置

AD9361包含2路收和2路发,每路发可以选择2组物理通道中的一组(A或者B)作为最终的发射通道。每路收可以选择3组物理通道中的一组(A或者B或者C)作为收通道。每个物理通道都有最佳的工作频段,因此具体如何选择,要看你想让AD9361工作在哪个频段。当然,这个是在设计原理图和PCB时就已经定好了的,如果你仅仅是程序员,只需要看原理图就可以确定是选用哪个通道了。具体如何选择,可以参考《AD9361 RFPortInterface_v2.1.pdf》,这里同时使能2路收和2路发,并且收发都选择A通道。截图如下:

第三步:时钟设置

REF_CLK_IN:时钟源的频率,软件默认是38.4M,而我的系统用的是40M的时钟源,因此改成40

CLK_OUT:从AD9361输出的一个时钟,时钟频率可选,可以等于REF_CLK_IN,或者设置为ADC_CLK的分频,分频系数可以设置为2,3,4,8,16,32,64,你可以拿这个作为其他电路的时钟源,如果不需要,disable就好了

REFCLK Path:AD9361有两个时钟输入的引脚,XTAL_P和XTAL_N,如果你的时钟源是外部的时钟信号,则选择Ext CLK into XTAL_N,如果你的时钟源时一个无源的晶振,则选择XO into XTAL

PLL_Settings:从时钟源到BB_PLL,TX_PLL,RX_PLL的输入,中间都分别插了一个倍频模块,倍频系数可以选择1/4,1/2,1,2,系数的选择原则是:设置BB_PLL的参考时钟频率为35-70M(包含70M)之间尽可能大的值,设置TX_PLL和RX_PLL的参考时钟频率为10-80M(包含80)之间尽可能大的值。因为参考时钟是40M,因此BBPLL_Input Scale只能选择为1,而RFPLL Input Scale选择为2,具体参考《AD9361RFandBBPLLUserGuide2.4.pdf》

DCXO options:如果你的REFCLK Path选择的Ext CLK into XTAL_N,这项直接忽略。否则就需要根据实际情况设置DCXO options,因为前期我们只需要让AD9361跑起来,在不管性能的前提下,DCXO Options这一项都使用默认的就好了

第四步:数字滤波器设置

从基带信号到DAC信号的发射通路,以及从ADC到基带信号的接收通路上面,都各自包含了3个半带滤波器和一个可编程滤波器。具体是什么作用,请参考《AD9361 Filter Guide v2.6.pdf》,后面也会单独讲解这些滤波器,这里仅先列出我的设置。截图如下:

第五步:数字接口设置

AD9361的接口有很多种形式,具体参考《AD9361 Interface Spec v2.5.pdf》,我这里选择LVDS,我建议只要你的硬件条件支持,都采用这种方式。

Always use 2T2R Timing:这一项建议勾选,如果你实际只用一路收和发,AD9361的设置还是可以选择2路收发,只需要在基带代码中不管另外一路的收发信号就行。

Rx LVDS Amplitude:这个是LVDS的差分压差设置,要根据具体的FPGA接口电平设置,一般选择150mV就可以。

Delay Cell Control:这一项很重要,描述的是数据信号的时钟信号的相位关系,以满足FPGA和AD9361的建立保持时间要求。几乎每个电路板的设置都会不一样。所以这个是需要根据你的实际电路,去做调整的,否则AD9361就不能正确接采样发到空中的信号,而FPGA也不能正确采样AD9361接收来自空中的信号。后面单独开一个章节,讲解如何快速方便的调整这个参数。

第六步:ENSM设置

ENSM理解起来有点难受,简单点说,就是FDD模式下或者TDD模式下,AD9361的状态切换。比如FDD模式下,AD9361一共有三个状态,分别是SLEEP WAIT,ALERT,FDD。只有在FDD状态时,AD9361才会真正进入到工作状态。而在TDD模式下,一共有4个状态,分别是SLEEP WAIT,ALERT,RX,TX,他们之间的相互转换,是需要满足一定条件的。建议不管你的系统是FDD模式还是TDD模式,这里都选用FDD模式,因为FDD模式可以实现TDD模式的功能(收的时候不发,发的时候不收)。在FDD模式下,也可以用ENABLE和TXNRX两个引脚控制收和发的开关,也相当于是实现了TDD的功能。

第七步:增益控制模式选择

我用的fast AGC模式,也即快速自动增益控制。AGC设置比较复杂,和射频波形、移动速度,多径情况等实际工作情况兮兮相关,需要根据实际情况调整参数,做不到一套配置参数通吃所有情况。这个是难点,也是重点。后面会单独讲解。

第八步:射频收发频率设置

回到主界面,选择Receive,将接收频率设置为600M

然后选择Transmit,将发送频率设置为600M,发射衰减设置为20,20,分别对应到通道1和通道2的输出衰减

第九步:生成脚本

点击Setup,然后点击Create Init Script,保存为你想要存储的名称。我这里保存为fdd_600m

到这里,我们初始化脚本就完成了。用这个脚本转换成verilog代码,就可以成功初始化AD9361了。更多比较精细的设置都还没有介绍,比如RFIR,TFIR,Rx gain Control,RSSI等,这些后面都会专门去讲,这里主要讲解如何生成脚本。下回合,我们将讲述如何用Python将这个配置脚本转换为verilog代码。

展开阅读全文

页面更新:2024-04-24

标签:初始化   脚本   基带   时钟   收发   频率   逻辑   信号   通道   模式   工作

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top