news 2026/6/10 20:46:07

SPI接口 DAC控制器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SPI接口 DAC控制器

关于频率与时间的关系:

一个 100 MHz 的时钟信号,其周期T = 1 / (100 × 10⁶) = 10 × 10⁻⁹ 秒 = 10 ns

一个 1 GHz(1000 MHz)的时钟信号,其周期T = 1 / (1 × 10⁹) = 1 ns

频率 (MHz) 和 周期时间 (ns) 在数值上大致互为“倒数”。

快速换算公式:
周期 (ns) ≈ 1000 / 频率 (MHz)

例如:100 MHz -> 周期 ≈ 1000 / 100 = 10 ns。

例如:250 MHz -> 周期 ≈ 1000 / 250 = 4 ns。

例如:2 GHz (2000 MHz) -> 周期 ≈ 1000 / 2000 = 0.5 ns。

DAC芯片型号为AD5324;属于慢速DAC 转换芯片,其转换速率 < 1Mhz;

DAC的作用是将输入的二进制数字信号转换成模拟信号,以电压或电流的形式输出。

AD5324可以将输入的二进制数字信号转换成对应的电压值,并将电压输入到其中一个寄存器中,一共有4个寄存器;

FPGA与AD5324芯片通信接口:DIN、SCLK、SYNC;

DIN:输入数据,目的将16位二进制数字组成的数字串输入到DAC 的移位寄存器;

SCLK:同步时钟信号,数据在SCLK 的下降沿时锁存到DAC 的移位寄存器;

SYNC:同步信号,低有效;

接口时序:

规定SCLK 周期最小为 40ns,把SCLK的周期设置为140ns,上电时,保持SYNC为高电平,需要传输数据时,把SCLK拉高,先保持SYNC高电平时间至少80ns,设置保持一个SCLK周期的时间为高电平后,再把SYNC信号拉低,同时SCLK开始震荡计数,然后在16个SCLK的下降沿对应DIN上每个16位数据的中心位置,16个SCLK周期过后,SYNC和SCLK同时拉高并保持。

寄存器的位宽为16位(4个控制位和12位数据位),在时钟SCLK控制下,数据以16位字的形式输入到设备,最高位优先;

由最高两位(A1、A0)决定存入哪个寄存器(A\B\C\D 四个寄存器),

寄存器(A\B\C\D)各自对应二进制为00、01、10、11;

另外,PD位决定部件处于正常或下电模式,0为下电模式,1为正常模式。LDAC位控制何时更新DAC寄存器和输出,0表示更新所有寄存器的数据,1表示只更新寻址寄存器的数据,DAC寄存器的内容没有变化。

由PD 和 LDAC共同决定DAC 的工作模式;

其中,sync_cnt计数是为了SYNC高电平时间至少满足80ns;之后控制sclk开始震荡计数;

在16个sclk周期后,SYNC和SCLK同时拉高保持;

由串口助手下发三个字节的指令,控制DAC 产生对应数值的电压;

第一字节为AA,帧头,使得DAC进入准备状态,防止串口产生的意外数据进行干扰;

第二字节为选择寄存器指令,A1和A0;PD和LDAC固定为1和0,以及DAC值的高4bit;

第二字节的低4bit和第三字节的全部位组成12位的DAC 数据位;

UART帧协议规范:

帧字节编号

0

帧头 0xAA

1

{A1,A0,PD,LDAC,DAC[11:8]}

A1A0:通道选择 第7:6两位;

PD:断电设置 第5位

LDAC:更新DAC值 第4位

DAC[11:8] DAC数据 第3:0位

2

DAC[7:0]

输出的电压VOUT与输入的12位数据位的数据D公式:

VOUT = VREF * D / 2^N

VREF:参考电压;2.5v;

N:DAC分辨率,AD5324的分辨率为12位;

因为由 A1和A0两位可以分别选择四个通道的其中一个;

假如:在A 通道产生一个1.6V的电压,那么A1和A0 设置为00;PD和LDAC固定为1,0;

12位的数据位根据公式:1.6 = 2.5 * D /2^12; 计算可得 D = 2621.44 ≈2621;

转换为二进制1010_0011_1101

那么,串口发送第一个字节为AA指令;

第二个字节高4位为0010;对应A1,A0,PD,LDAC;

第二个字节低4位为1010;对应数据位的最高4位;

第三字节为0011_1101;

将3个字节转换为十六进制:AA,2A,3D;

工程实现架构:

整个实现先接收串口下发的单比特数据,转换为8比特并行数据,同时根据UART协议找到帧头0xAA,对齐帧头后,将控制比特和数据比特进行拼接为16位数据,再根据SPI 接口的时序,将16位数据转换为单比特数据输出给ADC芯片;

串口顺序下发指令,每接收到一个串口数据有效标志就按照功能描述把串口输出的有效数据拼接到一个16位的移位寄存器中,当三个字节指令帧发送完成后,产生一个结束标志。之后把这个16位的寄存器值赋值给 Chn_data,同步产生Chn_valid标志,给到 Dac_ctrl;

