AD9851——FPGA调试(并行模式)

news/发布时间2024/9/20 6:39:16

AD9851——FPGA调试(并行模式)

工程功能:使用FPGA来调试AD9851芯片,使用的是并行模式

芯片手册:AD9851 CMOS 180 MHz DDS/DAC Synthesizer Data Sheet (Rev. D) (analog.com)


管脚功能

在这里插入图片描述

在这里插入图片描述

管脚名称管脚功能
D0-D78位数据输入。用于加载32位频率和8位相位/控制字的数据端口。D7 = MSB ; Do = LSB ; D7引脚25也可作为40位串行数据字的输入引脚。
PGND6倍参考时钟倍乘器 地
PVCC6倍参考时钟倍乘器电源
W-CLK字量时钟。上升沿将并行或串行频率/相位/控制字异步加载到40位输入寄存器中。
FQ_UD更新频率。上升沿异步地将40位输入寄存器的内容传输给DDS核。当已知输入寄存器的内容只包含有效的、允许的数据时,应该发出FQUD。
REFCLOCK参考时钟输入。CMOS/ ttl级脉冲序列,直接或通过6× REFCLK倍增器。在直接模式下,这也是SYSTEM CLOCK。如果使用了6× REFCLK乘法器,那么该乘法器的输出就是SYSTEM CLOCK。系统时钟的上升沿启动操作。
AGND模拟地。模拟电路(DAC和比较器)的接地返回
AVDD模拟电路的正电源电压(DAC和比较器,引脚18)和带隙参考电压,引脚11。
RSETDAC的外部RsET连接-名义上是一个3.92 kΩ电阻到地,输出10 mA。这设置了从IOUT和IOUTB可用的DAC满量程输出电流。RsET = 39.93/IOUT。
VOUTN电压输出负。比较器的互补CMOS逻辑电平输出。
VOUTP电压输出正。比较器的真实CMOS逻辑电平输出。
VINN输入电压负。比较器的反相输入。
VINP电压输入正。比较器的非反相输入。
DACBPDAC旁路连接。这是DAC电压参考旁路连接,通常为NC (NO CONNECT),用于最佳SFDR性能。
IOUT除了IOUTB =(满量程输出-IOUT)外,与IOUT具有相同特性的互补DAC输出。输出负载应等于IOUT,以获得最佳的SFDR性能。
IOUT平衡DAC的真实输出。电流是源,需要电流到电压
RESET主复位引脚;活性高;清除DDS累加器和相位偏移寄存器,以实现0 Hz和0°输出相位。将编程设置为并行模式并解除6× REFCLK乘法器。Reset不清除40位输入寄存器。在上电时,在编程开始之前,断言RESET应该是第一优先级。
DVDD数字电路的正电源电压引脚。
DGND数字地。数字电路的接地返回引脚。

上面为机翻,其中有几个管脚在调试过程中比较重要:

  • 供电,我用3.3V来给芯片供电。
  • REFCLOCK 参考时钟,我用125M的晶振来直接接入芯片。
  • RESET,这个管脚很重要,可以清除DDS累加器和相位,还可以调控串并行模式(但是这个模式切换我还没有研究明白,之后再补充)。
  • D0-D7、W-CLK、FQ_UD ,时序的关键信号。
  • IOUT、IOUT,输出、用示波器测试的管脚,

输出频率、相位

在这里插入图片描述

如上图,并行输入控制字。

第一个控制字W0: Data[0]是6倍频使能信号,为0时关闭6倍频

​ Data[1]置为0

​ Data[2]置为0,不在Power-Down模式

​ Data[3]-Data[7] :相位控制字

剩下4个控制字W1-W4:32位的频率控制字

在这里插入图片描述

频率计算如上图所示,下图是官方手册给的一个示例,我们根据这个示例来解释

在这里插入图片描述

系统时钟为180MHZ,5个控制字为:

​ W0 = 00001001

​ W1 = 00001110

​ W2 = 00111000

​ W3 = 11100011

​ W4 = 10001110

