В этом примере показано, как использовать ресурсы оперативной памяти в проекте FPGA с помощью HDL- Coder™.
Выделенные блоки оперативной памяти в FPGA являются ценными ресурсами для цифровых проектов. Легко проектировать с помощью ОЗУ и ПЗУ в Simulink ®, и использовать выделенные блоки ОЗУ, доступные в вашем FPGA с помощью HDL Coder.
HDL Coder обеспечивает следующие типы блоков оперативной памяти в библиотеке блоков HDL RAM. Использование hdllib
чтобы отобразить блоки, совместимые с HDL- Coder™, а затем выберите HDL RAMs
библиотека под HDL Coder
:
Однопортовая ОЗУ
Однопортовая система ОЗУ
Простая двухпортовая оперативная память
Простая двухпортовая система ОЗУ
Двухпортовая ОЗУ
Двухпортовая система ОЗУ
Двухфазная двухпортовая ОЗУ
% Run this command navigate to RAM blocks in HDL library % hdllib
Блоки ОЗУ являются маскированными подсистемами, созданными с помощью блоков Simulink для поведенческой симуляции. Для генерации кода HDL Coder генерирует предопределенные шаблоны, которые описывают структуры оперативной памяти в HDL. Большинство инструментов синтеза распознают структуры оперативной памяти в шаблонах, и сопоставляют их с ресурсами оперативной памяти на FPGA. Для получения дополнительной информации см. HDL Coder Block Library - Блоки оперативной памяти в документации.
По умолчанию HDL Coder предоставляет шаблон ОЗУ, который использует разрешение синхроимпульса для структур ОЗУ. В качестве альтернативы HDL Coder также предоставляет стиль типового шаблона, который не использует активацию синхроимпульса. Типовой шаблон стиля ОЗУ реализует включение часов с логикой в обертке вокруг ОЗУ. Управлять этим можно с помощью опции 'RAM Architecture' на панели глобальных настроек HDL Coder.
Вы можете захотеть использовать типовой стиль оперативной памяти, если ваш инструмент синтеза не поддерживает структуры оперативной памяти с поддержкой синхроимпульса и не может в результате сопоставить HDL с ресурсами оперативной памяти FPGA.
Пример hdlcoderfirram
является примером использования типового стиля оперативной памяти для проекта.
open_system('hdlcoderfirram'); open_system('hdlcoderfirram/FIR_RAM');
Стиль кодирования ОЗУ выбирается путем выбора требуемой Архитектуры ОЗУ на вкладке «Стиль кодирования» страницы Генерации HDL-кода Global Settings строения.
HDL Coder не предоставляет блок ROM, но можно легко создать его с помощью блока Интерполяционная таблица и блока Unit Delay из Simulink, как показано в следующем примере.
open_system('hdlcoderrom'); open_system('hdlcoderrom/ROM');
Следуйте этим руководствам по моделированию при построении ПЗУ из Simulink:
Для n-битного адреса задайте все записи данных Интерполяционной таблицы. В противном случае ваш инструмент синтеза может не сопоставить сгенерированный код с ОЗУ, и код может не совпадать с вашей моделью Simulink.
Поместите блоки Интерполяционная таблица и Unit Delay в одну иерархию модели.
Поддержка логики сброса ОЗУ варьируется между устройствами ПЛИС и инструментами синтеза. Для наилучшего результата синтеза подавьте генерацию логики сброса для блока Unit Delay, задав для его свойства 'ResetType' значение 'none' в диалоговом окне HDL Block Properties. Также установите свойство 'IgnoreDataChecking' равным 1 в параметрах конфигурации HDL- Испытательного стенда, чтобы игнорировать начальное несоответствие симуляции, вызванное подавлением логики сброса.
Если вы следуете предыдущим рекомендациям, большинство инструментов синтеза реализуют ПЗУ с помощью выделенных блоков ОЗУ в ПЛИС.
Если размер ОЗУ или ПЗУ в вашем проекте небольшой, ваши инструменты синтеза могут сопоставить сгенерированный код с регистрами вместо выделенных блоков ОЗУ для лучшей эффективности. Проверьте ваш инструмент синтеза на любое требование к минимальному размеру ОЗУ, и при желании, как вы можете переопределить это требование.