Close
0%
0%

SAO Core4 - A Nibble of Core Memory with I2C

Add a nibble of Interactive Core Memory to your project!

Similar projects worth following
How about a little game of Memory, IN Core Memory?

Better yet, ORANGE glowing Core Memory!

Once again, Hackaday issues a challenge, and another project springs forth... With this SAO you will be able to access 4 bits of authentic Core Memory backlit by LEDs using I2C through a GPIO expander (MCP23017). Activate your curiosity and learn how to twiddle bits and in core memory and control the LEDs. Or use the {TODO] provided examples (Arduino, C, 6502 ASM, Micropython) for easy access to create your own interactive Core Memory experience.

Add Core Memory with I2C pins to your project! Also included: pass-through SAO or QWIIC ports for even more expansion capability!

Magnetic stylus included! Also includes illustrated weaving pattern shown on the PCB.

Look forward to a demo with the Voja4 badge at Supercon!

FEATURES

  • Two SAO ports enable stacking and soldering the socket/plug to either the top or bottom edges.
  • QWIIC/STEMMA QT port hiding on the back side.
  • GPIO Expander accessible with I2C and bit-banged. Jumper selectable address.
  • Four authentic bits of Core Memory - the orignal thru-hole component!
  • Four reverse mount LEDs behind each bit of Core Memory.
  • Built-in sense circuitry, including resettable latch.
  • Complete access through I2C GPIO Expander with optional use of SAO GPIO 1 and 2.
  • Final design will be a little smaller (see video) which looks more pleasing.


FUNCTION ACCESS

Primary control and sensing of the Core Matrix is done through an I2C MCP23017 IO Expander, with the core matrix sense output available on SAO GPIO 2.  

  • I2C can be bit-banged by 6502, Voja4, Z80... so basically ANY badge can use the full functionality.
  • MCP23017 brings 16 Input/Output configurable lines
    • 10 control the core matrix drive transistors
    • 1 controls the overall core matrix power enable FET
    • 4 control the LEDs
    • 1 controls the sense circuit reset line
    • SAO GPIO 2 is used to sense core write state changes
    • SAO GPIO 1 is for a mode button (to be added in HWV0.2.0)

I'm referring to the following SAO spec, which is the most comprehensive that I am aware from the BadgeMakers Discord:

https://docs.google.com/document/d/1EJqvkkLMAPsQ9VWF5A4elWoi0qMlKyr5Giw5rqRmtnM/edit#heading=h.hazyp5ywzef

Demo code written with the Arduino IDE is in the Github repo for this project. The only library used is the standard "wire.H" library to make I2C access easy. But the I2C can easily be bit-banged since it's all one directional output, and only accesses 2 registers, updating 1 byte words in each register (the A and B port output). I think that can be simplified to shifting out just four bytes: address, register #, byte A, and byte B. I'll be testing that theory with a 6502.

Assembly Guide and Theory of Operation is here: https://github.com/ageppert/SAO_CORE4/tree/main/Documentation

