KB 03: Intel FPGA M9K Embedded Memory Blocks

The M9K memories are Intel/Altera's embedded high-density memory arrays. Nearly all modern FPGAs include something similar to varying sizes. In Xilinx FPGA, it is called "BlockRAM." Each M9K block is useful for storing processor code, implementing lookup schemes, and implementing large memory applications. Each M9K memory block provides 256 × 36 RAM blocks, which contains 9216 programable bits, including parity bits (or 8,192 bits without parity bits) and is capable of very highly flexible port configurations.

In the MAX10 device, the M9K is a synchronous memory and can operate at up to 284 MHz. The following table lists the configuration sizes for the M9K memory block:

Table 1: M9K Operation Modes and Port Widths
Operating ModesPort Widths
Single port ×1, ×2, ×4, ×8, ×9, ×16, ×18, ×32, and ×36
Simple dual-port ×1, ×2, ×4, ×8, ×9, ×16, ×18, ×32, and ×36
True dual-port ×1, ×2, ×4, ×8, ×9, ×16, and ×18
Table 2: M9K Size COnfigurations: Supported Configurations per Memory Block
Number of words
(words)
Number of bits in words
(bits)
8192 1
4096 2
2048 4
1024 8 or 9
512 16 or 18
256 32 or 36

 

In general, embedded memories will perform much better than memories synthesized from LUTs:

  • Higher clock rates / higher throughput / lower latency
  • Lower energy dissipation
  • Lower use of chip resources
  • Exception: very small memories