Этот пример демонстрирует, как анализировать пропускную способность памяти для приложения SoC. В интенсивно использующих память аппаратных проектах у вас может быть несколько ведущих устройств, получающих доступ к общей памяти DDR. В таких случаях важно анализировать динамическое требование всех ведущих устройств памяти, чтобы вести проект алгоритма и аппаратное требование платы для развертывания. Вы будете моделировать трафик памяти с помощью генераторов трафика Памяти и анализировать использование пропускной способности и проверять его на оборудовании.
Поддерживаемые аппаратные платформы
Оценочный комплект Xilinx Zynq® ZC706
Макетная плата Xilinx® Kintex® 7 KC705
Рассмотрите заявление, выполняющее обработку HD-видео в FPGA на оперативном вводе и выводе. Это приложение требует четырех потребителей памяти, соперничающих за доступ DDR одновременно. Ведущее устройство памяти 1 запись, поступающая кадры видео ведущему устройству памяти и Памяти 4 кадра видео чтений из памяти и подключения, чтобы вывести отображение. Ведущее устройство памяти 2 считывает данные из памяти для обработки в FPGA, и ведущее устройство памяти 3 записывает данные обратно к памяти.
Каждое ведущее устройство работает с HD-видео со следующими характеристиками:
Формат кадра: 1920x1080p
Размер пикселя: 2 байта (формат YCBCr)
Период кадра: 1/60 = 16,67 мс (для 60 кадр/с)
Данные о кадре: 1920x1080x2 = 4.1472 МБ
Примите, что характеристики контроллера памяти следующие:
Частота часов: 200 МГц
Ширина данных: 32 бита
Разорвите длину Транзакции: 128
Создайте модель с помощью блоков Генератора Трафика Контроллера памяти и Памяти, чтобы смоделировать четыре ведущих устройства памяти.
Контроллер памяти: Установите параметры контроллера памяти в Параметрах конфигурации> Аппаратная реализация> Ресурсы Целевого компьютера. Под вкладкой FPGA Design (Mem Controllers), набор частота часов к 200 МГц и ширина данных к 32. В соответствии с Проектом FPGA (отладка) вкладка, выберите 'Include AXI Interconnect Monitor'.
Генераторы Трафика памяти 1 & 4: характеристики трафика Памяти для Ведущего устройства 1 и 4 являются тем же самым, когда они представляют потоковую передачу кадров видео к и из памяти. Установите характеристики трафика памяти для ведущих устройств 1 и 4 можно следующим образом:
Разорвите размер (в байтах): Разорвите длину транзакции * (Ширина/8 данных) = 128* 32/8 = 512
Общие пакетные запросы: 4 данных о кадрах для симуляции = 4 * размер данных/Пакета о Трафике = 4*8100 = 32400
Разорвитесь предают время доступа земле: Структурируйте Период/Номер Пакетных запросов = 16.67e-3/8100 = 20.58e-7 секунда
Установите в Первый пакетный раз & Случайное время между пакетом = 20.58e-7 как постоянный поток данных, поскольку данные постоянно получаются на постоянном уровне.
Пропускная способность памяти: Структурируйте Данные / Период Кадра = 4.1476/16.67e-3 = 248.8 Мбит/с
Обновите маску блока Memory Traffic Generator1 и Memory Traffic Generator4 с вышеупомянутыми значениями. Установите тип запроса для Трафика Памяти Generator1 со средством записи и Трафиком Памяти Generator4 с читателем. Очиститесь, 'Ожидают пакета сделанная' опция в обоих блоки, когда эти ведущие устройства представляют ведущие устройства с непрерывным трафиком то есть Камера HDMI и отображение.
Генераторы Трафика памяти 2 & 3: Генератор Трафика Памяти 2 представляет читателя для Генератора Трафика Алгоритма и Памяти FPGA 3, представляют средство записи из Алгоритма FPGA.
Разорвите размер (в байтах): Разорвите длину транзакции * (Ширина/8 данных) = 128* 32/8 = 512
Общие пакетные запросы: 4 * размер данных/Пакета о Трафике = 4*8100 = 32400 (4 данных о кадрах для симуляции)
Разорвитесь предают время доступа земле: (Разорвите Длину + 10) / период Часов = 6.9e-7 (0.69us)
При обеспечении некоторой случайности во времена для чтения и запроса записи данных из-за изменения в требованиях алгоритма, выберите пакетные времена можно следующим образом:
В первый пакетный раз: 7.2e-7
Случайное время между пакетами: [7.2e-7 7.4e-7]
Запустите модель и после того, как симуляция завершена, откройте блок Memory Controller и нажмите на Launch Performance App под вкладкой Performance. Выберите все ведущие устройства под вкладкой Bandwidth и нажмите Create Plot. Вы заметите, что все ведущие устройства примерно достигли пропускной способности 190 Мбайт/с и не соответствовали необходимым 248 Мбайт/с. Это также наблюдается предупреждениями в диагностическом средстве просмотра.
Чтобы соответствовать необходимой пропускной способности, измените ширину данных контроллера от 32 до 64 в настройках параметра конфигурации под Ресурсами Целевого компьютера. Это потребует изменения настроек Memory Traffic Generator соответственно можно следующим образом:
Разорвите размер (в байтах): Разорвите длину транзакции * (Ширина/8 данных) = 128* 64/8 = 1024
Общие пакетные запросы: 4 * размер данных/Пакета о Трафике = 4*4050 = 16200 (4 кадра данных для симуляции)
Разорвитесь предают время доступа земле для Генераторов Трафика Памяти 1 & 4: Структурируйте Период/Номер Пакетных запросов = 16.67e-3/4050 = 41.16e-7 секунда
Никакое изменение в Пакетные Времена для Генератора Трафика Памяти 2 и 3, поскольку они определяются на основе потребностей алгоритма.
Новые установки параметров следующие:
Моделируйте модель и откройте график Пропускной способности от Контроллера памяти как в предыдущем случае. Заметьте, что пропускная способность Памяти, достигнутая Генератором Трафика Памяти 1 и 4, составляет 248 Мбайт/с. Пропускная способность памяти от Генератора 2 и 3 составляет приблизительно 500 Мбайт/с. Это соответствует конструктивным требованиям, когда все ведущие устройства могут удовлетворить требование в реальном времени 248 МГц. Заметьте, что нет никаких предупреждений на диагностическом средстве просмотра, когда пакетные запросы не пропущены.
SoC Blockset Поддерживаемые аппаратные средства требуется для этого раздела.
Чтобы реализовать модель на поддерживаемой плате FPGA, используйте Разработчика SoC приложение. По умолчанию модель будет реализована на оценочном комплекте Xilinx® Zynq® ZC706, когда это сконфигурировано с той платой.
Генератор трафика AXI (ATG), аппаратное Ядро IP для блока Memory Traffic Generator не поддерживает случайный пакет, предают времена доступа земле, и это дифференцирует ведущие устройства Читателя и Средства записи в арбитражной политике, различающейся блок Memory Traffic Generator для симуляции. Поэтому прежде, чем реализовать на оборудовании, измените настройки Блока памяти можно следующим образом:
Сделайте все Генераторы Трафика Памяти как 'Средства записи'
Для Генератора Трафика Памяти 2 и 3, набор [7.2e-7 7.2 e-7] в течение Случайного времени между пакетом, чтобы сделать, который это зафиксировало, предает пакетное время земле 7.2e-7
Откройте Разработчика SoC из меню Tools и выполните эти шаги:
Выберите экран 'Build Model ' on ' Setup'. Нажмите 'Next'.
Нажмите 'View/Edit Memory Map', чтобы просмотреть карту распределения памяти на экране 'Review Memory Map'. Нажмите 'Next'.
Задайте папку проекта на экране 'Select Project Folder'. Нажмите 'Next'.
Выберите экран 'Build, load and run ' on ' Select Build Action'. Нажмите 'Next'.
Нажмите 'Validate', чтобы проверять совместимость модели для реализации на экране 'Validate Model'. Нажмите 'Next'.
Нажмите 'Build', чтобы начать создавать из модели на экране 'Build Model'. Внешний интерпретатор откроется, когда синтез FPGA начнется. Нажмите 'Next' на экран 'Load Bitstream'.
Синтез FPGA может занять больше чем 30 минут, чтобы завершиться. Чтобы сэкономить время, можно хотеть использовать обеспеченный предсгенерированный поток битов путем выполнения этих шагов:
Закройте внешний интерпретатор, чтобы отключить синтез.
Скопируйте предварительно сгенерированный поток битов в свою папку проекта путем выполнения команды ниже и затем,
Нажмите кнопку 'Load', чтобы загрузить предварительно сгенерированный поток битов.
>> copyfile(fullfile(matlabroot,'toolbox','soc','socexamples','bitstreams','soc_memory_traffic_generator_fpga-zc706.bit'), './soc_prj');
Чтобы запустить этот пример, скопируйте испытательный стенд в качестве примера в свою папку проекта.
>> copyfile(fullfile(matlabroot,'toolbox','soc','socexamples','soc_memory_traffic_generator_aximaster.m'), './soc_prj','f');
Испытательный стенд конфигурирует сгенерированные аппаратные ядра IP ATG для Генераторов Трафика Памяти. Чтобы работать на оборудовании, мы увеличим число пакетных запросов к 100 разам, поскольку мы используем MATLAB® в качестве Ведущего IP AXI, чтобы вернуть выборки к MATLAB®, который включает существенную задержку доступа к оборудованию. Загрузите soc_memory_traffic_generator_zc706_aximaster.mat файл и увеличьте число пакетных запросов обо всех ведущих устройствах в настройке ATG к 100 разам. Сохраните матовые запросы файла в настройке ATG.
Введите следующую команду, чтобы запустить испытательный стенд soc_memory_traffic_generator_aximaster.
>> soc_memory_traffic_generator_aximaster
Следующий вывод производится, показывая трафик памяти после выполнения испытательного стенда. Все ведущие устройства, передающие требования пропускной способности.
Реализация на макетной плате Xilinx® Kintex® 7 KC705: Чтобы реализовать модель на макетной плате KC705, необходимо сначала сконфигурировать модель на макетную плату Xilinx® Kintex® 7 KC705 и установить следующие параметры в качестве примера. Открытые Образцовые Параметры конфигурации, перейдите к вкладке Hardware Implementation и выполните следующее:
Выберите макетную плату Xilinx® Kintex® 7 KC705 из выпадающего списка под Аппаратной платой
Перейдите к ресурсам Целевого компьютера> проект FPGA (верхний уровень) вкладка и включите, Включают MATLAB как Ведущий IP AXI для основанного на хосте взаимодействия и включают, Включают систему обработки.
Перейдите к ресурсам Целевого компьютера> проект FPGA (контроллер мадам) вкладка и установите 'Ширину данных контроллера (биты)' на 64.
Затем, откройте Разработчика SoC и выполните шаги, как ранее утверждено для Xilinx� Zynq� ZC706 выше. Измените copyfile команду, чтобы совпадать с потоком битов макетной платы Kintex® 7 KC705 'soc_memory_traffic_generator_fpga-kc705.bit'.
Таким образом, вы моделировали трафик памяти для предполагаемого проекта прежде, чем разработать алгоритмы. Вы анализировали пропускную способность памяти и изменили параметры памяти, чтобы соответствовать конструктивным требованиям. Вы проверили результаты на оборудовании.