Closed evanrichter closed 5 years ago
The FPGA allows us to remap pins, so you can connect to unknown test points on a target device, probe it to discover that there is, for example, a UART on a couple of pins, and then remap those pins onto a UART peripheral on the LPC4330 (on Azalea) without having to rewire the target. It will also permit implementation of high speed serial or parallel interfaces that would be difficult or impossible to implement on the LPC4330 alone.
In addition to the FPGA, there are a bunch of other advanced features enabled by analog multiplexers that can connect a pin to a variety of pull-ups, pull-downs, ADCs, DACs, or comparators in addition to connecting to the FPGA. This gives us a tremendous range of options for measurement, probing, or even implementation of analog interfaces.
Bi-directional level shifters without direction pins such as the GTL2000 can be quite useful in certain fixed implementations, but they tend to misbehave if rewired to arbitrary targets. Instead we use a separate level shifter with a direction pin on each pin of Foxglove's bank A, and we provide direct connection to the FPGA through bank B.
thanks for the detailed update! I think I will up my kicad game and implement a GTL2000 based neighbor with header pins on each end of the IC, for manual rewiring to the greatfet depending on the user's need for spi, uart, sgpio, etc. Shouldn't be too complicated :)
Bi-directional level shifters without direction pins ... tend to misbehave if rewired to arbitrary targets.
What does this mean exactly? Are you talking about a target that operates at multiple logic levels? I agree the GTL2000 would not support that
The level shifters on Foxglove (74LVCH1T45GW,125) have a pin that controls direction. We can drive that pin high or low depending on which side of the shifter we want to be the input and which side we want to be the output. We use a separate level shifter for each external pin, so we can change their directions independent of each another.
The GTL2000 does not give you any way to control which side is the input and which is the output. It has some method of determining which way to translate dynamically. I skimmed the data sheet but still don't understand this very well.
Depending on the application, the GTL2000 requires pull-up resistors on one or both sides. It can drive any pin low, but in some cases it can't drive pins high. This makes it incompatible with signals that have pull-down resistors. We had the very same issue with an I/O expander on Jasmine recently and had to find a new part capable of driving its outputs high or low.
(don't take this as criticisms, I'm pretty new to hardware design, and I'm really looking forward to the development of this neighbor!)
what are your plans for the fpga (what makes foxglove advanced beyond a level shifter)? what would it do beyond something simple like a couple of these bi-directional translators?