Jump to content
    

Search the Community

Showing results for tags 'vivado'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Сайт и форум
    • Новости и обсуждения сайта и форума
    • Другие известные форумы и сайты по электронике
    • В помощь начинающему
    • International Forum
    • Образование в области электроники
    • Обучающие видео-материалы и обмен опытом
  • Cистемный уровень проектирования
    • Вопросы системного уровня проектирования
    • Математика и Физика
    • Операционные системы
    • Документация
    • Системы CAD/CAM/CAE/PLM
    • Разработка цифровых, аналоговых, аналого-цифровых ИС
    • Электробезопасность и ЭМС
    • Управление проектами
    • Neural networks and machine learning (NN/ML)
  • Программируемая логика ПЛИС (FPGA,CPLD, PLD)
    • Среды разработки - обсуждаем САПРы
    • Работаем с ПЛИС, области применения, выбор
    • Языки проектирования на ПЛИС (FPGA)
    • Системы на ПЛИС - System on a Programmable Chip (SoPC)
    • Methods and tools for FPGA/ASIC verification
  • Цифровая обработка сигналов - ЦОС (DSP)
    • Сигнальные процессоры и их программирование - DSP
    • Алгоритмы ЦОС (DSP)
  • Микроконтроллеры (MCU)
    • Cредства разработки для МК
    • ARM
    • RISC-V
    • AVR
    • MSP430
    • Все остальные микроконтроллеры
    • Отладочные платы
  • Печатные платы (PCB)
    • Разрабатываем ПП в САПР - PCB development
    • Работаем с трассировкой
    • Изготовление ПП - PCB manufacturing
  • Сборка РЭУ
    • Пайка и монтаж
    • Корпуса
    • Вопросы надежности и испытаний
  • Аналоговая и цифровая техника, прикладная электроника
    • Вопросы аналоговой техники
    • Цифровые схемы, высокоскоростные ЦС
    • RF & Microwave Design
    • Метрология, датчики, измерительная техника
    • АВТО электроника
    • Умный дом
    • 3D печать
    • Робототехника
    • Repair and debug
  • Силовая электроника - Power Electronics
    • Силовая Преобразовательная Техника
    • Обратная Связь, Стабилизация, Регулирование, Компенсация
    • Первичные и Вторичные Химические Источники Питания
    • Высоковольтные Устройства - High-Voltage
    • Электрические машины, Электропривод и Управление
    • Индукционный Нагрев - Induction Heating
    • Системы Охлаждения, Тепловой Расчет – Cooling Systems
    • Моделирование и Анализ Силовых Устройств – Power Supply Simulation
    • Компоненты Силовой Электроники - Parts for Power Supply Design
  • Интерфейсы
    • Форумы по интерфейсам
  • Поставщики компонентов для электроники
    • Поставщики всего остального
    • Компоненты
  • Майнеры криптовалют и их разработка, BitCoin, LightCoin, Dash, Zcash, Эфир
    • Обсуждение Майнеров, их поставки и производства
  • Дополнительные разделы - Additional sections
    • Встречи и поздравления
    • Ищу работу
    • Предлагаю работу
    • Куплю
    • Продам
    • Объявления пользователей
    • Общение заказчиков и потребителей электронных разработок

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


Город


Код проверки


skype


Facebook


Vkontakte


LinkedIn


Twitter


G+


