找回密码
 注册
关于网站域名变更的通知
查看: 446|回复: 2
打印 上一主题 下一主题

转——【小梅哥FPGA进阶教程】第三章 TLC5620型DAC驱动设计

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-3-30 09:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
三、TLC5620型DAC驱动设计
TLC5620DAC芯片概述:
l  TLC5620C是一个具有4个独立8位电压输出型DAC的数模转换器
l  单电源5V供电
l  采用串行接口时序
l  具备4个高阻抗参考电压输入端口(对应四个DAC输出通道)         
l  可编程的电压倍增模式
TLC5620是一个内部具备4个独立 8位电压输出型数字——模拟转换器,每个DAC转换器都拥有一个带缓冲(高输入阻抗)的参考电压输入端口。每个DAC可以输出一倍或者两倍的参考电压与GND之间的电压值。
TLC5620使用CMOS电平兼容的三线制串行总线与各种流行的处理器进行连接,TLC5620接收控制器发送过来的11位的命令字,这11位的控制字被分为3个部分,包括8位的数据位,2位的DAC选择位,1位的电压倍增控制位。每个DAC的寄存器都采用双缓冲结构,这样,可以实现首先通过数据总线给所有的DAC传输需要更新的数据,然后通过控制信号LDAC将所有DAC的电压同步更新到输出上。

* R: P# q0 w1 Y: Y; K/ P6 r8 P! K8 Z! _% ~

8 O; k0 ^9 L1 b
TLC5620芯片内部框图
TLC5620DAC芯片引脚说明:

1 @* [" f2 Q& ^9 J' A/ j

, a4 O* o* I& d7 L/ A2 ?) p3 N. d9 ?

0 h+ K1 s4 z9 L: U5 d# F7 {- [
( [- n9 F9 D" U9 j- N) O
TLC5620DAC芯片详细介绍:
TLC5620是由四个电阻串式DAC组成的,每个DAC的核心是一个拥有256个节点(抽头)的电阻,对应了256中不同的组合,如下表所示,每个电阻串的一段连接到GND,另一端来自参考输入缓存的输出。
每个DAC的输出都接有一个可配置增益的输出放大器,该放大器的增益可以配置为1或者2。当芯片上电时,DAC的值全部被复位到0,。每个DAC通道的输出可由下列公式计算得出:
  
VoDAC  A|B|C|D = REF * CODE/256 *1 + RNG bit value
  
其中,Vo为输出电压值,REF为DAC的输出参考电压,CODE为输出电压值的数字量化量,如255表示按照参考电压的满幅输出(关闭电压倍增模式),0则0V输出,RNG bit value表示电压倍增模式,为0则关闭输出电压倍增模式,为1则打开输出电压倍增模式。
当串行控制字中的数据部分为0~255RNG bit0或者1时,输出电压与数字量化值的关系如下表所示:
) r$ P5 m# \, |% T
2 D  s  T) Y- i
TLC 5620DAC接口时序:
控制器对TLC5620的单个DAC设置包括两个主要操作
1.        将数字量化值以及控制位发送到TLC5620中对应的寄存器中
2.        控制DAC将寄存器中接收到的数据值更新到DAC输出上
对于数据的传输,有连续传输(11个连续的时钟周期传输11位的控制字)和2个8时钟周期传输方式(使用两次8时钟周期的传输来实现11位数据的传输)。
对于数据的更新,则使用LOAD和LDAC配合以实现。
当LOAD为高电平时,在每个CLK的下降沿,数据被移入DAC的移位寄存器中。当所有的数据位被移入完成后,LOAD被拉低,以将数据从串行输入移位寄存器中转入选中的DAC中,如上图所示:

& S3 g: F/ q) k* s  ?8 @# e1 I  k4 T: @6 g* D  H
6 g, }# i3 k! m& B+ L; r
当LDAC为低电平时,选中的DAC通道的输出电压在LOAD变为低电平时更新。
当LDAC在串行数据传输过程中为高电平时,新的数据值被存在器件中,该值可以在稍后将LDAC拉低时传入DAC的输出,如下图2所示。串行总线上传输数据时,高位在前,低位在后。

