FPGA零基础学习之TLC5620驱动教程

2023-08-04

在FPGA处理完数字信号之后,我们有些情况下是需要将数字信号转变为模拟信号再输出的。比如音频信号在滤波后,需要转换为声音信号进行输出。此次,我们要讲数字信号转换为电压信号进行输出,以便我们后续可以用示波器之类的器械观察信号。
我们采用的芯片为TLC5620,是一款8bit四通道的数模转换器。
在四路通道中,我们可以设置4种不同的参考电压进行转换使用。但是在此次实验中,我们采用的四路参考电压一样,如下图>
FPGA零基础学习之TLC5620驱动教程 (https://ic.work/) 可编辑器件 第1张
接下来我们介绍一下此芯片的一些特征以及手册对芯片的描述。下图为官方手册对芯片的一段描述>
FPGA零基础学习之TLC5620驱动教程 (https://ic.work/) 可编辑器件 第2张
TLC5620是一款使用3线串行总线控制的芯片。11bit的命令中包含8bit数据、2bit通道选择、1bit输出范围选择bit。输出范围选择,可以输出一倍或者两倍的参考电压差值范围。当两级锁存器都打开时,新的数据可以进入到芯片。下图为芯片的框图>
FPGA零基础学习之TLC5620驱动教程 (https://ic.work/) 可编辑器件 第3张
端口介绍>
FPGA零基础学习之TLC5620驱动教程 (https://ic.work/) 可编辑器件 第4张
我们的数据为8bit,那也就是将电压范围划分为256份,我们的数字信号会对应成电压进行输出,所以我们的输出电压的计算公式为>
FPGA零基础学习之TLC5620驱动教程 (https://ic.work/) 可编辑器件 第5张
接下来我们看一下时序图>
FPGA零基础学习之TLC5620驱动教程 (https://ic.work/) 可编辑器件 第6张
当LOAD为高电平时,数据被锁存进DATA在每一个时钟下降沿,一旦数据所有的bit被采集到,LOAD被拉低,将寄存器中的数据传输到被选择的DAC中。如图一所示,当LDAC为低电平时,LOAD信号拉低,被选择的DAC芯片输出电压会更新。如果LDAC为高电平,电压更新将会被禁止,直到我们将LDAC拉低,如图二>
FPGA零基础学习之TLC5620驱动教程 (https://ic.work/) 可编辑器件 第7张
对于我们的通道选择,如下图>
FPGA零基础学习之TLC5620驱动教程 (https://ic.work/) 可编辑器件 第8张
当RNG=0时,输出电压为一倍范围,当RNG=1时,输出电压为两倍范围。
接下来,我们来做一下芯片的驱动,同样可以使用线性序列机。转换总周期为11us的时间。
首先我们先新建工程。
FPGA零基础学习之TLC5620驱动教程 (https://ic.work/) 可编辑器件 第9张
FPGA零基础学习之TLC5620驱动教程 (https://ic.work/) 可编辑器件 第10张
新建代码文件,写入代码>
FPGA零基础学习之TLC5620驱动教程 (https://ic.work/) 可编辑器件 第11张
FPGA零基础学习之TLC5620驱动教程 (https://ic.work/) 可编辑器件 第12张
FPGA零基础学习之TLC5620驱动教程 (https://ic.work/) 可编辑器件 第13张
驱动代码如下>
 
 
在写驱动代码时,我们需要注意时序图中的一些时间要求,比如,数字信号的建立时间和保持时间,以及load信号的建立时间与保持时间。时间要求如下图>
FPGA零基础学习之TLC5620驱动教程 (https://ic.work/) 可编辑器件 第14张
由上图可以得出结论,芯片的驱动时钟最大为1MHz。数据的建立时间与保持时间最小值都为50ns。如果我们在时钟上升沿发送数据,那么我们发送的数据,建立时间与保持时间最小值为500ns。满足条件。
接下来我们写一下仿真看一下波形。
FPGA零基础学习之TLC5620驱动教程 (https://ic.work/) 可编辑器件 第15张
FPGA零基础学习之TLC5620驱动教程 (https://ic.work/) 可编辑器件 第16张
代码如下>
 
 
运行波形,观察仿真波形>
FPGA零基础学习之TLC5620驱动教程 (https://ic.work/) 可编辑器件 第17张
观察da_clk、da_data、da_load、da_ldac波形全部正常,即说明驱动正确。

文章推荐

相关推荐