Для проектов, которые требуют больших наборов данных доступа от внешней памяти, смоделируйте свой алгоритм с упрощенным Основным протоколом AXI4. Когда вы запускаете IP Core Generation
рабочий процесс, HDL Coder™generates ядро IP с Основными интерфейсами AXI4. Интерфейс AXI4 Master может передать между вашим проектом и контроллером внешней памяти IP при помощи Основного протокола AXI4. Используйте интерфейс AXI4 Master когда ваш:
Спроектируйте целевые приложения обработки видеоданных сверхкадра. Можно сохранить данные изображения во внешней памяти, такой как память DDR3 на борту, и затем считать или записать изображения в проект пакетным способом для высокоскоростной обработки.
Алгоритм должен получить доступ к данным оперативной памяти в не передающем потоком произвольном шаблоне.
Ядро IP DUT должно управлять другим дюйм/с с ведомым интерфейсом AXI4 в системе. Эта возможность особенно полезна в автономных устройствах FPGA.
Можно использовать упрощенный Основной протокол AXI4, чтобы сопоставить с Основными интерфейсами AXI4. Используйте упрощенный Основной протокол записи AXI4 в транзакции записи и упрощенный Основной протокол чтения AXI4 для транзакции чтения.
Этот рисунок показывает схему синхронизации для сигналов, что вы моделируете в интерфейсах ввода и вывода DUT для Основной транзакции записи AXI4.
DUT ожидает wr_ready
стать высоким, чтобы инициировать запрос записи. Когда wr_ready
становится высоким, DUT может отослать запрос записи. Запрос записи состоит из Data
и Write Master to Slave bus
сигналы. Эта шина состоит из 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 интерфейс выхода.
Data
: Данные, которые вы хотите передать, допустимый каждый цикл транзакции.
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
из пакета.
Этот рисунок показывает схему синхронизации для сигналов, что вы моделируете в интерфейсах ввода и вывода 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 смоделируйте Data
и Read Slave to Master bus
сигналы.
Data
: Данные, которые возвращены в запрос чтения.
Read Slave to Master 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 в портах 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 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
порт, используйте скалярные типы данных. Векторные типы данных не поддержаны.