由W0可知,开启了6倍频,所以这180MHZ的系统时钟是这样来的:REFCLOCK 参考时钟输入为30MHZ,再6倍频为180MHZ

*相位控制字为1,相位为:(1/(2^5))360° = 11.25°

频率控制字为 0000 1110 0011 1000 1110 0011 1000 1110 ,转换为十进制为:238609294

所以频率为:238609294*180/(2^32) = 10HMZ

由上面方法可轻松计算出想要的频率和相位

时序图

在这里插入图片描述

在这里插入图片描述

这个时序图就是写代码的关键

参考文章:AD9851调试过程----相位设置、频率计算、控制字设置-CSDN博客

在控制字准备好之后,拉高W_CLK,控制字在W_CLK的上升沿写入芯片中。连续写完5个控制器后,拉高FQ_UD

下面给出我的仿真波形:

在这里插入图片描述

至于RESET,我是这样写的:

在这里插入图片描述

上电时先拉底,保持一段时间高电平后,再拉底 (说实话,这个RESET我也不是特别透彻,有理解的可以在评论中补充)

关键代码

always @(posedge CLK_2M or negedge rst_n)beginif(!rst_n)begincnt<=16'd0;start<=0;order<=4'd0;FreUp<=1'b0;RESET<=0;endelse begin	if(cnt<=10)begincnt<=cnt+16'd1;RESET<=0;endelse if(cnt<=50)begincnt<=cnt+16'd1;RESET<=1;endelse if(cnt<=100)begincnt<=cnt+16'd1;RESET<=0;endelse begin		if(order<=4'd4)beginstart<=1;case(order)		//写入5个控制字, Com (W0) 和 Fre (W1 W2 W3 W4) 一共40位控制字4'd0:wr_dat[7:0]<=commond[7:0];4'd1:wr_dat[7:0]<=fre_set[31:24];4'd2:wr_dat[7:0]<=fre_set[23:16];4'd3:wr_dat[7:0]<=fre_set[15:8];4'd4:wr_dat[7:0]<=fre_set[7:0];default: ;endcaseorder <= order+4'd1;endelse if (order<=4'd7)beginstart<=0;order <= order+4'd1;case(order)4'd6:begin		//五个控制字写完之后,又过了一个W_CLK时钟周期后,给FQ_UD高电平脉冲FreUp<=1'b1;wr_dat[7:0]<=commond[7:0];end4'd7:beginFreUp<=1'b0;order<=4'd0;enddefault: ;endcaseendendendend//时序图中W_CLK的波形
always @(posedge CLK_10M or negedge rst_n)beginif(!rst_n)beginWR_CLK<=0;count<=8'd0;//wr_dat[7:0]<=commond[7:0];endelse beginif(start)begincount = count+8'd1;case(count)8'd1	:WR_CLK<=1;8'd4	:WR_CLK<=0;8'd6	:WR_CLK<=1;8'd9	:WR_CLK<=0;8'd11	:WR_CLK<=1;8'd14	:WR_CLK<=0;8'd16	:WR_CLK<=1;8'd19	:WR_CLK<=0;8'd21	:WR_CLK<=1;8'd24	:WR_CLK<=0;default	: 	;endcaseendelsebeginWR_CLK<=0;count<=8'd0;endendend

测试结果

ILA波形:

在这里插入图片描述

示波器波形:

在这里插入图片描述

输出结果:(幅度为200mV是因为示波器探针选择的 ×10)

在这里插入图片描述

工程资源、补充

在这个工程中,我用的是正点原子的达芬奇开发板xc7a35t-2 ffg484(50MHZ时钟),将J2排针引出来接入AD9851中

在代码中,我用50MHZ的系统时钟分频生成了2MHZ和10MHZ,用于满足时序要求

分频器参考:https://zhuanlan.zhihu.com/p/620290497

工程下载:AD9851-FPGA调试(并行模式)资源-CSDN文库

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

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

【Redis | 第四篇】基于布隆过滤器解决Redis穿透问题

