Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add pullups/pulldowns on every pin #67

Closed
whitequark opened this issue Oct 7, 2018 · 8 comments
Closed

Add pullups/pulldowns on every pin #67

whitequark opened this issue Oct 7, 2018 · 8 comments
Labels
firmware hardware revC software
Milestone

Comments

@whitequark
Copy link
Member

@whitequark whitequark commented Oct 7, 2018

I thought about this a lot and pullups are everywhere. Having zero external component pullups is very important.

I suggest using TCA9534 plus a 4- or 8-wide resistor network to get tristate/pullup/pulldown capacity on every pin. It will have to be mounted on the bottom side and complicate routing even more, but it's worth the hassle.

Bikeshed: what should we make the pull value? 10k sounds good to me.

@whitequark whitequark added revC firmware software labels Oct 7, 2018
@hardkrash
Copy link

@hardkrash hardkrash commented Oct 15, 2018

Bikeshed... Red My favorite color.

  • Nice pull values are between 3.3K for strong i2c pull-ups to 100k for weak drive chips.
  • Consider a few channels with individual 0603 resistor or small surface mount 100k trimpot for easy changes.
    • e.g. Bournes TC33X-2-104E in series with 2.2k to 3.3k resistor to limit lower bound.

@whitequark
Copy link
Member Author

@whitequark whitequark commented Oct 15, 2018

Consider a few channels with individual 0603 resistor or small surface mount 100k trimpot for easy changes.

  • e.g. Bournes TC33X-2-104E in series with 2.2k to 3.3k resistor to limit lower bound.

I think I'll go with 5k or 10k for revC. I think further revs might use a current source instead of a pullup so you can use a current mirror to set their strength, but I'll need to find a suitable IC and/or make a larger board. I think revC board just doesn't have enough space for configurable pulls.

I think channels not being all equal is a rather bad idea, I value consistency a lot. If they get configurable they should all be.

@hardkrash
Copy link

@hardkrash hardkrash commented Oct 15, 2018

i thought about a DAC + current mirror, but didn't think of how to overcome compliance voltages with single supply 5V, unless this is not a concern with pulls.

It appears that digital-pots are not too expensive these days. Something like a MCP4241 might work for less than $0.76 @ 5k qty with 8x per board, so $6.08 per board...

@whitequark
Copy link
Member Author

@whitequark whitequark commented Oct 15, 2018

Yes, but board space and I2C address space is more expensive.

@hardkrash
Copy link

@hardkrash hardkrash commented Oct 15, 2018

Yea board space is always a problem. I was not necessarily saying the digi-pots for rev C.
An add-on daughter card to have the digital-pots that mimics cordwood type interconnects using longer tails on the interconnects. Any spare pins on the FPGA? It looked full on the schematic.

It the options are 5k or 10k, a user can always add a resistor externally if need be.

@whitequark
Copy link
Member Author

@whitequark whitequark commented Oct 15, 2018

Any spare pins on the FPGA? It looked full on the schematic.

Not on this one, but UP5K can't support revC anyway, so we're switching to HX8K.

An add-on daughter card to have the digital-pots that mimics cordwood type interconnects using longer tails on the interconnects.

Not a bad idea! I should add some sort of header for I2C so you can hook up other stuff to the bus.

@whitequark
Copy link
Member Author

@whitequark whitequark commented Nov 22, 2018

Mostly done in master, still needs level shifters for the TCAs.

@marcan
Copy link
Member

@marcan marcan commented Nov 25, 2018

Done. What I ended up doing is adding 1.27mm female pin headers around the resistor network for the pull-ups. The user can then opt to desolder the resistor network and plug in their own resistors (discretes, daughtercard, or whatever).

@marcan marcan closed this as completed Nov 25, 2018
@whitequark whitequark added the hardware label Apr 16, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
firmware hardware revC software
Development

No branches or pull requests

4 participants