线性序列机与串行接口ADC驱动设计与验证 VHDL

(已通过板级验证)

实验工具

AC620实验开发板
Quartus ii 18.0
VHDL

实验原理

下图为ADC器件的管脚:
IN0-IN7为八个输入的通道,可以选择任意通道作为输入,本次实验每次只选择一个通道。
SCLK为时钟输入,范围从3.2MHZ~8MHZ(AC620参考时钟为50MHZ,因此采用八分频时钟,SCLK=6.25MHZ)。
DIN为输入信号,输入控制通道地址信号,SCLK的上升沿采样输入
DOUT为输出信号,在SCLK的下降沿输出,每次输出一位数据,一次转换从高到低总共输出12位数字信号。
在这里插入图片描述

ADC时序

如下图所示,一个串行转换(帧)开始于 c s ‾ \overline{cs} cs的下降沿,结束于 c s ‾ \overline{cs} cs的上升沿。每次ADC的转换包含16个SCLK信号,前三个SCLK为采样模式(track),后13个SCLK信号为保持模式(hold)。
DIN:control register一共有八个控制寄存器,采用bit3-bit5表示ADD0-ADD2,代表8个输入通道的地址。比如000代表选择第0个通道作为输入。
对于DOUT,ADC在前4个SCLK的下降沿输出为前导0,然后在剩下的13个SCLK的下降沿输出转换后的数据,因此,ADC_driver需要在SCLK的上升沿采集DOUT信号
timing

实验要求

通过ADC128S052模数转换芯片和线性序列机实现模拟信号转数字信号,并用七段显示器显示转换后的结果。
schematic
channel[2:0]: 八通道输入控制信号
clk_par: SCLK频率控制信号,SCLK为 (clk/(clk_par2)) ,(50MHZ/(42))= 6.25MHZ
start: 脉冲使能信号,使能单次转换
DOUT: 接收ADC芯片转换输出的数据
SCLK: ADC 串行数据接口时钟信号
CS_N:ADC串行数据接口使能信号
DIN: ADC 控制信号,从高到低依次输出channel的数据
ADC_STATE: ADC的工作状态。0:工作,1:空闲
conv_done:脉冲信号,代表一次转换完成
data[11:0]: ADC一次转换的结果,将串行的DOUT信号变成并行的data输出。

线性状态机时序:

ADC_CNT: 每12.5MHZ(80ns)后加1。

ADC_CNT 信号变化 ADC_CNT 信号变化
0 CS_N=1;SCLK=1;DIN=0 18 SCLK=0;
1 SCLK=1; CS_N=0; 19 SCLK=1; data(7) = DOUT;
2 SCLK=0; 20 SCLK=0;
3 SCLK=1; 21 SCLK=1; data(6) = DOUT;
4 SCLK=0; 22 SCLK=0;
5 SCLK=1; 23 SCLK=1; data(5) = DOUT;
6 SCLK=0; DIN=ADD2; 24 SCLK=0;
7 SCLK=1; 25 SCLK=1;data(4) = DOUT;
8 SCLK=0; DIN=ADD1; 26 SCLK=0;
9 SCLK=1; 27 SCLK=1;data(3) = DOUT;
10 SCLK=0; DIN=ADD0; 28 SCLK=0;
11 SCLK=1; data(11) = DOUT; 29 SCLK=1;data(2) = DOUT;
12 SCLK=0; 30 SCLK=0;
13 SCLK=1; data(10) = DOUT; 31 SCLK=1;data(1) = DOUT;
14 SCLK=0; 32 SCLK=0;
15 SCLK=1; data(9) = DOUT; 33 SCLK=1;data(0) = DOUT;
16 SCLK=0; 34 CS_N=1;
17 SCLK=1; data(8) = DOUT;
代码实现
----------------将地址寄存到寄存器中,防止在读取地址的时候地址改变-----
----------------------每一次脉冲使能信号start读取一次地址------------
process(clk)
begin
if(nrst = '0') then
		r_channel 
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值