• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

ADI模数转换AD7091的SPI驱动接口verilog代码

04/29 10:58
1010
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

1-23102Q2223N56.doc

共1个文件

名称:ADI模数转换AD7091的SPI驱动(代码在文末付费下载)

软件:QuartusII

语言:Verilog

代码功能:

完成ADI单通道模数转换器AD7091R的逻辑接口设计。1 MSPS、超低功耗、12-Bit ADC

(1)实现全部逻辑接口功能,完成对外设AD7091R访问;

(2)自行设计应用场景,构造相应数据;

(3)实现数据手册中的最高数据率;

(4)硬件平台以拿到手的开发板为准,自行完成设计与验证;

(5)完成全部流程:设计规范文档、模块设计、代码输入、功能仿真、约束与综合、时序仿真、下载验证等。

演示视频:

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

部分代码展示

module AD7091(
input clk,//50MHz
input reset,//高电平复位
//AD接口
output reg convst,//AD转换信号
output reg CS,//使能信号
output reg SCLK,//AD时钟
input SDO,//AD数据输入
output reg [11:0] AD_data//AD转换结果
);
reg [2:0] state=3'd0;
parameter s_idle=3'd0;//空闲状态
parameter s_convst_low=3'd1;
parameter s_convst_high=3'd2;
parameter s_CS_low=3'd3;
parameter s_SCLK=3'd4;
parameter s_CS_high=3'd5;
reg [7:0] convst_cnt=8'd0;//convst高电平时间计数
reg [3:0] bit_cnt=4'd0;//bit计数
reg [3:0] CS_high_cnt=4'd0;//CS高电平计数
always@(posedge clk or posedge reset)
if(reset)
state<=3'd0;
else
case(state)
s_idle:
state<=s_convst_low;
s_convst_low://转换信号低电平状态
state<=s_convst_high;
s_convst_high://转换信号高电平状态(等待t8最大650ns)
if(convst_cnt>=8'd40)//等待800ns>650ns
state<=s_CS_low;
else
state<=s_convst_high;
s_CS_low: //CS低电平状态
state<=s_SCLK;
s_SCLK: //SCLK读数状态
if(bit_cnt>=4'd13)//计数13bit
state<=s_CS_high;
else
state<=s_SCLK;
s_CS_high:
if(CS_high_cnt>=4'd4)//延迟4*20ns,tquiet至少50ns
state<=s_idle;
else
state<=s_CS_high;

时序要求:

时序.JPG

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

附:AD7091R时序图和时序表

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=217

  • 1-23102Q2223N56.doc
    下载

相关推荐