首页 > 其他分享 >【代码更新】SPI时序——DA数模转换

【代码更新】SPI时序——DA数模转换

时间:2024-03-04 09:01:38浏览次数:36  
标签:wire dac -- DA --- SPI output 数模转换 reg

【代码更新】SPI时序——DA数模转换

DA芯片手册:https://www.ti.com.cn/cn/lit/ds/symlink/dac7715.pdf?ts=1709512667102&ref_url=https%253A%252F%252Fwww.ti.com.cn%252Fproduct%252Fcn%252FDAC7715

下图是芯片需要配置信号的时序图

 

 芯片引脚信号:

 项目硬件连接图:

 

  1 //
  2 //1.ADC7715UB Single-Supply Operation
  3 //
  4 //A1 --->LOADREG  --P4
  5 //A2 --->LOADDACS --N4
  6 //A3 --->SCLK     --P5
  7 //A4 --->SDI      --N6
  8 //
  9 //A6 --->RESET    --R3
 10 //
 11 module da_conversion (
 12 //
 13 input wire  clk         ,
 14 input wire  rst_n       ,
 15 //
 16 output reg  dac_loadreg ,
 17 output reg  dac_loaddacs,
 18 output reg  dac_sclk    ,
 19 output reg  dac_din     ,
 20 output wire dac_reset   
 21 //
 22 );
 23 //
 24 assign dac_reset    = 1'b1; 
 25 //
 26 reg [5:0] cnt0;
 27 wire      add_cnt0;
 28 wire      end_cnt0;
 29 always@(posedge clk or negedge rst_n)begin
 30     if(rst_n==1'b0)begin
 31         cnt0<=0;
 32     end
 33     else if(add_cnt0)begin
 34         if(end_cnt0)
 35             cnt0<=0;
 36         else
 37             cnt0<=cnt0+1;
 38     end 
 39 end 
 40 assign add_cnt0 = 1;
 41 assign end_cnt0 = add_cnt0 && cnt0 == 10-1;//10分频
 42 //
 43 reg [5:0] cnt1;
 44 wire      add_cnt1;
 45 wire      end_cnt1;
 46 always@(posedge clk or negedge rst_n)begin
 47     if(rst_n==1'b0)begin
 48         cnt1<=0;
 49     end
 50     else if(add_cnt1)begin
 51         if(end_cnt1)
 52             cnt1<=0;
 53         else
 54             cnt1<=cnt1+1;
 55     end 
 56 end 
 57 assign add_cnt1 = end_cnt0;
 58 assign end_cnt1 = add_cnt1 && cnt1 == 18-1;
 59 //
 60 always@(posedge clk or negedge rst_n)begin
 61     if(rst_n==1'b0)begin
 62         dac_sclk<=0;
 63     end
 64     else if(add_cnt0 && cnt0 == 5-1 && cnt1 >= 1 && cnt1 < 17)begin
 65         dac_sclk<=1;    
 66     end 
 67     else if(end_cnt0)begin
 68         dac_sclk<=0;    
 69     end     
 70 end
 71 //
 72 parameter  A1 = 1'b1;
 73 parameter  A0 = 1'b1;
 74 parameter  N  = 12'h400;
 75 //
 76 wire [15:0] data;
 77 assign data = {A1,A0,1'b0,1'b0,N};
 78 //
 79 always@(posedge clk or negedge rst_n)begin
 80     if(rst_n==1'b0)begin
 81         dac_din <=0;
 82     end
 83     else if(end_cnt0 && cnt1 < 16)begin    
 84         dac_din <=data[15-cnt1];    
 85     end     
 86 end
 87 //
 88 always@(posedge clk or negedge rst_n)begin
 89     if(rst_n==1'b0)begin
 90         dac_loadreg <=0;
 91     end
 92     else if(add_cnt0 && cnt0 == 0 && cnt1 == 0)begin    
 93         dac_loadreg <=1;    
 94     end 
 95     else if(add_cnt0 && cnt0 == 1 && cnt1 == 17)begin    
 96         dac_loadreg <=0;    
 97     end    
 98 end
 99 //
100 always@(posedge clk or negedge rst_n)begin
101     if(rst_n==1'b0)begin
102         dac_loaddacs <=1;
103     end
104     else if(add_cnt0 && cnt0 == 0 && cnt1 == 0)begin    
105         dac_loaddacs <=0;    
106     end 
107     else begin    
108         dac_loaddacs <=1;    
109     end    
110 end
111 endmodule 
da_conversion

 

标签:wire,dac,--,DA,---,SPI,output,数模转换,reg
From: https://www.cnblogs.com/taylorrrrrrrrrrr/p/18051119

相关文章

  • mybatis中<![CDATA[]]>的用法
    一、<![CDATA[]]>介绍在mybatis的xml映射文件中,如果写的sql中有一些特殊的字符的话,在解析xml文件的时候会被转义,但我们不希望他被转义,所以我们要使用<![CDATA[]]>来解决。<![CDATA[]]>是什么,这是XML语法。在CDATA内部的所有内容都会被解析器忽略。假如文本包含了很多的"<"......
  • 【代码更新】SPI时序——AD数模数转换
    【代码更新】SPI时序——AD数模数转换AD芯片手册:https://www.ti.com.cn/cn/lit/ds/symlink/ads8558.pdf?ts=1709473143911&ref_url=https%253A%252F%252Fwww.ti.com.cn%252Fproduct%252Fcn%252FADS8558下图是芯片需要配置信号的时序图寄存器配置时序: 项目硬件连接图:......
  • Java学习Day01
    开发语言汇总开发语言鼻祖,汇编语言C语言,面向过程的开发C++,是C语言的延伸,覆盖面向对象Java面向对象的开发,又叫C++--C#是Java的山寨Java发展史C语言的纯净版,无指针、内存的管理等C语言的纯净版,有如下特性:简单易用面向对象可移植性高性能分布式多线程安全性健壮......
  • Towards Foundation Models for Knowledge Graph Reasoning
    目录概符号说明ULTRA(amethodforUnified,Learnable,andTRAnsferableKGrepresentations)RelationGraphConstructionConditionalRelationRepresentations代码GalkinM.,YuanX.,MostafaH.,TangJ.andZhuZ.Towardsfoundationmodelsforknowledgegraphrea......
  • Day01---Web前端基础
    1,换行,分割和超链接换行命令:分隔线命令:超链接命令:超链接有两种常用用法:页面跳转,下载文件<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body><!--页面跳转:如果href的值是网......
  • Java笔记:Lambda表达式
    Lambda表达式在Java中是函数式编程的一种体现,允许把函数作为一个方法的参数传递进方法中,或者将函数作为方法的返回值。1.语法和基础使用语法://Lambda实现是一个简单的表达式(parameters)->expression;//Lambda实现是一个函数体(parameters)->{statements;}paramet......
  • Go 100 mistakes - #94: Not being aware of data alignment
      ......
  • day52 动态规划part10 代码随想录算法训练营 122. 买卖股票的最佳时机 II
    题目:122.买卖股票的最佳时机II我的感悟:只要定义清楚,就可以做出来的。理解难点:先判断等于听课笔记:看了文字版本,感觉还是我的思路最牛逼!!我的代码:classSolution:defmaxProfit(self,prices:List[int])->int:#dp[i]为截止到当前能获得的最大利润......
  • day53 动态规划part10 代码随想录算法训练营 121. 买卖股票的最佳时机
    题目:121.买卖股票的最佳时机我的感悟:soeasy 打印dp确实能发现问题理解难点:注意条件,及时更新dp听课笔记:看了,老师的代码,感觉没有我的简洁,哈哈!!我的代码:classSolution:defmaxProfit(self,prices:List[int])->int:#设dp[i]为截止到当前能获得......
  • Linux学习-day7
    Linux文件操作篇1vim编辑器vim具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。Vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单的来说,vi是老式的字处理器,不过功能已经很齐全了......