Образцовый проект для основной интерфейсной генерации AXI4

Для проектов, которые требуют больших наборов данных доступа от внешней памяти, смоделируйте свой алгоритм с упрощенным Основным протоколом AXI4. Когда вы запускаете рабочий процесс IP Core Generation, HDL Coder™generates ядро IP с Основными интерфейсами AXI4. Интерфейс AXI4 Master может передать между вашим проектом и контроллером внешней памяти IP при помощи Основного протокола AXI4. Используйте интерфейс AXI4 Master когда ваш:

  • Разработайте целевые приложения обработки видеоданных сверхкадра. Можно сохранить данные изображения во внешней памяти, такой как память DDR3 на борту, и затем считать или записать изображения в проект пакетным способом для высокоскоростной обработки.

  • Алгоритм должен получить доступ к данным оперативной памяти в не передающем потоком произвольном шаблоне.

  • Ядро IP DUT должно управлять другим дюйм/с с ведомым интерфейсом AXI4 в системе. Эта возможность особенно полезна в автономных устройствах FPGA.

Упрощенный основной протокол AXI4 - канал записи

Можно использовать упрощенный Основной протокол AXI4, чтобы сопоставить с Основными интерфейсами AXI4. Используйте упрощенный Основной протокол записи AXI4 для транзакции записи и упрощенный Основной протокол чтения AXI4 для транзакции чтения.

Эти данные показывают схему синхронизации для сигналов, что вы моделируете в интерфейсах ввода и вывода DUT для Основной транзакции записи AXI4.

DUT ожидает wr_ready, чтобы стать высоким, чтобы инициировать запрос записи. Когда wr_ready становится высоким, DUT может отослать запрос записи. Запрос записи состоит из сигналов Write Master to Slave bus и Data. Эта шина состоит из wr_len, wr_addr и wr_valid. wr_addr задает начальный адрес, в который DUT хочет записать. Сигнал wr_len соответствует количеству элементов данных в этой транзакции записи. Data может быть отправлен, пока wr_valid высок. Когда wr_ready становится низким, DUT должен прекратить отправлять данные в одном такте, и сигнал Data становится недопустимым. Если DUT продолжает отправлять данные после того, как один такт, данные будут проигнорированы.

Выходные сигналы

Смоделируйте Data и сигналы Write Master to Slave bus в DUT интерфейс вывода.

  • Данные: данные, которые вы хотите передать, допустимый каждый цикл транзакции.

  • Write Master to Slave bus, который состоит из:

    • wr_addr: Начальный адрес транзакции записи, которая выбирается в первом цикле транзакции.

    • wr_len: количество значений данных, которые вы хотите передать, выбранный в первом цикле транзакции.

    • wr_valid: Когда этот управляющий сигнал становится высоким, он указывает, что сигнал Data, выбранный при выводе, допустим.

Входные сигналы

Смоделируйте Write Slave to Master bus, который состоит из:

  • wr_ready: Этот сигнал соответствует противодавлению от ведомого IP оперативная или внешняя память. Когда этот управляющий сигнал идет высоко, он указывает, что данные могут быть отправлены. Когда wr_ready является низким, DUT должен прекратить отправлять данные в одном такте. Можно также использовать сигнал wr_ready определить, может ли DUT сразу отправить второй пакетный сигнал после того, как первый пакетный сигнал был отправлен. Несколько пакетных сигналов поддерживаются, что означает, что сигнал wr_ready остается высоким, чтобы сразу принять второй пакет после того, как последний элемент первого пакета был принят.

  • wr_bvalid (дополнительный сигнал): сигнал Ответа от ведомого ядра IP, что можно использовать в целях диагноза. Сигнал wr_bvalid становится высоким после того, как межсоединение AXI4 примет каждую пакетную транзакцию. Если wr_len больше, чем 256, Основной модуль записи AXI4 разделяет большой пакетный сигнал в пакеты 256 размеров. wr_bvalid становится высоким для каждого пакета 256 размеров.

  • wr_bresp (дополнительный сигнал): сигнал Ответа от ведомого ядра IP, что можно использовать в целях диагноза. Используйте этот сигнал с сигналом wr_bvalid.

  • wr_complete (дополнительный сигнал): Управляющий сигнал, который, когда остается высоким для одного такта, указывает, что транзакция записи завершилась. Этот сигнал утверждает в последнем wr_bvalid пакета.

Упрощенный основной протокол AXI4 - канал чтения

