SMD Circuit Design Question

I’ve mulling about an really off the wall idea, and I’m wondering if there is a standard way to do this.

I want a “cape” which can be used to connect a BeagleBoneBlack with another dev board in a manner to maximize flexibility.

IE P8 pins 1 to 45 will connect to 45 pins on the other board, with the assumption that
P8-1 and P8-2 will both connect to GROUND on the other board

3 to 45 will be used in GPIO mode on both boards and both boards are using the same voltage levels.

However, since they are 2 dev boards, it’s always possible that the hobbyist will want to use the pins differently. For example, he might want to attach an LCD to the Bone, using pins P8 28-45 in LCD mode. And he doesn’t want those signals being sent to the other dev board.

Using larger parts, one could use dip switches or jumpers inline with the connection. But that adds bulky parts to the board.

What I’m thinking is that I could use a very low value SMD resistor for each line - with the expectation that if the hobbyist wishes to disconnect a line they will remove the SMD resistor. It’s not as flexible as a jumper - but it allows for the end user relatively easily disable some links if they need to.

Similarly, both boards provide some voltage rails for powering attached chips. For example, P9-3 and P9-4 provides 3V Those power rails should not connect from one board to the other in expected usage. However, it’s possible that the end user would prefer to use the 3V rails provided by the bone for everything. As such, would it be appropriate to place 2 SMD diodes on that line in opposition, with the expectation that the end user would remove one of those diodes and replace it with a small resistor if they want to use it?

IE: P9-3 ---- 3V SMD Diode—><— 3V SMD Diode—Other Boards 3v Rail

The 2 diodes would block each other in “normal” operation, giving the hacker the flexibility to switch usage if they want.

I’m assuming in my ignorance I am missing some more obvious solution/type of part to use to configure this.

Resistors are fine. But, if you don’t take them off correctly, you may never get them back on, assuming that is a desired feature.

Diodes have voltage drops. Depending on what you use, the 3.3V would be come 2.7V.

Also, you need to make sure none of the lines from the other boardd are powered up before the BBB processor is powered up.

Gerald

Lattice use to produce, and I believe it is still available, a product called ispGDX, ispGDX2 allows one to reprogram I/O’s any to any, as well as adjust input/output threshholds. Something like that would be great for what your describing.

Jonathan

I agree!

Gerald

Thanks, I’ll play around with that and see what I can come up with.

zero ohm SMD resistors are available for this very purpose and often used.

A small CPLD might be even better idea. Not only can allows for flexible pin assignment, but also can provide glue logic. Xilinx’s XC9500XL are 5V tolerant, but unfortunately the VccIO can go only up to 3.6V. For just a few boards you can try to find a non-XL chips, which could be powered from 5V.

j.

Thanks for the feedback. I think for my purposes a simple buffer will work[now that I know how they work].

I want to attatch 2 BBB’s to each other in a master/slave setup, so to stack them on top of each other means the board needs to reverse the P8/P9 headers[I’d make the board bigger than the BBB so the 2 sets of header attachments are offset and connections can be made between them].

I assume it is safe to tie the GROUND pins of each board directly to each other.

Wheras the 3V and 1.8V power rails should not connect.

The 5V pin from the master should connect to the 5V pin on the child to power it. For that, an i2c → parallel latch can be used to enable a transistor after the Master boots in order to power up the Slave.

Beyond that, around 8GPIO pins connecting one board to the other is all I need. So a couple of buffers for each direction can be used to connect them, and the same i2c–>parallel chip can be used to enable the chip.

I figure if I get to the point of actually making a board for the device, I might as well throw some extra buffers on there to allow additional GPIO’s to connect - my driver can simply not enable them, but someone else might want to use them and can go through and enable them in 8 pin blocks.

The one exception for my purposes is that all the GPMC pins should map to each other without buffers to avoid timing issues. I want to play with connecting a camera cape to both boards at the same time. The slave board has a single job: processing the video stream, saving each frame out to permanent storage. The master board will only read about 5-6 FPS for “preview” mode.

All in all, I think that by repurposing a lot of the software written for the Elphel, an open source camera can be put together for under $250 - which makes it much more accessible for hacking. At the same time, it would have lots of things which could be “improved” - ie replace the second BBB with the upcoming FPGA cape. Many options to swap the sensor for a better one either by replacing just the sensor[if pin compatible] or creating a new sensor connection board.

If done right, it should even be possible to use a USB webcam instead of the cam cape, and run both the master and slave software on a single board. I can’t imagine doing that for practical usage, but if someone just wanted to contribute a better user interface or additional jimage macro’s, they can do so by purchasing just a single BBB.