exponenta event banner

Начало работы с оперативной памятью и ПЗУ в Simulink

®

В этом примере показано, как использовать ресурсы ОЗУ в конструкции FPGA с использованием HDL Coder™.

Введение

Выделенные блоки ОЗУ в FPGA являются ценными ресурсами для цифровых конструкций. Он прост в проектировании с помощью ОЗУ и ПЗУ в Simulink ® и использует выделенные блоки ОЗУ, доступные в FPGA, с помощью кодера HDL.

Блоки ОЗУ в библиотеке примеров HDL

Кодер HDL предоставляет следующие типы блоков ОЗУ в библиотеке блоков RAM HDL. Использовать hdllib для отображения блоков, совместимых с Coder™ HDL, а затем выберите HDL RAMs библиотека под HDL Coder:

  • Однопортовая ОЗУ

  • Однопортовая система ОЗУ

  • Простая двухпортовая оперативная память

  • Простая двухпортовая система ОЗУ

  • Двухпортовая ОЗУ

  • Двухпортовая система ОЗУ

  • Двухскоростная двухпортовая ОЗУ

% Run this command navigate to RAM blocks in HDL library
% hdllib

Блоки ОЗУ представляют собой маскированные подсистемы, построенные с использованием блоков Simulink для поведенческого моделирования. Для генерации кода кодер HDL генерирует предопределенные шаблоны, описывающие структуры ОЗУ в HDL. Большинство инструментов синтеза распознают структуры ОЗУ в шаблонах и сопоставляют их с ресурсами ОЗУ в FPGA. Дополнительные сведения см. в разделе Библиотека блоков кодеров HDL - блоки ОЗУ в документации.

Использование общего стиля кодирования RAM для блоков RAM

По умолчанию кодер HDL предоставляет шаблон ОЗУ, в котором для структур ОЗУ используется включение тактовой синхронизации. В качестве альтернативы, HDL Coder также предоставляет стиль общего шаблона, который не использует clock enable. Общий шаблон стиля ОЗУ реализует включение часов с логикой в обертке вокруг ОЗУ. Управлять этим можно с помощью опции «RAM Architecture» на панели глобальных настроек кодера HDL.

Можно использовать общий стиль ОЗУ, если средство синтеза не поддерживает структуры ОЗУ с включенным временем и не может сопоставить HDL с ресурсами ОЗУ FPGA в результате.

Пример hdlcoderfirram Пример использования общего стиля ОЗУ для проекта.

open_system('hdlcoderfirram');
open_system('hdlcoderfirram/FIR_RAM');

Выбор стиля кодирования ОЗУ

Стиль кодирования ОЗУ выбирается путем выбора требуемой архитектуры ОЗУ на вкладке «Стиль кодирования» на странице конфигурации глобальных настроек генерации кода HDL.

Создание ПЗУ с использованием блоков Simulink

Кодер HDL не предоставляет блок ПЗУ, но его можно легко построить, используя блок таблицы поиска и блок задержки установки из Simulink, как показано в следующем примере.

open_system('hdlcoderrom');
open_system('hdlcoderrom/ROM');

При создании ПЗУ из Simulink следуйте следующим инструкциям по моделированию:

  • Для n-битового адреса укажите все$2^n$ записи данных таблицы подстановки. В противном случае средство синтеза может не сопоставить сгенерированный код с оперативной памятью, а код может не соответствовать модели Simulink.

  • Поместите блоки Таблица подстановки (Lookup Table) и Задержка единицы измерения (Unit Delay) в одну иерархию модели.

  • Поддержка логики сброса ОЗУ зависит от устройств FPGA и средств синтеза. Для достижения наилучшего результата синтеза подавьте генерацию логики сброса для блока Unit Delay, установив для его свойства ResetType значение none в диалоговом окне Свойства блока HDL (HDL Block Properties). Также установите для свойства IgnureDataChecking значение 1 в параметрах конфигурации тестового стенда HDL, чтобы игнорировать начальное несоответствие моделирования, вызванное подавлением логики сброса.

Если следовать приведенным выше рекомендациям, большинство средств синтеза реализуют ПЗУ с использованием выделенных блоков ОЗУ в FPGA.

Требования к минимальному размеру ОЗУ

Если размер ОЗУ или ПЗУ в вашей конструкции невелик, инструменты синтеза могут сопоставить сгенерированный код с регистрами вместо выделенных блоков ОЗУ для повышения быстродействия. Проверьте средство синтеза на наличие любых требований к минимальному размеру ОЗУ и, при необходимости, способ переопределения этого требования.