Сегодня пример посветим BRAM, немного про BRAM было рассказано в предыдущей статье, сегодня будем расширять знания по этой теме.

Block Memory Generator — используется как элемент оперативного и постоянного хранения информации, данный элемент реализуется на основе блочной памяти FPGA. Запоминающее устройство, генерируемое с помощью настраиваемого модуля Block Memory Generator. Во всех элементах памяти, создаваемых с помощью генератора Block Memory Generator, для каждого порта запоминающего устройства можно задействовать входы управления режимами разрешения/запрета выполнения операций. Ядро Block Memory Generator использует встроенные примитивы Block Memory в FPGA Xilinx, чтобы расширить функциональность и возможности одного примитива для памяти произвольной ширины и глубины. Для сложных алгоритмов, в генераторе блочной памяти, ядро производит оптимизированные решения для обеспечения удобного доступа к памяти для широкого спектра конфигураций. Ядро ​​имеет два полностью независимых порта для доступа к общей памяти. И А, и Порты B имеют интерфейс записи и чтения. В архитектурах UltraScale, Zynq-7000 и 7 серий FPGA каждый из четырех интерфейсов может быть уникально сконфигурирован с различной шириной данных. Для Block Memory Generator вы можете выбрать упрощенную конфигурацию памяти (например, однопортовая память или простая двухпортовая память), чтобы уменьшить использование ресурсов FPGA.

  1. Zynq-7000 SoC — Xilinx. Z-turn Lite. Bare metal. Часть 1.
  2. Zynq-7000 SoC — Xilinx. Z-turn Lite. Bare metal. Часть 2.
  3. Zynq-7000 SoC — Xilinx. Z-turn Lite. Bare metal. Часть 3. Cortex M1.
  4. Zynq-7000 SoC — Xilinx. Z-turn Lite. Bare metal. Часть 4. MicroBlaze.

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

1. Настраиваем IP Zynq, как на скриншоте ниже. Включаем M_AXI GP интерфейс.


2. Добавляем Block Memory Generator.

3. Настраиваем Block Memory Generator, как на скриншоте ниже.

4. Добавляем AXI BRAM Controller. Контроллер доступа к BRAM.

5. Настраиваем AXI BRAM Controller, как на скриншоте ниже.

6. Настраиваем адресное пространство для проекта.

7. Общая блок диаграмма проекта BRAM.

Исходный код проекта.

8. Загружаем bitstream собранного проекта.

9. Результат работы нашей программы.

Отправить ответ

avatar

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

  Subscribe  
Уведомлять о