I am building a memory module:

  1. 32 bits wide,
  2. parallel, and,
  3. byte-addressable.

I did a research and i could not find an memory IC that will suit my needs.

  • It must be able to:

    1. StoreWord,
    2. StoreHalf and,
    3. StoreByte (RISC-V), with or without an offset.
  • One suggestion was to build it from four 8bits RAMs. I simulated it in Logisim-Evolution, as suggested masking out unwanted data, but even in the uncomplete state, it seems a little too large.

  • I plan to build it in real life, so it must have as little components as possible, but i just cannot think of a way how to build it, or how is it made in industry?

Thanks for any help enter image description here

  • 1
    \$\begingroup\$ Something this small is rarely made in industry. In a CPU core, a register like this is a few lines of VHDL. On a board, this and a few thousands/millions more would be packed into a RAM chip. So to make just one, in discretes, is really expensive-looking. But that's the fun of making homebrew computers. \$\endgroup\$
    – Neil_UK
    Jul 26 '19 at 11:08
  • \$\begingroup\$ How much memory does your module need? offset is what? aligned or unaligned access? \$\endgroup\$
    – Jasen
    Jul 26 '19 at 12:18
  • 2
    \$\begingroup\$ Pretty much any DIY computer is by definition "too large" you are either okay with that or you reduce the physical memory width or you use modern integrated solutions - a typical ARM MCU would do this job with internal memory. Modern DRAMs have byte enables. \$\endgroup\$ Jul 26 '19 at 12:43
  • 1
    \$\begingroup\$ It occurs to me that if you go the route of using modern FPGA to do your logic you may find some devices that will include sufficient resources to include the memory in the same FPGA IC. Depends on your needs but would make a neat design and compact board configuration. \$\endgroup\$
    – KalleMP
    Jul 26 '19 at 20:42

... even in the uncomplete state, it seems a little too large.

Nope, looks about right to me. I used to build motherboards for engineering workstations (overgrown PCs) in the 1980s, and this is exactly the sort of thing we had to do.

The right side of your drawing is the actual memory (note that one of your modules has a different size from the others). The left and center sections are what we call "byte steering" logic. This is what you need if your CPU isn't doing this for you internally.

You should see how much fun it is to interface a Motorola 680x0 CPU bus to an Intel (PC/AT) peripheral bus. This ended up being one of the first places we used an FPGA, because of the complexity.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.