EEVblog Electronics Community Forum
Electronics => Projects, Designs, and Technical Stuff => Topic started by: stj on April 04, 2019, 11:41:40 am
-
what's the fastest way to do 6bit A-D at TTL levels??
can i manage atleast 20M-samples?
-
A parallel output ADC such as the AD9280?
-
can I ask why you want 6 bit ad TTL levels? that's quite course ... about 0.1V which is not really useful for any analog circuit.
if you're trying to build a crude logic analyzer, your best bet is voltage compactors, not an ADC. if you desperately want an ADC however, fastest ADCs are the flash topology which is available in the low resolutions that you are asking (i.e: 6 bit).
-
i want to convert a digital(supposedly) 5v signal into 6bit digital so i can read the logic state in .1v resolution.
in short, i want to make a logic probe that does not just indicate "high" or "low" but attempts to judge the signal level to detect failing i.c. outputs.
-
AD9200 is only $1 and gets you 10 bits @ 20MSPS.
-
i want to convert a digital(supposedly) 5v signal into 6bit digital so i can read the logic state in .1v resolution.
in short, i want to make a logic probe that does not just indicate "high" or "low" but attempts to judge the signal level to detect failing i.c. outputs.
it all really comes down to how much bandwidth you want and how cheap you want the project to be. as I mentioned before, flash ADCs are the fastest but they come in low resolution and are more expensive, but can have a few GSPS bandwidth.a few MSPS can be done with any generic ADC tbh. I strongly recommend you go on mouser / digikey, search for ADCs and then play around with the filters. you can select by topology, cost, sample rate, resolution, etc to find a good balance. one thing I suggest is to stick with I2C or SPI because if you can't find an existing library, other interfaces are generally more painful to work with.
-
sounds like a good start. thanks.
-
I'd review the math on getting 20Msps across an I2C or SPI bus.
-
i was thinking about a parallel bus for that reason,
i²c is out, SPI i dont know, but it would probably need a pretty large microcontroller.
-
yeah my bad ... I've never needed that high of a sample rate in my projects so SPI and I2C were fine :-DD parallel output would be your best bet in this case.
-
You guys beat me to the post about serial vs. parallel interfacing on high data rate A/D's. I've never had to work with really high data rate converters, but this always seemed to me like the biggest challenge. You're generating 10's or 100's of MB or more, continuously, in real time. That's dedicated discrete hardware at least, or perhaps an FPGA. Then if the data stream is truly continuous you have to dual-port the memory, or multi-bank it, or something. Sounds like a fun challenge but definitely a non-trivial one.
-
i want to convert a digital(supposedly) 5v signal into 6bit digital so i can read the logic state in .1v resolution.
Logic analyzer which can read logic state as voltage is... every modern oscilloscope. Just saying.
-
There are lots of cheap TTL compatible parallel output 8 and 10 bit converters which become 6 bits if you ignore 2 or 4 least significant bits.
-
The LPC4370 is a 204MHz triple core ARM Cortex processor with an M4 and two M0 cores with an 80MHz 12 bit ADC - overkill perhaps but they are only $5.5 (10 off). BGA package only unfortunately. Digikey don't even sell 3.5MSPS 12 bit ADCs for that price!
If you only want one you can buy an LPC-Link 2 development board for 18 Euros from Embedded Artists. They used to sell a Labtool board which plugs onto an LPC-Link 2 board to make a 2 channel 60MSPS digital scope and/or 11 channel 100MSPS logic analyzer. The software is a bit limited but the firmware and software are available so you could save yourself a lot of work if you went this route.
You might want to have a look at this thread which uses the 20MSPS 8 bit ADC1175 for < $2:
https://www.eevblog.com/forum/projects/4-channel-adc-10-mhz-8-bit-design/ (https://www.eevblog.com/forum/projects/4-channel-adc-10-mhz-8-bit-design/)
-
this may be a good time to add that i'm trying to keep it small.
i was thinking of just streaming the adc to a latching buffer, then a 5bit binary>decimal convertor and finally an led bargraph, using the 6th bit to change the led colour to indicate 0-2.5 or 2.5-5v
-
this may be a good time to add that i'm trying to keep it small.
i was thinking of just streaming the adc to a latching buffer, then a 5bit binary>decimal convertor and finally an led bargraph, using the 6th bit to change the led colour to indicate 0-2.5 or 2.5-5v
Are you going to update the bargraph at 20 MHz?
-
this may be a good time to add that i'm trying to keep it small.
i was thinking of just streaming the adc to a latching buffer, then a 5bit binary>decimal convertor and finally an led bargraph, using the 6th bit to change the led colour to indicate 0-2.5 or 2.5-5v
Are you going to update the bargraph at 20 MHz?
Charlieplexed to keep the pincount low....
-
this may be a good time to add that i'm trying to keep it small.
Most of the ADCs seem to be at least 24 pin TSSOPs; the 42MSPS 8 bit ADC08351 is cheap ($1.45 @ 1K) and is available in WQFN-24 but is a 3V part.
i was thinking of just streaming the adc to a latching buffer, then a 5bit binary>decimal convertor and finally an led bargraph, using the 6th bit to change the led colour to indicate 0-2.5 or 2.5-5v
You also need an oscillator and possibly an i/p buffer depending on the source impedance. How about the STM32L412K8? It has 2 ADCs which can run up to 8.88MSPS in 6 bit mode. They can be interleaved to give you 17.76MSPS. It is < $2 which is probably cheaper than the ADC solution as you wouldn't need an oscillator or binary to dec convertor. You would likely need a buffer as the maximum source resistance is 220 ohms at this speed. It is available in a 5mm x 5mm UFQFPN - 32.
It is a 3.3V part only but it would give you a lot of flexibility for handling glitch detection - the ADCs have 3 'analog watchdog' comparators which can generate interrupts when user specified thresholds are crossed. You could for example extend the LED on time when a glitch is detected to improve its visibility (a 50ns LED pulse would be very hard to see without overdriving the LED - but you could use a capacitor to do that easily enough I guess)..
You might also be able to detect oscillation and indicate its frequency on another bargraph. You'd not have much processing time for each sample as you'd only get 4.5 clocks per sample @ 80MHz clock but you could use the DSP instructions to process 4 x 8 bit samples per instruction. I'm not sure if it can be configured to DMA the ADC data to a GPIO port directly to drive the LEDs - that would remove a lot of software overhead. If not you could use a second DMA to transfer the samples from memory to a GPIO.
-
AD9200 is only $1 and gets you 10 bits @ 20MSPS.
Where to buy? I usually ignore Taobao and other Chinese non-authorized sellers.
Digikey has it listed at $8, LCSC at $9, and even ADI official store at $3. The cheapest authorized reseller is Quest, at $2.7@1k pcs, or Chip One Stop Japan (an Arrow company), at $2.8@1 pcs.
It's around $1 on aliexpress and $0.5 on taobao. It probably is a Chinese replacement but I have used over 300pcs from taobao from 3 different sellers and every single one performed to spec over the specified environment and I haven't had any fail after year. I don't care about getting genuine ADI parts, only parts that perform to spec and don't fail. Anyone should be allowed to make a AD9200 and sell it as AD9200 if it adheres to the datasheet specs.
-
to answer some questions,
no mutiplexing, just 30 leds wired direct to the binary>decimal convertor.
update rate of the leds would be the rate the data under the probe changes state - that's why the latch is between the dac and binary>decimal decoder.
now 20MHz is kind of worse case - most signals would be 4MHz or less - i picked 20 because it's kind of the max you would see a 74ALS series being run.
i know they can go higher but it's very rare.
-
now 20MHz is kind of worse case - most signals would be 4MHz or less
But if your output is LED, the best you can possibly see is 20 Hz or so.
-
to answer some questions,
no mutiplexing, just 30 leds wired direct to the binary>decimal convertor.
update rate of the leds would be the rate the data under the probe changes state - that's why the latch is between the dac and binary>decimal decoder.
now 20MHz is kind of worse case - most signals would be 4MHz or less - i picked 20 because it's kind of the max you would see a 74ALS series being run.
i know they can go higher but it's very rare.
So you want to make something like the following but with a higher BW?
https://www.youtube.com/watch?v=ZiIHb6M-sC4 (https://www.youtube.com/watch?v=ZiIHb6M-sC4)
-
now 20MHz is kind of worse case - most signals would be 4MHz or less
But if your output is LED, the best you can possibly see is 20 Hz or so.
i can pause the latch on the buffer to hold the sample - or maybe feed it with a 2-3Hz clock
-
to answer some questions,
no mutiplexing, just 30 leds wired direct to the binary>decimal convertor.
update rate of the leds would be the rate the data under the probe changes state - that's why the latch is between the dac and binary>decimal decoder.
now 20MHz is kind of worse case - most signals would be 4MHz or less - i picked 20 because it's kind of the max you would see a 74ALS series being run.
i know they can go higher but it's very rare.
So you want to make something like the following but with a higher BW?
https://www.youtube.com/watch?v=ZiIHb6M-sC4 (https://www.youtube.com/watch?v=ZiIHb6M-sC4)
no, that's a 2D display, i'm after a single row of 30led's
your on the right track though, imagine a VU meter with a 20MHz+ frontend.
-
to answer some questions,
no mutiplexing, just 30 leds wired direct to the binary>decimal convertor.
update rate of the leds would be the rate the data under the probe changes state - that's why the latch is between the dac and binary>decimal decoder.
now 20MHz is kind of worse case - most signals would be 4MHz or less - i picked 20 because it's kind of the max you would see a 74ALS series being run.
i know they can go higher but it's very rare.
So you want to make something like the following but with a higher BW?
https://www.youtube.com/watch?v=ZiIHb6M-sC4 (https://www.youtube.com/watch?v=ZiIHb6M-sC4)
That is neat. I made exactly the same thing... over 30 years ago. Only mine had a 16 wide * 8 height display.
-
to answer some questions,
no mutiplexing, just 30 leds wired direct to the binary>decimal convertor.
update rate of the leds would be the rate the data under the probe changes state - that's why the latch is between the dac and binary>decimal decoder.
now 20MHz is kind of worse case - most signals would be 4MHz or less - i picked 20 because it's kind of the max you would see a 74ALS series being run.
i know they can go higher but it's very rare.
I don't think this setup is very useful because your eyes are way slower compared to a 20MHz repetition rate. You really need to rethink this.
What if you would combine level and frequency into RGB leds. The number of LEDs on would be a measure for the amplitude and the color a measure for the repetition rate.
-
no, that's a 2D display, i'm after a single row of 30led's. your on the right track though, imagine a VU meter with a 20MHz+ frontend.
I'm imagining that... and wondering why, and what you're going to do with it. Others have noted that your eyes don't have the temporal response to track changes in the 10's of MHz. So why do you need such a high A/D sample rate? Are you trying to display min/max voltages?
So far I'm missing the relationship between a relatively high bandwidth sample rate and a relatively low bandwidth user interface.
-
the high bandwidth is needed to capture the state before it changes,
you dont need to update the leds at that rate because you only need to see the high and low signal levels to evaluate the quality of the signal.
so as i said, the led's can be latched at a few Hz.
-
I think you can get some parallel ADC, such as AD9200 which was recommended above and connect it to the cheap Chinese eval board for CY7C68013A based logic analyzer:
https://www.aliexpress.com/item/EZ-USB-FX2LP-CY7C68013A-USB-logic-analyzer-I2C-serial-and-SPI-core-board-Source-Code-development/32851287266.html (https://www.aliexpress.com/item/EZ-USB-FX2LP-CY7C68013A-USB-logic-analyzer-I2C-serial-and-SPI-core-board-Source-Code-development/32851287266.html)
it can handle 24 MHz sample rate for 8 lines or 12 MHz for 16 lines. And there is ready to use library to work with it even with no need to write program for CY7C68013A controller (this is a fast version of 8051-based architecture microcontroller with a high speed hardware implemented USB).
-
So you want to know the voltage level before the signal starts to transition? Normally, my projects are not that clean and I break out a scope to get a feel for the signal integrity.
Are you planning to use a fixed threshold to trigger the device and just use some fixed precious time as the criteria?
Maybe not the best example of messy signals but here I am playing with an eval board.
https://www.eevblog.com/forum/microcontrollers/typical-speed-of-fpgas/msg1282290/#msg1282290 (https://www.eevblog.com/forum/microcontrollers/typical-speed-of-fpgas/msg1282290/#msg1282290)
-
i have scopes,
and eval boards etc.
i'm looking to make something handheld so i dont have to keep looking down at chips and then looking up to a screen.
here is how it would function, it would grab a sample as fast as possible, purely to avoid sampling mutiple states in one shot,
then it would display the voltage as a simple led bar.
big bar = signal good, small bar = signal bad - probably from a failed chip output or blown internal pullup.
-
My inner Bob Pease is whispering that this should be done in analog, not digital. Maybe a pair of opamps, one each to detect and display the low and high voltages. Getting your 20MHz bandwidth is child's play in the analog domain. Total cost could be a couple dollars. You could still have the bargraph display you described, if that's even the optimal approach... lots of options.
-
maybe,
but i have over 30years of digital experience inc software.
my analog skills go about as far as selecting the right resistor to drive an led, and knowing how to get a clean output from a regulator!!
:-+
-
i have scopes,
and eval boards etc.
i'm looking to make something handheld so i dont have to keep looking down at chips and then looking up to a screen.
here is how it would function, it would grab a sample as fast as possible, purely to avoid sampling mutiple states in one shot,
then it would display the voltage as a simple led bar.
big bar = signal good, small bar = signal bad - probably from a failed chip output or blown internal pullup.
So you want a sampling rate of a few Hz with an acquisition time of 50ns or less to minimize the probability of sampling during a signal transition. You don't need a high speed ADC, just one with a fast(ish) sample and hold - or make your own sample and hold with an analog switch, a capacitor and a jellybean CMOS or FET input opamp.
I'd still suggest using a microcontroller as your solution is useless for signals which have a high or low mark/space ratio such as the write strobe of a RAM chip which might only be active for very short periods (a few hundred nano seconds perhaps) with relatively long off periods. The probability of sampling it in the active state woud be very low for sampling rates of a few Hz.
Using the $2 STM32L412 would be cheaper and simpler (H/Wwise). You would only need to use one of the ADCs running in 6 bit mode, configured for a sampling time of 2.5 clocks or 31.25ns. You could use your method by running the convertor a few times per second and calculate and output the bargraph driver signals on GPIOs but you could do much better by running both ADCs interleaved at 17.8MSPS and use the processing power to examine the signal. The capture and processing doesn't have to be continuous so you could capture almost 40,000 samples into a RAM buffer and then process it at leisure.
As a minimum you'd look for short pulses to ensure they get displayed. You could also look for overshoots/undershoots/oscillations in signal transitions and perhaps light additional LEDs to flag that it is worth further examination with a proper scope. Another possibility is to look for other anomolies such as runt pulses or glitches, and/or detecting a tri-stated signal level and displaying its voltage - even if it spends only short periods in the tri-state condition.
When updating the bar graph you could ramp up, or down, the level at a speed proportional to the signal transistion time (obviously within the limits of the 17.8MSPS sampling rate). This could be helpful to detect overloaded signal lines or weak drivers.
Use two STM32L412s and interleave all 4 ADCs to get over 30MSPS for better signal timing resolution (but still subject to each ADC's 31.25ns minimum acquisition time).
Use the built-in USB peripheral to connect to a PC for uploading data or configuring thresholds, timings etc. relevant to the circuit being tested.
Whatever ADC you use you will almost certainly need to buffer the signal as high speed ADCs require low impedance drivers for accurate results. Without a buffer it could cause glitches to the signal as the ADC switches its sampling capacitor. The buffer would be very simple - just an opamp configured as a voltage follower. It would have to be reasonably fast to handle the signal frequency of course - say 50MHz BW or more, so not a cheapie LM324!
-
the high bandwidth is needed to capture the state before it changes, you dont need to update the leds at that rate because you only need to see the high and low signal levels to evaluate the quality of the signal.
Despite your bargraph comments, it sounds like what you really care about is insuring that a logic low is "below a certain threshold voltage" and a logic high is "above a certain threshold voltage". That could be done with two discrete LED's.
For now, I'm sticking with my analog recommendation. Two analog comparators could do this in a single IC and deliver 20MHz without even breathing hard. No "missed levels because they happened between samples", either. And if you really want a digital output for some downstream purpose, the comparators can drive into digital circuitry... there are even comparators with open-collector/open-drain outputs for exactly that purpose. You can even have controllable hysteresis to reduce your noise susceptibility, basically for free.
This project reminds me of the guy who wanted to double the amplitude of an analog signal, and his plan was a full system of antialiasing filter, A/D, MCU, D/A, and output filter. That way the MCU firmware could multiply the samples by 2. >:D
-
I'd still suggest using a microcontroller as your solution is useless for signals which have a high or low mark/space ratio such as the write strobe of a RAM chip which might only be active for very short periods (a few hundred nano seconds perhaps) with relatively long off periods. The probability of sampling it in the active state woud be very low for sampling rates of a few Hz.
and there is the problem,
it's going to be checking clock,address,data and chip-select lines on old computers.
-
So you want min/max peak detector connected to LM3914 LED bar graph..
-
So you want min/max peak detector connected to LM3914 LED bar graph..
This is what I keep thinking but does he really want to see the under and overshoot? I think I just need to wait and see what he comes up with and how it is used.
-
So you want min/max peak detector connected to LM3914 LED bar graph..
This is what I keep thinking but does he really want to see the under and overshoot? I think I just need to wait and see what he comes up with and how it is used.
I agree.. I kinda understand what he wants to measure. It's just I simply use scope for that..