ad9361 AD9361 和Zynq及其参考设计说明

栏目:汽车 2021-09-19 21:39:06
分享到:

字警告,建议收藏后食用。

目录

一、AD9361概述

1.1 AD9361芯片结构

1.2 ad 9361的性能特性

1.3 AD-FMCOMMS2-EBZ性能特征

二、Zynq-7000概述

2.1 zynq的芯片结构

2.2 ZC 702的介绍和结构

Iii .AD9361和ZC702之间的数据路径

四.AD9361参考设计描述

4.1知识产权核心的概念

4.2硬件设计

动词 AD9361参考设计描述

5.1 ad 9361无操作系统软件概述

5.2 ad 9361无操作系统软件顶层目录描述

主. c文件

5.4 dac_init功能

5.5 adc _捕获功能

一、AD9361概述

1.1 AD9361芯片结构

AD9361是一款高性能、高度集成的敏捷收发器,适用于3G和4G基站应用。该芯片采用零中频架构,将整个射频和中频信号电路集成到一个芯片中,包括射频放大器的射频2x2收发器、模拟滤波器、混频器、解调器、12位模数转换器和数模转换器,还集成了收发器通道的频率合成器,并为每个接收子系统集成了独立的自动增益控制、DC偏移校正、正交校正和数字滤波电路。消除了在数字基带中提供这些功能的必要性。每个通道配有两个高动态范围ADC。首先,接收的输入和输出信号被数字化,然后传输到可配置的抽取滤波器和抽头有限脉冲响应滤波器,以相应的采样率产生12个输出信号。

图3 Zynq简单结构模型

Zynq最简单的结构模型只有PS和PL两部分,通过AXI接口相互通信。这样,ZynqSOC不仅可以单独使用ARM设计嵌入式系统,还可以使用FPGA设计各种时序和逻辑。最重要的是利用这两者来设计更灵活的系统。微信官方账号:OpenFPGA

值得注意的是,Zynq的处理系统不仅包含ARM处理器,还包含应用处理单元和外设接口、缓冲区、内存接口和时钟电路;Zynq可以单独使用PS部分,但不能单独使用PL部分。如果要使用PL部分,必须从PS端开始,通过PS配置PL。

图4是Zynq更详细的结构图,上部为PS侧结构,其中绿色部分为APU;下半部分为PL侧结构。

图4 Zynq结构模型

2.2 ZC 702的介绍和结构

Xilinx ZC702是一款评估板,为Zynq SoC的开发和评估提供了硬件环境。ZC702和一些嵌入式处理系统有共同的特点,包括DDR3内存、三模以太网、通用I/O和两个URAT接口。此外,ZC702还支持FMC。以ZC702为平台连接AD-FMCOMMS2-EBZ板,可产生待发送信号,并对采集的信号进行处理。图5示出了ZC702的外观结构,图6示出了ZC702的简化帧结构

图5 ZC 702的外观结构

图6 ZC 702结构框图

Iii .AD9361和ZC702之间的数据路径

ADI公司提供基于ZC702的软硬件设计,作为AD9361与Zynq连接使用的基础。根据其提供的硬件设计,AD9361和ZC702之间的数据路径如下所示:

图ad9361和ZC702之间的数据路径

右边是AD9361部分,左边是ZC702部分;它们通过FMC接口传输数据。ZC702中的蓝色区域是zynq的PL部分,命名为AD9361Core;上部为ARM部分,其余为接口部分,在PS和PL以及AD9361之间建立数据通道。

ADI还提供了配置AD9361参数的代码和一些数据传输和接收的API。

用DDR传输数据的传输方式是DMA传输方式:在DMAC的操作下,数据直接从源地址传输到目的地址,不需要CPU的介入,可以大大提高CPU的效率。

注意:如果用PL端生成用户数据,而用PS端直接生成和发送数据,那么用户数据应该用DMA传输和DDR。

在PFGA,无论是DDS产生的信号数据,还是从AD9361接收的信号数据,都需要经过IQ调制解调,再通过DMA传输到DDR进行存储,方便ARM读取和处理数据。

以上数据路径是通过硬件设计实现的。如果您真的想配置和使用AD9361,您需要使用运行在ARM上的软件。

四.AD9361参考设计描述

4.1知识产权核心的概念

IP内核模块是预先设计甚至验证的具有一定功能的集成电路、器件或组件。它有几种不同的形式。IP内核模块有行为、结构、物理三个层次的设计,对应三个层次:“软IP内核”主要描述功能行为,“固定IP内核”完成结构描述,“硬IP内核”基于物理描述,经过流程验证。这相当于集成电路的毛坯、半成品、成品的设计技术。