Эти данные показывают схему синхронизации для сигналов, что вы моделируете в интерфейсах ввода и вывода DUT для Основной транзакции чтения AXI4. Эти сигналы включают Data, Read Master to Slave Bus и Read Slave to Master Bus.

DUT ожидает rd_aready, чтобы стать высоким, чтобы инициировать запрос чтения. Когда rd_aready высок, DUT может отослать запрос чтения. Запрос чтения состоит из rd_addr, rd_len и сигналов rd_avalid Read Master to Slave bus. Ведомый IP или внешняя память отвечают на запрос чтения путем отправки Data в каждом такте. Сигнал rd_len соответствует количеству значений данных, чтобы читать. DUT может получить Data, пока rd_dvalid высок.

Считайте запрос

Чтобы смоделировать запрос чтения, в DUT интерфейс вывода, моделируют Read Master to Slave bus, который состоит из:

  • rd_addr: Начальный адрес для транзакции чтения, которая выбирается в первом цикле транзакции.

  • rd_len: количество значений данных, которые вы хотите считать, выбранный в первом цикле транзакции.

  • rd_avalid: Управляющий сигнал, который задает, допустим ли запрос чтения.

В интерфейсе входа DUT реализуйте сигнал rd_aready. Этот сигнал является частью Read Slave to Master bus и указывает, когда принять запросы чтения. Можно контролировать сигнал rd_aready определить, может ли DUT отправить последовательные пакетные запросы. Когда rd_aready становится высоким, он указывает, что DUT может отправить запрос чтения за следующий такт.

Считайте ответ

В интерфейсе входа DUT смоделируйте сигналы Read Slave to Master bus и Data.

  • Данные: данные, которые возвращены в запрос чтения.

  • Read Master to Slave bus, который состоит из:

    • rd_dvalid: Управляющий сигнал, который указывает, что Data, возвращенный в запрос чтения, допустим.

    • rd_rvalid (дополнительный сигнал): сигнал ответа от ведомого ядра IP, что можно использовать в целях диагноза.

    • rd_rresp (дополнительный сигнал): сигнал Ответа от ведомого ядра IP, которое указывает на состояние транзакции чтения.

В DUT интерфейс вывода можно опционально реализовать сигнал rd_dready. Этот сигнал является частью Read Master to Slave bus и указывает, когда DUT может начать принимать данные. По умолчанию, если вы не сопоставляете этот сигнал с Ведущим интерфейсом чтения AXI4, сгенерированное ядро IP HDL связывает rd_dready с логикой высоко.

Вычисление индексного регистра

Для ядер IP, которые вы генерируете, HDL Coder включает индексный регистр, чтобы поддержать авторскую разработку драйвера для обоих Основное чтение AXI4 и каналы записи. Индексный регистр добавляется к адресу, который задан портом DUT ADDR, чтобы сформировать Основной адрес AXI4. Эта возможность позволяет драйверу использовать способ адресации, который программирует адрес фиксированного регистра с базовым адресом буфера. Запрограммированный адрес вместе с портом DUT ADDR используется, чтобы индексировать буфер. По умолчанию регистры принимают значение нуля, если вы не используете их.

Моделирование для основных интерфейсов AXI4

Можно смоделировать алгоритм с Данными и Основными сигналами протокола AXI4 в портах DUT и затем сопоставить сигналы с Основными интерфейсами AXI4. Чтобы изучить, как смоделировать ваш алгоритм DUT для отображения интерфейса AXI4 Master, откройте эту модель Simulink®. Подсистема DUT содержит простой алгоритм, который считывает данные из DDR и записывает обратно к различному адресу в памяти DDR.

Дважды кликните Подсистему DUT. Модели DDR_Access_Controller Subsystem Основные каналы чтения и записи AXI и имеют Простой Двухпортовый RAM, который вычисляет сигнал wr_data. Если вы дважды кликаете Подсистему DDR_Access_Controller, вы видите два блока Subsystem Обнаружения Ребра, которые генерируют эти два, запускают импульсы как вход к каждому блоку MATLAB function. Модели Edge Detection Subsystem и DDR Read Controller MATLAB Function транзакция чтения. Другие модели Edge Detection Subsystem и DDR Write Controller MATLAB Function транзакция записи. Можно изменить этот проект, чтобы смоделировать только транзакцию записи или транзакцию чтения при помощи одной Подсистемы Обнаружения Ребра и соответствующего блока MATLAB function.

Считайте канал

