9. Память на ПЛИС

Как и в большинстве вычислительных устройств, в ПЛИС есть своя иерархия памяти, построенная вокруг всё того же поиска баланса между скоростью доступа и объёмом (на самом деле ценой).

Нас будет интересовать память, которая доступна на кристале. В основном, это регистры и блочная память (B-SRAM).

Регистры и B-SRAM в ПЛИС
Рисунок 1. Регистры и B-SRAM в ПЛИС: CFU — configurable functional unit, CRU — configurable routing unit, CLS — configurable logic slice

Естественно, можно подключать и внешнюю (в том числе энергонезависимую) память, но это уже зависит от платы (в меньшей мере от чипа). Часто доступны DDR, Flash, при желании и какой-нибудь съёмный носитель можно подключить. Для ускорителей характерно использование HBM.

Block SRAM

Block SRAM (B-SRAM, иногда просто SRAM) — энергозависимая память на кристале, организованная не очень большими блоками (десятки килобит), суммарным объёмом порядка сотен килобайт. Например, для наших плат.

  • Для Tang Primer 25K: 56 блоков по 18 килобит (порядка 120 килобайт суммарно)

  • Для Tang Mega 138K Pro Dock: 340 блоков по 18 килобит (порядка 760 килобайт суммарно)

Каждый блок может быть сконфигурирован отдельно или включён в состав хранилища, организованного из нескольких блоков. На что важно обратить внимание.

  • Каждый блок имеет два порта (один на чтение, один на запись), каждый из которых может быть сконфигурирован независимо. В частности, каналы могут работать на разных частотах.

  • В блок могут быть загружены какие-либо (задаваемые пользователем) данные при инициализации.

Блоки можно подключать вручную, но производители рекомендуют использовать возможности соответствующих САПР. Это существенно упрощает настройку. В нашем случае имеет смысл изучить руководства UG285 или UG300 в зависимости от платы.

Обязательно порешайте упражнения.