AD9371 官方例程

2023-10-20 20:28
文章标签 官方 例程 ad9371

本文主要是介绍AD9371 官方例程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、HDL方面
    • 1. ZYNQ 核根据ZCU106平台修改(**参考UG1244 ZCU106 Evaluation Board**),尤其注意**DDR**的配置(**参考美光 MTA4ATF51264HZ**)
    • 2.dacfifo 深度 要修改 ,地址位宽 小于等于16,zcu102中 fifo 128位数据 深度2^17 需要16.7Mb ,ZU9EG BRAM 32Mb可以满足 , zcu106 BRAM 11Mb,16.7Mb 超出了106能力 ,深度改成16就可以了
    • 3. XDC引脚要修改正确
    • 4. RX接收不到正弦,测试发现TX有问题,HDL侧修改方案
  • 二、SW方面
    • 1. 不使用iio时,确保所有需要的 .c 和 .h文件都添加进来
    • 2. 添加#define XPS_BOARD_ZCU102
    • 3. app_config.h打开 #define DMA_EXAMPLE
    • 4. 打印RX数据
    • 5. RX接收不到正弦,测试发现TX有问题,SW侧修改方案
  • 总结


前言

项目构建基本流程和AD9361差不多,由于官方使用的ZCU102,记录下移植遇到的一些问题


一、HDL方面