软核是用VHDL等硬件描述语言描述的功能块,但不涉及任何具体的电路元件来实现这些功能。软IP通常出现在硬件描述语言HDL源文件的情况下,应用开发过程与普通HDL设计非常相似,但所需的软硬件开发环境相对昂贵。软IP设计周期短,设计投入少。因为不涉及物理实现,后续设计空的空间很大,增加了IP的灵活性和适应性。其主要缺点是后续工艺在一定程度上无法适应整体设计,需要一定程度的软IP修正,在性能上无法获得全面优化。

因此,AD9361参考设计中给出的IP核都是软IP核

4.2硬件设计

打开Vivado,在… HDL-HDL _ 2014 _ R2 project fmcomms 2 ZC 702的路径中打开AD9361的Vivado工程文件fmcomms2_zc702.xpr。

单击右侧导航栏中的IPIntegrator打开块设计

打开ADI公司给出的AD9361参考设计IP核框图,每个蓝色方块都是硬件部分的IP核,如图8所示,是AD9361Core和DMA控制器部分。

每个IP核的源Verilog HDL代码都在HDL-HDL _ 2014 _ R2 库中,这些设计就是图7左半部分的设计

图8 ad 9361参考设计的IP内核框图

动词 AD9361参考设计描述

5.1 ad 9361无操作系统软件概述

AD9361无操作系统软件是ADI公司提供的AD9361的软件部分,运行在CPU中。这个程序是一个裸机程序,可以配置AD9361的各种参数,读写PL中的一些寄存器,控制发送数据源,控制DMAC传输发送和接收的数据,从而实现AD9361的基本功能:接收、处理和发送数据。整个程序使用C语言完成。

5.2 ad 9361无操作系统软件顶层目录描述

no-OS-Software的源代码可以从ADI官网下载,下载的源代码中包含了很多ADI收发器。表1列出了AD9361非操作系统软件中文件和文件夹的目录结构

表1 1ad 9361无操作系统软件源代码的目录结构

主. c文件

main.c文件是主函数所在的文件,是整个程序的入口。

main.c文件以需要条件编译的头文件和宏定义开始。

/*****************************************************************************

包括文件* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 9

#包括“config.h”

#包括“ad9361_api.h”

#包括“参数. h”

#包括“platform.h”

#ifdefCONSOLE_COMMANDS

#包括“command.h”

#包括“console.h”

#endif

#ifdefXILINX_PLATFORM

# includexil _ cache.h >

#endif

# ifdefined Xilinx _ PLATFORM | | defined linx _ PLATFORM

#包括“adc_core.h”

#包括“dac_core.h”

#包括“adc_interrupt.h”

#包含“SD_card.h”

#endif

因此,有些参数需要在程序开始时根据情况进行宏定义,

要使用ZC702,您需要添加语句:

#定义XILINX_PLATFORM

要使用命令行控制AD9361,您需要添加一条语句:

#定义CONSOLE_COMMANDS

要使用ADC的数据捕捉功能,需要添加一条语句:

#defineCAPTURE_SCRIPT

然后,给出了命令行函数使用的一些变量的定义,AD9361初始化所需参数的变量定义,以及AD9361接收机和发射机滤波器的定义。

AD9361_InitParam默认_ init _ param = {

/*识别号*/

,//id _ no;

/*参考时钟*/

/*基本配置*/

,//two _ rx _ two _ tx _ mode _ enable * * * ADI,2rx-2tx-mode-enable

1,//one _ rx _ one _ tx _ mode _ use _ rx _ num * * * ADI,1rx-1tx-mode-use-rx-num

1,//one _ rx _ one _ tx _ mode _ use _ tx _ num * * * ADI,1rx-1tx-mode-use-tx-num

1,//频分双工模式使能*** adi公司,频分双工模式使能

,//频分双工独立模式使能*** adi公司,频分双工独立模式使能

,//TDD _ use _ dual _ synth _ mode _ enable * * * ADI,tdd-use-dual-synth-mode-enable

,//TDD _ skip _ VCO _ cal _ enable * * * ADI,tdd-skip-vco-cal-enable

,//tx_fastlock_delay_ns *** adi,tx-fastlock-delay-ns

,//rx_fastlock_delay_ns *** adi,rx-fastlock-delay-ns

