TLC5620型b

AI summary
TLC5620型DAC驱动设计涉及数模转换器的基本原理和实现,包括设计背景、原理、实现步骤及仿真测试。设计使用TLC5620芯片,支持4通道8位电压输出,采用串行接口传输数据,并通过时序控制实现输出电压的同步更新。设计分析包括时序参数和线性序列表,仿真测试验证了不同命令码下的输出电压计算。
Last edited time
Sep 24, 2024 06:59 AM
Last edited by
Tags
Serial Communication
Communication Protocols
Data Transmission Methods
Digital Signal Conversion
DAC Control Mechanisms
Voltage Output Systems

一:设计背景

  1. DAC(Digital-Analog Converters):即数模转换器。
  1. 设计领域(航天航空/军工/数字信号处理等…)
  1. 组成(D/A转换器基本由4个部分组成:即权电阻网络、运算放大器、基准电源和模拟开关)
  1. DAC是一种将二进制数字量形式的离散信号转换成以参考电压为基准的模拟量的转换器。

二:设计原理

  1. 设计时采用ZX-2板卡上的DAC芯片TLC5620。
    1. notion image
  1. 通过TLC5620芯片手册可知:
      • 4通道8位电压输出型数模转换器
      • TLC5620接收串行接口控制器发送过来的11位数据(MSB优先:
        • A1A0~RNG~D7~D0)
          A1A0:通道选择位(00:A通道 01:B通道 10:C通道 11:D通道)
          notion image
          RNG:电压增益位(0:1倍增益(输出电压范围在0~Vref(2.5V)之间)
          1:2倍增益(输出电压范围在0~2*Vref(5V)之间))。
          D7~D0:8位数据位(输入数字数据)。
      • TLC5620内部结构(采用双缓冲结构)
        • notion image
      • 首先通过三线制串行接口总线给所有的DAC传输需要更新的数据,然后通过控制LDAC信号将所有的DAC的电压值同步更新在对应输出通道上。
      • TLC5620端口描述
        • notion image
      • 串行接口时序
        • notion image
          对于数据传输:共11位(A1A0 RNG D7~D0),按照MSB~LSB进行串行传输。
          当LOAD为高时,在每一个CLK的下降沿,会将数据移入到DAC的寄存器中;11位数据会持续11个串行时钟CLK,当所有的数据移入完成时,LOAD拉低,会将数据从串行输入寄存器中转入到选中的DAC中。
          当LDAC为高时,输出的电压数据不会立刻更新在对应的DAC通道上;当LDAC为低时,将所有的DAC的电压值同步更新在对应输出通道上。
      • 细节描述部分
        • notion image
      • 时序参数表
        • notion image

三:设计实现

TLC5620芯片手册中输入信号在驱动时为输出,输出信号在驱动时为输入。
在设计时需要驱动端口为CLK、DATA、LOAD、LDAC,在手册中均为输入,那么驱动时均为输出。
  1. 设计架构
    1. notion image
  1. 设计分析及实现
    1. 时序参数可以参考上述时序参数表。
      CLK(max)=1MHZ T=1000ns
      在本设计中采用时钟周期1200ns(满足CLK<1MHZ),半周期600ns(方便节拍计数:30)。
      采用线性序列表实现:
      notion image
      由于器件在时钟下降沿读取数据,所以驱动时需要在上升沿丢出数据(保证读取数据时刚好在时钟的中心位置),满足时序要求。
      线性序列表:LSM
      节拍
      LSM_1S
      LSM_2S
      说明
      0
      (sys_rst_n==0):cnt=0
      (sys_rst_n==0):clk=0,data=0,load=1,ldac=1
      初始值
      10
      cnt=cnt+1
      clk=1,data=cmd_code[10]
      MSB:A1
      40
      cnt=cnt+1
      clk=0
      70
      cnt=cnt+1
      clk=1,data=cmd_code[9]
      A0
      100
      cnt=cnt+1
      clk=0
      130
      cnt=cnt+1
      clk=1,data=cmd_code[8]
      RNG
      160
      cnt=cnt+1
      clk=0
      190
      cnt=cnt+1
      clk=1,data=cmd_code[7]
      D7
      220
      cnt=cnt+1
      clk=0
      250
      cnt=cnt+1
      clk=1,data=cmd_code[6]
      D6
      280
      cnt=cnt+1
      clk=0
      310
      cnt=cnt+1
      clk=1,data=cmd_code[5]
      D5
      340
      cnt=cnt+1
      clk=0
      370
      cnt=cnt+1
      clk=1,data=cmd_code[4]
      D4
      400
      cnt=cnt+1
      clk=0
      430
      cnt=cnt+1
      clk=1,data=cmd_code[3]
      D3
      460
      cnt=cnt+1
      clk=0
      490
      cnt=cnt+1
      clk=1,data=cmd_code[2]
      D2
      520
      cnt=cnt+1
      clk=0
      550
      cnt=cnt+1
      clk=1,data=cmd_code[1]
      D1
      580
      cnt=cnt+1
      clk=0
      610
      cnt=cnt+1
      clk=1,data=cmd_code[0]
      LSB:D0
      640
      cnt=cnt+1
      clk=0
      11位数据完成
      670
      cnt=cnt+1
      load=0
      在CLK下降沿后LOAD拉低之间保持最少50ns(600ns)
      700
      cnt=cnt+1
      load=1
      LOAD拉低持续时间最少250ns(600ns)
      710
      cnt=cnt+1
      ldac=0
      LOAD拉高到LDAC拉低最少0ns(200ns)
      740
      cnt=cnt+1
      ldac=1
      LDACD拉低持续时间最少250ns(600ns)
  1. 仿真测试
    1. notion image
    2. 假设在测试中给定的命令码:cmd_code=11’b01_0_1010_0101
      1. A1A0=2’b01(所选通道B通道)
        RNG=1’b0(电压增益:1倍)
        CODE=8’b1010_0101
        VO(DACB)=Vref*CODE/256(1+RNG)=2.5V*165/256(1+0)=2.5V*165/256~= 1.61V
    3. 假设在测试中给定的命令码:cmd_code=11’b11_1_1111_1111
      1. A1A0=2’b11(所选通道D通道)
        RNG=1’b1(电压增益:2倍)
        CODE=8’b1111_1111
        VO(DACB)=Vref*CODE/256(1+RNG)=2.5V*255/256(1+1)=2.5V*255/256*2~= 4.98V
    4. 假设在测试中给定的命令码:cmd_code=11’b11_1_1010_0101
      1. A1A0=2’b11(所选通道D通道)
        RNG=1’b1(电压增益:2倍)
        CODE=8’b1010_0101
        VO(DACB)=Vref*CODE/256(1+RNG)=2.5V*165/256(1+1)=2.5V*165/256*2~= 3.22

Datasheet

 
Loading...