interrupt_tv

joined 1 month ago
[–] interrupt_tv@piefed.world 1 points 2 days ago

Ah, sorry, I could have been more clear there. It can do arbitrary mappings between input values and output values. So for each possible 4-bit value, you can pick a different 8-bit value to be output.

For my case, I'm working with a 7-segment LED display, like the display on a microwave. It's got 7 LEDs arranged to display a number, plus an 8th LED for a decimal point. Like this:


|   |

|   |

.

if the ROM is getting 0000 for its input, it should light up all segments of the 7-segment display except for the horizontal one in the center, to display a zero. Then for the 0001 input, it should light up the two vertical segments on the right, leaving the rest dark, to display a one. And so on. Each output bit goes to a particular segment of the display.

To relate it more directly to programming, it's like having a 16 byte array. The input gives the array index that you want to access, and the output gives whatever byte is at that index.

[–] interrupt_tv@piefed.world 2 points 2 days ago (2 children)

Oh, that's cool. I hadn't heard of slimevr before.

My use case for the diode ROM board is to take 4 binary input bits (16 possible combinations) and translate them into what segments of a 7-segment LED display should be lit or unlit, in order to display the corresponding hexadecimal digit (0-9, A-F). Like so:

Diode ROM in use

It could be used for any other case where you need to convert a 4-bit input into 16 possible 8-bit outputs. In theory you could use them in multiples for more address space, but I forgot to include an enable pin on the board to allow for that. Something to add to the next version.

[–] interrupt_tv@piefed.world 5 points 3 days ago (4 children)

Not programming per se, but I've been working on some electronics projects. If you check my profile, there's two PCB designs that I've posted. They're fairly simple, but I'm working on a larger project that I should be posting relatively soon. Currently I'm just waiting on a shipment of parts, because I didn't realize I would need XNOR gates.

 

Do you need 16 bytes of ROM that you can program with a soldering iron? Well, you're in luck!

I'm working on a larger project that I'll hopefully be sharing here soon, and needed something to display hexadecimal digits on a 7-segment LED display. The non-obsolete ICs that I found could only do binary coded decimal, but I need to be able to display A-F as well. An EEPROM truth table can be used for this, but I also wanted to avoid any programmable ICs. I decided to take an old-school approach and create a diode ROM board.

Diode ROM parts

Diode ROM assembled

Diode ROM in use

[–] interrupt_tv@piefed.world 3 points 1 month ago

Thank you. I agree, it is a really impressive piece of software.

I went with JLCPCB. Cost about $5 for the 5 boards with shipping, which took two weeks. I just added some additional instructions to the readme about getting the boards manufactured. The process seemed daunting before I did it, but it turned out to be really easy.

 

I've been working on Ben Eater's breadboard 6502 computer project for a little while. The pins on the EEPROM sometimes get bent when I pry it out of the breadboard to reprogram it. I was afraid that they'd break eventually, so I looked into getting a Zero Insertion Force (ZIF) socket to put on the board, which should be gentler on the EEPROM's pins. Ran into a few problems though:

  • The pins on ZIF sockets are too short to seat properly on a breadboard. They're designed to be soldered into a printed circuit board.
  • I found a few designs for adapter PCBs that allow a ZIF socket to be used on a breadboard. They're all sized for the common green ZIF sockets, which take up a lot of extra space compared to the chip that they hold.
  • Aries Electronics makes low-profile ZIF sockets that are very compact, but I couldn't find any adapters designed for them.

I eventually decided to solve that last one myself, and I figured I'd share the design in case anyone else might find it useful: