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

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

5小时前
158
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-24110Q95R0148.docx

共1个文件

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

软件:VIVADO

语言:Verilog

代码功能:

AD芯片ADC081S101测试试验

定时采集输入模拟电压,显示到数码管

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

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

ARTIX-7开发板.png

设计文档:

AD数码管显示例程

1实验简介

本实验练习使用ADC,实验中使用的ADC模块型号为ADC081S101EVAL,最大采样率为20MHz,精度为8位。实验中通过调节电位器R3,调整ADC采集电压值,并通过数码管显示电压值大小。

图1、ADC081S101EVAL电压采集电路

图2、6位数码管电路

2 实验过程

本实验例程,通过调节电位器调整ADC芯片采集的输入电压,FPGA提供ADC芯片驱动信号并读取其输出采集电压值的数据,同时通过数码管显示ADC采集电压值大小。

2.1、ADC时序

图3、ADC081S101时序图

通过此时序图,我们可以看到,无需对ADC芯片进行配置,只需要我们提供时钟SCLK和CS片选信号,芯片就可以直接进行数据采集了,操作非常简便。

2.2、数码管原理

图2所示的是6位共阳数码管,通过FPGA给与引脚电平即可点亮数码管LED灯。在本实验中,由于ADC采集电压最大为3.3V,所以最左边数码管显示最高位,同时带小数点,右边5位数码管显示小数位。在数码管显示时,采用“同步动态扫描”,是指“行信号”和“列信号”同步扫描。

3 程序设计

程序设计比较简单,功能是FPGA驱动ADC081S101芯片不断采集电压值并送到数码管进行显示。

代码说明:

at7_prj9_top.v是顶层模块,包含ad_mod.v,ad_data_pro_mod.v,display1_mod.v,display2_6_mod.v和digled_time_mod.v模块。

ad_mod.v是ADC的电压读取模块,实时读取电压值;ad_data_pro_mod.v是十六进制转换十进制模块;display1_mod.v是数码管最左边一位带小数点的显示模块;display2_6_mod.v是数码管右边五位显示模块;digled_time_mod.v是数码管显示时采用“同步动态扫描”功能的模块。

引脚名称

FPGA引脚

FPGA引脚方向

功能描述

ad_sys_clk

E3

Input

FPGA输入时钟100MHz

ad_cs

K16

output

ADC片选信号

ad_sdata

K15

Input

ADC数据输入输出

ad_clk

J15

output

ADC时钟输入

dg_a0

H1

output

数码管位信号(左边第一位)

dg_a1

K3

output

数码管位信号(左边第二位)

dg_a2

K2

output

数码管位信号(左边第三位)

dg_a3

L3

output

数码管位信号(左边第四位)

dg_a4

H5

output

数码管位信号(左边第五位)

dg_a5

J5

output

数码管位信号(左边第六位)

dg_a6

F4

output

数码管位信号(左边第七位)

dg_a7

A9

output

数码管位信号(左边第八位)

sdg_dp

K5

output

数码管段信号(点段)

sdg_a

J2

output

数码管段信号(a段)

sdg_b

G3

output

数码管段信号(b段)

sdg_c

H4

output

数码管段信号(c段)

sdg_d

G4

output

数码管段信号(d段)

sdg_e

M4

output

数码管段信号(e段)

sdg_f

L4

output

数码管段信号(f段)

sdg_g

L5

output

数码管段信号(g段)

4 实验现象

编译综合完成后下载程序到开发板中,可以看到数码管不断的显示ADC采集到的电压值,通过调节电位器R3可以看到电压值在实时变化,增加或者减小。

部分代码展示:

`timescale?1ns/100ps
module?ad_data_pro_mod(
??????????????????????clk_8m?????,
??????????????????????rst_n??????,
??????????????????????ad_data????,
??????????????????????
??????????????????????dig_led1???,
??????????????????????dig_led2???,
??????????????????????dig_led3???,
??????????????????????dig_led4???,
??????????????????????dig_led5???,
??????????????????????dig_led6???,
??????????????????????dig_led7???,
??????????????????????dig_led8???
??????????????????????
????????????????????);
????????????????
??????????????
input?????????????????clk_8m?????;
input?????????????????rst_n??????;??????????????????????
input????[7:0]????????ad_data????;
output???[3:0]????????dig_led1???;
output???[3:0]????????dig_led2???;
output???[3:0]????????dig_led3???;
output???[3:0]????????dig_led4???;
output???[3:0]????????dig_led5???;
output???[3:0]????????dig_led6???;
output???[3:0]????????dig_led7???;
output???[3:0]????????dig_led8???;
reg??????[24:0]???????buf_data1??;
reg??????[24:0]???????buf_data2??;
reg??????[3:0]????????minus_state;
reg??????[3:0]????????dig_led1???;
reg??????[3:0]????????dig_led2???;
reg??????[3:0]????????dig_led3???;
reg??????[3:0]????????dig_led4???;
reg??????[3:0]????????dig_led5???;
reg??????[3:0]????????dig_led6???;
reg??????[3:0]????????dig_led7???;
reg??????[3:0]????????dig_led8???;
reg??????[3:0]????????dig_led1_buf???;
reg??????[3:0]????????dig_led2_buf???;
reg??????[3:0]????????dig_led3_buf???;
reg??????[3:0]????????dig_led4_buf???;
reg??????[3:0]????????dig_led5_buf???;
reg??????[3:0]????????dig_led6_buf???;
reg??????[3:0]????????dig_led7_buf???;
reg??????[3:0]????????dig_led8_buf???;
always?@(posedge?clk_8m?or?negedge?rst_n)
begin
?????if(!rst_n)
?????begin
??????????buf_data1?<=?25'd0;
?????end

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

  • 2-24110Q95R0148.docx
    下载

相关推荐