当前位置: 首页 > article >正文

DAC芯片AD5689控制代码SPI接口FPGA代码,视频

名称:DAC芯片AD5689控制代码SPI接口

软件:QuartusII

语言:VHDL

代码功能:

    控制DAC芯片AD5689,通过芯片的SPI接口,进行命令和地址、数据写入,控制DAC输出模拟信号。

    AD5689/AD5687采用多功能SPI接口,时钟速率高达50 MHz,并均包含一个为1.8 V/3 V/5 V逻辑电平准备的VLOGIC引脚。

    设计语言使用VHDL,本代码简单易懂,注释详细,可以方便改写为verilog代码。

演示视频:DAC芯片AD5689控制代码SPI接口VHDL_Verilog/VHDL资源下载

FPGA代码Verilog/VHDL代码资源下载网:www.hdlcode.com

代码下载:DAC芯片AD5689控制代码SPI接口VHDL_Verilog/VHDL资源下载名称:DAC芯片AD5689控制代码SPI接口(代码在文末付费下载)软件:QuartusII语言:VHDL代码功能: 控制DAC芯片AD5689,通过芯片的SPI接口,进行命令和地址、数据写入,控制DAC输出模拟信号。 AD5689/AD5687采用多功能SPI接口,时钟速率高达50 MHz,并均包含一个为1.8 V/3 V/5 V逻辑电平准备的VLOGIC引脚。 设计语言使用Vicon-default.png?t=N7T8http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=216

部分代码展示

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
ENTITY AD5689_driver IS
   PORT (
      clock    : IN STD_LOGIC;--50MHz
      SYNC_N   : OUT STD_LOGIC;--AD5689接口
      AD_SDO   : IN STD_LOGIC;--AD5689接口
      AD_SCK   : OUT STD_LOGIC;--AD5689接口
      AD_SDI   : OUT STD_LOGIC;--AD5689接口
      WR_data  : IN STD_LOGIC_VECTOR(15 DOWNTO 0)--输入数字信号
   );
END AD5689_driver;
ARCHITECTURE trans OF AD5689_driver IS
   constant   CMD      : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0011";--写指令
   constant   ADDRA    : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0001";--通道A,通道B="1000",通道A和通道B="1001"
   
   SIGNAL cnt         : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000000";
   SIGNAL AD_SCK_buf  : STD_LOGIC := '0';
   
   SIGNAL WR_data_buf : STD_LOGIC_VECTOR(15 DOWNTO 0) := "0000000000000000";
   SIGNAL AD_SDI_buf  : STD_LOGIC := '0';
BEGIN
   PROCESS (clock)
   BEGIN
      IF (clock'EVENT AND clock = '1') THEN
         IF (cnt >= "00110101") THEN--53
            cnt <= "00000000";
         ELSE
            cnt <= cnt + "00000001";--分频计数器
         END IF;
      END IF;
   END PROCESS;
   
   PROCESS (clock)
   BEGIN
      IF (clock'EVENT AND clock = '1') THEN
         IF (cnt >= "00000000" AND cnt <= "00000001") THEN
            SYNC_N <= '1';--40ns之后,SYNC拉低,开始进入读取数据的状态
         ELSE
            SYNC_N <= '0';
         END IF;
      END IF;
   END PROCESS;
   
   PROCESS (clock)
   BEGIN
      IF (clock'EVENT AND clock = '1') THEN--clock2二分频得到sck的值为--25MHz
         IF (cnt > "00000001" AND cnt < "00110011") THEN--1~51
            IF (cnt(0) = '0') THEN
               AD_SCK_buf <= '0'; --cnt[0]==0的时候,sck为下降沿
            ELSE
               AD_SCK_buf <= '1';--cnt[0]==1的时候,sck为上升沿

设计文档:

  1. 工程文件

  1. 程序文件

  1. 程序编译

  1. 仿真文件

  1. 仿真图


http://www.kler.cn/a/107080.html

相关文章:

  • ❤React-React 组件通讯
  • 【含开题报告+文档+PPT+源码】基于Spring Boot智能综合交通出行管理平台的设计与实现
  • 《EasyQuotation 与MongoDB在股市信息的奇妙融合》
  • 什么是RAG? LangChain的RAG实践!
  • 初探鸿蒙:从概念到实践
  • 深入理解接口测试:实用指南与最佳实践5.0(二)
  • Qt文件 I/O 操作
  • 深度学习标注工具(包括自动标注)总结——持续更新
  • 不同网段的IP怎么互通
  • c语言基础:L1-060 心理阴影面积
  • 一文详解汽车电CAN总线
  • SpringMVC(下)
  • mysql bin_log日志恢复数据
  • Android framework服务命令行工具框架 - Android13
  • 高速下载b站视频的解决方案
  • UI自动化测试是什么?什么项目适合做UI自动化测试
  • 24年FRM备考知识点以及一级公式表
  • 【机器学习】KNN算法-模型选择与调优
  • 力扣每日一题73:矩阵置零
  • 2023CSP-J题解
  • python 字典dict和列表list的读取速度问题, range合并
  • 笔记-《RabbitMQ实战指南》
  • Oracle 数据库的锁排查方法
  • Linux 系统调用IO口,利用光标偏移实现文件复制
  • Kotlin 使用@BindingAdapter编译出错
  • 【微服务开篇-RestTemplate服务调用、Eureka注册中心、Nacos注册中心】