文章目录 4.基于布隆过滤器解决Redis穿透问题4.1什么是redis的穿透问题4.2解决穿透问题4.3布隆过滤器4.3.1思想4.3.2特点4.3.3缺点 4.4基于Springboot实现布隆过滤器4.4.1导入依赖4.4.2yml配置4.4.3两个工具类&#xff08;1&#xff09;BloomFilterHelper&#xff08;2&#xf…

GPT访问跨域如何解决呢?

在服务器部署了gpt 参考这个 但是访问不到 后面我在docker启动了nginx代理 user nginx; worker_processes auto;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connections 1024; }http {include /etc/nginx/mime.typ…

大话设计模式——4.装饰模式(Decorator Pattern)

1.定义 1&#xff09;可以在不改动原有对象代码的情况下扩展对象的功能&#xff0c;通过聚合的方式相较于继承更加灵活。 2&#xff09;UML图 2.示例 汽车有很多装饰可选&#xff0c;如座椅、音响、轮胎等都可以进行自定义组装 1&#xff09;抽象汽车对象 public interfac…

代码里没有报错,但是java编译报错找不到符号

问题分析&#xff1a; 最近在尝试maven编译&#xff0c;所以不小心点了mvn clean的命令&#xff0c;将之前编译的工程清除了&#xff0c;导致后边再编译项目上的时候就报了一堆错误。代码没问题&#xff0c;但编译不通过&#xff0c;报找不到符号的错误&#xff0c;搜了下这样解…

PHPStudy无法解析php(7.3.4)文件

#告诉服务器&#xff0c;对于以.fcgi、.php或.phtml为后缀的请求&#xff0c;应该使用FPM进行处理。 AddHandler fcgid-script .fcgi .php .phtml #设置了全局默认使用的PHP版本路径 FcgidInitialEnv PHPRC "D:/phpstudy_pro/Extensions/php/php7.3.4nts" #告诉服务器…

QT信号槽实现分析

1.宏定义 qt中引入了MOC来反射&#xff0c;编译阶段变成 MOC–>预处理–>编译–>汇编–>链接 1-1、Q_OBJECT 这个宏定义了一系列代码&#xff0c;包括元对象和处理的函数 #define Q_OBJECT \public: \QT_WARNING_PUSH \Q_OBJECT_NO_OVERRIDE_WARNING \static c…

sylar高性能服务器-日志(P43-P48)内容记录

文章目录 P43&#xff1a;Hook01一、HOOK定义接口函数指针获取接口原始地址 二、测试 P44-P48&#xff1a;Hook02-06一、hook实现基础二、class FdCtx成员变量构造函数initsetTimeoutgetTimeout 三、class FdManager成员变量构造函数get&#xff08;获取/创建文件句柄类&#x…

数据结构试题练习

(1). 假如队列未满&#xff0c;现有变量data需要入队,请写出表达式; if( (tail1)%SEQLEN ! head ) {seqn[tail] data;tail (tail1)%SEQLEN; } (2). 假如队列未空&#xff0c;现在需要从队列取一个元素并赋值给变量data&#xff0c;请写出表达式; if( head ! tail ) {data se…

广和通发布基于MediaTek T300平台的RedCap模组FM330系列及解决方案

世界移动通信大会MWC 2024期间&#xff0c;广和通发布基于MediaTek T300平台的RedCap模组FM330系列&#xff0c;加速5G-A繁荣发展。FM330系列及其解决方案采用全球先进RedCap方案&#xff0c;满足移动宽带和工业互联对高能效的需求。 广和通FM330系列采用全球首款6nm制程且集成…

Mac安装java编程工具——idea

一、Java 开发工具 本文是推荐安装的是JetBrains 的 IDEA 下载地址&#xff1a;Download IntelliJ IDEA – The Leading Java and Kotlin IDE 选择对应系统的和对应芯片 mac os分为&#xff1a;intel&#xff08;英特尔&#xff09;和 Apple Silicon&#xff08;苹果的M系列…

数字中国:构建智慧社会的未来蓝图

一、引言 随着信息技术的迅猛发展&#xff0c;数字中国已经成为推动社会进步、提升国家竞争力的重要引擎。数字中国不仅代表着信息技术的广泛应用&#xff0c;更代表着一种全新的社会形态和发展模式。在这个背景下&#xff0c;AI与大数据技术的融合与应用成为数字中国建设的核…

3dgs学习(二)—— 3d高斯与协方差矩阵及其几何意义

协方差矩阵与3d高斯 3d高斯与椭球与协方差矩阵 3d高斯&#xff0c;及3维空间内的正态分布。 通过一元正态分布的坐标系图像不难想象&#xff0c;3维空间中的正态分布点集中在一片椭球空间中&#xff0c;各方向长轴取决于各方向正态分布的方差。 而协方差矩阵通过计算多元之…

Redis String 类型底层揭秘

目录 前言 String 类型低层数据结构 节省内存的数据结构 前言 Redis 的 string 是个 “万金油” &#xff0c;这么评价它不为过. 它可以保存Long 类型整数&#xff0c;字符串&#xff0c; 甚至二进制也可以保存。对于key&#xff0c;value 这样的单值&#xff0c;查询以及插…

亿道推出重磅加固平板!为行业发展注入新动力

随着科技生产力的不断发展&#xff0c;各行各业都得到质的飞跃。产品的迭代速度也大大加快&#xff0c;作为全球领先的加固行移动终端一站式提供商&#xff0c;亿道信息跟紧时代潮流&#xff0c;推出EM-I10J、EM-I20J两款均衡型加固平板&#xff0c;为行业发展注入新动力。 接地…

HarmonyOS创建一个ArkTS卡片

创建一个ArkTS卡片 在已有的应用工程中&#xff0c;创建ArkTS卡片&#xff0c;具体操作方式如下。 创建卡片。 根据实际业务场景&#xff0c;选择一个卡片模板。 在选择卡片的开发语言类型&#xff08;Language&#xff09;时&#xff0c;选择ArkTS选项&#xff0c;然后单…

小红书关键词爬虫

标题 1 统计要收集的关键词&#xff0c;制作一个文件夹2 爬取每一页的内容3 爬取标题和内容4 如果内容可以被查看&#xff0c;爬取评论内容5 将结果进行汇总&#xff0c;并且每个帖子保存为一个json文件&#xff0c;具体内容6 总结 1 统计要收集的关键词&#xff0c;制作一个文…

Spring Boot 手写starter!!!

原因&#xff1a;为什么要手写starter&#xff1f;&#xff1f;&#xff1f; 原因&#xff1a;简化功能。 实例&#xff1a;以分页为例&#xff1a;写一个starter。 1.首先定义一个PageX注解。 Target({ElementType.METHOD}) Retention(RetentionPolicy.RUNTIME) Documented p…

神经网络系列---权重初始化方法

文章目录 权重初始化方法Xavier初始化&#xff08;Xavier initialization&#xff09;Kaiming初始化&#xff0c;也称为He初始化LeCun 初始化正态分布与均匀分布Orthogonal InitializationSparse Initializationn_in和n_out代码实现 权重初始化方法 Xavier初始化&#xff08;X…

单点故障解决方案之Smart Link与Monitor Link

-SmartLink技术&#xff0c;创建Smart Link 组。在该组中&#xff0c;加入两个端口。其中1个端口是主端口&#xff0c;也称之为Master端口。另外1个端口是备份端口:也称之为 Slave 端口。 -Monitor Link 组也称之为“监控链路组&#xff0c;由上行端口和下行端口共同组成。下行…

c# iis Oracle链接

一、下载 下载地址&#xff1a;https://www.oracle.com/database/technologies/instant-client/downloads.html 这是Oracle Instant Client的下载首页&#xff0c;有很多种版本可供下载。 但要注意第三方工具如&#xff1a;PL/SQL Developer和Toad的版本&#xff0c;32位的要…
推荐文章