- y) P, B! B3 X) `6 k/ X8 m' v& U- a% w! v9 G/ _( m

& h5 }0 p' P& M1 a+ l
使用两个8时钟周期的传输数据(主要针对8位定长的SPI控制器)的时序图3和图4所示:

, q' t5 p9 o5 L1 _2 l" n# g' H. m
) y- y. D+ t8 h: U
! t3 R+ D+ q- U. y) ~0 t4 M
在传输时序中,标为A0和A1的两位指定了需要设置输出的DAC,具体A0和A1值与对应被选择更新的DAC如下表所示:
6 j- t! K7 g' L0 _

( x) o8 Z; g$ s% |6 Q
TLC5620串行数字接口的关键时序参数:
针对TLC5620的数字接口,其操作时序如下表所示。
0 s! g* J; P: k. b4 ]/ r

/ Q# }0 \0 W2 M! \6 p& M7 G

) Y! r8 g/ |+ O* B9 g" o
其中,从tSU(DATA-CLK)、开始一直到CLKfrequency都是我们在设计接口时序时,需要重点关注的参数。我们设计的控制时序必须要严格满足表中各个时序参数,否则会导致数据传输或转换失败。
芯航线ADDA模块TLC5620电路介绍:
芯航线FPGA学习套件中,提供了一个多通道串行ADDA模块。其中,DA部分所使用的芯片就是上文介绍的TLC5620,TLC5620部分电路图如下图所示:
( C; r8 i8 x" c. \5 t  t1 e
: c& _) N5 B- l& w/ `. H9 h
, J) K+ ~3 F5 v- Q
为了给DAC的参考输入提供稳定的参考电压,这里使用专用精密参考源芯片TL431搭建了一个参考源电路,该电路如下图所示:
+ a$ q- w* j5 E0 h+ t
$ x7 \& n( M8 e: ~$ O- d
根据5V的输入电压和输出电压/电流设计电路,按照上图设置电路即可,其中R2:R3=1:2.7得到的输出最接近3.3V(例如R1取值为1k,R2取值为2.7k)

+ o) G; U. i$ |6 @; v" {" @6 m

1 z8 C3 I# u4 R3 [8 b1 H, R
Vout = (R2+R3)*2.5/R3 = 3.7*2.5/2.7 = 3.42V
为了保证TL431 1mA的工作电流,R1需要满足
1mA< (Vcc-Vout)/R1< 500mA
这里设置R1为150欧姆,则(Vcc-Vout)/R1 = 10.5mA,满足TL431工作要求。
因此,当确定一个输出电压时,就可以得到对应的RNG和CODE了,如下式所示:

! e: c3 l* D6 @# ~9 @, q* P* C- r. G
然后,在我们控制DAC的输出时,只需根据所需输出的电压计算得到CODE和RNG,然后将该值通过串行接口传入TLC5620,再发出一个更新控制信号(LOAD + LDAC),就能实现控制TLC5620输出想要的电压了。
线性序列机设计思想与TLC5620接口时序设计:
         这里以使用LOAD信号控制DAC更新的时序图来分析TLC5620的数字接口时序:
