С помощью программного обеспечения HDL Coder™ можно реализовать в своей модели упрощенный, потоковый протокол. Программное обеспечение генерирует AXI4-Stream интерфейсов в ядре IP.
Чтобы сопоставить тестируемый проект (DUT) с AXI4-Stream интерфейсами, используйте упрощенный протокол AXI4-Stream. Вы не должны моделировать фактический протокол AXI4-Stream и вместо этого можете использовать упрощенный протокол. Когда вы запускаете IP Core Generation
рабочий процесс, сгенерированный HDL-код содержит логику оболочки, которая переводится между упрощенным протоколом и фактическим протоколом AXI4-Stream. Упрощенный протокол требует меньшего количества сигналов протокола, облегчает механизм квитирования между действительными и готовыми сигналами и поддерживает пакеты произвольных длин.
Используйте упрощенный протокол AXI4-Stream для записи и чтения транзакций. Когда вы хотите сгенерировать AXI4-Stream интерфейс в вашем IP-ядре, в вашем интерфейсе DUT реализуйте следующие сигналы:
Данные
Действительный
Опционально, когда вы сопоставляете скалярные порты DUT с AXI4-Stream интерфейсом, можно смоделировать следующие сигналы:
Готов
Другие сигналы протокола, такие как:
TSRTB
TKEEP
TLAST
TID
TDEST
TUSER
Когда сигнал данные действителен, задается сигнал Valid. Эта схема иллюстрирует отношение данных и действительных сигналов согласно упрощенному протоколу потоковой передачи. Когда вы запускаете рабочий процесс генерации ядра IP, HDL Coder добавляет модуль потокового интерфейса в ядре IP HDL, который переводит упрощенный протокол в полный протокол AXI4-stream. В этой схеме синхросигнал представлен clk.
Когда вы хотите симулировать сигнал данных как поток выборок на контуре DUT, моделируйте в основанном на выборке режиме. В основанном на выборке режиме можно смоделировать сигнал данных как скаляр или вектор. Если вы моделируете сигнал данных как вектор, установите значение параметра Sample Packing Dimension равным All. В сгенерированном HDL-коде векторные элементы упаковываются вместе, и весь вектор обрабатывается как одна выборка. Способ упаковки данных можно определить с помощью режима упаковки. См. «Размерность упаковки образца».
Заключайте алгоритм, который обрабатывает сигнал Данных при помощи включенной подсистемы.
Управляйте портом включения включенной подсистемы с помощью сигнала Valid.
Например, можно непосредственно подключить сигнал Valid к порту enable.
Можно также использовать контроллер в DUT, который генерирует сигнал включения для включенной подсистемы.
Обратное давление используется нисходящими компонентами, чтобы сообщить вышестоящим компонентам, что они не готовы к приему данных. Интерфейсы AXI4-Stream в вашем DUT могут опционально включать сигнал Ready.. Используйте сигнал Ready, чтобы:
Применить обратное давление в AXI4-Stream подчиненном интерфейсе. Например, сбрасывайте сигнал Ready, когда нисходящий компонент не готов к приему данных.
Ответьте на давление в главном интерфейсе AXI4-Stream. Для примера остановите отправку данных, когда сигнал Ready нисходящего компонента будет низким.
Когда вы используете один потоковый канал, по умолчанию HDL Coder генерирует сигнал Ready и логику для обработки заднего давления. Логика давления связывает сигнал Ready с сигналом DUT Enable. Когда главный сигнал Ready входа низок, DUT отключается, а выход ведомый сигнал Ready управляется низко. Потому что HDL Coder генерирует логику обратного давления и сигнал Ready, когда вы используете один потоковый канал, сигнал Ready опциональен, и вам не нужно моделировать этот сигнал в порту DUT.
Когда вы используете несколько потоковых каналов, HDL Coder генерирует сигнал готовности и не генерирует логику обратного давления. В DUT с несколькими потоковыми каналами:
Главный канал игнорирует сигнал Ready от нисходящих компонентов.
Сигнал Ready подчиненного канала высок, что заставляет компоненты в восходящем направлении продолжать отправку данных.
Отсутствие логики обратного давления может привести к сбросу данных. Чтобы избежать потери данных и применить обратные давления на ведомом интерфейсе или ответить на обратные давления от главного интерфейса в вашем проекте:
Моделируйте сигнал Ready для каждого дополнительного интерфейса потока.
Сопоставьте смоделированный сигнал Ready с портом DUT для дополнительного интерфейса.
Когда вы не моделируете сигнал Ready, задача Set Target Interface отображает предупреждение, которое предоставляет имена интерфейсов, которые требуют порта Ready. Если ваш проект не требует применения или ответа на задние давления, игнорируйте это предупреждение.
Если вы моделируете сигнал Ready в интерфейсах AXI4-Stream, ваш главный интерфейс игнорирует сигналы данные и Valid через один такт после отмены сигнала Ready. Вы можете начать отправлять данные и Valid, как только сигнал Ready будет утвержден. После удаления сигнала Ready можно отправить еще один сигнал данные и Valid.
Если вы не моделируете сигнал Ready, HDL Coder генерирует сигнал и связанную логику давления. Эта схема иллюстрирует взаимосвязь между данными, Valid и Ready согласно упрощенному протоколу потоковой передачи. Когда вы запускаете рабочий процесс генерации ядра IP, HDL Coder добавляет модуль потокового интерфейса в ядре IP HDL, который переводит упрощенный протокол в полный протокол AXI4-stream. В этой схеме синхросигнал представлен clk.
Для примера, если у вас есть первый в первом (FIFO) в DUT, чтобы хранить систему координат данных, для применения обратного давления к вышестоящему компоненту, моделируйте сигнал Ready на основе сигнала FIFO Full.
Примечание
Если вы активируете балансировку задержки, кодер вставляет одну или несколько задержек на сигнал Ready. Отключите балансировку задержки для пути сигнала Ready.
Вы можете опционально смоделировать другие сигналы протокола AXI4-Stream. Если вы моделируете только необходимые сигналы данные и Valid, кодер генерирует сигналы TREADY И TLAST и AXI4-Stream протокола.
Если вы не моделируете сигнал TLAST, кодер генерирует программируемый регистр в ядре IP, чтобы вы могли задать размер пакета данных. Подробная информация о программируемом регистре размера пакета содержится в отчете о генерации ядра IP.
Когда вы хотите симулировать сигнал данных как система координат на контуре DUT, моделируйте в основанном на кадрах режиме. В режиме, основанном на кадрах, моделируйте сигнал данных как вектор и устанавливайте значение Sample Packing Dimension на None. См. «Размерность упаковки образца».
Основанный на кадрах режим полезен для моделирования и симуляции взаимодействия системы между оборудованием и программным обеспечением и генерации кода для драйвера программного обеспечения.
Когда вы сопоставляете порты векторов с AXI4-Stream интерфейсами:
Соедините каждый входной порт данных вектора DUT с блоком Serializer1D.
Блок Serializer1D должен иметь порт ValidOut, а значение Ratio должно быть задано как вектор ширина бита.
Соедините каждый порт выходов вектора DUT с блоком Deserializer1D.
Блок Deserializer1D должен иметь порт ValidIn, а значение Ratio должно быть задано как вектор ширина бита.
Соедините каждый скалярный порт, который преобразуется в AXI4-Lite интерфейс, с блоком Rate Transition.
Отношение в блоке Rate Transition должно совпадать с отношением в блоках Serializer1D и Deserializer1D.
Каждый скалярный порт, который преобразуется в внешний порт, должен иметь тот же шаг расчета, что и подсистема алгоритма потоковой передачи.
Подсистема алгоритма потоковой передачи следует тому же шаблону моделирования данных и Valid, что и шаблон для отображения скалярных портов на AXI4-Stream интерфейсы. Смотрите Данные Модели и Действительные Сигналы в Simulink.
Чтобы сопоставить векторные порты с AXI4-Stream интерфейсами, откройте hdlcoder_sfir_fixed_vector.slx
модель. В hdlcoder_sfir_fixed_vector.slx
модель, блок symmetric_fir является подсистемой алгоритма потоковой передачи.
Когда вы запускаете IP Core Generation
рабочий процесс, можно сопоставить несколько скалярных портов DUT с AXI4-Stream ведущими и AXI4-Stream ведомыми каналами. Когда вы используете векторные порты, можно сопоставить порты не более чем с одним AXI4-Stream ведущим каналом и одним AXI4-Stream ведомым каналом.
Примечание
Если вы используете несколько потоковых каналов, HDL Coder генерирует сигнал Ready, но не генерирует логику обратного давления. Если вы хотите, чтобы ваш проект обработал давление назад, смоделируйте сигнал Ready в вашем проекте.
Дополнительные сведения см. в разделе Генерация IP-ядра HDL с несколькими AXI4-Stream и AXI4 главными интерфейсами.
Когда вы запускаете рабочий процесс генерации ядра IP, используйте программное обеспечение HDL Coder для проектов с несколькими частотами дискретизации. Когда вы сопоставляете порты интерфейса с интерфейсами AXI4-Stream Master или AXI4-Stream Slave, чтобы использовать несколько частот дискретизации, сопоставляйте порты DUT, которые сопоставлены с этими AXI4 интерфейсами, чтобы запускаться с самой быстрой скоростью проекта или со скоростью медленнее, чем скорость проектирования.
HDL Coder запускает порты DUT, сопоставленные с AXI4-Stream интерфейсами master и slave со скоростью медленнее, чем скорость проекта модели:
Установка допустимого сигнала главного канала AXI4-Stream на высокое значение в первом цикле каждый N тактов. Для примера, если скорость проекта в восемь раз быстрее, чем порты DUT с медленной частотой, допустимый сигнал высок для первого такта каждые восемь тактов.
Утверждение обратного давления на AXI4-Stream подчиненном интерфейсе, чтобы убедиться, что входящие данные передаются со скоростью одного кадра данных каждый N тактов. Для примера, если скорость проекта в восемь раз быстрее, чем порты DUT с медленной частотой, первая система координат передаётся в первом цикле синхроимпульса, второй системы координат в девятом цикле синхроимпульса и так далее.
Когда вы сопоставляете порт DUT интерфейса AXI4-Stream с самой быстрой частотой в проекте, допустимый сигнал высок всегда, убеждаясь, что нет обратного давления на AXI4-Stream ведомом интерфейсе.
При разработке моделей, которые имеют несколько частот дискретизации, все порты DUT AXI4-Stream сопоставленные с основным интерфейсом, должны запускаться с одной и той же частотой. Все порты DUT AXI4-Stream сопоставленные ведомым интерфейсом, должны работать с одинаковой скоростью.
Для получения дополнительной информации смотрите Multirate IP Core Generation.
Когда вы запускаете рабочий процесс генерации IP-ядра в модели, которая имеет векторные данные, можно задать, как векторные данные обрабатываются как выборка или как система координат при помощи Sample Packing Dimension. Когда векторные данные обрабатываются как выборка, можно задать, как векторные элементы упаковываются вместе, используя опцию Packing mode.
Укажите, рассматриваются ли векторные данные как выборка или как система координат.
Ничего. Это значение по умолчанию. Когда вы задаете None, векторы обрабатываются как системы координат, а векторные элементы транслируются один за другим. Для примера, когда вход является вектором шесть на один в первом тактовом цикле, первый векторный элемент потокосигнализируется, второй векторный элемент, во втором тактовом цикле и так далее. Модель должна содержать блок Serializer для входов и блок Deserializer для выходов, чтобы использовать этот режим. Если для Packing mode задано значение None, Sample Packing Dimension недоступен.
Все. Когда вы задаете All, векторы упаковываются вместе и транслируются в один такт. Для примера, когда вход является вектором шесть на один, все векторные элементы упаковываются вместе и транслируются в один такт. В этом случае можно задать способ упаковки векторных элементов при помощи опции Packing mode.
Задайте, как векторные элементы упаковываются вместе, когда для Sample Packing Dimension задано значение All. Режим упаковки применяется к AXI4-Stream ведомым и ведущим каналам. На главном канале данные упаковываются с помощью бит Aligned или Power of 2 Aligned. В подчиненном канале данные распаковываются на основе формата упаковки главного канала.
Bit Aligned. В этом режиме векторные элементы упаковываются непосредственно друг рядом с другом. Если ширина упакованного бита меньше, чем ширина AXI4-Stream канала, то упакованные данные заполняются нулями, чтобы соответствовать ширине канала.
Для примера:
AXI4-Stream канала составляет 256 бит.
Векторы имеют длину 30 бит, и существует 4 векторные системы координат. Общая ширина данных составляет 120 бит.
Когда в режиме упаковки задано значение Bit Aligned, данные AXI4-Stream упаковываются как на этой схеме
Степень выравнивания 2. В этом режиме векторные элементы сначала заполняются нулями до самой близкой степени двойки контуров. Затем заполненные элементы упаковывают вместе. Если битовая ширина упакованного вектора меньше, чем ширина AXI4-Stream канала, то упакованные данные заполняются нулями, чтобы соответствовать ширине канала.
Для примера:
AXI4-Stream канала составляет 256 бит.
Векторы имеют длину 30 бит, и существует 4 векторные системы координат. Общая ширина данных составляет 120 бит.
Когда режим упаковки установлен в Power of 2 Aligned, AXI4-Stream данные упаковываются, как показано на этой схеме:
Каждый вектор элемент 30 ширины бита дополнен нулями ширины бита два, чтобы расширить его до 32, ближайшая степень двойки контура.
Когда вы сопоставляете скалярные или векторные порты DUT с AXI4-Stream интерфейсами:
Xilinx® Zynq®-7000 или Intel® Куарт® Прайм, должно быть, ваша целевая платформа.
Силинкс-Вивадо® или Intel Quartus Prime должен быть вашим инструментом синтеза.
Processor/FPGA synchronization должен быть Free Running.
Когда вы используете основанное на кадрах моделирование, вы не можете использовать другие сигналы протокола, кроме данные и Valid. Для примера Ready и TLAST не поддерживаются.