Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
11 years ago

M9K Memory Block Requiring Registered Read Address

Hi,

I was wondering why does the M9K block requires the read address bus to be registered but all the other pins can be driven from asynchronous logic?

Regards

4 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    I'm not aware of a family that uses the M9K blocks that can be controlled from asynchronous logic. All the input signals are registered: address, data, wren, rden (if used). You can choose not to register the output.

    What device family and IP are you looking at?

    Looking at the 1-port & 2-port RAMs, there are grayed out options (perhaps) suggesting the data and other signals need not be registered. However, they're grayed out for a reason.

    Cheers,

    Alex
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    I am using a Cyclone IV with an implied RAM VHDL entity. I know that all the inputs a registered from the IP library, but you do not need to do that for the implied entity.

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    You can infer RAM in your code, that's fine. However, Quartus will only put it into a M9K block if it can find suitable registers in your code to match the structure of the M9K block. If there aren't registers in your code that Quartus can use as the input registers (i.e. without any other dependency on them) it won't use the block and will use registers to create the RAM.

    So, if you use asynchronous control signals Quartus won't put your inferred RAM into an M9K block. That's just the way Altera have chosen to implement the M9K.

    Cheers,

    Alex
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    I am using a Cyclone IV with an implied RAM VHDL entity. I know that all the inputs a registered from the IP library, but you do not need to do that for the implied entity.

    --- Quote End ---

    If you infer (not imply) an asynchronous ram in Altera - it will make it out of registers. and if it's the size of an M9K - make sure you've got a kettle on standby to make lots of tea/coffee while you wait for it to compile.