AD9371 官方例程

news2025/1/17 5:50:06

文章目录

  • 前言
  • 一、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 redundant
  assign 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)
	    {
	    	// R1
	    	data_1 =Xil_In32(adc_buffer+ index*(4));
	    	// R2
	    	data_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 enabled
	Measured Link Clock: 122.882 MHz
	Reported Link Clock: 122.880 MHz
	Lane rate: 4915.200 MHz
	Lane rate / 40: 122.880 MHz
	LMFC rate: 3.840 MHz
	Link status: DATA
	SYSREF captured: Yes
	SYSREF alignment error: No
rx_jesd lane 0 status:
Errors: 0
	CGS state: DATA
	Initial Frame Synchronization: Yes
	Lane Latency: 1 Multi-frames and 60 Octets
	Initial Lane Alignment Sequence: Yes
	DID: 0, BID: 0, LID: 0, L: 2, SCR: 1, F: 4
	K: 32, M: 4, N: 16, CS: 0, N': 16, S: 1, HD: 0
	FCHK: 0x47, CF: 0
	ADJCNT: 0, PHADJ: 0, ADJDIR: 0, JESDV: 1, SUBCLASS: 1
	FC: 4915200 kHz
rx_jesd lane 1 status:
Errors: 0
	CGS state: DATA
	Initial Frame Synchronization: Yes
	Lane Latency: 1 Multi-frames and 62 Octets
	Initial Lane Alignment Sequence: Yes
	DID: 0, BID: 0, LID: 1, L: 2, SCR: 1, F: 4
	K: 32, M: 4, N: 16, CS: 0, N': 16, S: 1, HD: 0
	FCHK: 0x48, CF: 0
	ADJCNT: 0, PHADJ: 0, ADJDIR: 0, JESDV: 1, SUBCLASS: 1
	FC: 4915200 kHz
tx_jesd status:
	Link is enabled
	Measured Link Clock: 122.882 MHz
	Reported Link Clock: 122.880 MHz
	Lane rate: 4915.200 MHz
	Lane rate / 40: 122.880 MHz
	LMFC rate: 7.680 MHz
	SYNC~: deasserted
	Link status: DATA
	SYSREF captured: Yes
	SYSREF alignment error: No
rx_os_jesd status:
	Link is enabled
	Measured Link Clock: 122.882 MHz
	Reported Link Clock: 122.880 MHz
	Lane rate: 4915.200 MHz
	Lane rate / 40: 122.880 MHz
	LMFC rate: 7.680 MHz
	Link status: DATA
	SYSREF captured: Yes
	SYSREF alignment error: No
rx_os_jesd lane 0 status:
Errors: 0
	CGS state: DATA
	Initial Frame Synchronization: Yes
	Lane Latency: 1 Multi-frames and 56 Octets
	Initial Lane Alignment Sequence: Yes
	DID: 0, BID: 0, LID: 0, L: 2, SCR: 1, F: 2
	K: 32, M: 2, N: 16, CS: 0, N': 16, S: 1, HD: 0
	FCHK: 0x43, CF: 0
	ADJCNT: 0, PHADJ: 0, ADJDIR: 0, JESDV: 1, SUBCLASS: 1
	FC: 4915200 kHz
rx_os_jesd lane 1 status:
Errors: 0
	CGS state: DATA
	Initial Frame Synchronization: Yes
	Lane Latency: 1 Multi-frames and 56 Octets
	Initial Lane Alignment Sequence: Yes
	DID: 0, BID: 0, LID: 1, L: 2, SCR: 1, F: 2
	K: 32, M: 2, N: 16, CS: 0, N': 16, S: 1, HD: 0
	FCHK: 0x44, CF: 0
	ADJCNT: 0, PHADJ: 0, ADJDIR: 0, JESDV: 1, SUBCLASS: 1
	FC: 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1114782.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows 11 2023 Moment 4 更新内容详解

Windows 11 2023 Moment 4 更新内容详解 编辑&#xff1a;简简单单 Online zuozuo 地址&#xff1a;https://blog.csdn.net/qq_15071263 前言 主要的更新内容清单 Copilot内置应用资源管理器照片应用截图工具画图与视频剪辑Windows 备份系统界面开始菜单快速设置系统托盘任务…

【python】进程和线程

进程和线程 今天我们使用的计算机早已进入多CPU或多核时代&#xff0c;而我们使用的操作系统都是支持“多任务”的操作系统&#xff0c;这使得我们可以同时运行多个程序&#xff0c;也可以将一个程序分解为若干个相对独立的子任务&#xff0c;让多个子任务并发的执行&#xff…

优测云测试平台 | 有效的单元测试

一、前言 本文作者提出了一种评价单元测试用例的质量的思路&#xff0c;即判断用例是否达到测试的“四大目标”。掌握识别好的用例的能力&#xff0c;可以帮助我们高效地写出高质量的测试用例。 评判冰箱的好坏&#xff0c;并不需要有制造一台冰箱的能力。在开始写测试用例之…

TikTok Shop印尼站关停,跨境卖家该如何自救

10.4日&#xff0c;TikTok Shop宣布关停印尼站&#xff0c;无疑是一个巨大的炸弹投在整个跨境圈&#xff0c;让许多跨境卖家以及当地本土的卖家、品牌措手不及。 这对TikTok的东南亚市场而言&#xff0c;无疑是一次沉重的打击。 TikTok在东南亚的商业布局&#xff0c;印尼是其…

小A对我说,他现在快想钱想疯了…

昨天晚上11点&#xff0c;小A给我打电话 小A问&#xff1a;橙哥&#xff0c;有没有赚钱的事做&#xff1f; 他说&#xff0c;实在不想上班了&#xff0c;每天起早贪黑挤地铁 辛辛苦苦干一个月&#xff0c;到手工资三四千块钱&#xff0c;房租一交&#xff0c;日常开支一花&a…

Jmeter安装(快速入门)

大家好我是苏麟今天简单聊一下Jmeter . Jmeter Jmeter官网 : Apache JMeter - Download Apache JMeter 安装Jmeter Jmeter依赖于JDK&#xff0c;所以必须确保当前计算机上已经安装了JDK&#xff0c;并且配置了环境变量。 下载 : 官网下载 : 网盘自取 : 链接&#xff1a;…

【LeetCode】57. 插入区间

1 问题 给你一个 无重叠的 &#xff0c;按照区间起始端点排序的区间列表。 在列表中插入一个新的区间&#xff0c;你需要确保列表中的区间仍然有序且不重叠&#xff08;如果有必要的话&#xff0c;可以合并区间&#xff09;。 示例 1&#xff1a; 输入&#xff1a;interval…

国产开发板上打造开源ThingsBoard工业网关--基于米尔芯驰MYD-JD9X开发板

本篇测评由面包板论坛的优秀测评者“JerryZhen”提供。 本文将介绍基于米尔电子MYD-JD9X开发板打造成开源的Thingsboard网关。 Thingsboard网关是一个开源的软件网关&#xff0c;采用python作为开发语言&#xff0c;可以部署在任何支持 python 运行环境的主机上&#xff0c;灵…

前端将二维数组转换成树形格式数组

原始数据&#xff1a; 最终得到的数据&#xff1a; 具体实现代码&#xff1a;倒推&#xff08;最后一个数据&#xff09;的思路得到数组 function childData(list,i){const arr []//最后一个数组if(i<list.length){list[i].forEach(item>{const obj {name:,prop:,chil…

美摄视频特效SDK,视频特效技术解决方案

视频内容已经成为企业传播信息、提升品牌形象的重要手段。然而&#xff0c;普通的视频内容往往难以吸引观众的注意力&#xff0c;而富有创意的视频特效则能够大大提升视频的观赏性和吸引力。为了帮助企业轻松实现视频特效的添加&#xff0c;我们推出了美摄视频特效SDK&#xff…

风口下的低代码,怎么样了?

目录 一、前言 二、为什么低代码平台会受到资本的重视&#xff1f; 三、低代码的应用场景 1.基于表单/引擎驱动的模式 2.基于aPaaS平台的模式 四、低代码能解决什么问题&#xff1f; &#xff08;1&#xff09;运维工作流方向 &#xff08;2&#xff09;运维开发方向 五、低代码…

ArcGIS笔记10_如何创建渔网?

本文目录 前言Step 1 确定渔网的精度单位Step 2 有底图时创建渔网的操作 前言 ArcGIS中的渔网是一个很好用的工具&#xff0c;它可以创建出规规整整的小格子&#xff0c;每个小格子都对应一个标注点&#xff0c;可以将原本散乱的数据规整化&#xff0c;如下图&#xff1a; Ste…

Springboot-案例 增删改查二

准备 前端程序、后端工程&#xff08;web/mybatis/mysql/lombok&#xff09;、数据库 开发规范 GET&#xff1a;查询 POST&#xff1a;新增 PUT&#xff1a;修改 DELETE&#xff1a;删除 Result.java Data NoArgsConstructor AllArgsConstructor public class Result {pri…

如何正确地使用ChatGPT(角色扮演+提示工程)

如何正确地使用ChatGPT 一、ChatGPT介绍二、准备工作2.1 获取ChatGPT环境2.2 确定使用ChatGPT的目标和需求 三、重要因素3.1 角色赋予3.2 提示工程 四、正确案例 一、ChatGPT介绍 可以查阅ChatGPT快速入门 二、准备工作 2.1 获取ChatGPT环境 国外的有OpenAI和微软NewBing等…

如何快速绘制一张业务流程图?

产品经理在日常工作中经常需要和业务流程图打交道&#xff0c;它能很好地帮助我们梳理业务&#xff0c;高效表达需求&#xff0c;避免做无用功。 对于刚入门的PM来说&#xff0c;对业务流程图完全摸不着头脑的大有人在&#xff0c;今天从业务流程图的基本介绍、分类、业务流程…

超结MOS/低压MOS在微型逆变器上的应用-REASUNOS瑞森半导体

一、前言 微型逆变器&#xff0c;一般指的是光伏发电系统中的功率小于等于1000瓦、具组件级MPPT的逆变器&#xff0c;全称是微型光伏并网逆变器。“微型”是相对于传统的集中式逆变器而言的。传统的光伏逆变方式是将所有的光伏电池在阳光照射下生成的直流电全部串并联在一起&…

接物游戏demo

接物游戏demo&#xff1a; 接物元素设置了不同分值 指定时间内&#xff0c;接到元素则加分&#xff0c;接到炸弹则减分&#xff0c;计时结束&#xff0c;游戏停止 demo代码&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"…

文心一言帮忙写代码之微信小程序图片移动顺序

先上效果图&#xff0c;图片顺序可移动&#xff0c;左移右移调准顺序。 代码是文心一言帮忙写的&#xff0c;自己稍微改造就可以用了。 首先是往左移&#xff0c;也就是从下标1移到下标0 &#xff0c;下标2移到下标1 var imglist [‘aa’, ‘bb’, ‘cc’, ‘dd’]; function…

智能电表上的模块发热正常吗?

智能电表是一种可以远程抄表、计费、控制和管理的电力计量设备&#xff0c;它可以实现智能化、信息化和网络化的电力用电管理。智能电表的主要组成部分包括电能计量模块、通信模块、控制模块和显示模块等。其中&#xff0c;通信模块和控制模块是智能电表的核心部件&#xff0c;…

C++11——多线程

目录 一.thread类的简单介绍 二.线程函数参数 三.原子性操作库(atomic) 四.lock_guard与unique_lock 1.lock_guard 2.unique_lock 五.条件变量 一.thread类的简单介绍 在C11之前&#xff0c;涉及到多线程问题&#xff0c;都是和平台相关的&#xff0c;比如windows和linu…