,//rx _ fast lock _ pincontrol _ enable * * * ADI,rx-fastlock-pincontrol-enable

,//tx _ fast lock _ pincontrol _ enable * * * ADI,tx-fastlock-pincontrol-enable

,//外部_ rx _ lo _使能*** adi公司,外部-rx-lo-使能

,//外部tx lo使能*** adi公司,外部tx lo使能

5,//DC _ offset _ tracking _ update _ event _ mask * * * ADI,DC-offset-tracking-update-event-mask

6,//直流偏移衰减高量程*** adi公司,直流偏移衰减高量程

以下部分是整个软件部分的主要功能,主要功能的程序流程图如图6所示:

图9最小功能流程图

用于初始化数模转换器模块的函数是数模转换器初始化函数

用于ADC数据捕捉的功能是adc_capture功能

这两个功能是控制数据传输的主要功能,这将在后面的章节中详细描述。

5.4 dac_init功能

Dac_init是Dac模块的初始化功能,也负责DMA传输,将DDR中的数据发送给AD9361。

dac_init函数的函数声明为:

第一个参数结构AD9361_rf_phy *phy是一个指向AD9361的射频设备结构的指针。

第二个参数uint8_t data_sel是要发送的数据源的选择:

enumdds_data_select

{

数据选择,

数据选择系统,

数据选择码分多址,

DATA_SEL_ZERO,/* OUTPUT 0 */

数据_选择_PN7,

数据_选择_PN15,

数据_选择_PN23,

数据_选择_PN31,

DATA_SEL_LB,/*环回数据*/

DATA_SEL_PNXX,/* */

用户数据,

};

0表示发送DDS产生的信号;

2表示通过DMA在DDR中发送信号数据,定义在dac_core.c开头;

3表示发送所有0信号;

4-7表示发送随机数信号;

8表示发送从模数转换器接收的数据信号;

9表示发送所选设备的信号;

10是用户数据

第三个参数是DMA设置的标准位,0表示设置;1表示没有设置。

DMA传输支持二维传输,但目前只需要一维传输,所以在源代码中写入AXI_DMAC_REG_SRC_ADDRESS和AXI_DMAC_REG_Y_LENGTH就意味着只使用一维传输。

传输用户数据时,调制用户数据后,参考上述代码,通过DMA发送数据

5.5 adc _捕获功能

adc_capture函数是一个数据捕获函数,也负责数据到DDR的DMA传输

adc_init函数的函数声明为:

第一个参数大小是要捕获的数据量;

第二个参数是start _ adress,用于存储捕获数据的目的地址。

图9是dac_init函数的流程图:

图12 adc_captur功能流程图

源代码如下:

int32_t adc_capture

