This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ADS8900B: Interface with FPGA

Part Number: ADS8900B
Other Parts Discussed in Thread: THS4551, OPA2625, ADS127L11

I want to digitalize an analog signal with the mentioned ADC. Then feed the digital data to an FPGA (XILINX ARTIX 7 {xc7a35ticsg324-1L}).

That means the ADC will be the slave (i see no other option). What should I feed the ADC as an input ? when I only want its conversion (the output).

How do I avoid saving the conversion result and just drive it directly to one of the outputs ? And at what sclock frequency should I use if my FPGA-clock is 100MHz ?

I just want the simplest ADC out of this device, so how do I do it ? and which pins (not involved in the SPI standard protocol) should I connect with the FPGA ?

  • Hi Youssef,

    The data transfer and communication protocols are outlined in sections 7.5.4 of the datasheet and are very flexible. The framing of the data is outlined in section 7.5.2. 100MHz is a faster clock than the device can support though so you will need to divide this down to something within the limitations of the device.

    Best,

    Zak

  • Ok another question: Do I need to program a specific input (output from FPGA to input ADC's SDI pin) to get the conversion result ? I understood from section 7.5 fig.43 that if my input isnt valid and data_val is 0 the conversion will be transfered to one of the outputs or one of the output registers ? do i need to program the device to store it and then read it from one of the ODRs or is there a way i can get the conversion result straight out ?

    Is 25MHz OK for the sclk.?

    p.s i never used the 100MHz as the sclk, this was the clock rate of the FPGA, i used a 25MHz as the sclk. Thanks for your answer 

  • Hey Youssef,

    If you are just trying to get data out then you don't need to do anything with the SDI pin. As long as the device has not received a read register command then the ODR will populate with the results of the ADC conversion and the device will launch the data bits on the valid SCLK edges  (which edge depends on your SPI config). 

    Best,

    Zak

  • First of all, thanks for your help.

    Another question: does the analog input have to be differential ? is there no way to, i dont know, connect the AINM to gnd or something ?

  • Also I need to know something do I need all the pins to be connected to something, for this simple analog-in-digital-out conversion ? If yes, what should I connect them to ?

    I didn't connect the following pins to anything: DECAP, RVDD, REFIN, REFM, RFEBUFOUT

    P.S sorry if my questions sound a bit amateurish, it's the first time for me doing something like this, and i didn't know where exactly to look in a 77-page datasheet document, so it got me  bit confused what i should do and what I shouldn't.

  • Hey Youssef,

    The input has to be differential for this device. You can see in the input spec table that the common mode voltage is restricted to a very narrow operating range, +/100mV centered around VREF/2. Operating otherwise shouldn't damage the part, but it is very unlikely you will achieve datasheet performance with a single-ended or pseudo-differential input as both of these modes result in large common mode variations.

    RVDD is the analog supply, you absolutely need to connect this or the device won't be powered up. The DECAP pin also needs to have at least 1uF capacitance on it to filter the internal voltage used by the converter, otherwise you will most likely see degraded performance and the internal LDO may not be stable.

    The device has an integrated reference buffer, but it does not have an integrated reference. You need to supply a reference voltage between REFIN and REFM or the device won't have a stable voltage to compare the input voltage to and your output data will be bad. REFBUFOUT should also have a bypass capacitor connected to it.

    Since you're new to ADCs, you might want to check out our TI precision labs series. In these videos we cover all of the basics and even some rather advanced topics about ADC selection, operation, and optimization. It's a great way to start getting more comfortable with converters and will give you some context to more easily search the datasheets! You can find the series here: https://training.ti.com/ti-precision-labs-adcs

    There are also many other precision labs modules. I would highly recommend you go through the ones on op amps as well (especially the input/output limitations and noise sections), as you're almost never going to see precision ADC like ADS8900B without an amplifier in front of it!

    I hope this helps!

    Best,

    Zak

  • Ok, so basically to sum it up, all the pins need to be connected and SDI should be an invalid command in order to read the output from SDO-0 immediately and I should use an op-amp in order to let my analog signal be differential (could you suggest one ?),so I can have a valid 22-bit output from the ADC ?

    Again, thank you for your previous answers Slight smile

  • Hi Youssef,

    Your understanding is correct, though you don't need to send anything over SDI if you just want to get data out. The datasheet recommends THS4551 as an FDA or OPA2625 if you want to build a discrete solution. 

    I understand the datasheets for these device are long but they do contain lots of helpful information and if you are designing with this device I would strongly recommend you familiarize yourself with the documentation. The EVM user's guide is also helpful as this serves as a reference board design with best practices we followed to achieve datasheet specifications.

    Best,

    Zak

  • Ok, so we decided to go with the NEW ADS127L11, which as per description can be used with a single ended input, do you think this will be a good solution ?

    (Btw the analog signal is coming from an amplifier). I read some details from data sheet and if I understood correctly I can also let the SDI be connected to nothing in order to read the data from the data immediately, correct ?