Discussion with @Ted Yapo and @jaromir.sukuba over at one of my project's logs wound 'round to the concept of level-shifting for various CMOS voltage-supplies and TTL... and it got me thinking.
The basic gist of that conversation was:
3.3V CMOS outputs can typically drive TTL inputs, but cannot be relied on to drive 5V CMOS inputs. Similarly, it's not reliable to feed a 5V TTL output into a 5V CMOS input.
Thus, there's the 74xCT series (ACT, HCT, etc.).
Basically, if you want to interface a TTL output signal to a 5V CMOS input, you should use the HCT or ACT series, rather than the HC or AC series, at that juncture in the circuit.
And, as I understand, that same series can be used to interface a 3.3V CMOS output to a 5V CMOS input.
There should be plenty of info about this 'round the web, and surely more reliably-documented than anything I could come up with. Look for "level-shifting" and check out the datasheets for these series.
------------
This "page" is mostly about hacks. These concepts should *NOT* be used in products, without *carefully* looking into the details that I won't be going into, here, to any extent except to throw out some ideas/experiences... for HACKS-SAKE.
-----
So, here are some of my experiences with the TTL series' running at 3.6V. We're talking e.g. the 7400, 74S00, 74LS00, and 74F00. They're only spec'd down to 4.5V, but I have had some luck using TTL at 3.6V, and you might too.
- For #sdramThing4.5 "Logic Analyzer", as regular-ol' glue-logic, a MUX, a latch, and some boolean-logic. There were definite performance-hits, but it was functional. I eventually "upgraded" to the HC series and, of course, the system was able to run faster. But. "It worked" with lowered-expectations, and a lot of experimentation, 'scoping, etc. with TTL's running at 3.6V.
- For that system, as well as my AVR-based LVDS-LCD controller: https://sites.google.com/site/geekattempts/home-1/drive-an-old-laptop-display-from-an-avr I've used 74LS86's (alternatively 74LS00's, and 74LS32's) running at 3.6V to drive the LVDS signals into old laptop displays. (much slower than normal FPD-Link... 16-128Mbps). Note that LVDS has a differential voltage of something like 0.1-0.3V, and has a 100ohm load at the end, which just happened to work out darn-near perfectly when directly-driven by the LS86's. Again, a lot of experimentation went into this! But the key, here, is that "it worked" *way* out of specs, and surprisingly reliably (two systems running 24/7 for over a year!).
Again, Neither of these experiences should be *expected* to work for you just because I happened to luck-out. But, for hack's sake don't be deterred from giving it a try (and expect it to be flakey!).
---------
Why? Mostly because those were the supplies I had on-hand.
Actually, the LS->LVDS system went through *many* iterations involving better-suited systems before settling on the (simplest) direct-driving via 74LS86. Another attempt used AHC parts, an inverter and a buffer. These are CMOS, rated for 3.3V, quite a bit faster, and most importantly (for LVDS) have much higher drive-strength, thus requiring series-resistors to keep the voltage low-enough.
--------
The recent discussion with Jaromir, as I said, got me thinking a bit about the xC vs xCT series. As I understand, the xCT series is basically identical to the xC series *except* that its inputs are rated for TTL-signals.
So... does that mean that the internal circuitry is identical, exclusive of the inputs?
The thing is: I've access to a bunch of ACT parts, but not so many AC. Similarly for HCT and HC. Others might run into the same when working on a project at a hacker-space, hackathon, convention, etc.
So, why the question...? Because ACT and HCT are *only* specified for 4.5-5.5V, just like TTL. But, if internally they're identical to the AC and HC series, then maybe they *can* run at the AC/HC power-supply-voltage-levels somewhat happily... (Maybe even with very similar timing-specs to the AC/HC series, even at those lower voltages?).
-------
Back in the day one could find internal diagrams of the simpler TTL gates, right down to the transistor/resistor/diode level, but I have no idea how to search for that, and the AC/ACT datasheets I've found, so far, don't have that level of detail.
But stumbled on this, tonight (how'd I never find it before?!):
TI's "Designing With Logic" by Eilhard Haseloff (http://www.ti.com/lit/an/sdya009c/sdya009c.pdf) has a section dedicated to running TTL/CMOS devices out-of-spec power-sources. Here's the TOC:
2 Behavior With the Supply Voltage Reduced
2.1 Behavior With the Supply Voltage Switched Off
2.1.1 Bipolar Circuits
2.1.2 CMOS Circuits
2.2 Behavior With Low Supply Voltages
2.3 Supply Voltages Partially Switched Off
2.4 Changing Powered-Up Subsystems
That whole section 2 is pretty handy, including some input/output diagrams at the transistor-level... But section 2.2 is what I'm looking for:
"TTL devices attain stability with a supply voltage of about 3.5 V, and are fully functional at a typical voltage of 4 V."
That's not to be taken lightly... Read the quote in context, as it explains that the datasheet-specifications, of course, will not be met.
But, if you just need an inverter or some simple glue-logic, maybe even a shift-register, running pretty slow attached to your 3.3V microcontroller, it suggests you could probably bump your uC up to 3.6V and somewhat reliably expect your TTL to function properly, at the logic-level.
Cool Find!
-----------
That said... I have to just guess, here, about e.g. the HCT/ACT series... but my guess is that they're identical to the HC/AC series, *except* at the input-stage, where they're similar, if not identical, to regular ol' TTL... Which... we've been informed are "fully functional" at 4V, and probably even at 3.6V. And, realistically, since the input-stage is so short, with so few BJTs involved, it might just as well run down to lower voltages, maybe even as low as their HC/AC counterparts.
(UPDATE/TODO: I've found a pretty useful document regarding *exactly* this, and written it up somewhere 'round this site... Where is that...? Maybe a log in #Improbable AVR -> 8088 substitution for PC/XT, or #Random Ridiculosities and Experiments?)
-------
oy that was long-winded... I really just meant to throw up some links and add-to it as I come across stuff.
TODO: Read that section more thoroughly... there's a lot of info, detail, and explanations in there.
------------
Oh, I also wanted to throw up another idea (I have NOT done the math, and only *briefly* looked at a few Vih's, etc.):
3.0V CMOS outputs -> 5V CMOS inputs may be a no-go, but most systems running at 3.0V can run at 3.3V, and most systems running at 3.3V can run at 3.6V... And *those* specs may match-up. Maybe run your 3.3V uC at 3.6V, and if you have to interface with a 5V CMOS and don't have an xCT, use your xC at 4.5V as an intermediate-stage... (Maybe throw a diode between 5V and its power-pin?).
-------------
Update 4/16/18:
Long ago, I found a write-up about interfacing TTL -> CMOS, both running at 5V. The general idea is that TTL's Voh is not guaranteed within the CMOS's Vih range. But a simple solution, listed in that official document, was to just add pull-up resistors after the TTL output. Yep, it's within-spec to do-so.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.