{

uint32 _ t reg _ val

如果

{

长度=;

}

其他

{

长度=;

}

上图中的源代码是adc_capture函数的第一部分——数据单元转换部分。adc_capture函数的第一个参数大小是用户想要捕获的数据量,单位是“片”。但是在DMAC的很多寄存器中,比如AXI_DMAC_REG_X_LENGTH寄存器,值是传输数据的总字节数,单位是“字节”,所以需要设置,如果双通道开启,捕获的数据会占用两倍的存储空。

adc _ dma _ write//初始化DMA通道

adc _ dma _ write//DMA通道已启用

adc _ dma _ write//取消屏蔽。

//ADC _ DMA _ read;//读取下一次传输的身份证号

adc _ dma _ read/*读取中断状态:传输完成后,END_OF_TRANSFER设置为1。

当传输加入队列时,START_OF_TRANSFER设置为1 */

adc _ dma _ write//写入中断状态寄存器以初始化中断寄存器

adc _ dma _ write//设置目标地址中一行开始和下一行之间的字节数

adc _ dma _ write//传输的字节数

adc _ dma _ write//传输的行数

adc _ dma _ write//设置传输的目的地址

adc _ dma _ write//加入传输队列

上图显示了——DMA配置部分,即adc_capture功能的第二部分,其中与adc模块相比的不同寄存器有:

AXI_DMAC_REG_IRQ_MASK:中断屏蔽寄存器,位EOTIRQ,位SOT IRQ,该位置1,表示该位的中断请求被屏蔽;

AXI_DMAC_REG_IRQ_PENDING:读中断状态:传输完成后,END_OF_TRANSFER设置为1,传输加入队列后,START_OF_TRANSFER设置为1 *。

AXI:这个寄存器的值是下一次传输的标识号。

//等到新传输排队。

{

adc _ dma _ read

}

一边;*/

//等到当前传输完成。

{

adc _ dma _ read

}

一边;//reg_val!=0011b*/

//等到ID为transfer_id的转账完成。

{

adc _ dma _ read//读取传输完成的ID号

}

while((reg_val&(1

上图为adc_capture功能的第三部分——判断和等待

1.等待直到新的传输加入传输队列

读取AXI寄存器的值。如果值为1,它将循环,如果值为0,它将跳出循环。

1之前已被写入AXI_DMAC_REG_START_TRANSFER。此时,判断AXI_DMAC_REG_START_TRANSFER的值。如果为1,则表示新的传输仍在排队;如果为0,则表示新的传输已经开始。

2.等到当前传输完成。

读取AXI的值。传输进行时,AXI_DMAC_REG_IRQ_PENDING的位SOT始终为1。传输完成后,EOT位从0设置为1,然后这两个位都清零。因此,当AXI_DMAC_REG_IRQ_PENDING的值为3时,表示传输完成。

3.等待,直到ID为transfer_id的传输完成

这一步是为了验证之前设置的传输是否已经完成。

版权属于作者

  • 大江大河演员表 《大江大河2》梁思申扮演者确定 由《只有芸知道》中的她出演

    这个女人和《大江大河2》的主人之间旷日持久的争执终于结束了。自从《大江大河》第一部结束后,网友们就一直在猜测梁的扮演者。虽然她在第一部中只是一个小角色,但她是《大江大河》第二部中的女主角,与王锴饰演的宋运辉

    ·21-09-19

  • 德拉贡诺夫狙击步枪 武器百科全书

    SVD Dragunov狙击步枪 SVD Dragunov狙击步枪 发展历史 第二次世界大战前,苏联人开始使用布莫·辛纳甘步枪作为狙击枪。然而,半自动狙击步枪的需求越来越高。就像德国人用G-43半自动步枪作为狙击枪一样,苏

    ·21-09-19

  • 近视手术后视力下降 近视手术后视力“反弹”怎么办

    对于近视手术,大家最关心的问题当然是:我的近视手术后近视会反弹吗?毕竟减肥会反弹,而近视“反弹”似乎也不是不可能。 近视手术后,视力又下降了。近视又反弹了吗? 事实并非如此!原因如下: 长时间高强度使用眼睛会导致视觉

    ·21-09-19

  • 每天一杯咖啡 每天喝一杯咖啡会有养生的作用 并不是人人都可以喝 有你吗

    咖啡可以说是我们现实生活中很受欢迎的一种饮品,它的味道可能大家都很熟悉。之所以它独特的口感会让大众非常喜爱,那么喝咖啡对我们的健康有什么好处呢?无论是食物还是饮料,如果对我们的健康有帮助,都可以认为是好的,但是每

    ·21-09-19

  • 想象作文怎么写 想象作文怎么写

    到了三年级,孩子会开始写童话,这不仅考验孩子写故事的能力,也考验孩子的想象力。很多孩子抓耳朵都不会写。不是缺乏想象力。这不是打开想象的大门。如何写好想象作文,慧姐会教你的~ 1.贴近主题,有情感 写想象作文时,如果

    ·21-09-19

  • 1780 科学家用8只老鼠 进行一场1780天的实验 是否预示了人类的未来

    前言:“吹地鼠会让素鱼大吃一惊。”——李白《冬归老山》 在人类历史上,有各种有趣的实验,各种科学家进行了成千上万次实验来证明一个理论。 1968年,一位名叫约翰·卡尔·霍恩的动物行为学家也做了一个名为“老鼠乌托邦

    ·21-09-19

  • 怪兽充电宝代理加盟 2021年前瞻:共享充电宝代理加盟市场分析

    共享充电宝市场,更严酷的冬天还远未到来。 由于资金和模式的双重困境,单车共享领域已经充满了悲哀和迷茫,而那些一出现就被嘲讽为VC的共享充电宝的人现在是什么状况? 只剩下挣扎着奔跑。 对他们来说,2019年是至关重要的

    ·21-09-19

  • binggou 162的周冬雨 凭什么穿啥都好看 学会3点小技巧 你也一样美

    你还不能相信那句老话“身高不够,就指望不上颜值”?美貌不受身高限制。如果你选择了一个适合你的好位置和穿搭风格,你可以展现出30%的容貌,但却是70%的美丽。就像身高1.62米的周冬雨,在娱乐圈并不出众。 你认为她在表演

    ·21-09-19