В этом примере показано, как использовать расширенный блок Altera ® DSP Builder с Coder™ HDL.
С помощью блока подсистемы расширенного набора блоков или подсистемы DSPBA Altera ® DSP Builder можно моделировать проекты с использованием блоков Simulink ® и Altera ®, а также автоматически создавать интегрированный код HDL. HDL Coder™ генерирует код HDL из блоков Simulink ® и использует Altera ® DSP Builder для генерации кода HDL из блоков подсистемы DSPBA.
В этом примере конструкция или подсистема генерации кода содержит две части: одну с собственными блоками Simulink ® и другую с блоками Altera ® DSP Builder Advanced. Блоки Altera ® группируются в подсистему DSPBA (подсистему hdlcoder_sldspba/SLandDSPBA/DSPBA). Altera ® DSP Builder оптимизирует эти блоки для Altera ® FPGA. В остальной части проекта блоки Simulink ® и Coder™ HDL предлагают множество функций проектирования на основе моделей, таких как распределенная конвейерная обработка и балансировка задержек, для оптимизации на уровне модели.
open_system('hdlcoder_sldspba'); open_system('hdlcoder_sldspba/SLandDSPBA');

Для использования блока усовершенствованной подсистемы Blockset Altera ® DSP Builder необходимо установить Altera ® Quartus II с Simulink ®. Для получения информации о совместимости версий см. документацию по кодеру HDL.
Для создания подсистемы DSPBA:
Поместите блоки Altera ® в одну подсистему и установите для ее архитектуры значение «Module» (значение по умолчанию).
Разместите блок устройства на верхнем уровне подсистемы. В подсистеме DSPBA может быть иерархия подсистем, но на верхнем уровне иерархии должен быть блок устройств.
open_system('hdlcoder_sldspba/SLandDSPBA/DSPBA Subsystem');

В этом примере диаграмма Stateflow генерирует канал и действительные сигналы для управления подсистемой DSPBA.
open_system('hdlcoder_sldspba/SLandDSPBA/Simulink Subsystem');

Для создания кода HDL можно использовать makehdl в командной строке или HDL Workflow Advisor. Для использования makehdl:
makehdl('hdlcoder_sldspba/SLandDSPBA');
Можно также создать тестовый стенд, смоделировать и синтезировать конструкцию так же, как для любой другой модели.
Моделирование Подсистемы DSPBA может не соответствовать поведению своего сгенерированного кода, когда действительный сигнал не утверждается при определенных обстоятельствах, такой как тогда, когда складной выбор и в hdlcoder_sldspba/SLandDSPBA/DSPBA Subsystem/ChannelIn и в hdlcoder_sldspba/SLandDSPBA/DSPBA Subsystem/ChannelOut включен. Несоответствие влияет на нижестоящую конструкцию Simulink и приводит к сбою моделирования испытательного стенда.
Чтобы увидеть несоответствие, вы можете повернуть настройку сворачивания в блоках
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');