: ^4 G. g+ e: I9 `& [, a

0 o! V, g# {1 a" v( o1 {

8 i5 {0 n! F3 e; a/ U) q
从图中我们可以看到,该接口的时序是一个很有规律的序列,CLK信号什么时候该由低变高,什么时候由高变低。DATA信号什么时候该传输哪一位数据,LOAD信号什么时候拉低,什么时候拉高,都是可以根据时序参数唯一确定下来的。
我们可以将该数据波形放到以时间为横轴的一个二维坐标系中,纵轴就是每个信号对应的状态:

: I' s; f) T8 j& {6 z  e
+ g! m: F+ S% [" y2 J
% ]' z* f; u' n
因此我们只需要在逻辑中使用一个计数器来计数,然后每个计数值时就相当于在t轴上对应了一个相应的时间点,那么在这个时间点上,各个信号需要进行什么操作,直接赋值即可。
针对TLC5620的接口时序,在FPGA中,我们以时钟周期为20ns进行设计,由于TLC5620的数字接口工作时钟最高位1MHz,周期为1000ns,因此时钟的翻转时间最小为500ns,为了给设计留有余量,因此本设计使用1200ns作为时钟周期,即时钟信号每600ns翻转一次。从而可以通过每个信号变化时的时间得到对应计数器的值:
每个时间点对应信号操作详表:

9 N* u# O8 V" c# Z
) @7 y: }0 Q4 \8 k
# T$ o2 r* T% B; s) S
每个时刻计数器操作:
& p1 u0 j$ D4 h/ T) P3 o2 x

" q; s4 D4 o! x8 _
以上就是通过线性序列机设计接口时序的一个典型案例,可以看到,线性序列机可以大大简化我们的设计思路。线性序列机的设计思想就是使用一个计数器不断计数,由于每个计数值都会对应一个时间,那么当该时间符合我们需要操作信号的时刻时,就对该信号进行操作。这样,就能够轻松的设计出各种时序接口了。
4 J- ~' b* X7 y1 l( a, G) D
( F' q8 P9 p1 q- q) c
有了这两张表,我们就可以进行TLC5620的接口逻辑的编写了。设计TLC5620接口逻辑的模块如下图所示:
. k9 ?# t: u! U3 Z

" {* i5 {) @) z" [/ A+ p
其中,每个端口的作用如下所示:

- i* W3 a8 Y# K! q! |: l. Z- y  \5 t# x. ^
有了这些之后,我们就可以开始进行控制器的具体逻辑设计了。具体逻辑设计过程请参看小梅哥FPGA设计思想与验证方法视频第17课。
视频教程中的工程源码:
, o' Q# Q, u) n! `" r: i6 F( ?
4 d! @$ @* K+ s, h$ V9 J& E1 J