1. ZYNQ 核根据ZCU106平台修改(参考UG1244 ZCU106 Evaluation Board),尤其注意DDR的配置(参考美光 MTA4ATF51264HZ

在这里插入图片描述

2.dacfifo 深度 要修改 ,地址位宽 小于等于16,zcu102中 fifo 128位数据 深度2^17 需要16.7Mb ,ZU9EG BRAM 32Mb可以满足 , zcu106 BRAM 11Mb,16.7Mb 超出了106能力 ,深度改成16就可以了

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

3. XDC引脚要修改正确

示例如下:

set_property  -dict {PACKAGE_PIN  U2   } [get_ports rx_data_p[0]]                                      ; ## A02  FMC_HPC0_DP1_M2C_P
set_property  -dict {PACKAGE_PIN  U1   } [get_ports rx_data_n[0]]                                      ; ## A03  FMC_HPC0_DP1_M2C_N
set_property  -dict {PACKAGE_PIN  P4   } [get_ports rx_data_p[1]]                                      ; ## A06  FMC_HPC0_DP2_M2C_P
set_property  -dict {PACKAGE_PIN  P3   } [get_ports rx_data_n[1]]                                      ; ## A07  FMC_HPC0_DP2_M2C_N

4. RX接收不到正弦,测试发现TX有问题,HDL侧修改方案

axi_ad9371_dacfifo 中 dac_rst_int_s 应该在dac_xfer_req 上升沿有效,代码也产生了上升沿,但是 assign dac_rst_int_s = dac_xfer_req | dac_rst;用错了信号

  assign dac_xfer_posedge_s = ~dac_xfer_req_d & dac_xfer_req;// we can reset the DAC side at each positive edge of xfer_req, even if// sometimes the reset is redundantassign dac_rst_int_s = dac_xfer_req | dac_rst;

做如下修改可以正确发送接收正弦波

  assign dac_rst_int_s = dac_xfer_posedge_s | dac_rst;

二、SW方面

1. 不使用iio时,确保所有需要的 .c 和 .h文件都添加进来

在这里插入图片描述
需要的头文件如下
在这里插入图片描述

2. 添加#define XPS_BOARD_ZCU102

默认的是 zynq7000 系列,ZCU106是 Zynq UltraScale+ ,和102一样 GPIO 有78个 ,而不是7000系列的54个
在这里插入图片描述

3. app_config.h打开 #define DMA_EXAMPLE

通过DDR 发送 接收正弦信号

4. 打印RX数据

接收数据 存到 adc_buffer 后 ,添加下列代码 ,测试知道 I1、Q1 是 RX1 路信号 ,I2、Q2 是 RX2 路信号

		uint16_t index;uint32_t data_1;uint32_t data_2;uint16_t Q1;uint16_t I1;uint16_t Q2;uint16_t I2;for(index =0; index < 8192; index += 1){// R1data_1 =Xil_In32(adc_buffer+ index*(4));// R2data_2 =Xil_In32(adc_buffer+2+ index*(4));Q1 = (data_1) & 0xFFFF;I1 = (data_1 >> 16) & 0xFFFF;Q2 = (data_2) & 0xFFFF;I2 = (data_2 >> 16) & 0xFFFF;printf("%d,%d\n",(signed short)I1,(signed short)Q1);//	printf("%d,%d\n",(signed short)I2,(signed short)Q2);

5. RX接收不到正弦,测试发现TX有问题,SW侧修改方案

该方法可以不修改HDL以接收数据,通过 拉高 axi_ad9371_dacfifo 的 dac_fifo_bypass 信号,把dacfifo 旁路 ,使用PL DDR, dac_fifo_bypass (gpio_o[60])信号 连接到EMIO 60 引脚
在这里插入图片描述
在 common.c 通过以下代码,只要拉高 DAC_GPIO_PLDDR_BYPASS 就可以
在这里插入图片描述
在这里插入图片描述
最终接收到正确的正弦波


总结

打印信息及部分接收数据如下:

Please wait...
rx_clkgen: MMCM-PLL locked (122880000 Hz)
tx_clkgen: MMCM-PLL locked (122880000 Hz)
rx_os_clkgen: MMCM-PLL locked (122880000 Hz)
MCS successful
CLKPLL locked
AD9371 ARM version 5.2.2
PLLs locked
Calibrations completed successfully
tx_adxcvr: OK (4915200 kHz)
rx_adxcvr: OK (4915200 kHz)
rx_os_adxcvr: OK (4915200 kHz)
rx_jesd status:Link is enabledMeasured Link Clock: 122.882 MHzReported Link Clock: 122.880 MHzLane rate: 4915.200 MHzLane rate / 40: 122.880 MHzLMFC rate: 3.840 MHzLink status: DATASYSREF captured: YesSYSREF alignment error: No
rx_jesd lane 0 status:
Errors: 0CGS state: DATAInitial Frame Synchronization: YesLane Latency: 1 Multi-frames and 60 OctetsInitial Lane Alignment Sequence: YesDID: 0, BID: 0, LID: 0, L: 2, SCR: 1, F: 4K: 32, M: 4, N: 16, CS: 0, N': 16, S: 1, HD: 0FCHK: 0x47, CF: 0ADJCNT: 0, PHADJ: 0, ADJDIR: 0, JESDV: 1, SUBCLASS: 1FC: 4915200 kHz
rx_jesd lane 1 status:
Errors: 0CGS state: DATAInitial Frame Synchronization: YesLane Latency: 1 Multi-frames and 62 OctetsInitial Lane Alignment Sequence: YesDID: 0, BID: 0, LID: 1, L: 2, SCR: 1, F: 4K: 32, M: 4, N: 16, CS: 0, N': 16, S: 1, HD: 0FCHK: 0x48, CF: 0ADJCNT: 0, PHADJ: 0, ADJDIR: 0, JESDV: 1, SUBCLASS: 1FC: 4915200 kHz
tx_jesd status:Link is enabledMeasured Link Clock: 122.882 MHzReported Link Clock: 122.880 MHzLane rate: 4915.200 MHzLane rate / 40: 122.880 MHzLMFC rate: 7.680 MHzSYNC~: deassertedLink status: DATASYSREF captured: YesSYSREF alignment error: No
rx_os_jesd status:Link is enabledMeasured Link Clock: 122.882 MHzReported Link Clock: 122.880 MHzLane rate: 4915.200 MHzLane rate / 40: 122.880 MHzLMFC rate: 7.680 MHzLink status: DATASYSREF captured: YesSYSREF alignment error: No
rx_os_jesd lane 0 status:
Errors: 0CGS state: DATAInitial Frame Synchronization: YesLane Latency: 1 Multi-frames and 56 OctetsInitial Lane Alignment Sequence: YesDID: 0, BID: 0, LID: 0, L: 2, SCR: 1, F: 2K: 32, M: 2, N: 16, CS: 0, N': 16, S: 1, HD: 0FCHK: 0x43, CF: 0ADJCNT: 0, PHADJ: 0, ADJDIR: 0, JESDV: 1, SUBCLASS: 1FC: 4915200 kHz
rx_os_jesd lane 1 status:
Errors: 0CGS state: DATAInitial Frame Synchronization: YesLane Latency: 1 Multi-frames and 56 OctetsInitial Lane Alignment Sequence: YesDID: 0, BID: 0, LID: 1, L: 2, SCR: 1, F: 2K: 32, M: 2, N: 16, CS: 0, N': 16, S: 1, HD: 0FCHK: 0x44, CF: 0ADJCNT: 0, PHADJ: 0, ADJDIR: 0, JESDV: 1, SUBCLASS: 1FC: 4915200 kHz
tx_dac: Successfully initialized (245761108 Hz)
rx_adc: Successfully initialized (122880554 Hz)
rx_obs_adc: Successfully initialized (245761108 Hz)
DMA_EXAMPLE: address=0x951c0 samples=65536 channels=4 bits=16
-18117,3451
-17698,5151
-17096,6857
-16361,8534
-15434,10086
-14402,11551
-13177,12919
-11829,14102
-10392,15189
-8848,16154
-7210,16969
-5504,17584
-3765,18051
-1961,18287
-175,18424
1635,18318
3432,18072
5188,17708
6919,17098
8553,16336
10107,15413
11573,14342
12918,13125
14147,11799
15245,10342
16237,8837
17001,7196
17608,5486
18094,3749
18334,1975
18487,128
18392,-1647
18159,-3463
17751,-5212
17152,-6911
16383,-8563
15498,-10134
14396,-11593
13220,-12928
11890,-14153
10462,-15289
8915,-16206
7322,-17008
5597,-17616
3843,-18055
2049,-18359
208,-18486
-1597,-18385
-3384,-18154
-5144,-17736
-6883,-17116
-8512,-16378
-10099,-15478
-11530,-14371
-12915,-13163
-14123,-11814
-15224,-10370
-16193,-8831
-16949,-7171
-17597,-5469
-18043,-3711
-18318,-1956
-18416,-126
-18360,1690
-18093,3470
-17657,5239
-17077,6927
-16303,8547
-15401,10154
-14326,11592
-13135,12959
-11789,14159
-10347,15238
-8776,16182
-7128,16984
-5431,17609
-3664,18039
-1852,18307
-77,18410
1769,18326
3558,18070
5310,17659
7008,17031
8640,16247
10209,15360
11679,14281
13015,13038
14242,11739
15307,10260
16260,8709
17013,7079
17657,5354
18096,3613
18381,1844
18471,0
18412,-1802
18148,-3601
17726,-5336
17114,-7041
16350,-8699
15434,-10224
14344,-11687
13164,-13017
11801,-14242
10369,-15354
8791,-16253
7134,-17076
5450,-17695
3700,-18097
1928,-18389
105,-18462
-1690,-18410
-3495,-18122
-5252,-17714
-6966,-17080
-8612,-16332
-10163,-15386
-11616,-14299
-12972,-13086
-14189,-11752
-15279,-10297
-16198,-8744
-16996,-7137
-17602,-5424
-18023,-3645
-18328,-1866
-18405,-85
-18320,1732
-18067,3517
-17656,5241
-17076,6934
-16303,8584
-15368,10136
-14339,11574
-13141,12961
-11737,14147
-10331,15251
-8797,16171
-7128,16999
-5417,17584
-3682,18046
-1886,18334
-66,18421
1735,18340
3518,18079
5290,17624
6970,17037
8636,16267
10160,15359
11651,14290
12989,13049
14190,11708
15307,10256
16208,8732
17011,7094
17615,5372
18116,3629
18398,1806
18452,11
18394,-1787
18122,-3563
17716,-5320
17121,-7010
16349,-8669
15410,-10214
14356,-11684
13145,-13011
11781,-14234
10371,-15356
8791,-16261
7188,-17026
5478,-17658
3738,-18103
1952,-18372
134,-18457
-1659,-18380
-3410,-18116
-5168,-17684
-6886,-17116
-8508,-16335
-10080,-15440
-11556,-14347
-12904,-13165
-14132,-11820
-15191,-10413
-16134,-8849
-16934,-7232
-17560,-5544
-18020,-3823
-18333,-1991
-18421,-183
-18366,1582
-18106,3389
-17701,5123
-17113,6861
-16372,8496
-15445,10045
-14416,11513
-13204,12877
-11857,14078
-10459,15164
-8900,16136
-7306,16889
-5626,17552
-3848,18001
-2051,18295
-242,18410
1560,18341
3314,18118
5102,17690
6836,17117
8493,16355
10034,15430
11512,14373
12864,13181
14106,11841
15204,10389
16170,8881
16934,7253
17572,5554
18078,3803
18333,1992
18491,218
18411,-1606
18161,-3403
17758,-5126
17166,-6845
16444,-8505
15528,-10079
14475,-11557
13256,-12921
11936,-14143
10472,-15225
8632,-16377
7005,-17118
5294,-17708
3534,-18113
1749,-18388
-63,-18484
-1877,-18382
-3643,-18091
-5091,-17762
-6784,-17128
-8456,-16422
-10009,-15499
-11490,-14429
-12866,-13203
-14073,-11896
-15181,-10461
-16117,-8914
-16910,-7267
-17535,-5574
-17992,-3835
-18333,-2059
-18412,-216
-18339,1593

这篇关于AD9371 官方例程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/249514

相关文章

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

Adblock Plus官方规则Easylist China说明与反馈贴(2015.12.15)

-------------------------------特别说明--------------------------------------- 视频广告问题:因Adblock Plus的局限,存在以下现象,优酷、搜狐、17173黑屏并倒数;乐视、爱奇艺播放广告。因为这些视频网站的Flash播放器被植入了检测代码,而Adblock Plus无法修改播放器。 如需同时使用ads

Temu官方宣导务必将所有的点位材料进行检测-RSL资质检测

关于饰品类产品合规问题宣导: 产品法规RSL要求 RSL测试是根据REACH法规及附录17的要求进行测试。REACH法规是欧洲一项重要的法规,其中包含许多对化学物质进行限制的规定和高度关注物质。 为了确保珠宝首饰的安全性,欧盟REACH法规规定,珠宝首饰上架各大电商平台前必须进行RSLReport(欧盟禁限用化学物质检测报告)资质认证,以确保产品不含对人体有害的化学物质。 RSL-铅,

Cortex-A7:ARM官方推荐的嵌套中断实现机制

0 参考资料 ARM Cortex-A(armV7)编程手册V4.0.pdf ARM体系结构与编程第2版 1 前言 Cortex-M系列内核MCU中断硬件原生支持嵌套中断,开发者不需要为了实现嵌套中断而进行额外的工作。但在Cortex-A7中,硬件原生是不支持嵌套中断的,这从Cortex-A7中断向量表中仅为外部中断设置了一个中断向量可以看出。本文介绍ARM官方推荐使用的嵌套中断实现机

长虹官方刷机包和刷机教程

为了解决部分朋友因应用引起的电视死机、无法开机、系统被破坏等情形,长虹电视团队特开此帖为朋友们提供刷机方法,但刷机有风险,如完全不懂刷机技巧的朋友需要谨慎操作哦,如有疑问可以微信留言给我们。       下面是按照电视机型、刷机方式、刷机包链接这样的方式提供的(目前暂放热门型号刷机教程)。

Java的ArrayDeque使用例程

题目要求为: 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=3进行验证的时候,我们需要计算3、5、8、4、2、1,则当我们对n=5、8、4、2进行验证的时候,就可以直接

gcc make cmake例程

main.cpp文件: #include <iostream>#include "utils.h"int main(void) {int a = 1;int b = 2;int c = AddFunc(a, b);std::cout<< c <<std::endl;return 0;} utils.h文件: #pragma onceint AddFunc(int a, int b);

php官方下载地址

http://windows.php.net/downloads/releases/archives/

PHP各版本下载集合官方地址

https://windows.php.net/downloads/releases/archives/

简单梳理UE4的Houdini官方插件代码

前言 Houdini官方插件名字叫 “Houdini Engine”,它搭建了Houdini数据与UE4数据间的桥梁。我接触这个插件已经有段时间了,我想是时候梳理一下插件的结构了。(当前我用的UE4版本是4.24.2,Houdini版本18.0.348) 需要说明的是,这篇博客主要是从代码出发的。我准备先分析插件整体的代码结构,再逐个翻阅每个文件试图搞明白他角色。但如果不准备研究代码结构和实现