Одноклассники

  1. Крупная радиоэлектронная компания ищет разработчика устройств на базе ПЛИС и СнК. Форма занятости: 5-дневная рабочая неделя Локация: Санкт-Петербург, м. Политехническая Требования к кандидату: • Высшее техническое образование по профилю радиофизика/радиотехника/микропроцессорная техника; • Опыт работы в данном направлении от 3 лет; • Наличие завершенных проектов; • Владение английским языком; Ключевые обязанности: • Оценка вычислительной сложности и необходимых ресурсов FPGA/SoC для разрабатываемых алгоритмов; • Перенос алгоритмов цифровой обработки сигнала (децимация, фильтрация, модуляция, демодуляция, преобразование Фурье, корреляционный анализ) с CPU на FPGA и SoC серии UltraScale и выше; • Документирование алгоритмов; • Работа с электрической схемой; • Взаимодействие с разработчиками аппаратной части; Требуемые навыки: • Разработка прошивок для FPGA, SoC фирмы Xilinx; • Моделирование RTL-модулей; • Владение средами Vivado / Vitis; • VHDL/Verilog, TCL Преимуществом будет: • Владение С/C++ • Опыт программирование CUDA; • Владение системами контроля версий;
  2. Захотелось поднять JESD на двух КИТах ZCU102 (Zynq Ultrascale+) и АЦП AD9695 1300EBZ Eval соединив их по FMC. С проектом никаких сложностей не возникло, ядра все быстро настроил, принялся работать, но микруха AD9695 молчит по SPI и никаких признаков жизни не подаёт. Стандарты протокола, сигналов и распиновку перепроверил много раз, проблем не увидел. На мезонине есть чудесная возможность отладки SPI через контрольные точки Осциллом, ей и воспользовался. Рис.1 - Часть схемы AD9695 Eval Ткнулся в контрольные точки и увидел странную картину. Сигналы "SDI_from_FPGA" и "SCLK_FROM FPGA" накладываются друг на друга и мешают корректно друг другу работать. Когда на шине SDI есть данные (уровень "1"), Клок на SCLK задирается и портится... Рис.2,3 - Осциллограммы на тестовых пинах (Сверху SCLK, снизу SDI); При этом сам клок фонит на данные превращая их в кашу. Рассмотрел более подробно схему и понял, что эти два пина являются ДИФФ парой на разъёме FMC (LA01_P_CC/LA01_N_CC) Рис.4 - Часть схемы AD9695 Eval (FMC) Думал в начале может проблема в настройках VIVADO и как то случайно поставил стандарт не тот на эти выводы, но нет. Стандарт явно обозначен "LVCMOS18" у всех пинов SPI. Залез на всякий случай в схематик в имплементации, там всё верно стоит на выходе "OBUF". О Дифференциальном выходе и речи нет... Кто знает, почему соседние сигналы могут портить друг друга? и что можно с этим сделать? Рис.5 - Мои настройки для пинов SPI в VIVADO Рис.6 - Схематик из VIVADO; PS: На всякий случай ещё уточню, что проблема точно не в мезонине или его разводке. Мезонин снимал и смотрел щупами прямо на FMC разъёме со стороны ZCU102. Картинка та-же. Такими сигналы идут из ПЛИС.
  3. Приветствую всех! Давно я кручусь вокруг этой темы, много раз возвращался к похожим веткам на форуме, перечитал мануалы от Xilinx, но не дается оно мне. Есть ощущение, что не хватает легкого волшебного пендаля, чтоб всё встало на свои места, и чтоб над головой лампочка, как в мультике, загорелась. Что я хочу получить: Хочу навести красоту, наподобие стандартных корок - чтоб жмешь разные галочки в GUI, и в зависимости от этого подключались разные HDL-ные или IPcore-ные внутренности, и менялось, например количество внешних портов. Что умею на данные момент: 1) Могу накидать форму для GUI в IP packager'е - тут всё интуитивно понятно. Могу играть с Enablement dependency, включая/выключая порт. Вижу сгенерированный tcl-скрипт для GUI с функциями proc update_PARAM_VALUE... и proc validate_PARAM_VALUE... 2) Независимо от этого могу на основе Export Block Design создать свой скриптик, который будет с учетом внешних условностей делать create_cell'ы и соединять их connect_net'ами. Не могу понять, как мне скрестить первый и второй пункты. Сейчас у меня GUI - просто пустышка, а скрипт могу запустить только вручную, например, для восстановления проекта из git. По всей вероятности всё должно работать автоматически: кинул Ipcore на канвас, изменил параметры - запустился скрипт, который подтянул нужные исходники, создал топ-левел и т.д. Запустил валидацию BD, пошла пропаганда параметров - опять запустился тот же скрипт. Как этого добиться?
  4. Ищем ведущего специалиста разработки проектов на ПЛИС. Проекты средней и высокой сложности, по обработке сигналов и с поддержкой скоростных интерфейсов. Работа в команде разработчиков. Заработная плата от 90 000 до 180 000 на руки, определяется по результату собеседования с руководителем. Адрес офиса: г. Санкт-Петербург, Пискарёвский проспект, д. 150, к. 5, «Ручьи». Действует развозка от ст.м. Гражданский пр., Площадь Мужества, Комендантский пр., Пр. Просвещения, Ул. Дыбенко. График работы: 5/2, с 9:00 до 18:00 или с 10:00 до 19:00. Формат: полностью офисный (не дистанционка и не гибрид). Официальное оформление, ДМС после испытательного срока. Требования к кандидатам: ▶ высшее техническое образование; ▶ уверенные знания Verilog; ▶ опыт работы с DSP; ▶ инициативность; ▶ умение работать в команде; ▶ навыки организации работ. Навыки работы с ПО: ▶ Xilinx Vivado; ▶ желательно уметь самостоятельно создавать модели по обработке сигналов на С++, Python, Matlab или других языках. О компании: Специальный технологический центр (сайт компании, хабр). Занимаемся разработкой и производством: ⠀ ▶ систем в сфере информационной безопасности ▶ систем сбора и анализа больших данных с применением методов машинного обучения и искусственного интеллекта ▶ телекоммуникационных систем спутниковой связи ▶ беспилотных летательных аппаратов и квадрокоптеров семейства «Орлан», спутниковых комплексов и систем управления ими ▶ телекоммуникационного оборудования, включая комплексы радиомониторинга, различной военной техники наземного, воздушного и морского базирования Контакты для связи: +7 911 700-09-66 (звонки, Telegram) 8 (812) 244-33-13, доб. 2664 [email protected]
  5. Всем привет. Много работал ранее с проектами в среде QUARTUS, очень часто приходилось отлаживать проекты в железе при помощи встроенного логического анализатора Signal Tap II. Очень удобный инструмент, ни один раз помогал мне найти и выявить ошибки, пропущенные на стадии моделирования и некоторые моменты, которые моделирование в принципе не способно обнаружить. В данный момент создаю проект в Xilinx Vivado, где на ПЛИС принимаю по JESD отчёты из АЦП, провожу некоторую обработку данных и кладу в память. Столкнулся с ситуацией, что на модели всё идеально, никаких проблем нет, но в железе не работает должным образом моя внутренняя логика (при этом приём сигнала с АЦП по JESD в норме). Стал разбираться, с помощью ядер ILA выводить интересующие меня сигналы JESD, флаги и статусы для анализа. Первая проблема, с которой я столкнулся, не могу завести ядра на частоте, которой изначально нет в ПЛИС (в момент подачи питания). Частота появляется с программируемого генератора позже и САПР Vivado говорит мне, что не может запустить ядро ILA и показать результаты... Пришлось перебрасывать все нужные мне сигналы через три регистра на стабильный клок (от DDR у меня есть 300МГц, которые всегда поступают в ПЛИС). ILA запускается, но тут начинается танец с бубном. У меня либо совсем умрёт JESD, что перестают корректно приниматься данные, либо работает но данные бьются. Причём бьются не те данные, которые я вывел на ILA, а реальные отчёты АЦП, поступающие в память. Лечится эта штука путём полного сброса проекта (команда "reset_project" TCL) и 1-2 перекомпиляции, не меняя исходников или настроек. В итоге этот процесс очень сильно стопорит процесс отладки. После каждых изменений в проекте, приходится танцевать с бубном и надеяться, что после 2-3 перекомпиляций проект получится рабочий, JESD запустится и ILA ему мешать не будет. Прошу помощи у более опытных пользователей. Как вы работаете с ILA? Как тестируете работоспособность проекта в железе на xilinx?
  6. Всем привет! Друзья подскажите, почему принемаемые данные прореженны нулями. dds -> axis_fifo -> width_converter (32 -> 64) -> 10ge (mac + pcs/pma) -> axis_checker -> ila Тактовый генератор настроен и работает на 156.25МГц. ЕСли чегото не хватает говорите, дозалью) Заранее спасибо! dds -> fifo dds -> fifo зазумлен fifo -> width converter fifo -> width converter зазумлен width converter -> mac 10G tx width converter -> mac 10G зазумлен rx -> axis checker rx -> axis checker зазумлен 1 rx -> axis checker зазумлен 2 bd.pdf
  7. Компания Xilinx сообщила о выходе нового релиза программного обеспечения Vivado ML и Vitis версии 2021.2. Подробнее
  8. Первый вебинар из серии – «Основы TCL» будет посвящен основным элементам языка TCL. Подробнее
  9. На вебинаре Вы узнаете, какие готовые устройства и отладочные платы существуют, какие фреймворки и библиотеки можно использовать для ускорения приложений и где найти всю необходимую информацию. Подробнее
  10. Сборка софт процессора MicroBlaze от Xilinx на русском в пошаговом режиме с огромным количеством картинок в нескольких частях: Разработка процессорной системы на базе софт-процессора MicroBlaze в среде Xilinx Vivado IDE/HLx. Часть 1. Разработка процессорной системы на базе софт-процессора MicroBlaze в среде Xilinx Vivado IDE/HLx. Часть 2. Программирование загрузочной FLASH для запуска MicroBlaze Подключение подсистемы памяти к MicroBlaze (MIG 7 Series)
  11. Компания Xilinx c 9 ноября по 16 декабря 2021 года проведёт онлайн конференцию для регионов Европы, Ближнего Востока и Африки по адаптивным вычислительным технологиям Xilinx. Подробнее
  12. Я написал функцию "memcpy" для копирования блока данных с исходного адреса на адрес назначения. Хочу протестировать на плате (Zynq). Я новичок в MCU и изучаю эту тему самостоятельно, извините, если мой вопрос для вас глупый. Что я сделал: Я создал проект в vivado, начал block design с Zynq, изменил конфигурацию PS-PL (добавил GP Master и Slave AXI Interface) [Смотри приложение]. Я читал, что Zynq может быть Master, но Slave/ периферийнoe устройство я должен спроектировать как настраиваемое IP-ядро. Я уже нашел, как создать собственный AXI IP (slave или master). Vivado создает шаблон настраиваемого IP-ядра (slave). (1) Могу ли я использовать этот шаблон без каких-либо изменений? (2) Следует ли мне добавить дополнительную информацию (сигналы, которые я использую в функции memcpy: адреса и количество битов)? Я пропустил дизайн custom master . (3) Я сделал правильно или мастер должен быть частью настраиваемого IP ядра?
  13. Приобрел на Али пару плат, Нашел пример собрал, попробовал зашить - не получается. Обновил драйвера - по прежнему не работает. Нашел рекомендацию попробовать ISE. У меня 14.2, собрал проект с одним инвертором. Похоже, что до ПЛИС достучатся удается, но инициализация JTAG Chain не завершается Окошко "висит" Вернулся в Vivado 2018, по прежнему ошибка. Делаю вывод что с железом все в норме, а с драйверами проблема. Но какая не могу найти.
  14. Приветствую! Какой великолепный глюк я поймал в Vivado 2020.2. Есть некий модуль где память используется несколькими каналами, соответственно удобно адрес такой памяти определить как структуру module tst_syn_ram #(parameter CH_WH = 4, IDX_WH = 8, DIN_WH = 8 ) ( input wire clk , input wire [ CH_WH-1:0] wr_ch , input wire [IDX_WH-1:0] wr_idx, input wire [DIN_WH-1:0] wr_din, input wire wr_en , // input wire [ CH_WH-1:0] rd_ch , input wire [IDX_WH-1:0] rd_idx, output logic [DIN_WH-1:0] rd_dou ); typedef struct packed { logic [ CH_WH-1:0] ch ; logic [IDX_WH-1:0] idx; } st_ADDR_t; loclparam ADDR_WH = $bits(st_ADDR_t); (* ram_style = "auto" *) // distributed, block logic [DIN_WH-1:0] mem [0:2**ADDR_WH-1]; st_ADDR_t wr_addr; st_ADDR_t rd_addr; // тут должно быть много логики формурующие адрес и данные // но для примера просто присвоенны входные порты assign wr_addr.ch = wr_ch; assign wr_addr.idx = wr_idx; assign rd_addr.ch = rd_ch; assign rd_addr.idx = rd_idx; // простая память always_ff @(posedge clk) begin if (wr_en) begin mem[wr_addr] <= wr_din; end rd_dou <= mem[rd_addr]; end endmodule : tst_syn_ram При синтезе такого описания Vivado считает что ширина адреса используемого для адресации памяти равна ширине первого поля в структуре и соответственно можно молча оптимизировать размер синтезируемой памяти. Сделать так сказать юзеру "приятно" Ну а второе поле не выбрасывать же. Соответственно Vv сворачивает его по И вместе с wr_en, мол пишем в память только если wr_addr.idx!=0. И это без все варнингов и ошибок при синтезе . "23 Infos, 0 Warnings, 0 Critical Warnings and 0 Errors encountered." Понятно что синтезатор сходит с ума когда в качестве адреса в памяти видит пакованную структуру. А у меня такого кода много Попробовал бороться с этим - можно обернуть адрес так: ... mem[ADDR_WH'(rd_addr)]. Но блин писанины много. А можно просто взять в скобки - ... mem[{rd_addr}]. Причем из экспериментов получается что на глюк в примере выше влияет описание адреса только при чтении! То есть - // глюк все еще есть always_ff @(posedge clk) begin if (wr_en) begin mem[{wr_addr}] <= wr_din; end rd_dou <= mem[rd_addr]; end // глюка уже нет always_ff @(posedge clk) begin if (wr_en) begin mem[wr_addr] <= wr_din; end rd_dou <= mem[{rd_addr}]; end Но для гарантии буду оборачивать скобками везде. Скобок много не бывает .... Удачи! Rob.
  15. Здравствуйте! Я работаю над реализацией высокоскоростной передачи SPI и ищу лучший вариант для блока DMA. Схематическое изображение моей конструкции:прикрепил На сайте Xilinx я нашел следующиe блоки, который могу использовать: DMA Central Direct Memory Access DataMover 1. В чем разница между DMA и CDMA? Судя по описаниям и блок-схемам, это ... как будто потоковым устройством будет устройство, которое производит или потребляет поток байтов. Устройство с отображением памяти подключается к шине памяти. Таким образом, периферийному устройству, которое хранит входящие данные в регистре с отображением в память, потребуется CDMA, а периферийному устройству, где данные поступают непосредственно из буфера FIFO, потребуется DMA. 2. AXI Data Mover. Если я подключу его с блоком AXI FIFO Stream (параметры передачи команд), я получу блок DMA, как я понял. Этот блок дает мне больше свободы в реализации? 3. Какой вариант лучше всего для передачи данных из высокоскоростного SPI через DMA в память? Я бы хотел достичь 50-100 Мбит / с Заранее спасибо за вашу помощь
  16. Компания Xilinx сообщила о выходе нового релиза программного обеспечения Vitis 2021.1. Подробнее
  17. На сайте компании Xilinx размещена для скачивания версия среды разработки для ПЛИС и СнК Vivado под номером 2021.1. Подробнее
  18. В данном вебинаре вы познакомитесь с основными особенностями нового поколения адаптивных систем Versal, с тем, какие среди них существуют вариации и в каких сферах их применение принесёт максимальную пользу. Подробнее
  19. Здравствуйте. У меня есть несколько приборов с Artix. Все приборы прошиты и работают. Когда понадобилось обновить прошивку, то выявил одну проблему - в одном приборе не обновляется прошивка. В Vivado прошивка начинает заливаться, но проходит буквально 2 секунды и окно прошивки закрывается, при этом сообщений об ошибке нет, но в ПЛИС осталась старая прошивка. Лог когда все ОК: Лог когда нет результата: Если прошивать флешку, то в этом приборе ошибка: [Labtools 27-3347] Flash Programming Unsuccessful: Failure to set flash parameters. Самое интересное, что если запустить Impact, то он прошивает и ПЛИС и флешку нормально в этом приборе. Может кто сталкивался с такой проблемой? P.S. Разъёмы переподключал, компьютер перезагружал, программатор менял - не помогло.
  20. Всем привет. Мы проводим стримы по FPGA/ПЛИС тематике на твиче по адресу twitch.tv/fpgasystems Обычно, это среда и суббота в 20:00. Записи прошедших стримов лежат на youtube: youtube.com/c/fpgasystems Ждём Вас на стриме. Анонсы предстоящих эфиров в группе в телеграм @fpgasystems (https://t.me/fpgasystems) и VK и FB
  21. Приглашаем на информационно практический вебинар «Решения Xilinx для интеллектуального управления электроприводом». На вебинаре будут рассмотрены решения Xilinx на базе систем на кристалле (SoC) для экосистем, в которые входят различные электроприводы. Эти решения обеспечивают не только оптимальное управление одним или несколькими моторами/электроприводами, но также осуществляют управление через Интернет, сбор и обработку аналитики в облаке, обнаружение неисправностей и даже предсказание времени их наступления. Зарегистрироваться
  22. Всем привет! Ситуация следующая. Есть IP ядро PCIe (для US+), собираю проект (их референс или свой, не суть важно), получаю на P&R несколько десятков предупреждений вида (иерархию пути я побил на отдельные строки, чтобы было проще воспринимать эту "кашу"): [Timing 38-3] User defined clock exists on pin pcie4_uscale_plus_0_i/ inst/gt_top_i/ diablo_gt.diablo_gt_phy_wrapper/ gt_wizard.gtwizard_top_i/ pcie4_uscale_plus_0_gt_i/ inst/ gen_gtwizard_gtye4_top.pcie4_uscale_plus_0_gt_gtwizard_gtye4_inst/ gen_gtwizard_gtye4.gen_channel_container[0].gen_enabled_channel.gtye4_channel_wrapper_inst/ channel_inst/gtye4_channel_gen.gen_gtye4_channel_inst[0].GTYE4_CHANNEL_PRIM_INST/TXOUTCLK [See "...kcu116/pcie4_uscale_plus_0_ex/pcie4_uscale_plus_0_ex.srcs/sources_1/ip/pcie4_uscale_plus_0/source/ip_pcie4_uscale_plus_x0y0.xdc":119] and will prevent any subsequent automatic derivation of generated clocks on that pin. If the user defined clock specifies '-add', any existing auto-derived clocks on that pin are retained. ["...kcu116/pcie4_uscale_plus_0_ex/imports/xilinx_pcie4_uscale_plus_x0y0.xdc":135] Все они ссылаются на один и тот же констрейн из указанного файла (строка 119): create_clock -period 2.0 [get_pins -filter {REF_PIN_NAME=~TXOUTCLK} -of_objects [get_cells -hierarchical -filter { PRIMITIVE_TYPE =~ ADVANCED.GT.* }]] По смыслу, как я понял, тулу не нравится то, что руками описан клок, который тул и так сам создаёт. Я закомментил этот констрейн, и предупреждения ушли. Собственно вопрос: поскольку файл этот генерируется в составе IP ядра, то править его в проекте идея так себе - при сборке проекта "с нуля" или пересборке все правки в этом файле потеряются. Поэтому надо бы как-то снаружи вырубать констрейн. Как это сделать? Путь в лоб: запускать скрипт после сборки IP ядра, который тупо закомментит эту строку. Но это как-то громоздко и некрасиво. Имеется ли альтернативное решение?
  23. Временные ограничения (timing constraints) используются для задания временных характеристик дизайна. Временные ограничения влияют на все внутренние временные взаимосвязи, задержки в комбинаторной логике (LUT) и между триггерами, регистрами или ОЗУ. Временные ограничения могут быть глобальными или зависящими от пути. Для достижения требуемых временных характеристик проекта, разработчику необходимо задать набор ограничений для этапов синтеза и физической реализации, которые представляют собой требования, предъявляемые к заданным путям или цепям. Ими могут быть период, частота, перекос на шинах, максимальная задержка между конечными точками или максимальная чистая задержка. После синтеза или реализации достигнутые характеристики анализируются с помощью инструментов статического временного анализа Vivado. Статический анализ тайминга – это метод определения соответствия схемы временным ограничениям без необходимости моделирования, поэтому он намного быстрее, чем симуляция с учетом временных задержек. Инструменты Vivado STA проверяют настройки, временные характеристики (setup and hold time), ограничения синхронизации, максимальную частоту и многие другие правила проектирования. Статический анализ тайминга в качестве исходных данных принимает синтезированный список соединений либо физический список соединений проекта. На основе этих списков, алгоритмы Xilinx рассчитывают временные задержки и их соответствие задаваемым разработчиком требованиям. Запись вебинара:
  24. Добрый день. Долго работал с Intel (Altera) бед не знал в среде Quartus и вот пришлось перейти (к глубокому сожалению) на работу с Xilinx... Сразу был разочарован, многое из того, что доведено до автоматизма у Intel тут нужно делать самому, вникая в низкоуровневые тонкости. Очень большие ограничения на использования ip-ядер (плюс скудный набор изменяемых параметров) и плохие тайминги заводят меня в тупик. Так вот, какова суть проблемы. Работаю с Kintex Ultrascale. Понадобилось собрать систему из ядра PCIe -> interconnect ->DDR4. Прочитал кучу мануалов (PG194 v3.0, PG059 и тд.., Ответы с форумов, Видео пример настройки, Вивадовские примеры). В общем собрал систему похожую на систему из примеров. Рис. 1 Тут добавил ещё Jtag консоль для удобства отладки (в дальнейшем необходимо заменить её на свой блок ДМА), вывел интерфейсы для своих слейвов наружу. ДДР тоже вывел наружу (как S_DDR) на верхнем уровне закольцевал и вернул обратно (как M_DDR, опять же дикость связанная с XILINX пришлось решать одну из его проблем таким образом). Повесил ещё пару ИЛА для отладки и отображения шины АXI. Назначил адресные пространства. Рис. 2 Вроде всё задышало. Но с большими слеками на интерконнекте... То PCIe сама развестись не может, то на ядре ДДР какие то проблемы по таймингам. В общем всё плохо, но как то работает. По PCIe есть доступ и к DDR и к регистрам в слейвах, вроде всё корректно. Начинаю работать через Jtag консоль (в дальнейшем её нужно заменить своим блоком ДМА) и всё, ДДР не читается не пишется, комп умирает, интерконнект виснет. Проблема только при обращении к ДДР, при работе с моими слейвами регистровыми проблем нет, данные корректно пишутся и читаются. Залез по ИЛА и увидел что от ДДР не доходит сигнал BVALID и BID через интерконнект. Собственно из ДДР он вышел, но через интерконнект до второго мастера он не приходит, а для первого без проблем, всегда всё хорошо. Окей, меняю местами Jtag и PCIe та же шляпа. Jtag работает корректно, до PCIe не доходит BVALID и BID. Получается что второму мастеру по счёту просто не даётся доступ к ДДР. Листал форумы, читал советы, нашёл. Говорят что на Ultrascale и Ultrascale+ стандартный интерконнект не работает корректно, нужно ставить некий "SMARTCONNECT"... Ну окей.. читаю документацию, разбираюсь, вставляю смартконнект.. А у него оказывается выкидывает все ID(r/w/b) на шине AXI. Чтобы ID не выкидывались, ставьте "axi sideband" (говорит XILINX) до и после интерконнекта на каждой шине.. окей, поставил. Спустя все эти манипуляции я получил рабочую схему, которая может работать с двумя мастерами и без проблем читать и писать в ДДР. Рис. 3 Но эта штука разводится очень плохо. Сложность в том, что у AXI PCIe максимальная частота 250МГц, у ДДР в моём режиме (1200МГц частота памяти) AXI DDR 300МГц. Слейвы свои на такой частоте я не потяну, иначе вообще всё по таймингам умрёт... пришлось ставить в 2 раза меньше. Поставил 150МГц на слейвах. В итоге интерконнект городит очень сложную структуру из ядер клоковых конвертеров, конвертеров данных, протоколов и тд.. А потом при имплементации на эти же ядра и ругается Вивадо. Долго бьюсь над этой проблемой, не могу нормально побороть слеки. Пришлось понизить частоту ДДР до 1000МГц, соответственно AXI DDR стала 250Мгц, а частота моих слейвов 125 МГц. Слеки явно улучшились, работать можно, но проблема совсем не ушла. Как мне правильно настроить систему, чтобы не было конфликтов между ядер XILINX и всё нормально разводилось при требуемых параметрах?
  25. Здравствуйте, подскажите, как в проекте сделать так, чтобы тестбенч для верхнего уровня читал данные из файла в модуль нижнего уровня. Не делая выводы в модeле top? Либо можно как-то пометить выводы верхнего уровня, чтоб при имплементации не выдавало ошибок об отсутствии пинов для данных выводов?
×
×
  • Create New...