Demo code is here: https://github.com/ageppert/SAO_CORE4/tree/main/Firmware

  • Tiny Games Challenge is closing soon!

    Andy Geppert6 days ago 0 comments

    I added Assembly Guide and Theory of Operation documents: 

    https://github.com/ageppert/SAO_CORE4/tree/main/Documentation

    I also added a V0.1.1 schematic with redlines showing the  rework: 

    https://github.com/ageppert/SAO_CORE4/tree/main/Electronic%20Design/SAO_Core4_V0.1.1%20Schematic

    At VCF Midwest 2024 a few early adopters purchased kits. Thank you for your support! The assembly guide covers the changes needed to convert your boards from V0.1.0 to V0.1.1 with the wire included in the kit. The documentation updates noted above will guide that rework.

    The same Github repo also includes sample code which can get you up and running with pretty much any generic Arduino-compatible MCU board. I used an RP2040-Zero for my testing and the demo game of memory.

    I will resume work on hardware Version 0.2 after the contest closes. I plan to bring Hardware Version 0.2 to Supercon 2024.

  • A game of memory, in core memory

    Andy Geppert09/03/2024 at 04:16 0 comments

    It was meant to be! 

    This simple game is surprisingly fun! I think there is a lot of possibilities with Core4! I'm looking forward to sharing this and seeing what other people come up with.

  • Cores are working!

    Andy Geppert09/01/2024 at 03:50 0 comments

    This is a break-through day of progress. All of the core functionality is working! This is the one and only mode I have right now - FLUX DETECTOR:

    I've been doing this core thing for awhile, and was pleasantly surprised to find the bring-up process went smoothly. At least, from the design perspective. Had some weird issues with the Arduino IDE, but it's working fine now. And I made really dumb code comment error that sent me way off the path with some compiler messages that did not compute. 

    The MCU running this is an RP2040 Zero. I'm using that to see how it works, and it is a candidate for another SAO MCU project. I'm enjoying the USB-C port. I wish all the Pico boards came with that! The other MCU I'm considering is an ESP32-C3, which would open the door for Wifi and BT. Another project for later...

    In the photo above, the Voja4 badge is just supplying power to the RP2040 and the Core4. I was happy to see that end of the voltage range was still able to drive the badge and the SAO.

    As I started to build out some documentation of the core activation process in the code, I quickly realized that a "clever" design change made understanding how the cores work more difficult. It did free up 2 GPIO pins on the IO Expander, but I decided to commit to a more straightforward electronic design, to make this easier for people to develop their own firmware with. So I've backed out that optimization, and have already started working on the next board design which strips out several features I included in the first prototypes. Most of those features were to give me flexibility to experiment and test. Now that the design is functioning, and I've chosen to simplify, I'm going to reduce the size of the board for the SAO Challenge. But, that's work for later on.

    Here is what the design changes look like - relatively minor with the resistor rotations and 2 white wires:

    More to come later this weekend. I think the next update will include a video of a game demo!

    Meanwhile, if you have feedback on my plans for these features, let me know.

    • Remove the 3V3 regulator
    • Remove the 3V3 bulk storage caps
    • Remove the reverse polarity protection FET
    • Remove several optional solder jumpers which allow pin usage changes
    • Remove the QWIIC port
    • Remove the top (2nd) SAO pass-through port.
    • Keep the IO Expander address setting jumpers, perhaps make them smaller.
    • I'm only using GPIO2 of the SAO. GPIO1 remains open for other use. Yah know, a button would be nice to change modes... Hmmmm...

  • Blinking in Orange

    Andy Geppert08/30/2024 at 04:10 0 comments

    The IO Expander is working and blinking the built-in LEDs!

    Oh, and I wove the core memory too!

    The first demo sketch will be in the basic Arduino environment, with the I2C Wire Library, and directly reading/writing to the registers of the MCP23017 IO Expander. At the moment, I'm testing the prototype Core4 with another prototype, a simple inline SAO with an RP2040-Zero. This little board will draw power from a host SAO (or USB C port) and pass the power up to the SAO plugging into the top. The RP2040 is also connected to the TOP SAO port I2C and GPIO1&2 lines.

    Next step, control all the IO to write some core memory!

  • Boards have arrived!

    Andy Geppert08/29/2024 at 04:55 0 comments

    Prototypes arrived, beautifully assembled!

    Next step, blink those LEDs!

  • Core4 Concept

    Andy Geppert08/18/2024 at 21:49 0 comments

    Late in 2023, the concept for this project hatched from a conversation with KoppanyH after Supercon, where I shared the Core16 proejct. I threw together this sketch to start capturing the concept.

    The essence of the idea is to provide a simple drive circuit and weaving experience to enable anyone to control this with their own hardware. I was already thinking about how to minimize the number of external pins, with SAOs in mind.

    I also wanted it to be accessible with ANY hardware. Since I2C can be bit-banged, the MCP23017 seemed like a great choice. The sketch above is for illustration purposes - it's not how this will be wired up in reality.

    The project concept sat on the back burner, waiting for a catalyst. That catalyst happened in July 2024:

    https://hackaday.io/contest/196871-tiny-games-challenge

View all 6 project logs

Enjoy this project?

Share

Discussions

Andy Geppert wrote 08/17/2024 at 21:52 point

Thank you! I'm looking forward to sharing this with the Supercon crowd! The Geppert brothers have two more SAOs brewing as well. Hint: both are red...

  Are you sure? yes | no

Tom Nardi wrote 08/17/2024 at 05:26 point

This is an awesome idea, especially in that in leans hard into interactivity/functionality. Will be great for Supercon 2024!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates