SD ADC v3 with a Second Order SD modulator based on TSP #32 blog.
Below a continual measurement with a stable run for ~3minutes, 1measurement in aprox 2.8secs.
####
PS: this particular kind of SD ADC (see above Lattice whitepaper) works such the 1bit bitstream from the Modulator (an integrator, comparator and a single FFlop) is accumulated in ACC (ie 19bit) while it adds the actual level of the bitstream to ACC on each modulator's clock (ie. 1.5MHz). To count 19bits takes 2^19/1.5M=0.35secs therefore.
After that time the 19bit ADCsize data are passed into an LPF (and the ACC is reset to zero), in case of LPF=3 it takes 2^3 passes, thus a single measurement takes 0.35*8=2.8secs.
There is an option to have ACC>ADCsize, ie 22bit ACC and 19bit ADCsize, then it takes 2^(22-19) times longer to get a measurement (the larger ACC does averaging).
####
The UPduino with the Simple SD as above (19bits ADCsize, ACC=19, LPF=3, sampling clock=1.5MHz ).
Added the inverted signal from the 1bit FF sampler (Q and /Q outputs, 3.3V logic) fed into the second integrator.
SD reference voltage is the Vcc=3.3V of the FPGA.
All put on the solderless breadboard wired with jumping wires, voltages stabilized by 1117 and 7905.
Below is a 3minutes long measurement of an TL431 done under stable conditions (I hold my breath

), you may see how the last digits flips.
The data are the raw data coming directly from the SDADC, multiplied by -3.3V/(2^19). Not calibrated.
When the SD ADC data are available an interrupt is asserted and the main loop reads the data.
Forth running in the FPGA:
0 variable sdflag
: isdadc ( -- ) \ ISR: INT_SD interrupt
$bF intflag! $FF intflag! \ ISR: clear the INT_SD flag
1 sdflag ! \ ISR: set SDADC data ready flag
;
' isdadc 1 rshift $3BFC ! \ place isdadc ISR at INT_6 vector location
: sdadc 700 io@ 701 io@ ; \ read SDADC raw data
: sdf sdadc d>f ; \ convert to float
: sdvf f# 6.2942504882e-6 sdf f* ; \ make Volts, mult by 3.3/2^ADCsize
: testx BEGIN \ wait on a measurement, print result in Volts
sdflag @ 0<> \ is the SDADC flag set? Loop
UNTIL
sdvf f. cr \ print Volts
0 sdflag ! \ reset SDADC flag
;
: test 0 do testx loop ; \ do XXXX measurements
$40 intmask! \ enable isdadc interrupt
eint \ global int enable
7 set-precision \ we will print 7 digits
30000 test \ do make 30000 measurements
The STDEV is 11.5uV of that measurement.