Этот пример показывает, как использовать ресурсы RAM в вашем проекте FPGA с помощью HDL Coder™.
Специализированные блоки RAM в FPGA являются ценными ресурсами для цифровых проектов. Легко разработать с RAM и ROM в Simulink®, и использовать специализированные блоки RAM, доступные в вашем FPGA с помощью HDL Coder.
HDL Coder обеспечивает следующие типы блоков RAM в библиотеке блоков RAM HDL. Используйте hdllib
, чтобы отобразить блоки, которые совместимы с HDL Coder™, и затем выбирают библиотеку HDL RAMs
под HDL Coder
:
Один порт RAM
Простой двухпортовый RAM
Двухпортовый RAM
Двойной уровень двухпортовый RAM
hdllib
### Generating view of HDL Coder compatible blocks in Library Browser. ### To restore the Library Browser to the default Simulink view, enter "<a href="matlab:hdllib('off')">hdllib off</a>".
Блоки RAM являются замаскированными подсистемами, созданными с помощью блоков Simulink для моделирования на поведенческом уровне. Для генерации кода HDL Coder генерирует предопределенные шаблоны, которые описывают структуры RAM в HDL. Большинство инструментов синтеза распознает структуры RAM в шаблонах и сопоставляет их с ресурсами RAM на FPGA. Для получения дополнительной информации смотрите Библиотеку блоков HDL Coder - Блоки RAM в документации.
По умолчанию HDL Coder обеспечивает шаблон RAM, который часы использования включают для структур RAM. Как альтернатива, HDL Coder также обеспечивает стиль типичного шаблона, который не использует часы, включают. Типичные часы реализаций шаблона стиля RAM включают с логикой в обертке вокруг RAM. Можно управлять этим использованием 'опция' Архитектуры RAM в глобальной панели настроек HDL Coder.
Можно хотеть использовать типичный стиль RAM, если инструмент синтеза не поддерживает структуры RAM с часами, включают и не может сопоставить HDL с FPGA ресурсы RAM в результате.
hdlcoderfirram
в качестве примера является примером того, как использовать типичный стиль RAM для вашего проекта.
open_system('hdlcoderfirram'); open_system('hdlcoderfirram/FIR_RAM');
Стиль кодирования RAM выбран путем выбора желаемой Архитектуры RAM на вкладке "Coding Style" Глобальной страницы настройки Настроек генерации HDL-кода.
HDL Coder не обеспечивает блок ROM, но можно легко создать тот с помощью блока Lookup Table и блока Unit Delay от Simulink, как показано в следующем примере.
open_system('hdlcoderrom'); open_system('hdlcoderrom/ROM');
Следуйте этим руководствам по моделированию при создании ROM из Simulink:
Для адреса n-bit задайте все записи данных об Интерполяционной таблице. В противном случае ваш инструмент синтеза не может сопоставить сгенерированный код с RAM, и код не может совпадать с вашей моделью Simulink.
Поместите блоки Интерполяционной таблицы и Единичной задержки в ту же иерархию модели.
Поддержка логики сброса RAM отличается среди устройств FPGA и инструментов синтеза. Для лучшего результата синтеза подавите генерацию логики сброса для блока Unit Delay путем установки его свойства 'ResetType' ни на 'один' в диалоговом окне HDL Block Properties. Также установите свойство 'IgnoreDataChecking' на 1 в параметрах конфигурации Испытательного стенда HDL игнорировать начальное несоответствие симуляции, вызванное путем подавления логики сброса.
Если вы будете следовать предыдущим инструкциям, большинство инструментов синтеза реализует ROM с помощью, выделил блоки RAM в FPGA.
Если размер RAM или ROM в вашем проекте является небольшим, ваши инструменты синтеза могут сопоставить сгенерированный код с регистрами вместо специализированных блоков RAM для лучшего быстродействия. Проверяйте свой инструмент синтеза для любого минимального требования размера RAM, и при желании, как можно заменить то требование.