Skip to content

Latest commit

 

History

History
104 lines (54 loc) · 4.8 KB

0210-2024-08-09.md

File metadata and controls

104 lines (54 loc) · 4.8 KB

9 Aug 2024

Previous journal: Next journal:
0209-2024-07-23.md 0211-2024-08-09.md

Current steering DAC experiments

I spent some time recently in the maybe branch trying to figure out a better current-steering DAC that actually uses differential (I think?) steering, i.e. pairs of FETs per bit, to 'steer' equal current in opposing directions.

I did 15 commits before pausing again prior to today.

Notable experiments include...

3rd of 3 tests of DC sweep of gate voltage, plus comparing different transistor sizing/ratios:

03-nfet-sweep3

Kind of a recreation of bdac.sch as described in 0209 (binary-weighted switched current DAC), except: (a) each bit is tested in turn via SPICE instead of testing the full 0..255 range; and (b) focus on measuring/balancing actual path current without conversion to voltage:

04-csdac1

Extending 04 (above) to test out full range. NOTE: Extra smoothing cap (hanging off dacout; not in repo) added in this screenshot, to make the lumpy ramp clearer:

05-csdac2

  • Green: Mprog width is 1.0um.
  • Red: Mprog width is 0.9um.

Adjusting 05 (above) to try and get a better curve (tested with more sweeps):

05a-adjusted

Trying some more variations in sweeps. Looking pretty chunky:

05b-moresweep

Screenshot below is altered from actual repo, but shows a sort of workable curve. Big pull-down transistors though:

06a-sorta

Trying a W2W CDAC. Sort of works, but pretty ugly:

09-w2w

Not much better when using a pull-down resistor instead of FET; slightly more linear but terribly lumpy.

First true (?) current-steering DAC, i.e. differential. Great linearity, but only because of binary clusters of equally-sized transistors. NOTE: Image below is smoothed with caps (not present in repo):

10-steer

Evolution of 10 (above): Attempt to use sensibly-sized transistors. Not too bad. Some bumps still, but pretty good. Current consumption is ~500uA. NOTE: I separately measured the pull-up resistor loads later; max. was about 435uA on either (needing 4.35um width?), meaning Vbias transistor pair must be drawing ~65uA. Could work with 1k resistors too, but this reduces the voltage swing from ~1.1Vpp to ~0.45Vpp.

11-ratioed

NOTE: Resistors could also be replaced with NFETs:

11-ratioed with NFETs

...or PFETs:

11-ratioed with PFETs

What about this (gamma correction maybe?):

11-ratioed diode-connected

Next steps

  • Rote exercise: Reassemble tt-vga-fun using simple RDACs but new digital control block (approx. at commit 12bbe7f).
  • Use TT08 3v3 template for future experiments: In case we decide to try 3.3V at some point, we're already in it.
  • Try unary ('thermometer') coding for 3 MSBs. These COULD be driven just from the digital block, rather than having to implement the decoder in the DAC.
  • Would it work to do 3 levels of unary coding? i.e. 2 MSBs for 0-3 big transistors, middle 3 bits for 0-7 medium transistors, bottom 3 bits for 0-7 tiny transistors?

DAC Papers