Minimig Video d/a resistor ladder

From OpenCircuits
Revision as of 22:19, 22 August 2007 by Freqmax (talk | contribs) (fixup)
Jump to navigation Jump to search

Model:

D/A resistor ladder electrical model


Equations:

Defining constants:
U_vga = 0.7 V
R_vga = 75 Ω
U_vcc = 3.3 V
Total resistance = 1/(1/4000+1/2000+1/1000+1/560)+75 = 357.8282.. Ω
Common current through resistor ladder plus vga impedance (75Ω) = 3.3V / 357.8282.. = 0.009222 A
Current * VGA impedance = 0.6917 V (specification says max 0.7V p-p)
Output voltage = 75 * (3.3/(1/(1/4000+1/2000+1/1000+1/560)+75)) = 0.6917 V
Simplification:
U = (75*3.3)/(1/(1/4000+1/2000+1/1000+1/560)+75) = 0.6917V
Base resistor value = (1/8+1/4+1/2+1/1)/(1/((R_vga*U_vcc)/U_vga-R_vga)) = 522.3214Ω
Deviation summary:
0523/523 = 1.0000
1050/523 = 2.0076
2100/523 = 4.0153
4220/523 = 8.0688
As can be seen no more than 1% is useful with digikey resistors. Resistor combinations will add tolerances and use valuable pcb space.
Maximum output voltage if VGA impedance is 75Ω is: (75*3.3)/(1/(1/4220+1/2100+1/1050+1/523)+75) = 0.6981 V

Useful links:

Wikipedia: Resistor
Wikipedia: Preferred number
Digikey: Resistors

Value vs output amplitude originaly


The original 4000Ω 2000Ω 1000Ω 560Ω resistors, Gives this curve for the desired vs actual amplitude:
Note the dent in the middle of the curve!

Value Amplitude [V]
0 0.000002
1 0.060736
2 0.119277
3 0.175740
4 0.230233
5 0.282857
6 0.333708
7 0.382873
8 0.389764
9 0.437103
10 0.482927
11 0.527307
12 0.570310
13 0.612000
14 0.652436
15 0.691673

Value vs output amplitude modified


The modification with 4220Ω 2100Ω 1050Ω 523Ω resistors, Gives this curve for the desired vs actual amplitude:

Value Amplitude [V]
0 0.000002
1 0.057625
2 0.113793
3 0.167545
4 0.220000
5 0.270256
6 0.319355
7 0.366446
8 0.413880
9 0.458053
10 0.501297
11 0.542855
12 0.583575
13 0.622742
14 0.661153
15 0.698131

Gnuplot command:

gnuplot> plot "dac_sim.txt"  using ($1):($2) smooth csplines


Simulation program (perl):

#!/usr/bin/perl
#
# Created:  2007-08-23 05:25.32
# Purpose:  Minimig Video D/A resistor ladder simulation
#-----------------------------------------------------------------------------
$map[$n++]=0;
$map[$n++]=8;
$map[$n++]=4;
$map[$n++]=12;
$map[$n++]=2;
$map[$n++]=10;
$map[$n++]=6;
$map[$n++]=14;
$map[$n++]=1;
$map[$n++]=9;
$map[$n++]=5;
$map[$n++]=13;
$map[$n++]=3;
$map[$n++]=11;
$map[$n++]=7;
$map[$n++]=15;

for($v=0; $v<=15; $v++) {
  $d=$map[$v];

  $d3 = ($d & 8)?1:0;
  $d2 = ($d & 4)?1:0;
  $d1 = ($d & 2)?1:0;
  $d0 = ($d & 1)?1:0;

  if(  !($d3==0 && $d2==0 && $d1==0 && $d0==0)   ) {
    $r_dac=1/( 
#      ${d3}/4000+ ${d2}/2000+ ${d1}/1000+ ${d0}/560
      ${d3}/4220+ ${d2}/2100+ ${d1}/1050+ ${d0}/523
      );
    } else { $r_dac=100*1000*1000; }

  $u = (75*3.3)/($r_dac+75);

  printf("%d %f\n",$v,$u);
  }

#-----------------------------------------------------------------------------