模拟电路设计课程——使用串行DAC AD5626 设计一款任意波形发生器
使用AD5626数字模拟转换器和ADALP2000模拟学习套件设计一款任意波形发生器。
标签
嵌入式系统
Funpack活动
开发板
接口
PCB设计
cjmf
更新2023-06-30
中国计量大学
939

任务要求

  • 使用串行DAC AD5626设计一款任意波形发生器
  • 搭配单片机或FPGA或其它方式的控制逻辑能够产生10Hz到20KHz范围内的正弦波信号,输出信号幅度要达到3Vpp,直流偏移可调1.5V到3.5V
  • 使用ADALP2000模拟套件中的器件实现
  • 使用套件中的Micro USB适配器通过USB给面包板供电,供电电压为5V
  • 使用ADALP2000套件中的运算放大器搭建一个Sallen-Key滤波器,滤除40KHz以上的混叠信号,输出运算放大器也选自ADALP2000套件
  • 运算放大器可从套件中提供的几个型号中选用
  • DAC采用AD5626

项目总览

本项目要求使用AD5626数字模拟转换器和ADALP2000模拟学习套件设计一款任意波形发生器。通过单片机或FPGA产生10Hz到20KHz范围内的正弦波信号,幅度达到3Vpp,直流偏移1.5V到3.5V可调。使用USB供电,电压5V。采用套件中的运算放大器和Sallen-Key 滤波器滤除40KHz以上信号。

项目思路

  1. 选择AD5626 DAC作为任意波形发生器的输出级,负责产生模拟波形信号。
  2. 采用单片机或FPGA,编写程序实现正弦波信号的数字合成。通过改变正弦波的频率和幅度参数,控制DAC输出不同频率和幅度的正弦波。
  3. 选择套件中的运算放大器,采用Sallen-Key 滤波器电路,滤除DAC输出超出40KHz的高频成分。
  4. 使用面包板,完成ADC与运算放大器的连接,采用USB供电。
  5. 编写 ESP32 程序,实现波形发生器参数的设置,如频率、幅度和直流偏移的控制。通过USB串口与单片机通信,下发控制指令。
  6. 编写 ESP32 程序,可以实时显示 ADC 采集结果。

项目实现

一、研究AD5626的数据手册,了解DAC的特性和通信接口。设计单片机与DAC的SPI通信接口。

AD5626是一款8位数字-模拟转换器(DAC),具有以下主要特性:

  1. 分辨率:AD5626具有8位的分辨率,可以将数字信号转换为模拟电压输出。
  2. 输出范围:AD5626的输出范围可以通过外部参考电压进行配置。通常情况下,它可以提供0V到参考电压之间的输出范围。
  3. 通道数:AD5626有多个独立的DAC通道,每个通道都可以单独配置和控制。
  4. 内部参考电压:AD5626集成了一个内部参考电压,可以用作参考电压源,也可以使用外部参考电压。
  5. 低功耗:AD5626具有低功耗特性,适用于需要节能和电池供电的应用。

至于SPI(串行外设接口)接口,它是一种常用的数字通信接口,用于在微控制器和外部设备之间传输数据。AD5626使用SPI接口进行通信,具有以下特点:

  1. 通信速度:SPI接口可以支持高速数据传输,具体速度取决于系统的时钟频率和SPI模式的设置。
  2. 时序:AD5626使用SPI接口进行数据传输,通常使用四线制(SCLK、SDI、SDO、CS)或三线制(SCLK、SDI、CS)模式。时钟极性(CPOL)和时钟相位(CPHA)可以根据系统要求进行配置。
  3. 控制寄存器:通过SPI接口,可以对AD5626进行控制寄存器的读写操作,以配置和控制DAC的工作模式、输出范围等参数。
  4. 数据传输:SPI接口通过串行传输的方式将数据从主设备(如微控制器)发送到从设备(如AD5626),或者从从设备读取数据。数据可以是DAC的输出值,也可以是控制寄存器的配置值。

FpAi8S1tMugmHT31YDRl_i6QDHpG

二、编写Verilog,实现正弦波数字合成算法。产生DAC需要的正弦波数据。

module dds(
     input sys_clk,
     input sys_rst_n,
     input [15:0] dac_freq,
     output [11:0] dac_out
 );
 ​
 reg [19:0] dds_phase;
 wire [19:0] dds_phase_add;
 assign dds_phase_add = (dac_freq << 1) + (dac_freq >> 4) + (dac_freq >> 5);
 ​
 always@(posedge sys_clk or negedge sys_rst_n)begin
     if(!sys_rst_n)begin
         dds_phase <= 20'd0;
     end else begin
         dds_phase <= dds_phase + dds_phase_add;
     end
 end
 ​
 lut inst_lut(
     .address(dds_phase[19:12]),
     .cos(dac_out)
 );
 ​
 endmodule

这里直接使用 IP 核创建 sin 表,然后通过累加的方式进行查表。查完表后的内容直接输出。

三、研究ADALP2000套件中的运算放大器和滤波器,设计3Vpp输出电路和Sallen-Key滤波器。

FjW6EYb6TMPtZD8xBBhjoJ_xn0cQ

这里直接使用 FilterSolution 生成滤波电容和电阻大小。偏置部分为仿真需要,预先给定,后续使用 PWM 进行直流偏置的控制。

可以看到仿真波形满足题目要求。

四、连接面包板,完成板卡的设计并制作。

Fn0VjL13Yw9ry6s88jvV8b_b7OJ8

五、编写上位机软件,使用USB与单片机建立串口通信,实时查看 ADC 采样数据。

FlF1AXKA20IL9wJnpVw2fjV5nlzQ

项目总结

通过使用数字和模拟技术,采用开源模拟元器件,设计实现一款频率范围广、输出幅度可调的任意波形发生器。产生的正弦波具有频率准确、低失真的特点,可为电子实验室提供一款高性能的信号源设备。

致谢

感谢硬禾学堂提供的ADALP2000学习套件,给学生和爱好者提供了丰富的模拟电子学习资源。 

附件下载
Draft1.asc
dac.rar
团队介绍
中国计量大学
团队成员
cjmf
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号