Использование Altera DSP Builder Advanced Библиотеки с HDL Coder

В этом примере показано, как использовать Altera ® DSP Builder Advanced Blockset с HDL- Coder™.

Введение

Использование блока Altera ® DSP Builder Advanced Blockset Subsystem или блока DSPBA Subsystem позволяет моделировать проекты с помощью блоков Simulink ® и Altera ®, и автоматически генерировать интегрированный HDL-код. HDL Coder™ генерирует HDL-код из блоков Simulink ® и использует Altera ® DSP Builder для генерации HDL-кода из блоков Подсистемы DSPBA.

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

open_system('hdlcoder_sldspba');
open_system('hdlcoder_sldspba/SLandDSPBA');

Setup расширенной библиотеки Altera ® DSP Builder

Чтобы использовать блок Altera ® DSP Builder Advanced Blockset Subsystem, необходимо настроить Altera ® Quartus II с Simulink ®. Для получения информации о совместимости версий см. документацию HDL Coder.

Создайте подсистему расширенной библиотеки Altera ® DSP Builder

Создание подсистемы DSPBA:

  1. Поместите блоки Altera ® в одну подсистему и установите ее архитектуру на «Module» (значение по умолчанию).

  2. Поместите блок Device на верхний уровень подсистемы. Вы можете иметь иерархию подсистем в Подсистеме DSPBA, но должен быть блок Device на верхнем уровне иерархии.

open_system('hdlcoder_sldspba/SLandDSPBA/DSPBA Subsystem');

Компоненты Simulink ®

В этом примере диаграмма Stateflow генерирует канал и действительные сигналы для управления подсистемой DSPBA.

open_system('hdlcoder_sldspba/SLandDSPBA/Simulink Subsystem');

Сгенерируйте HDL-код

Для генерации HDL-кода можно использовать makehdl в командной строке или HDL Workflow Advisor. Чтобы использовать makehdl:

makehdl('hdlcoder_sldspba/SLandDSPBA');

Можно также сгенерировать тестовый график, моделировать и синтезировать проект так же, как для любой другой модели.

Несоответствие симуляции указателя, когда действительный сигнал не утвержден

Симуляция Подсистемы DSPBA может не совпадать с поведением ее сгенерированного кода, когда действительный сигнал не утвержден при определенных обстоятельствах, например, когда включена опция сворачивания как в hdlcoder_sldspba/SLandDSPBA/DSPBA Подсистеме/ChannelIn, так и в hdlcoder_sldspba/SLandDSPBA/DSPBA Подсистеме/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 Subsystem, прежде чем они достигнут части Simulink вашего проекта или выходных портов общего проекта. Следующая подсистема показывает, как соединить сигналы с включенной подсистемой.

open_system('hdlcoder_sldspba/SLandDSPBA2');