本帖最后由 wdzfd 于 2019-12-5 15:00 编辑

    ZYNQ7000器件包含多达2个Cortex-A9内核的ARM处理器,最高频率可以跑到1 GHz,片内的FPGA逻辑资源大小为23K~444K范围,这些特点决定了该器件是十分适合作为一个软件无线电(SDR)开发平台,由于试用的MYD-C7Z010/20开发板并不支持Serides串行收发器,在射频芯片上我们选择ADI的AD9361芯片,AD9361是ADI推出的面向3G和4G基站应用的高性能、高集成度的射频解决方案,支持支持2x2 MIMO通信,收发各有两条独立的射频通路,接口可以采用LVDS或者CMOS并口,并且ADI出的AD9361评估板(型号为EVAL-AD-FMCOMMS3-EBZ)就是采用FMC接口,MYD-C7Z010/20开发板也提供了一个FMC接口,就有可能采用MYD-C7Z010/20+EVAL-AD-FMCOMMS3-EBZ组成一套软件无线电开发硬件平台。
我们首先了解下AD9361芯片的特性如下(摘自ADI官网):
集成12位DAC和ADC的RF 2 × 2收发器
TX频段:47 MHz至6.0 GHz
RX频段:70 MHz至6.0 GHz
支持TDD和FDD操作
可调谐通道带宽:<200 kHz至56 MHz
双通道接收器:6路差分或12路单端输入
出色的接收器灵敏度,噪声系数为2 dB (800 MHz LO)
RX增益控制
实时监控和控制信号用于手动增益
独立的自动增益控制
双发射器:4路差分输出
高线性度宽带发射器
TXEVM:≤−40 dB
TX噪声:≤−157 dBm/Hz本底噪声
TX监控器:动态范围≥66 dB,精度=1 dB
集成式小数N分频频率合成器
2.4Hz最大本振(LO)步长
多器件同步
CMOS/LVDS数字接口
AD9361与数字基带(这里是Zyqn7000器件)的接口示意图如下图所示:
600.jpg

这些接口信号基本确定了FMC接口要连接的信号,简单了解下各个信号的功能:
1、SPI接口,包括SPI_ENB、SPI_CLK、SPI_DI、SPI_DO,为4线SPI接口,主要用于配置内部寄存器时的读写操作。
2、P0_D和P1_D, 是两个12位的数据传输端口,根据应用模式可配置成输入、输出和双向。
3、时钟信号,包括DATA_CLK和FB_CLK;DATA_CLK由AD9361输出,该时钟主要用于RX状态外部数字基带对P0_D、P1_D数据采样;FB_CLK是DATA_CLK反馈到AD9361的数据时钟,用于AD9361内部对TX_FRAME、ENABLE、TXNRX信号的上升沿采样,以及对于P0_D、P1_D数据端口的采样(单边沿或者双边采样可配),注意FB_CLK必须与DATA_CLK同源,即频率相同,占空比相同,但对相位没有要求。
4、帧信号,包括RX_FRAME和TX_FRAME,为高表示一帧数据传输的开始,可以配置为脉冲型或者电平型。
5、ENABLE 和TXNRX信号,主要在TDD模式下使用,ENABLE为高时,根据TXNRX信号,TXNRX为高时射频发射,为低时射频接收。
6、其它信号,包括4位的控制输入CTRL_IN信号,8位的控制输出CTRL_OUT信号,自动增益控制EN_AGC信号,时钟输出信号CLOCK_OUT等。
AD9361评估板(型号为EVAL-AD-FMCOMMS3-EBZ)采用FMC供电,Vadj电压要求范围为1.71V~2.625V (1.8 to 2.5 +/- 5%),注意不能使用3.3V供电,这会损坏评估板,对应AD9361评估板EVAL-AD-FMCOMMS3-EBZ和MYD-C7Z010/20开发板的FMC接口的原理图如下:
601.jpg
602.jpg

除了VDD_ADJ这里要需要处理下(断开和3.3V的连接,另外连接1.8V~2.5V电压)和D26脚没有SPI片选的上拉电阻(可以FPGA内部上拉),基本确定这二个硬件可以通过FMC接口连接。
软件架构上ADI是提供了一套解决方案,包括运行在ARMCortex A9处理器系统上的Ubuntu Linux和运行在PC上的IIO Oscilloscope(示波器)。ADI公司提供的Ubuntu Linux包括了EVAL-AD-FMCOMMS3-EBZ评估板接口所需的Linux IIO驱动程序,用于监测和控制的IIO Oscilloscope(示波器)用户空间应用程序,支持实时数据采集和通过TCP控制系统的libiio服务器,在远程计算机上运行的客户端,以及整合嵌入式编码器所生成C语言代码的可选用户应用程序,可用于控制器的Simulink模型,以上都是使用ZYNQ7000器件的千兆网口。
ADI官方提供了ZC702和ZedBoard等开发板对EVAL-AD-FMCOMMS3-EBZ评估板的支持,硬件需求为SD卡,USB鼠标/键盘接口,HDMI显示,FMC硬件接口,这些MYD-C7Z010/20开发板都具备,我们使用MYD-C7Z010/20开发板对接EVAL-AD-FMCOMMS3-EBZ评估板需要对相关代码进行移植修改,ADI官方对支持的硬件是提供了一个SD的映像,如2018_R2-2019_05_23.img.xz, 下载后解压出IMG格式的映像,然后用Win32DiskImager工具写到SD卡上就可以让系统跑起来,如果我们移植修改MYD-C7Z010/20开发板的话有下面工作要做:在ADI Source源代码基础上修改zynq linux kernel和FPGA设备树,另外FPGA的HDL工程也需要对应修改,这一块的研究可能要花费点时间,提供Source源代码地址供需要的童鞋进行下载研究:
LINUX内核代码:
https://github.com/analogdevicesinc/linux
HDL源代码:
https://github.com/analogdevicesinc/hdl/tree/master/projects/fmcomms2
编译Zynq Linux kernel and devicetrees的具体步骤参考:
https://wiki.analog.com/resources/tools-software/linux-build/generic/zynq
以上就MYD-C7Z010/20+AD9361评估板进行软件无线电开发作了一个大概方向性的了解,总的来说是基于ADI提供的软件框架下开发,一个多月的试用时间过的很快,对MYD-C7Z010/20开发板也有了一定的熟悉,对项目开发中要用到DDR3、以大网和AXI_HP_DMA等外设及启动过程及加密也进行了些测试并分享,但由于时间关系很多内容还没有深入下去进行研究,且目前测试工作还是偏向于裸机操作,而ADI提供的软件框架是基于LINUX下的开发,好在ADI网站提供了丰富的开发相关信息,需要我们花大量时间去研究调试,有类似用ZYNQ+ADI器件进行项目开发需求的网友可以互相交流啊,最后感谢面包板社区和米尔科技提供的这次试用机会,谢谢!