add support for DRP on XADC
authorbunnie <bunnie@kosagi.com>
Fri, 3 Jan 2020 16:25:09 +0000 (00:25 +0800)
committerbunnie <bunnie@kosagi.com>
Fri, 3 Jan 2020 16:25:09 +0000 (00:25 +0800)
commit56ccaeebf0ee153b68fb717dcb94d45ce35274ae
treeb0382c6e31c30fb03a3e638dce15997a6dbc14d2
parent219bb7f294c14dde5072ac3282cc33943931a64c
add support for DRP on XADC

The design is backward-compatible in functionality for users
who don't want to use DRP. That is, on power on, the XADC will
scan the supply and temperature and store them in CSRs.

If drp_enable is set, the scanning stops, and the XADC is now
controlled by the DRP bus.

Wher drp_enable is reset, the XADC may return to an auto-sample
mode, but only if the internal registers are configured to do this.
If you return to drp_enable without, for example, turning on
the continuous sequence and setting which channels to check,
the results will be unpredictable (mostly either it'll scan just
once and stop, or it'll not scan all the channels, depending on
the register settings).

At this point, the backward compatibility was confirmed in testing,
the DRP API is still a work in progress as the application this
is being developed for needs to support fun stuff like real time
sampling of signals to a buffer.

Down the road, this block may have to be modified again to support an
output FIFO, so we're not railing the CPU trying to do real time
sampling of ADC data. This will probably be added as a True/False flag
of some sort in the parameter list, because the FIFO will be expensive
as far as BRAM goes to implement and applications that don't need the
FIFO buffer can probably use that BRAM for better things.
litex/soc/cores/xadc.py