Этот пример показывает, как использовать Altera® DSP Builder Advanced Blockset с HDL Coder™.
Используя блок Subsystem Altera® DSP Builder Advanced Blockset или блок Subsystem DSPBA, позволяет образцовым блокам использования проектов и от Simulink® и от Altera®, и автоматически сгенерировать интегрированный HDL-код. HDL Coder™ генерирует HDL-код от блоков Simulink® и использует Altera® DSP Builder, чтобы сгенерировать HDL-код от блоков Subsystem DSPBA.
В этом примере проект или подсистема генерации кода, содержит две части: один с собственными блоками Simulink®, и один с блоками Altera® DSP Builder Advanced. Блоки Altera® сгруппированы в Подсистеме DSPBA (hdlcoder_sldspba/SLandDSPBA/DSPBA Подсистема). Altera® DSP Builder оптимизирует эти блоки для Altera® FPGAs. В остальной части проекта блоки Simulink® и HDL Coder™ предлагают много функций модельно-ориентированного проектирования, такой, как распределено конвейеризация и балансировка задержки, чтобы выполнить оптимизацию образцового уровня.
open_system('hdlcoder_sldspba'); open_system('hdlcoder_sldspba/SLandDSPBA');
В порядке использовать блок Subsystem Altera® DSP Builder Advanced Blockset, необходимо было настроить Altera® Quartus II с Simulink®. Для совместимости версий обратитесь к документации HDL Coder.
Создать Подсистему DSPBA:
Поместите блоки Altera® в одну подсистему и установите ее архитектуру на "Модуль" (значение по умолчанию).
Поместите блок Device в верхнем уровне подсистемы. У вас может быть иерархия подсистемы в Подсистеме DSPBA, но должен быть блок Device в верхнем уровне иерархии.
open_system('hdlcoder_sldspba/SLandDSPBA/DSPBA Subsystem');
В этом примере диаграмма Stateflow генерирует канал и допустимые сигналы управлять подсистемой DSPBA.
open_system('hdlcoder_sldspba/SLandDSPBA/Simulink Subsystem');
Можно использовать или makehdl в командной строке или HDL Workflow Advisor, чтобы сгенерировать HDL-код. Использовать makehdl:
makehdl('hdlcoder_sldspba/SLandDSPBA');
Можно также сгенерировать испытательный стенд, моделировать и синтезировать проект, как вы были бы для любой другой модели.
Симуляция Подсистемы DSPBA не может совпадать с поведением своего сгенерированного кода, когда допустимый сигнал не утверждается при определенных обстоятельствах, такой как тогда, когда складная опция и в hdlcoder_sldspba/SLandDSPBA/DSPBA Subsystem/ChannelIn и в hdlcoder_sldspba/SLandDSPBA/DSPBA Subsystem/ChannelOut включена. Несоответствие влияет на нисходящий проект Simulink и вызывает отказ симуляции испытательного стенда.
Чтобы видеть несоответствие, можно повернуть установку сворачивания на блоках ChannelIn и ChannelOut:
set_param('hdlcoder_sldspba/SLandDSPBA/DSPBA Subsystem/ChannelIn', 'FoldingEnabled', 1); set_param('hdlcoder_sldspba/SLandDSPBA/DSPBA Subsystem/ChannelOut', 'FoldingEnabled', 1);
Затем сгенерируйте HDL-код и испытательный стенд снова:
makehdl('hdlcoder_sldspba/SLandDSPBA'); makehdltb('hdlcoder_sldspba/SLandDSPBA');
После симуляции сгенерированного кода и испытательного стенда, вы видите, что выходные параметры от кодера HDL совпадают со справочными данными только, когда допустимый сигнал утверждается.
Как сообщение от испытательного стенда указывает, несоответствие ожидается.
Чтобы избежать этого несоответствия симуляции, вставьте активированную подсистему в выходных сигналах Подсистемы DSPBA, прежде чем они достигнут части Simulink вашего проекта или выходных портов общего замысла. Следующая подсистема показывает, как соединить сигналы с активированной подсистемой.
open_system('hdlcoder_sldspba/SLandDSPBA2');