Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
20705 Discussions

EPF10k10 ram blocks

Altera_Forum
Honored Contributor II
1,246 Views

Hi All, 

 

So I noticed that quartus 'optimizes' out any unused bits from a 256x8 block. In other words, if I only use 6 bits, it would state it used 1536 bits. Does that mean the remaining 256x2 bits can still be used as a separate block? The manual states it can only do 256x8, 512x4, etc. I'm at work right now so I can't mess around with it but I wondered if anyone else knows this off hand. It'd be great if I could get multiple banks out of it, i.e. two banks of 256x4. 

 

-Mux
0 Kudos
7 Replies
Altera_Forum
Honored Contributor II
473 Views

Only if it can be packed into the ram as if it were another 2 bits on the ram Dword. If you dont use all of a ram, you lose the "unused" part.

0 Kudos
Altera_Forum
Honored Contributor II
473 Views

Cool. So I should be able to get two 4-bit ram-banks out of a single 8-bit ram-bank. I'll give it a whirl tonight and let y'all know :-) 

 

-Mux
0 Kudos
Altera_Forum
Honored Contributor II
473 Views

I'm not sure what a EPF10K10 block is but if you really are just talking about M10K blocks like you find in Cyclone V then you should be able to get two 256x4 memories to merge into a single block if you only need single port access to each. In x4 mode you have up to 2k words so if one memory used port A and the other used port B you should be able to dual port that memory and have up to 2kx4 available to each. Normally when I want to force this to happen I just write my HDL to dual port a memory and share it in the design. If you haven't already done so I would look at the embedded memory blocks chapter for the device you are targeting, it will describe what these memory blocks are capable of.

0 Kudos
Altera_Forum
Honored Contributor II
473 Views

Yeah, they're RAM blocks. The EPF10k10 is vintage / old / obsolete, take your pick, but only has 6144 bits of memory which is according to the manual organized as either 256x8, 512x4 etc. While you can merge them together, I want to know (and will soon find out, almost 5pm here!) whether or not it's possible to SPLIT them. So two instances of 256x4 should not take more than 1 memory block. Theoretically, at least. Quartus omits any unused bits from the resource count so I'm guessing / hoping those can be re-used... 

 

-Mux
0 Kudos
Altera_Forum
Honored Contributor II
473 Views

Quick update now that I've had to chance to mess around with it... 

 

Turns out you can create as many instances of odd certain bit-widths as you like as long as you stay under the total of 6144 bits. While the manual mentioned that you can only use the 256x8 variations, that's doesn't seem to be the case either as you can have odd ones, like 32x12 (taking up 384 bits) as well. Smallest size seems to be 32xN. 

 

Good stuff, good stuff... 

 

-Mux
0 Kudos
Altera_Forum
Honored Contributor II
473 Views

The synthesisor will be making up your ram out of 256x8 rams. using logic to glue them together.

0 Kudos
Altera_Forum
Honored Contributor II
473 Views

Memory block merging *means* splitting so we are talking about the same thing. By merge we mean if you code two independent memories depending on their properties and the capabilities of the memory blocks Quartus can sometimes merge them into a single memory block. So I don't mean merging as in ganging memories together but rather merging memories in the design to consume fewer RAM blocks. 

 

My memory isn't good enough to remember what that RAM block type is capable but merging typically requires dual port to be supported so that you can make a single RAM block behave as independent blocks.
0 Kudos
Reply