Self Clocking ROM

There are a few projects that can be implemented with a ROM and need a clock source...

Public Chat
Similar projects worth following
This is a test of using a memory chip as an oscillator, and its application to a simple multiplexed display driver.

I'v placed all the detail for this project into the project logs. They come up in reverse order, so, maybe I wont do that next time...


Version 2 of the binary ROM image, this is the 4 bit decimal display generator as shown in the video.

octet-stream - 2.00 kB - 01/21/2023 at 01:53



Version 2 of the binary file generator, this makes the 4 bit to decimal display controller.

x-csrc - 4.30 kB - 01/21/2023 at 01:53



Library for building logical memory images.

x-csrc - 1.02 kB - 01/20/2023 at 15:04



Program to build basic oscillator test image

x-csrc - 3.94 kB - 01/20/2023 at 15:04



Oscillator test image binary

octet-stream - 2.00 kB - 01/20/2023 at 15:04


View all 6 files

  • The application test

    Rue Mohr01/21/2023 at 01:39 2 comments

    My original application idea was a silly 4 bit to base 10, 7 segment display system, so I'll build that...

    I made a new ROM image, I'll add the source as "main2.c" and "output2.bin"

    In my original idea, I wanted to use a trick where one display is common anode, and the other is common cathode. With the commons connected together, you can only operate 1 display at a time, which is great for 2 display multiplexing.... BUT...

    I didn't have a good set of displays in my collection to do this with (I searched for hours) so, I'd have to settle for adding a transistor to drive the second display.  :-/

    Furthermore, loading the "oscillator" like this caused a large error in the duty. Duty error in something like this causes one display to be brighter than the other, so I added a few bias parts to bring it closer to 50%. AT 50% (if you adjust it such) the operation of the oscillator is not stable, it may stall or not start up with power, serves me for not adding another chip (74xx541) to drive the LEDs (its not good form to make a chip like this EEPROM try to drive LEDs)

    I was not sure if all the bit timing would work ok here. When you address a location on a memory like this, not all the bits arrive at the outputs at the same time, which could cause "segment smudge"

    But it was all ok, and kinda just worked!

    kinda anti-climactic... (like fishing, and having your fish jump into the boat and knock itself unconscious on the seat when it lands, before you have managed to bait the hook and put the line into the water... but don't sit there looking at the worm, row back to shore and cook the fish!)

    BUT! the possibilities of what can be done are AWESOME...

  • Poke it with a stick...

    Rue Mohr01/21/2023 at 01:24 0 comments

    Just because something works, doesn't mean it works well. It can be important to play with it and understand the limits to operation...

    I grounded the remaining address lines, and started playing with values. After trying a variety of inductors and capacitors that all worked great and produced different operating frequencies I realized that an RC delay might also work just fine...

    An RC delay actually worked with cleaner operation than the LC!

    I was able to hit about 3MHz with a small cap and low resistor value. So the range of operation is great!

    Next test is to apply it to something...

  • proofing

    Rue Mohr01/21/2023 at 01:17 0 comments

    So with that I built a ROM image for a simple inversion. D0 would be the opposite of A0. I wrote a 2816 (16k eeprom) to do the test.

    I tend to assemble circuits with the power on. To my surprise, this started oscillating before I was even finish building it!

    What is not wired yet is all the extra address lines, which should not be critical, but I would expect to cause intermittent operation.

    ok! that worked! 

  • Idea

    Rue Mohr01/20/2023 at 15:01 0 comments

    So I was in the shower and had an idea. The idea was to add an LC delay between a data output line and an address input line of a memory chip in order to create the inverter needed for building an oscillator.

    Normally I would reject this idea, writing off that that system would find a voltage between logical 1 and 0 that it would stabilize on, but I'd recently been reading RAM datasheets that mentioned they had schmitt triggers on all the inputs....

    Could it work?

    It would be easy to build a ROM image and do a test. 

    An application beyond the basic oscillator test could be a multiplexer for a multi-segment display.

View all 4 project logs

Enjoy this project?



Ken Yap wrote 01/21/2023 at 02:43 point

Cool! Maybe you could generate an image that could drive a Nx7 matrix display. More points if you can get the image to scroll. Have more showers! 👍

  Are you sure? yes | no

Rue Mohr wrote 04/10/2023 at 19:48 point

:] I need some more outputs, but I could make a state machine that shifted everything into a chain of 595 OR a max7219!

  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