Полностью ли используется этот BRAM, если я использую другую ширину данных?

Фон

Я использую Xilinx FPGA из семейства Kintek-7. Документацию по ресурсам памяти можно найти здесь .

Вот несколько важных выдержек из документа (ссылка на страницы 11 и 12):

Блочное ОЗУ в FPGA серии Xilinx® 7 хранит до 36 Кбит данных и может быть сконфигурировано либо как два независимых ОЗУ по 18 Кбайт, либо как одно ОЗУ по 36 Кбайт. Каждая 36-килобайтная ОЗУ может быть сконфигурирована как 64 КБ x 1 (при каскадировании с соседней 36 КБ ОЗУ), 32 КБ x 1, 16 КБ x 2, 8 КБ x 4, 4 КБ x 9, 2 КБ x 18, 1 КБ x 36 или 512 x 72 в простом двухпортовом режиме. Каждый 18-килобайтный блок RAM может быть сконфигурирован как 16K x 1, 8K x 2, 4K x 4, 2K x 9, 1K x 18 или 512 x 36 в простом двухпортовом режиме.

и

Каждое блочное ОЗУ объемом 36 КБ может быть установлено в простой двухпортовый режим (SDP), что удваивает ширину данных блочного ОЗУ до 72 бит. Блочная ОЗУ объемом 18 КБ также может быть установлена ​​в простой двухпортовый режим, удваивая ширину данных до 36 бит. Простой двухпортовый режим определяется как наличие одного порта только для чтения и одного порта только для записи с независимыми часами.

Исходя из этого, я понимаю, что ширина данных BRAM кратна 18 . Так что это 36 с двойным портом, или может быть 72, если вы удвоите это.

Вопрос

В моей реализации мне нужна только ширина данных 64 бита. Что происходит с этими дополнительными 8 битами? Означает ли это, что я не буду использовать весь блок BRAM?

Вот рисунок, чтобы помочь понять, как я думаю:

введите описание изображения здесь

Иногда несколько узких блоков ОЗУ могут совместно использовать один и тот же BRAM, но это зависит от оптимизации, выбранной для соответствия синтезированному дизайну устройства.

Ответы (2)

Правильно, оставшиеся биты не используются.

Это то, что вы просто должны принять в FPGA, вы никогда не будете использовать все ресурсы. Это цена, которую вы платите за возможность настройки.

С положительной стороны, если позже вы решите добавить что-то вроде информации о четности или просто сделать шину данных немного шире, вы можете сделать это практически бесплатно, так как есть место для добавления еще 8 бит ширины, используя ту же память. .

В дополнение к ответу Тома:

BlockRAM имеют один дополнительный бит (в основном называемый четностью) на байт, что дает вам:

  • 9(8+1),
  • 18(16+2),
  • 36(32+4),
  • 72(64+8) бит.

Эти биты можно использовать для простых алгоритмов контроля четности, чтобы «защитить» ваши данные. Или вы можете реализовать ECC. Вы также можете хранить метаинформацию, такую ​​как Valid, StartOfFrame/EndOfFrame, в этих дополнительных битах. BlockRAM также часто являются источником констант (ROM) в алгоритмах DSP. Большинство констант не являются степенью двойки, поэтому в некоторых местах могут пригодиться дополнительные биты.