Я использую 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?
Вот рисунок, чтобы помочь понять, как я думаю:
Правильно, оставшиеся биты не используются.
Это то, что вы просто должны принять в FPGA, вы никогда не будете использовать все ресурсы. Это цена, которую вы платите за возможность настройки.
С положительной стороны, если позже вы решите добавить что-то вроде информации о четности или просто сделать шину данных немного шире, вы можете сделать это практически бесплатно, так как есть место для добавления еще 8 бит ширины, используя ту же память. .
В дополнение к ответу Тома:
BlockRAM имеют один дополнительный бит (в основном называемый четностью) на байт, что дает вам:
Эти биты можно использовать для простых алгоритмов контроля четности, чтобы «защитить» ваши данные. Или вы можете реализовать ECC. Вы также можете хранить метаинформацию, такую как Valid, StartOfFrame/EndOfFrame, в этих дополнительных битах. BlockRAM также часто являются источником констант (ROM) в алгоритмах DSP. Большинство констант не являются степенью двойки, поэтому в некоторых местах могут пригодиться дополнительные биты.
пользователь 2943160