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

DAC芯片DAC081S101测试试验设计Verilog代码VIVADO ARTIX-7开发板

09/30 13:36
509
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-24110R00244160.docx

共1个文件

名称:DAC芯片DAC081S101测试试验设计Verilog代码VIVADO  ARTIX-7开发板

软件:VIVADO

语言:Verilog

代码功能:

DAC芯片DAC081S101测试试验

产生一个0-255循环递增的数据,通过SPI接口不断的写入到DAC中,输出的模拟电压可以控制LED的亮暗变化

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

本代码已在ARTIX-7开发板验证,ARTIX-7开发板如下,其他开发板可以修改管脚适配:

ARTIX-7开发板.png

1.实验简介

本实验练习使用DA,实验中使用的芯片型号为DAC081S101,最大采样率为30MHz,精度为8位。

图1、DAC电路模块

2.实验过程

本实验通过FPGA定时提供DAC芯片驱动信号和电压数据值,同时通过LED灯的亮度表示电压的大小。

图2、DAC081S101时序图

图3、输入数据内容格式

图2所示是DAC驱动时序图;图3所示是DAC芯片16位数据输入格式,D7~D0是需要转换的电压数据,PD1~PD0是DAC掉电模式选择,本实验选择通用模式00。D7~D0表示十进制值的大小范围是0~255,本实验通过输入0~255循环递增的值使DAC芯片输出电压由0递增至最大,使LED灯的亮度由暗至亮循环变化。

3.程序设计

程序设计比较简单,功能是FPGA驱动DAC081S101芯片循环输出0~3.3V电压并通过LED灯显示。at7_prj10_top.v是顶层模块,包含da_mod.v、da_data_time_mod.v和da_time_mod.v模块。da_mod.v是DAC的驱动模块,定时输出不同电压值;da_data_time_mod.v模块定时循环产生不同电压值数据;da_time_mod.v模块产生使能信号,使da_mod.v模块定时配置DAC模块输出电压。

引脚名称

FPGA引脚

FPGA引脚方向

功能描述

clk_in

E3

Input

FPGA输入时钟100MHz

da_syn

J18

Output

DAC片选信号

da_din

J17

Input

DAC数据输出

da_sck

J14

Output

DAC时钟输入

4.实验现象

编译综合完成后下载bit程序到开发板中,可以看到LED灯循环由暗至亮。

部分代码展示:

`timescale 1ns/100ps
module at7_prj_top(
                      clk_in      ,
                      
                      //da
                      da_syn      ,
                      da_din      ,
                      da_sck      
                      
                    );
                
              
input                 clk_in      ;
                      
                      //ad
output                da_syn      ;
output                da_din      ;
output                da_sck      ;
wire                  da_en       ;
wire    [15:0]        da_data     ;
wire                  da_syn      ;
wire                  da_din      ;
wire                  da_sck      ;
reg              rst_n           ;
reg    [31:0]    rst_cnt         ;
reg    [4:0]     clk_1m_cnt      ;
reg              clk_1m          ;
always @(posedge clk_in)
begin
     if(rst_cnt < 32'd1000000)
     begin
          rst_cnt <= rst_cnt + 1'b1;
     end
end

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

  • 2-24110R00244160.docx
    下载

相关推荐