В этом примере показано, как использовать ресурсы ОЗУ в конструкции FPGA с использованием HDL Coder™.
Выделенные блоки ОЗУ в FPGA являются ценными ресурсами для цифровых конструкций. Он прост в проектировании с помощью ОЗУ и ПЗУ в Simulink ® и использует выделенные блоки ОЗУ, доступные в FPGA, с помощью кодера 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 - блоки ОЗУ в документации.
По умолчанию кодер HDL предоставляет шаблон ОЗУ, в котором для структур ОЗУ используется включение тактовой синхронизации. В качестве альтернативы, HDL Coder также предоставляет стиль общего шаблона, который не использует clock enable. Общий шаблон стиля ОЗУ реализует включение часов с логикой в обертке вокруг ОЗУ. Управлять этим можно с помощью опции «RAM Architecture» на панели глобальных настроек кодера HDL.
Можно использовать общий стиль ОЗУ, если средство синтеза не поддерживает структуры ОЗУ с включенным временем и не может сопоставить HDL с ресурсами ОЗУ FPGA в результате.
Пример hdlcoderfirram Пример использования общего стиля ОЗУ для проекта.
open_system('hdlcoderfirram'); open_system('hdlcoderfirram/FIR_RAM');

Стиль кодирования ОЗУ выбирается путем выбора требуемой архитектуры ОЗУ на вкладке «Стиль кодирования» на странице конфигурации глобальных настроек генерации кода HDL.
Кодер HDL не предоставляет блок ПЗУ, но его можно легко построить, используя блок таблицы поиска и блок задержки установки из Simulink, как показано в следующем примере.
open_system('hdlcoderrom'); open_system('hdlcoderrom/ROM');

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