Контроллер Чтения DDR моделируется как конечный автомат с четырьмя состояниями: INIT, НЕАКТИВНЫЙ, READ_BURST_START и DATA_COUNT. Состояние INIT инициализирует сигналы чтения и входные сигналы RAM. Когда сигнал запуска идет высоко, конечный автомат переключается на Состояние ожидания, и затем ожидает сигнала rd_aready стать высоким. Когда rd_aready становится высоким, переходы конечного автомата к состоянию READ_BURST_START и DUT начинает считывать данные. Конечный автомат затем безусловно переключается на DATA_COUNT, утверждают, и продолжает считывать данные, пока rd_avalid не идет низко.

Запишите канал

Контроллер Записи DDR моделируется подобный каналу Рида как конечный автомат с четырьмя состояниями: НЕАКТИВНЫЙ, WRITE_BURST_START, DATA_COUNT и ACK_WAIT. DUT находится в Состоянии ожидания и затем переключается на состояние WRITE_BURST_START, где это ожидает сигнала wr_ready. Когда wr_ready становится высоким, конечный автомат переключается на DATA_COUNT, утверждают, и начинает записывать данные. Данные допустимы, когда wr_valid высок. DUT продолжает записывать данные, когда wr_ready высок. Когда wr_ready становится низким, конечный автомат переключается на ACK_WAIT, утверждают, и затем ожидает готового сигнала инициировать следующую транзакцию записи.

Чтобы видеть упрощенный Основной протокол AXI4 в действительности, моделируйте модель. Если вам установили DSP System Toolbox™, можно просмотреть и анализировать результаты в Logic Analyzer.

Можно использовать рабочий процесс Генерации Ядра IP, чтобы сгенерировать ядро IP HDL с интерфейсом AXI4 Master. Если вам установили HDL Verifier™, и вы используете плату Xilinx Zynq ZC706, то можно интегрировать ядро IP в Систему По умолчанию с Внешним исходным проектом доступа к памяти DDR3.

Образцовые проекты с несколькими частотами дискретизации

Программное обеспечение HDL Coder поддерживает проекты с несколькими частотами дискретизации, когда вы запускаете рабочий процесс Генерации Ядра IP. Когда вы сопоставляете интерфейсные порты с Основными интерфейсами AXI4, чтобы использовать несколько частот дискретизации, гарантировать, что порты DUT, которые сопоставляют с этими интерфейсами AXI4, запущенными на самом быстром уровне проекта после генерации HDL-кода.

Чтобы узнать больше, смотрите Многоскоростную Генерацию Ядра IP.

Исходные проекты для интегрирования ядра IP

Можно интегрировать сгенерированное ядро IP HDL с Основными интерфейсами AXI4 в эти исходные проекты HDL Coder:

  • Default System with External DDR3 Memory Access: Когда вашей целевой платформой является Xilinx Zynq ZC706 evaluation kit.

  • Default System with External DDR4 Memory Access: Когда вашей целевой платформой является Altera Arria10 SoC development kit.

Чтобы использовать эти исходные проекты, необходимо было установить HDL Verifier™. Эти данные показывают блок-схему высокого уровня архитектуры исходного проекта.

В этой архитектуре блок HDL DUT IP соответствует ядру IP, которое сгенерировано от рабочего процесса IP Core Generation. Другие блоки в архитектуре представляют предопределенный исходный проект, который состоит из основанного на MATLAB® JTAG AXI Master IP, который обеспечивается HDL Verifier. После того, как вы запустите проект FPGA на плате, с помощью JTAG AXI Master IP, можно использовать входные данные в MATLAB, чтобы инициализировать встроенную внешнюю память DDR3. Ядро HDL DUT IP читает входные данные из внешней памяти через интерфейс AXI4 Master. Ядро IP затем выполняет вычисление алгоритма и пишет результат в память DDR3 через интерфейс AXI4 Master. JTAG AXI Master IP может считать результат памяти DDR3 и затем проверить результат в MATLAB.

Используя метод addAXI4MasterInterface класса hdlcoder.ReferenceDesign, можно интегрировать ядро IP с Основным Интерфейсом AXI4 в собственный исходный проект.

Ограничения

  • Synthesis tool: Должен быть Xilinx Vivado или Altera QUARTUS II. Xilinx ISE не поддержан.

  • Target workflow: Используйте рабочий процесс IP Core Generation. Чтобы запустить рабочий процесс, откройте HDL Workflow Advisor из своего алгоритма DUT в Simulink®. MATLAB к рабочему процессу HDL не поддержан.

  • Processor/FPGA synchronization: Должен быть режим Free running.

  • Поддержка типов данных: Для порта Data используйте скалярные типы данных. Векторные типы данных не поддержаны.

Связанные примеры

Больше о