news 2026/7/22 8:29:56

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/7/19 1:57:28

【课程设计/毕业设计】基于Web的影视资源管理系统设计与实现剧本管理、素材存储、版本管控【附源码、数据库、万字文档】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/7/19 1:16:03

TensorFlow在畜牧健康监测中的声音识别

TensorFlow在畜牧健康监测中的声音识别 在现代化养殖场里&#xff0c;一头猪的咳嗽声可能比体温计更能预示一场潜在的疫情。传统养殖依赖人工巡检&#xff0c;饲养员凭经验判断牲畜状态&#xff0c;但人耳难以捕捉细微变化&#xff0c;夜间巡查又受限于安全与效率。如今&#x…

作者头像 李华
网站建设 2026/7/19 13:34:01

从零理解Open-AutoGLM,掌握下一代AI自动推理系统的底层逻辑

第一章&#xff1a;Open-AutoGLM的底层技术Open-AutoGLM 是一个基于开源大语言模型&#xff08;LLM&#xff09;与自动生成逻辑模块&#xff08;GLM&#xff09;深度融合的智能推理框架&#xff0c;其核心在于实现自然语言理解与结构化任务执行之间的无缝衔接。该系统依托于先进…

作者头像 李华
网站建设 2026/7/19 19:53:43

Open-AutoGLM在mac上部署失败?90%的人都忽略了这7个关键点

第一章&#xff1a;Open-AutoGLM在macOS部署的现状与挑战Open-AutoGLM作为新兴的开源自动代码生成模型&#xff0c;其在macOS平台上的本地化部署正受到开发者广泛关注。尽管苹果芯片&#xff08;如M1/M2系列&#xff09;在算力和能效方面具备优势&#xff0c;但受限于生态兼容性…

作者头像 李华
网站建设 2026/7/19 12:04:05

【Mac用户必看】:3天内掌握Open-AutoGLM本地化部署核心技术

第一章&#xff1a;Mac用户必看&#xff1a;Open-AutoGLM本地化部署全景解析对于追求高效本地大模型推理与自动化任务处理的Mac用户&#xff0c;Open-AutoGLM 提供了一套轻量级、可定制的解决方案。该框架结合了 GLM 系列模型的强大语义理解能力与自动化流程引擎&#xff0c;支…

作者头像 李华
网站建设 2026/7/20 11:36:53

从零配置到生产上线:vLLM启用Open-AutoGLM的全流程拆解

第一章&#xff1a;从零开始理解vLLM与Open-AutoGLM集成架构在构建高效、可扩展的大语言模型推理系统时&#xff0c;vLLM 与 Open-AutoGLM 的集成提供了一种高性能的解决方案。vLLM 是一个专注于大规模语言模型推理加速的框架&#xff0c;通过 PagedAttention 技术显著提升了显…

作者头像 李华