I'm trying to interface an Arduino with an eMMC chip to bit-bang it. eMMC uses bidirectional lines, and one of them (CMD) is first used in open-drain mode (for identifying devices on the bus) and then in push-pull mode.
I've inherited a circuit supposed to do that, but even after a few modifications it doesn't seem to work. I got what looked like responses to my commands but they didn't make sense / failed CRC (and since I added a few bypass caps I don't get anything). I think it's because it uses a TXB0108, and the datasheet says it doesn't work in open-drain mode (and I think I understand why).
As I looked for something to replace it I found the LSF0108. I also saw people use chips from the TXS family for pretty much the same application, with pull-ups only on the master side.
I tried to simulate my circuit with ngspice (through Kicad) and SimulIDE, but I can't get something that resembles how the LSF should behave: as a closed switch on LOWs and open if both sides are HIGH (if I understand that correctly). The guide says it's basically two FETS with connected gates, the top one connected to VrefA and VrefB and the bottom one to input/output pins. But I can't find a Spice model, I can't reproduce it (maybe because I don't have the FETs' properties or the real circuit is more complex), and I really don't understand how it's supposed to work.
So, how does the LSF work and how can I simulate it? (A bit of warning: I just spent two weeks reading about transistors and still find them confusing.)
Also, am I making the right choice with this component instead of a TXS? Are they both suitable for my circuit? I'd like to make sure I order the right components, the shipping costs being higher than the parts themselves...
Here's a simplified schematic if it helps (don't mind the BJT, it's for another question).
Answer
The LSF drivers SEEM the most flexible.
These SEEM to be what you want BUT DO satisfy yourself of this. Cost of devices from all 3 families are very similar.
You do need to comply with their pullup requirements - too low a pullup value and the weak drive outputs cannot change state.
The TXB family works only with push-pull devices.
The TXS family works with pushpull or open-drain/pullup systems but is less flexible than the LSF family.
Also consider the level translator discussed here Depending on yourr speed requirememnts it may suit and it may give you more control over functionality. Or not :-).
Also see this and all these may be useful.
Here is an LSF block diagram from fig 2 in the TI Application Report that you cited.
I'll explain a left to right signal transfer and leave you to go from there.
The two FETs are provided to implement a switch that operates when the levels are AT a desired voltage, unaffected by Vgsth = FET gate threshold voltages.
VrefB is > Vrefa - typically at least 1 V higher (spec sheet says).
Example: A-side = Vin.
B-side = Vout.
VrefB pulls up Qh drain & (connected) gate via 200k.
As Qh turns on stabolises when Qhd / Qhg is Vgsgth_Q2 above Qhs = Vrefa.
ie gate voltage is at critical turn on voltage of FET when FET s is at Vrefa.
BUT Qhg is connected to Qlg so Ql also "just" turns on when Qls is at Vrefa.
So Ql is thus biased to turn OFF when input rises to or above Vrefa and to turn on when Vin falls below Vrefa.
SO -
Vin high:
When Vin A side is at Vrefa FET Ql is off and Q1d= B out is disconnected from Vin and so Vout is pulled up by VBPU to 3V3.
Vin low
When Vin is puilled low to ground, Ql is on (as QLs below Vrefa) so Ql is on so Vout is pulled low (to ground) so Vout is low when Vin is low.
The LSF series allows different translation voltages on the B side channels by using different pullup voltages on the B side lines.
No comments:
Post a Comment