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!

*** New, smaller version is alive!!! ***

Once again, Hackaday issues a challenge (or two!) 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 0x27). 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.

I hope we can demo this with the Voja4 badge at Supercon!
https://hackaday.io/project/198394-sao-adapter-for-voja4-badge


UPDATE: The smaller version is alive now and is compliant with the Supercon 8 - Add On Conrtest!


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, on the right side) 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

Assembly Video is here: 

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

SAO_Core4_V0.2 Schematic.pdf

SAO Core4 V0.2 Schematic (Supercon)

Adobe Portable Document Format - 464.70 kB - 10/28/2024 at 02:46

Preview

SAO_Core4_V0.1.1_Schematic.pdf

SAO Core4 V0.1.1 Schematic (pre-Supercon)

Adobe Portable Document Format - 1.08 MB - 10/28/2024 at 02:23

Preview

  • Core4 V1.2 is Alive!

    Andy Geppert10/15/2024 at 03:51 0 comments

    It looks even better in the small form factor for the SAO Contest: 1.5x2.5 inches.

    I look forward to sharing these with y'all. I did make at least one mistake which requires a rework... I connected the mode button circuit wrong to the symbol. Doh. Easy fix for the next batch, and I found a switch that I can use to rework the samples I have now. I also think I got the sense solder pads a little too close to the horizontal wire solder pads because there is a tiny amount of cross-talk affected the sense wire. Or, I am routing the sense wire curves too "parallel" to the vertical drive wires. 

    The screen protector is not shown above, but this has a provision for it with the small dotted lines in the corners. 

  • The smaller version has arrived!

    Andy Geppert10/08/2024 at 13:59 0 comments

    This is the smaller version with several refinements to comply with the Supercon 8 Add-on Contest. It looks better in the smaller form factor, and I removed some experimental stuff from the previous version.

    Here it is on the bench with testing underway:

    One of the "improvements" I made has to do with pin allocation on the I2C GPIO Expander, as it related to the row wiring and also the LEDs. I think I made a mistake that is still functional, but changed polarities on the row drive wires. The newest version works, but I need to make some code tweaks to get it working as smoothly as the first version. More to come soon!

  • SAO Core4 V0.2 Design Released

    Andy Geppert09/24/2024 at 14:15 0 comments

    The updated version was just released to fabrication! V0.2 changes include:

    • Size reduced (1.5 x 2.0 inches) to comply with the Supercon Add On Contest rules.
    • Still requires a badge/host MCU to control the SAO (or use my tiny SAO Demo Controller).
    • Added edge-connect option for SAO header mounting.
    • Removed some prototype features that aren't needed anymore, simplified pin usage on the IO expander.
    • Refined core memory weaving outline and make screen protector easier to install.
    • Add I2C address on the front! Still adjustable with solder jumpers on the back.
    • Add alternate power input (square pin in the open-end wrench, lower right) to avoid overloading SAO power rail.
    • Define tooling pin locations for fabrication.

  • Tiny Games Challenge is closing soon!

    Andy Geppert09/10/2024 at 02:19 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 9 project logs

View all instructions

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