设计串口接收模块:

根据串口协议:

空闲位(1到0跳变)+ 8位数据位 + 停止位

串口接收模块:

对接收到的串口数据进行打拍,消除亚稳态;

并通过找寻下降沿,找到串口传输的起始位;

该 rx_flga标志了串口的8位数据位的有效标志;

在串口数据有效阶段,循环计数cnt_baud,并在计数值的中间进行比特累加,

同时进行接收数据的移位操作;

通过串口,每输入8位,进行拼接, 拼接成 8 比特的并行数据进行一次输出;

每移位8次,输出一个完整的8比特数据;

串口命令解析模块:

假如:在A 通道产生一个1.6V的电压,那么A1和A0 设置为00;PD和LDAC固定为1,0;

12位的数据位根据公式:1.6 = 2.5 * D /2^12; 计算可得 D = 2621.44 ≈2621;

转换为二进制1010_0011_1101

那么,串口发送第一个字节为AA指令;

第二个字节高4位为0010;对应A1,A0,PD,LDAC;

第二个字节低4位为1010;对应数据位的最高4位;

第三字节为0011_1101;

将3个字节转换为十六进制:AA,2A,3D;

根据以上,一共发送3个字节,第一字节为AA,通过cnt 计数,0~2,对应帧字节编号;

根据串口的帧协议:

帧字节编号

0

帧头 0xAA

1

{A1,A0,PD,LDAC,DAC[11:8]}

A1A0:通道选择 第7:6两位;

PD:断电设置 第5位

LDAC:更新DAC值 第4位

DAC[11:8] DAC数据 第3:0位

2

DAC[7:0]

将控制数据和有效数据进行拼接:

同时产生结束标志:

DAC控制模块:

由串口接收数据,最终通过spi 接口发送给AD5324,控制该ADC芯片将数据转换为模拟信号输出;

设计状态机,IDLE为初始态、SYNC为等待SYNC信号拉高一定周期后再拉低;

SYNC_SHIFT:移位寄存器输出,并行转串行输出;

计满一个 SCK 时钟周期,之后跳转下一状态:

后续根据 div_cnt 和 sync_shift_cnt 产生 SPI接口的控制时序;

产生SPI接口的SCK时钟信号:

产生SPI接口的片选信号,低有效:

产生SPI 接口的sdi 单比特数据输出:

仿真激励:

给rx赋值,查看SPI接口的控制信号;

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 18:54:54

TensorFlow在自媒体运营中的标题生成技巧

TensorFlow在自媒体运营中的标题生成技巧 在内容为王的时代&#xff0c;一个爆款标题往往能决定一篇文章的命运。每天数以百万计的内容涌入社交平台、新闻客户端和短视频应用&#xff0c;如何让自己的文章从信息洪流中脱颖而出&#xff1f;点击率成了关键指标——而标题&#x…

作者头像 李华
网站建设 2026/6/10 11:54:47

为什么99%的人失败?破解智谱大模型手机部署的4大坑点与应对策略

第一章&#xff1a;智谱Open-AutoGLM手机本地部署全景解析随着大模型轻量化技术的成熟&#xff0c;将AutoGLM类模型部署至移动端设备成为可能。智谱推出的Open-AutoGLM支持在资源受限的手机环境中运行&#xff0c;实现离线推理与本地化智能服务。该部署方案依赖于模型量化、推理…

作者头像 李华
网站建设 2026/6/9 20:59:53

伺服压机程序 位置模式重复定位精度±0.02mm 压力模式重复控制±10公斤左右 触摸屏程序+...

伺服压机程序 位置模式重复定位精度0.02mm 压力模式重复控制10公斤左右 触摸屏程序PLC程序1000元 触摸屏程序PLC程序问题解答2000 触摸屏程序PLC程序远程调试5000伺服压机这玩意儿在工业现场真是越来越吃香了。最近有个项目刚做完&#xff0c;客户要求位置模式下重复定位精度必…

作者头像 李华
网站建设 2026/6/10 11:58:42

为什么顶级AI团队都在抢用Open-AutoGLM云主机?(稀缺资源曝光)

第一章&#xff1a;为什么顶级AI团队都在抢用Open-AutoGLM云主机&#xff1f;在人工智能研发竞争日益激烈的今天&#xff0c;顶级AI团队对计算资源的效率与灵活性提出了前所未有的高要求。Open-AutoGLM云主机凭借其专为大模型训练优化的架构&#xff0c;迅速成为行业首选。它不…

作者头像 李华
网站建设 2026/6/9 23:51:30

揭秘Open-AutoGLM autodl核心技术:如何实现零代码AI模型部署

第一章&#xff1a;揭秘Open-AutoGLM autodl的核心理念 Open-AutoGLM autodl 是一个面向自动化机器学习与大语言模型集成的开源框架&#xff0c;其核心目标是降低开发者在复杂AI任务中的工程门槛。通过将模型训练、数据预处理、超参数优化和部署流程封装为可插拔组件&#xff0…

作者头像 李华