Руководство по оценке производительности Xilinx DDR2 MIG 7
Важное примечание: Этот загружаемый PDF-файл с записью ответов предоставляется для повышения удобства использования и удобочитаемости. Важно отметить, что записи ответов Web-контент, который часто обновляется по мере появления новой информации. Напоминаем вам посетить службу технической поддержки Xilinx Webсайт и повторноview (Ответ Xilinx 63234) для получения последней версии этого ответа.
Введение
Из-за архитектуры памяти DDR2 и DDR3 и конструкции контроллера серии MIG 7 производительность не является прямой.
Это требует понимания различных параметров синхронизации Jedec и архитектуры контроллера, и вам нужно будет запустить моделирование, чтобы получить оценки.
Общий принцип определения производительности тот же, но этот документ предоставляет простой способ получить эффективность с помощью MIG ex.ample дизайн с помощью испытательного стенда и стимула fileприлагается здесь.
Эффективная пропускная способность
Шина данных DRAM достигает почти пиковой пропускной способности только во время всплесков чтения и записи, а ее накладные расходы снижают эффективную скорость передачи данных.
Несколько бывшихampНакладные расходы:
- время предварительной зарядки при доступе к строкам в том же банке (адрес доступа не в той же строке-странице)
- время восстановления записи для перехода с записи на чтение
- время переключения шины для перехода с чтения на запись
Эффективная пропускная способность = Пиковая пропускная способность * Эффективность
Генерация дизайна MIG
Обратитесь к главе 586 UG1 для получения пошаговой информации о MIG IP и exampле дизайн поколения.
Перед запуском моделирования производительности MIG 7 выполните следующие действия, чтобы убедиться, что среда моделирования подходит. Откройте МИГ эксampСпроектируйте и сопоставьте соответствующие библиотеки, запустите симуляцию и убедитесь, что вы видите сообщение «тест пройден» в стенограмме.
Чтобы продемонстрировать поток, я сгенерировал IP-адрес MIG для xc7vx690tffg1761-2 и вызвал exampдизайн.
Следует отметить две вещи: биты адреса памяти и выбор отображения адреса памяти.
Напримерampле, я выбрал MT41J128M8XX-125 в раскрывающемся списке параметров памяти.
Для выбранной части памяти на рисунке 1 строка = 14, столбец = 10 и банк = 3, поэтому app_addr_width = строка + столбец + банк + ранг = 28.
Вы можете выбрать столбец BANK_ROW_COLUMN или ROW BANK.
Я оставил столбец ROW BANK, который является сопоставлением адресов по умолчанию.
Example design Моделирование с синтезируемым испытательным стендом
В настройках Simulation выберите QuestaSim/ModelSim Simulator и перейдите к расположению скомпилированных библиотек.
Для получения подробной информации об указании пути установки сторонних инструментов, выборе целевого симулятора, а также о компиляции и отображении библиотек вы можете обратиться к (UG900) Руководству пользователя Vivado Design Suite Логическое моделирование
Запустите симуляцию через графический интерфейс (щелкните вкладку «Выполнить симуляцию» в менеджере проектов) и убедитесь, что вы видите сообщение «тест пройден» в стенограмме.
Моделирование производительности RTL-модификации
- Щелкните правой кнопкой мыши вкладку источников, выберите «добавить или создать источники моделирования» и перейдите к файлу mig7_perfsim_traffic_generator.sv. file и нажмите «Готово», чтобы добавить его.
- Щелкните правой кнопкой мыши вкладку источников, выберите «добавить или создать источники моделирования», перейдите к файлу perfsim_stimulus.txt и нажмите «Готово», чтобы добавить его.
- Закомментируйте бывшегоampэкземпляр le_top в sim_tb_top.v file.
- Добавьте приведенные ниже строки RTL в sim_tb_top,v.
- локальный параметр APP_ADDR_WIDTH = 28;
- локальный параметр APP_DATA_WIDTH = 64;
- localparam APP_MASK_WIDTH = APP_DATA_WIDTH/8;
- localparam MEM_ADDR_ORDER = «BANK_ROW_COLUMN»;
- локальный параметр BANK_WIDTH = 3;
- локальный параметр RANK_WIDTH = 1;
- провод [APP_ADDR_WIDTH-1:0] c0_ddr3_app_addr;
- провод [2:0] c0_ddr3_app_cmd;
- провод c0_ddr3_app_en;
- провод [APP_DATA_WIDTH-1:0] c0_ddr3_app_wdf_data;
- провод c0_ddr3_app_wdf_end;
- провод [APP_MASK_WIDTH-1:0] c0_ddr3_app_wdf_mask;
- провод c0_ddr3_app_wdf_wren;
- провод [APP_DATA_WIDTH-1:0] c0_ddr3_app_rd_data;
- провод c0_ddr3_app_rd_data_end;
- провод c0_ddr3_app_rd_data_valid;
- провод c0_ddr3_app_rdy;
- провод c0_ddr3_app_wdf_rdy;
- провод c0_data_compare_error;
- провод ui_clk;
- провод ui_clk_sync_rst;
- провод app_sr_req = 0;
- провод app_ref_req = 0;
- провод app_zq_req = 0;
- провод c0_app_wdf_mask = 0;
Создание экземпляра контроллера памяти FPGA
mig_7series_0_mig u_mig_7series_0_mig (
// Порты интерфейса памяти
- .ddr3_addr (ddr3_addr_fpga),
- .ddr3_ba (ddr3_ba_fpga),
- .ddr3_cas_n (ddr3_cas_n_fpga),
- .ddr3_ck_n (ddr3_ck_n_fpga),
- .ddr3_ck_p (ddr3_ck_p_fpga),
- .ddr3_cke (ddr3_cke_fpga),
- .ddr3_ras_n (ddr3_ras_n_fpga),
- .ddr3_reset_n (ddr3_reset_n),
- .ddr3_we_n (ddr3_we_n_fpga),
- .ddr3_dq (ddr3_dq_fpga),
- .ddr3_dqs_n (ddr3_dqs_n_fpga),
- .ddr3_dqs_p (ddr3_dqs_p_fpga),
- .init_calib_complete (инит_калиб_complete),
- .ddr3_cs_n (ddr3_cs_n_fpga),
- .ddr3_dm (ddr3_dm_fpga),
- .ddr3_odt (ddr3_odt_fpga),
// Порты интерфейса приложения
- .app_addr(c0_ddr3_app_addr),
- .app_cmd(c0_ddr3_app_cmd),
- .app_en (c0_ddr3_app_en),
- .app_wdf_data(c0_ddr3_app_wdf_data),
- .app_wdf_end (c0_ddr3_app_wdf_end),
- .app_wdf_wren (c0_ddr3_app_wdf_wren),
- .app_rd_data(c0_ddr3_app_rd_data),
- .app_rd_data_end (приложение_rd_data_end),
- .app_rd_data_valid (c0_ddr3_app_rd_data_valid),
- .app_rdy(c0_ddr3_app_rdy),
- .app_wdf_rdy (c0_ddr3_app_wdf_rdy),
- .app_sr_req (приложение_sr_req),
- .app_ref_req (приложение_ref_req),
- .app_zq_req (приложение_zq_req),
- .app_sr_active (приложение_sr_active),
- .app_ref_ack (приложение_ref_ack),
- .app_zq_ack (приложение_zq_ack),
- .ui_clk (уи_клк),
- .ui_clk_sync_rst (ui_clk_sync_rst),
- .app_wdf_mask (c0_ddr3_app_wdf_mask),
// Порты системных часов
- .sys_clk_i (sys_clk_i),
// Порты эталонных часов
- .clk_ref_i (клк_ref_i),
- .sys_rst (системный_рст)
- );
Создание производительного генератора трафика
mig7_perfsim_traffic_generator#
(
.APP_DATA_WIDTH (ПРИЛОЖЕНИЕ_DATA_WIDTH),
.COL_ШИРИНА (COL_WIDTH),
.ROW_WIDTH (СТРОКА_ШИРИНА),
.RANK_WIDTH (РАНК_ШИРИНА),
.БАНК_ШИРИНА (BANK_WIDTH),
.MEM_ADDR_ORDER (MEM_ADDR_ORDER),
.тСК (тСК),
.ADDR_WIDTH (ПРИЛОЖЕНИЕ_ADDR_WIDTH)
)
u_traffic_gen
(
.clk(ui_clk),
.rst (ui_clk_sync_rst),
.init_calib_complete (инит_калиб_complete),
.cmp_error(c0_data_compare_error),
.app_wdf_rdy (c0_ddr3_app_wdf_rdy),
.app_rd_data_valid (c0_ddr3_app_rd_data_valid),
.app_rd_data (c0_ddr3_app_rd_data),
.app_rdy(c0_ddr3_app_rdy),
.app_cmd (c0_ddr3_app_cmd),
.app_addr (c0_ddr3_app_addr),
.app_en (c0_ddr3_app_en),
.app_wdf_mask (c0_ddr3_app_wdf_mask),
.app_wdf_data(c0_ddr3_app_wdf_data),
.app_wdf_end (c0_ddr3_app_wdf_end),
.app_wdf_wren (c0_ddr3_app_wdf_wren)
);
- 5. Измените APP_ADDR_WIDTH, APP_DATA_WIDTH, RANK_WIDTH и BANK_WIDTH в соответствии с выбранной частью памяти.
Значения можно получить из _миг.в file. - Выделенное желтым цветом имя экземпляра mig_7series_0_mig может варьироваться в зависимости от имени вашего компонента во время создания IP, проверьте, выбрали ли вы другое имя, и измените его соответствующим образом.
- После того, как IP сгенерирован, откройте _миг.в file а также перепроверьте любые варианты имен сигналов LHS и исправьте их.
- app_sr_req, app_ref_req и app_zq_req должны быть инициализированы до 0.
- Как бывшийample_top.v закомментирован и новый files, вы, вероятно, увидите «?» за
mig_7series_0_mig.v file под источниками моделирования.
Чтобы сопоставить правильный file, щелкните правой кнопкой мыши mig_7series_0_mig.v, выберите «Добавить источники», перейдите к
/mig_7series_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
и добавьте файл mig_7series_0_mig_sim.v file. - Если ты видишь "?" для основного files, добавьте все RTL files в папках clocking, controller, ip_top,phy и UI.
- После внесения изменений RTL и всех необходимых files добавляются к вашим источникам моделирования, иерархия должна быть аналогична рисунку 5.
The files, выделенные красным, добавлены недавно, а «?» ожидается в модулях, связанных с ECC, поскольку в выбранной конфигурации памяти параметр ECC отключен.
Стимул File Описание
Каждый образец стимула имеет длину 48 бит, и его формат описан на рисунках с 6-1 по 6-4.
Кодировка адреса (Адрес [35:0])
Адрес закодирован в стимуле в соответствии с рис. 7-1 — рис. 7-6. Все поля адреса должны быть введены в шестнадцатеричном формате. Все поля адреса имеют ширину, кратную четырем для ввода в шестнадцатеричном формате. Тестовый стенд отправляет контроллеру памяти только необходимые биты поля адреса.
НапримерampНапример, в конфигурации с восемью банками в контроллер памяти отправляются только биты банка [2:0], а остальные биты игнорируются. Дополнительные биты для поля адреса предназначены для ввода адреса в шестнадцатеричном формате.
Вы должны подтвердить, что введенное значение соответствует ширине данной конфигурации.
- Адрес столбца (столбец [11:0]) — Адрес столбца в стимуле предоставляется максимум в 12 бит, но вам необходимо решить эту проблему на основе параметра ширины столбца, установленного в вашем проекте.
- Адрес строки (строка[15:0]) – Адрес строки в стимуле предоставляется максимум до 16 бит, но вам необходимо решить эту проблему на основе параметра ширины строки, установленного в вашем проекте.
- Адрес банка (Банк[3:0]) – Адрес банка в стимуле предоставляется максимум в четыре бита, но вам необходимо адресовать это на основе параметра ширины банка, установленного в вашем проекте.
- Ранг Адрес (Ранг[3:0]) – Адрес ранга в стимуле предоставляется максимум в четыре бита, но вам необходимо решить эту проблему на основе параметра ширины ранга, установленного в вашем проекте.
Адрес собирается на основе параметра верхнего уровня MEM_ADDR_ORDER и отправляется в пользовательский интерфейс.
Повтор команды (Повтор команды [7:0])
Счетчик повторений команды — это количество раз, когда соответствующая команда повторяется в пользовательском интерфейсе. Адрес для каждого повторения увеличивается на 8. Максимальное количество повторений равно 128.
Тестовый стенд не проверяет границу столбца и выполняет обход, если максимальный предел столбца достигается во время приращений.
128 команд заполняют страницу. Для любого адреса столбца, отличного от 0, счетчик повторений, равный 128, пересекает границу столбца и переходит к началу адреса столбца.
Использование шины
Использование шины рассчитывается в пользовательском интерфейсе с учетом общего количества операций чтения и записи, и используется следующее уравнение:
- BL8 занимает четыре такта памяти
- end_of_stimulus — это время, когда все команды выполнены.
- calib_done — время завершения калибровки.
Exampле Шаблоны
Эти бывшиеampфайлы основаны на MEM_ADDR_ORDER, установленном в BANK_ROW_COLUMN.
Одиночный шаблон чтения
00_0_2_000F_00A_1 — этот шаблон является однократным чтением из 10-го столбца, 15-й строки и второго банка.Один шаблон записи
00_0_1_0040_010_0 — этот шаблон представляет собой одну запись в 32-й столбец, 128-ю строку и первый банк.Одиночная запись и чтение по одному и тому же адресу
00_0_2_000F_00A_0 – Этот шаблон представляет собой одиночную запись в 10-й столбец, 15-ю строку и второй банк.
00_0_2_000F_00A_1 – Этот шаблон представляет собой однократное чтение из 10-го столбца, 15-й строки и второго банка.
Несколько операций записи и чтения с одним и тем же адресом
0A_0_0_0010_000_0 – Это соответствует 10 операциям записи с адресами от 0 до 80, которые можно увидеть в столбце.
0A_0_0_0010_000_1 – Это соответствует 10 операциям чтения с адресами от 0 до 80, которые можно увидеть в столбце.
Перенос страницы во время записи
0A_0_2_000F_3F8_0 – Это соответствует 10 операциям записи с переносом адреса столбца на начало страницы после одной записи.
Моделирование генератора производительного трафика
На этом вы закончили с MIG exampле дизайна моделирования. Это означает, что ваша симуляционная установка готова, вы выполнили модификации RTL для симуляции производительности, новая иерархия симуляции верна, и вы поняли модели стимулов. Запустите симуляцию еще раз с 16 операциями записи и чтения в файле perfsim_stimulus.txt.
Выполните run-all, подождите, пока не будет подтвержден сигнал init_calib_complete, и вы сможете увидеть предлагаемое количество операций записи и чтения. Затем симуляция остановится.
Когда вам будет предложено выйти из моделирования, выберите «Нет» и перейдите в окно стенограммы, где вы сможете увидеть статистику производительности.
Если вы выберете «выйти из симуляции» статистика производительности будет записываться в file названный mig_band_width_output.txt находится в папке sim_1/behave папка.
Exampпуть к каталогу: -
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/поведение
Вы можете задаться вопросом, почему процентtagИспользование шины равно 29. Повторно запустите симуляцию с теми же настройками IP, но просто изменив стимул. file до 256 операций записи и 256 операций чтения
ff_0_0_0000_000_0
ff_0_0_0000_000_1
Теперь вы увидите процентtage равно 85, что означает, что DDR3 предлагает лучшее использование шины для длинных последовательностей операций записи и чтения.
Общие способы повышения производительности
Факторы, влияющие на эффективность, можно разделить на две части:
- Специфическая память
- Конкретный контроллер
Рисунок 9 дает вамview терминов, специфичных для памяти.
В отличие от SRAM и блочной памяти производительность DDR2 или DDR3 — это не только максимальная скорость передачи данных.
Это зависит от многих факторов времени, в том числе:
- тУЗО: Задержка команды строки (или задержка ras to cas).
- tCAS(CL): Задержка строба адреса столбца.
- ТРП: Задержка предварительной зарядки строки.
- тРАНС: Активное время строки (активируйте для предварительной замены).
- тРК: Время цикла строки. tRC = tRAS + tRP
- ТРАК: Задержка доступа к Радому. tRAC = tRCD + tCAS
- tCWL: Кас задержка записи.
- тЗК: Время калибровки ZQ.
- тРФК: Время цикла обновления строки
- ТВТР: Запись на чтение с задержкой. Последняя транзакция записи во время команды чтения.
- тВР: Напишите время восстановления. Последняя транзакция записи во время предварительной зарядки
Время всех перечисленных параметров зависит от типа используемой памяти и класса быстродействия памяти.
Более подробную информацию об определениях и спецификациях синхронизации можно найти в документе DDR2 DDR3 JEDEC или в описании любого устройства памяти.
Эффективность в основном зависит от того, как осуществляется доступ к памяти. Различные шаблоны адресов дают разные результаты эффективности.
Накладные расходы памяти
- Время активации и время предварительной зарядки при переходе на новые банки/ряды или изменении рядов в одном и том же банке. Таким образом, если вы уменьшите изменение ряда, это может удалить tRCD и tRP.
- Отправлять непрерывные команды записи или чтения. Поддержание синхронизации tCCD.
- Сведите к минимуму переключение команд записи на чтение и чтение на запись — время восстановления записи для перехода на доступ для чтения, время оборота шины для перехода с чтения на запись
- Установите правильный интервал обновления.
- DDR3 SDRAM требует циклов обновления со средним периодическим интервалом tREFI.
- Максимум 8 дополнительных команд обновления могут быть выданы заранее («вытянуты»). Это не уменьшает количество обновлений, но максимальный интервал между двумя окружающими командами Refresh ограничен 9 × tREFI.
- Используйте все банки – Предпочтительным является подходящий механизм адресации.
- Строка-Банк-Колонка: Для транзакции, происходящей в последовательном адресном пространстве, ядро автоматически открывает ту же строку в следующем банке устройства DRAM, чтобы продолжить транзакцию, когда будет достигнут конец существующей строки. Он хорошо подходит для приложений, требующих пакетной передачи больших пакетов данных в последовательные адресные ячейки.
- Банк-Ряд-Колонка: При пересечении границы строки текущая строка будет закрыта, а другая строка будет открыта в том же банке. MSB — это банковский адрес, который можно использовать для переключения из разных банков. Он подходит для более коротких, более случайных транзакций в один блок памяти в течение определенного периода времени, а затем для перехода к другому блоку (банку).
- Длина импульса
- BL 8 поддерживается для DDR3 в 7-й серии. BC4 имеет очень низкий КПД, менее 50%. Это связано с тем, что время выполнения BC4 такое же, как BL8. Данные просто маскируются внутри компонента.
- В случаях, когда вы не хотите записывать полный пакет, можно рассмотреть либо маску данных, либо запись после чтения.
- Установите правильный интервал ZQ (только для DDR3)
Контроллер отправляет команды калибровки ZQ Short (ZQCS) и ZQ Long (ZQCL).- Придерживайтесь стандарта DDR3 Jedec
- Калибровка ZQ обсуждается в разделе 5.5 стандарта JEDEC Spec JESD79-3 DDR3 SDRAM.
- ZQ Calibration калибрует клеммы на кристалле (ODT) через регулярные промежутки времени для учета изменений в VT.
- Логика содержится в bank_common.v/vhd
- Параметр Tzqcs определяет скорость, с которой команда калибровки ZQ отправляется в память.
- Можно отключить счетчик и вручную отправить с помощью app_zq_req, это похоже на ручную отправку Refresh.
Подробнее см. (Xilinx Answer 47924).
Накладные расходы контроллера
- Периодические чтения – см. (Ответ Xilinx 43344) для получения подробной информации.
- Не менять период чтения
- Пропускать периодические чтения во время записи и выдавать количество пропущенных чтений перед истинным чтением
- Повторный заказ - см. (Ответ Xilinx 34392) для получения подробной информации.
Для интерфейсов пользователя и AXI предпочтительнее, чтобы эта функция была включена.- Переупорядочивание — это логика, которая просматривает несколько команд вперед и изменяет порядок пользовательских команд, чтобы команды, не относящиеся к памяти, не занимали допустимую полосу пропускания. Производительность также связана с фактической схемой трафика.
- Основываясь на шаблоне адресов, переупорядочивание помогает пропустить команды предварительной зарядки и активации, а также позволяет tRCD и tRP не занимать ширину полосы данных.
- Попробуйте увеличить количество банкоматов.
- Большая часть логики контроллера находится в банковских машинах, и они соответствуют банкам DRAM.
- Данная банковская машина управляет одним банком DRAM в любой момент времени.
- Назначение банковского автомата является динамическим, поэтому нет необходимости иметь банковский автомат для каждого физического банка.
- Банкоматы можно настроить, но это компромисс между площадью и производительностью.
- Допустимое количество банкоматов колеблется от 2 до 8.
- По умолчанию 4 банковских автомата настраиваются через параметры RTL.
- Чтобы изменить Банкоматы, рассмотрите параметр nBANK_MACHS = 8, содержащийся в memc_ui_top Пример.ampфайл для 8 банкоматов – nBANK_MACHS = 8
Теперь вы знаете о факторах, влияющих на производительность.
Рассмотрим вышестоящее приложение, которое дает вам 512 байт данных на пакет, и вам нужно сохранить их в разных местах памяти. Поскольку 512 байт данных равны 64 пакетам данных DDR3, повторно запустите exampле дизайн со стимулом file содержащий 512 операций записи, 512 операций чтения и переключение строк на каждые 64 операции записи или чтения:
- 3f_0_0_0000_000_0
- 3f_0_0_0001_000_0
- 3f_0_0_0002_000_0
- 3f_0_0_0003_000_0
- 3f_0_0_0004_000_0
- 3f_0_0_0005_000_0
- 3f_0_0_0006_000_0
- 3f_0_0_0007_000_0
- 3f_0_0_0000_000_1
- 3f_0_0_0001_000_1
- 3f_0_0_0002_000_1
- 3f_0_0_0003_000_1
- 3f_0_0_0004_000_1
- 3f_0_0_0005_000_1
- 3f_0_0_0006_000_1
- 3f_0_0_0007_000_1
В конце симуляции вы увидите, что загрузка шины составляет 77 процентов.
Рис. 11. Статистика производительности для 512 операций записи и 512 операций чтения — переключение строк для 64 операций записи или чтения.
Теперь вы можете применить знания, полученные в предыдущем разделе, для повышения эффективности. С view чтобы использовать все банки вместо изменения строки, измените шаблон адреса, чтобы изменить банк, как показано ниже.
Это эквивалентно настройке ROW_BANK_Column в настройке сопоставления адресов памяти в графическом интерфейсе MIG.
- 3f_0_0_0000_000_0
- 3f_0_1_0000_000_0
- 3f_0_2_0000_000_0
- 3f_0_3_0000_000_0
- 3f_0_4_0000_000_0
- 3f_0_5_0000_000_0
- 3f_0_6_0000_000_0
- 3f_0_7_0000_000_0
- 3f_0_0_0000_000_1
- 3f_0_1_0000_000_1
- 3f_0_2_0000_000_1
- 3f_0_3_0000_000_1
- 3f_0_4_0000_000_1
- 3f_0_5_0000_000_1
- 3f_0_6_0000_000_1
- 3f_0_7_0000_000_1
В конце симуляции вы увидите, что ранее 77-процентное использование шины теперь равно 87!
Если вам по-прежнему требуется более высокая эффективность, вы можете выбрать большие размеры пакетов 1024 или 2048 байт или рассмотреть возможность ручного обновления.
Примечание: Xilinx не рекомендует обходить обновление контроллера, поскольку мы не уверены, сможете ли вы соблюдать время автоматического обновления Jedec, которое влияет на надежность данных.
Со стороны контроллера вы можете изменить nBANk_MACH и увидеть улучшение производительности.
Однако это может повлиять на сроки разработки, см. (Ответ Xilinx 36505) подробности о nBANk_MACH
Откройте файл core_name_mig_sim.v file и измените параметры nBANK_MACHS с 4 на 8 и перезапустите симуляцию. Чтобы значение параметра вступило в силу на аппаратном уровне, необходимо обновить файл core_name_mig.v. file.
Я использовал тот же шаблон, где мы получили 87% загрузки шины (рисунок -12).
Если для nBANK_MACHS установлено значение 8, эффективность составляет 90%.
Также обратите внимание, что контроллеры ½ и ¼ отрицательно влияют на эффективность из-за их задержек.
Напримерample, поскольку мы можем отправлять команды только каждые 4 цикла CK, иногда при соблюдении минимальных спецификаций синхронизации DRAM требуется дополнительное заполнение, что может снизить эффективность по сравнению с теоретической.
Попробуйте различные контроллеры, чтобы найти тот, который соответствует вашим требованиям к эффективности.
Ссылки
- Zynq-7000 AP SoC и 7 Series FPGA MIS v2.3 [UG586]
- Центр решений Xilinx MIG http://www.xilinx.com/support/answers/34243.html
История изменений
13 — Первоначальный релиз
PDF скачать: Руководство по оценке производительности Xilinx DDR2 MIG 7