! J9 t- U5 N& [- f! D4 K

7 o3 s6 p  i1 u- G" T

9 r$ p+ z5 {: x$ }  i+ S, l

6 z) ]% [+ p1 B, v, M" H

. y1 s  O- I* S% I. G' B3 D$ I+ {; X% _+ A! \, T3 `# t
视频教程中的测试文件源码
4 G3 C' s6 Q4 |  X/ T

9 \$ _& W, D6 t
& n: l# {: t5 t$ g" @- o7 P) Y

  d* N$ o! Q- w. |6 C7 |
板级验证方法:
设计中使用了一个信号探针来通过电脑传递输出电压控制字给DAC控制逻辑,使用In system sources and probes editor工具,输入希望输出的电压值,则芯航线开发板上,FPGA控制TLC5620芯片输出对应的电压值
' R; ]* ]3 p6 g( s8 Q+ O  G4 D

& g: Q9 s( u& z& W: f  a
0 f: P2 n( o* w" \
顶层例化模块源码:
5 ^3 ~( p; p' {: X* W

& H, q8 {9 ]$ p
% k0 _4 d" C& }  B
如果希望更加细致详细的学习本实验,请观看《小梅哥FPGA设计思想与验证方法视频教程》第17课。
如有更多问题,欢迎加入芯航线FPGA技术支持群:472607506
+ ?' I7 M; L$ Y2 l& Q# \/ S) Y4 c) B
小梅哥
芯航线电子工作室
0 x9 ]& f% N. T/ X& Q8 @

+ S' K! b& k$ K( D- f
附录1ADDA V1.1模块使用说明
本模块提供两种连接方式,分为开放式接口和芯航线FPGA学习套件专用接口。开放式接口焊接普通排针,方便用于使用杜邦线与其他非芯航线FPGA学习套件的板卡相连。芯航线专用接口使用卧式排针,与芯航线FPGA学习套件的CAMERA接口相连。现分别进行介绍:
1、开放式接口:

: Y/ g" S0 ]6 s$ E9 i
: I0 ^) ~7 y1 H" C3 M8 }

1 T7 t' U) T7 e4 _

! j  Z5 N3 i, j( {0 l( A0 e
本模块共有5个接插件:
P1为与FPGA开发板连接的数字接口信号和电源信号,使用时使用杜邦线与芯航线开发板的GPIO 0中相应引脚相连,具体连接位置,可以参照我们提供的示例连接方法;其每个引脚的功能如下图所示:
6 @& v- y8 O3 \  Q% z' A
- D: a8 T9 b/ [+ W1 r# O4 v$ R& `
P2为VCC5V的连通短接点,如果使用P1上的供电引脚为模块供电,则需要将P2短接;
P3为GND的连通短接点,如果使用P1上的GND引脚为GND连接到开发板,则需要将P3短接;
P4为扩展供电引脚,由于芯航线核心板本身为高速数字电路,因此电源噪声相对较高,在一些需要精密测量的应用中,往往使用专用的独立供电电路为模块供电,因此可以直接将外部供电使用杜邦线接到P4上,其中P4靠近P2的针接VCC,P4靠近P3的针接GND,P3需要保持短接状态,P2则需要断开。
注意,无论何时,请不要短接P4,否则会烧毁开发板。
- F" u$ r; m3 }. Q7 z+ K; Z/ ]8 l
2、针对芯航线FPGA学习板套件的专用插接方式:
针对购买我们开发板的用户,我们直接焊接的卧式排针,可以直接插接到我们芯航线FPGA学习套件的Camera接口上使用,插接到Camera接口时,需要单独供电,供电接口从P4接口通过杜邦线与开发板的供电输出引脚相连。如下图所示:
4 c* u% x, x, u. D
5 E0 Q, k" i' R; A
& W8 `  ^$ ?- }& S
使用此种插接方式时,对应引脚分配如下表所示:

% u' j# R4 R) Q! {; O2 I6 H. n: P
) z$ N1 x9 r9 ?  Y0 r& ]4 R
附录2ADDA V1.1模块原理图
- e% e( H7 n( S+ P7 v7 ~

, t3 ~% @, n1 i& Q0 I+ C

7 i+ K; ~8 S7 a  S/ ^- l

2 U6 A. m4 b/ g  R) T' X

& U) p: l5 l- o5 Y4 J$ N' L: C
小梅哥
芯航线电子工作室( I+ U0 p; W! T( P0 @. ?. d8 G
游客,如果您要查看本帖隐藏内容请回复
! f' G0 R$ _9 A
0 r7 Z% C1 p0 s2 J. g9 r9 q
& x  M1 k1 y0 h% D/ ^) f" {

8 I  F( O& Z0 s) n# i; p. D, }* k
! C3 f/ r7 V/ x2 h  _# f) {
6 z- h/ N: }& T3 z

; S7 g: c% h- A% n) r

; L- _/ g. ?- E. _
  g$ l1 O7 D6 a- |. \
; d3 c- h; o, a6 u9 x$ R& b

: b6 C, F* X) s+ t! w& j2 h

3 k' O& v4 [- p; h8 e; P" K% Z4 h% H5 _  J* a7 v& a" @4 l
) K$ b" V, m) z" O0 y

, |7 J% A7 X0 n: f
# X( x/ u' m8 D* E: y: I$ @

1 }. U7 q3 }9 P; l5 a7 ?) u* d. h2 w' R0 X/ h. z+ B% e
. T$ _/ Q% ?" ~' X* J% D

1 p9 Q* O; C0 E* b4 |5 _3 c3 `: {+ W

. l* ~, J0 c" z  k9 p8 X4 L
7 _4 K) k# ?) y5 e
2 o" u& N0 U$ H2 j& U+ s. M% B0 {
3 Y1 h. w5 j/ B7 R2 w' \$ V
# ], [2 C9 z. s1 F: n

, {5 W* t0 }6 i  ]: m8 G

, v) P3 {/ m6 D; n8 \

' @# n$ i2 Q. \

6 s1 ]: r+ {" U; s( |- h7 @0 v1 ~3 s. Q$ d+ T8 H! D% n  d

0 @& Z% a. K+ G. Z

2 ]& n5 b  @9 B$ }3 t+ b7 C
# b  U! E" L" X. q
* |+ j( N0 H, _# {
% S8 }, \: `1 W

9 \8 B# o' g/ W4 b- _

- d: H, k; }5 X6 Y

该用户从未签到

2#
发表于 2019-4-1 16:38 | 只看该作者
发帖是心得 回帖是美德

该用户从未签到

3#
发表于 2021-9-28 13:48 | 只看该作者
学习学习学习1 |0 j2 Y6 f5 k9 v' j' c
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-8 21:58 , Processed in 0.187500 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表