IDAC8 is a Digital to Analog conversion based on string of basic cells dividing the current by two repeatedly and optionally sourcing some current into the output pin.
idac1cell takes the following ports:
The circuit uses current mirrors and identical transistors to divide the current by two. See tb_idac1cell.sch and SVG output for sample outputs and the schematic inside the xschem directory.
8 cells of idac1cell are chained together into one IDAC8. Essentially the OE pins correspond to digital inputs and the IOUT
UI[7..0] are the digital inputs for currents of I, I/2, I/4, ...
UA0 is the voltage output for the I/256 current (can be ignored.. only present for chaining or testing).
UA1 is the current output (can hold a ~10K resistor to ground).
UA2 is the voltage input (around 0.7V) corresponding to the high bit current.
Set UI to 0b10000000 and adjust UA0 so that the current through UA1 to the resistor is around 0.1mA. Then you can modify UI and observe the output changing into UA1 according to the 8 bit DAC output.
# | Input | Output | Bidirectional |
---|---|---|---|
0 | bit0 | n/a | n/a |
1 | bit1 | n/a | n/a |
2 | bit2 | n/a | n/a |
3 | bit3 | n/a | n/a |
4 | bit4 | n/a | n/a |
5 | bit5 | n/a | n/a |
6 | bit6 | n/a | n/a |
7 | bit7 | n/a | n/a |
ua | analog | Description |
---|---|---|
0 | 11 | VREF_OUT for current level/256 |
1 | 10 | IOUT - output current |
2 | 6 | VREF_IN for current level |