В этом примере показано, как использовать ресурсы 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
Двухпортовый 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.
Поместите Интерполяционную таблицу и блоки Unit Delay в той же иерархии модели.
Поддержка логики сброса RAM варьируется среди устройств FPGA и инструментов синтеза. Для лучшего результата синтеза подавите генерацию логики сброса для блока Unit Delay путем установки его свойства 'ResetType' ни на 'один' в диалоговом окне HDL Block Properties. Также установите свойство 'IgnoreDataChecking' на 1 в параметрах конфигурации Испытательного стенда HDL игнорировать начальное несоответствие симуляции, вызванное путем подавления логики сброса.
Если вы будете следовать предыдущим инструкциям, большинство инструментов синтеза реализует ROM с помощью, выделил блоки RAM в FPGA.
Если размер RAM или ROM в вашем проекте мал, ваши инструменты синтеза могут сопоставить сгенерированный код с регистрами вместо специализированных блоков RAM для лучшего быстродействия. Проверяйте свой инструмент синтеза для любого минимального требования размера RAM, и при желании, как можно заменить то требование.