Jump to content

    

Search the Community

Showing results for tags 'vivado'.



More search options

  • 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)
  • Цифровая обработка сигналов - ЦОС (DSP)
    • Сигнальные процессоры и их программирование - DSP
    • Алгоритмы ЦОС (DSP)
  • Микроконтроллеры (MCs)
    • Cредства разработки для МК
    • ARM
    • AVR
    • MSP430
    • Все остальные микроконтроллеры
    • Отладочные платы
  • Печатные платы (PCB)
    • Разрабатываем ПП в САПР - PCB development
    • Работаем с трассировкой
    • Изготовление ПП - PCB manufacturing
  • Сборка РЭУ
  • Аналоговая и цифровая техника, прикладная электроника
  • Силовая Электроника - Power Electronics
  • Интерфейсы
  • Поставщики компонентов для электроники
  • Майнеры криптовалют и их разработка, 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. Я написал функцию "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 ядра?
  2. Приобрел на Али пару плат, Нашел пример собрал, попробовал зашить - не получается. Обновил драйвера - по прежнему не работает. Нашел рекомендацию попробовать ISE. У меня 14.2, собрал проект с одним инвертором. Похоже, что до ПЛИС достучатся удается, но инициализация JTAG Chain не завершается Окошко "висит" Вернулся в Vivado 2018, по прежнему ошибка. Делаю вывод что с железом все в норме, а с драйверами проблема. Но какая не могу найти.
  3. Приветствую! Какой великолепный глюк я поймал в 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.
  4. Здравствуйте! Я работаю над реализацией высокоскоростной передачи 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 Мбит / с Заранее спасибо за вашу помощь
  5. Компания Xilinx сообщила о выходе нового релиза программного обеспечения Vitis 2021.1. Подробнее
  6. На сайте компании Xilinx размещена для скачивания версия среды разработки для ПЛИС и СнК Vivado под номером 2021.1. Подробнее
  7. В данном вебинаре вы познакомитесь с основными особенностями нового поколения адаптивных систем Versal, с тем, какие среди них существуют вариации и в каких сферах их применение принесёт максимальную пользу. Подробнее
  8. Здравствуйте. У меня есть несколько приборов с Artix. Все приборы прошиты и работают. Когда понадобилось обновить прошивку, то выявил одну проблему - в одном приборе не обновляется прошивка. В Vivado прошивка начинает заливаться, но проходит буквально 2 секунды и окно прошивки закрывается, при этом сообщений об ошибке нет, но в ПЛИС осталась старая прошивка. Лог когда все ОК: Лог когда нет результата: Если прошивать флешку, то в этом приборе ошибка: [Labtools 27-3347] Flash Programming Unsuccessful: Failure to set flash parameters. Самое интересное, что если запустить Impact, то он прошивает и ПЛИС и флешку нормально в этом приборе. Может кто сталкивался с такой проблемой? P.S. Разъёмы переподключал, компьютер перезагружал, программатор менял - не помогло.
  9. Всем привет. Мы проводим стримы по FPGA/ПЛИС тематике на твиче по адресу twitch.tv/fpgasystems Обычно, это среда и суббота в 20:00. Записи прошедших стримов лежат на youtube: youtube.com/c/fpgasystems Ждём Вас на стриме. Анонсы предстоящих эфиров в группе в телеграм @fpgasystems (https://t.me/fpgasystems) и VK и FB
  10. Приглашаем на информационно практический вебинар «Решения Xilinx для интеллектуального управления электроприводом». На вебинаре будут рассмотрены решения Xilinx на базе систем на кристалле (SoC) для экосистем, в которые входят различные электроприводы. Эти решения обеспечивают не только оптимальное управление одним или несколькими моторами/электроприводами, но также осуществляют управление через Интернет, сбор и обработку аналитики в облаке, обнаружение неисправностей и даже предсказание времени их наступления. Зарегистрироваться
  11. Всем привет! Ситуация следующая. Есть 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 ядра, который тупо закомментит эту строку. Но это как-то громоздко и некрасиво. Имеется ли альтернативное решение?
  12. Временные ограничения (timing constraints) используются для задания временных характеристик дизайна. Временные ограничения влияют на все внутренние временные взаимосвязи, задержки в комбинаторной логике (LUT) и между триггерами, регистрами или ОЗУ. Временные ограничения могут быть глобальными или зависящими от пути. Для достижения требуемых временных характеристик проекта, разработчику необходимо задать набор ограничений для этапов синтеза и физической реализации, которые представляют собой требования, предъявляемые к заданным путям или цепям. Ими могут быть период, частота, перекос на шинах, максимальная задержка между конечными точками или максимальная чистая задержка. После синтеза или реализации достигнутые характеристики анализируются с помощью инструментов статического временного анализа Vivado. Статический анализ тайминга – это метод определения соответствия схемы временным ограничениям без необходимости моделирования, поэтому он намного быстрее, чем симуляция с учетом временных задержек. Инструменты Vivado STA проверяют настройки, временные характеристики (setup and hold time), ограничения синхронизации, максимальную частоту и многие другие правила проектирования. Статический анализ тайминга в качестве исходных данных принимает синтезированный список соединений либо физический список соединений проекта. На основе этих списков, алгоритмы Xilinx рассчитывают временные задержки и их соответствие задаваемым разработчиком требованиям. Запись вебинара:
  13. Добрый день. Долго работал с 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 и всё нормально разводилось при требуемых параметрах?
  14. Здравствуйте, подскажите, как в проекте сделать так, чтобы тестбенч для верхнего уровня читал данные из файла в модуль нижнего уровня. Не делая выводы в модeле top? Либо можно как-то пометить выводы верхнего уровня, чтоб при имплементации не выдавало ошибок об отсутствии пинов для данных выводов?
  15. На вебинаре вы познакомитесь с новой средой разработки Vitis, в которой реализована парадигма высокоуровневого проектирования, и с двумя новыми аппаратными платформами от Xilinx – Versal и Alveo, для которых разработка в среде Vitis наиболее эффективна. Вебинар предназначен как для разработчиков для ПЛИС и СнК, желающих повысить свою продуктивность с помощью средств высокоуровневого проектирования, так и для программистов, ищущих возможности повышения производительности своих компьютерных систем с помощью адаптируемых аппаратных ускорителей Xilinx Alveo. Вебинар состоится 31 марта в 14:00 (мск). Повтор вебинара 2 апреля в 10:00 (мск). Участие в вебинаре бесплатное, после предварительной регистрации. Регистрация на вебинар
  16. Добрый день, форумчане! Встал вопрос о внедрении системы контроля версий (Git) в процесс проектирования с использованием САПР Vivado. Немного покопавшись в этих самых интернетах, вычитал, что народ создает файловую структуру рядом с проектом, в которой хранятся исходники проекта (*.v, *.vhdl, *.xci, *.elf и прочее и прочее). Собственно, эту самую структуру и засовывают в СКВ. Далее вопрос: Как заполнить эту самую структуру перед коммитом? *Мысли в слух* Вариант 1. У меня есть отлаженный проект. И я ручками/не ручками (скриптами) из финальной версии проекта перетаскиваю в файловую структуру для СКВ все исходники. При этом в IDE исходники подключены из папки проекта. Коммитим. Когда вытаскиваем данный коммит (pull) из СКВ ручками/скриптами подсовываем в директорию проекта, затем собираем. Вариант 2. У меня есть неотлаженный проект. Я по мере допиливания проекта добавляю IP и исходники, затем ручками перетаскиваю во внешние папки и далее в IDE указываю расположение исходников во внешних папках. В финальной версии проекта перед коммитом все файлы уже на своих местах, т.е. в файловой структуре для СКВ. Коммитим. При вытаскивании из СКВ файлы исходников автоматически подменятся и останется только собрать проект. Вариант 3. Накатать скрипт, который из финальной версии проекта вытаскивает нужные исходники и генерирует скрипт, который на основании исходников создает проект с нуля (recreate). Все это добро коммитится. Вариант 4. Мыслю вообще не в том направлении.
  17. Всем привет! vivado 2018.3 artyx7 ac701 development kit. Столкнулся с проблемой в назначение ножек. В идеи когда при создание проекта выбирается борда вместо отделенного ПЛИСа, то Vivado в настройках ip позволяет сделать привязку к определённым в отладочной плате выводам. Как я и сделал в моём случае. Дело в том что среде ругается на отсутствие назначений ножек для axi_ethernetlite. На схеме к отладке ножек этих нет. Что делаю не так?) phy_col, phy_crs, phy_rst_n ... phy_tx_data[3:0] при этом phy_mdc, phy_mdio_i,phy_mdio_o,phy_mdio_t среда назначила нормально. Схему block design прикрепил в атач. Заранее спасибо за помощь) ethernet_lite.pdf
  18. Пытаюсь использовать в своём проекте готовый IP блок от Xilinx, а именно Fir Compiler 7.2 Пытаюсь реализовать несколько симметричных КИХ фильтров. Частота работы фильтра в 24 раза больше частоты дискретизации. Пока коэффициентов было мало - логика имплеминтации была понятна: 48 коэффициентов - 1 DSP блок 96 коэффициентов - 2 DSP блока Захотел использовать фильтр на 20 DSP блоков - 960 коэффициентов не лезет, только 912 сейчас изменил значения этих 912 коэффициентов - требует 41 DSP. Я бы хотел иметь возможность задавать разные АЧХ одному фильтру, но не понятно для чего ему дополнительные DSP.
  19. Всем привет! Возможно, вопрос обсуждался, но мне найти не удалось. Суть в следующем. Есть проект, успешно собирается и даже работает. Но при синтезе возникают тонны предупреждений такого рода: WARNING: [Synth 8-3331] design <...> has unconnected port <...>. Выглядит угрожающе, но на деле по нетлисту (схематику) видно, что сигналы-то на месте, всё подключено. Анализ показывает, что почти все они относятся к сигналам интерфейсов. И похоже, что синтезатор ругается на сигналы модпортов интерфейса, которые не используется в том или ином модуле. Т.е. насколько понимаю, картина такая: есть интерфейс, у него есть модпорты m0, m1, s0, модпорт m0 подключается к модулю master0, модпорт m1 - к модулю master1, а модпорт s0 - к модулю slave0. Получается, что интерфейс прокинут во все модули, но часть сигналов, которые относятся к другим модпортам, естественно в данном конкретном модуле не подключена - например, в модуле master0 не подключены сигналы модпоротов m1 и s0. Получается, что ругань как бы не по делу. Собственно вопрос: как с этим бороться, т.к. подобные предупреждения выглядят неприятно?
  20. Доброго времени суток. Итак за пол года изучения Vivado/SystemVerilog добрался вуршины ещё одного холма. В проекте стоит задача передать параметр конфигурации из Block Design в tcl скрипт, который формирует placement констрейны. Ниже скидываю пример тестового проекта. В данном примере для корректной работы нужно прокинуть в папку ip_repo/CSA_1.0 ссылку на sources из корня с именем src иначе ip ядро может не собираться и дико глючить (на линукс машинах уже всё готово). Собственно проблема в том, что я конфигурирую в BD параметр Integer_Resolution компонента CSA (carry save adder), который формирует разное количество триггеров. Дялее мне нужно разложить эти триггеры по плате в конкретной последовательности, для чего в констрейнах прописан скрипт floorplanning.tcl. Вся проблема заключается в автоматической передаче значения Integer_Resolution в переменную component_num в скрипте. Сейчас приходится всё прописывать руками. Возможно ли это сделать в автоматическом режиме? p.s. Любые замечания по проекту также приветствуются, которые позволят оптимизировать/улучшить компоненты или в целом. test_proj.tar
  21. Здравсвуйте. Пытаюсь скомпилировать библиотеки для квэсты. Возникает ошибка с библиотекой common_cpp_v1_0 (не видел ее раньше в предыдущих версиях). Компиляция прекращается. вивада успевает скомпилить совсем мало... нету либ для ip ядер... Linux. Vivado 2019.1. Questasim_10.7c Подскажите, пожалуйста, как побороть это? Или как заставить виваду продолжать компилировать дальше (исключить конкретно эту либу)? -спасибо
  22. Доброго времени суток! Для облегчения жизни при сборке модулей в готовую систему решил сделать свой модуль как отдельное IP ядро с всеми необходимыми настройками параметров, включая размножение внутренних компонентов обработки, которые состоят из входного сигнала, логики+БРАМ, и выходной порт AXI. Всё написано на SystemVerilog и "выходной" порт AXI запихнут в отдельный интерфейс. Правдами и неправдами сумел собрать IP и договорится с bd что это и вправду компонент с AXI шинами (пришлось перегенерировать кучу портов и создать массу ненужных параметров, те которые с ID и USER). Для удобства создал параметр, который говорит сколько внутри размножено модулей и соответственно сколько входных сигналов и выодных AXIшин должно быть прокинуто. С помощью настройки Interface presence указал когда должны появляться порты (коих 32 штуки) по условию ($P_COMPONENT_NUM >N) для входных сигналов и AXI. Входные порты конфигурируются нормально без каких бы то ни было вопросов, все неиспользующиеся подвешиваются на 0. Но вот AXI начинает творить чудеса. BDувидел, что это AXI и что у него сконфигурированы все порты в соответствии с проприетарным интерфейсом "aximm", да вот только он пытается подключить все 32 AXI порта к несуществующим сигналам. В коде интерфейс сгенерированного топ файла IPядра выглядит где-то так: Тут ничего неординароного, а вот дальше генератор пытается создать и подключить все AXI порты: aximm S_AXI_0(); // Порт 0 присутствует assign S_AXI_0.WLAST = s_axi_0_s_axi_wlast; assign S_AXI_0.BREADY = s_axi_0_s_axi_bready; assign S_AXI_0.AWLEN = s_axi_0_s_axi_awlen; ... aximm S_AXI_1(); // Порт 1 присутствует assign S_AXI_1.WLAST = s_axi_1_s_axi_wlast; assign S_AXI_1.BREADY = s_axi_1_s_axi_bready; assign S_AXI_1.AWLEN = s_axi_1_s_axi_awlen; ... aximm S_AXI_2(); // Порт 2 отсутствует (не сконфигурирован) assign S_AXI_2.WLAST = s_axi_2_s_axi_wlast; assign S_AXI_2.BREADY = s_axi_2_s_axi_bready; assign S_AXI_2.AWLEN = s_axi_2_s_axi_awlen; ... aximm S_AXI_3(); // Порт 3 отсутствует (не сконфигурирован) assign S_AXI_3.WLAST = s_axi_3_s_axi_wlast; assign S_AXI_3.BREADY = s_axi_3_s_axi_bready; assign S_AXI_3.AWLEN = s_axi_3_s_axi_awlen; ... // И так все 32 порта из которых реально входит только 2 первых Ну и дальше идёт подключение к моему сгенерированному IP ядру. top_component inst ( .i_clk(i_clk), .s_axi_aclk(s_axi_aclk), .s_axi_aresetn(s_axi_aresetn), .s00_axi_0_s00_axi_araddr(s00_axi_0_s00_axi_araddr), .s00_axi_0_s00_axi_arprot(s00_axi_0_s00_axi_arprot), .s00_axi_0_s00_axi_arready(s00_axi_0_s00_axi_arready), ... // Конфигурация AXI Lite. Здесь всё нормально .S_AXI_0(S_AXI_0), // Подключён существующий порт .S_AXI_1(S_AXI_1), // Подключён существующий порт .S_AXI_2(S_AXI_2), // Подключён несуществующий порт. Который просто объявлен в топе .S_AXI_3(S_AXI_3), // Подключён несуществующий порт. Который просто объявлен в топе ... // И так далее до 31-го порта .i_signal_0(i_signal_0),// Подключён существующий вход .i_signal_1(i_signal_0),// Подключён существующий вход .i_signal_2(1'B0), // Подключён несуществующий вход. Который просто объявлен в топе .i_signal_3(1'B0), // Подключён несуществующий вход. Который просто объявлен в топе ... // И так далее до 31-го порта ); Как избежать такой ситуации? Нужно дополнительно указать какие-то параметры или вручную создать порты AXI? Этот файл генерируется автоматические и Xilinxпредупреждает: // DO NOT MODIFY THIS FILE.
  23. Здравствуйте. Нужно создать в Vivado IP Core, чтобы интегрировать его в Block Design и подключать к Zynq. Был неприятно удивлён тем, что не поддерживаются пользовательские функции (к примеру log2 для задания параметра ширины шины). На форуме Xilinx нашёл пару похожих тем (например, ), только вот решения так и не увидел. В основном описываются проблемы "парсера" IP Packager. Но вроде как в том же ug1118 Creating and Packaging Custom IP говорится о поддержке более сложных математических выражений при помощи XPATH функций: Вот только как и где использовать эти функции XPATH? Как ни пытался ничего не получилось. Даже в описываемом примере, как можно в Verilog коде "output [ceil_log2(max_count)-1:0] count;" заменить пользовательскую функцию ceil_log2 на некую XPATH функцию ceiling(log(2, $max_count)), у которой параметр $max_count описывается как в языке Tcl. Как понять фразы: Может знает кто, как собственно можно использовать эти самые XPATH функции? Или вообще, как кто боролся с кастомизацией параметров для ядер в IP Packager?
  24. Есть необходимость создания проекта под Artix в Vivado: АЦП -> ФНЧ -> ЦАП Цель - на простом проекте отработать навыки работы с констрейнами в Vivado. Вводные: АЦП - выходы LVDS, тактовая данных (64МГц) - тактируют плис ФНЧ - КИХ на частоте 384 МГц ЦАП - КМОП 32 МГц Пока пытаюсь сделать упрощённый вариант - генерировать синус на ЦАП по 16 точкам. Вопрос 1 У меня есть ноги CLK64_P и CLK64_N, из них я создаю клок CLK64 методом: Удивлён, что констрейн на клок приходится задавать для CLK64_P а не для CLK64, это правильно? #create_clock -add -name sys_clk_pin -period 15.625 -waveform {0 7.8125} [get_ports { CLK64_P }]; сколько цифр после точки можно вводить? Vivado понимает 7.8125 или округлит до 7.81? Вопрос 2 Мне нужны частоты 384МГц и 32МГц, 384МГц получаю так: Мне надо прописывать констрейн на клок CLK384 или Vivado сам поймёт что он и всё что от него тактируется работает на частоте 384МГц? Вопрос 3 Как лучше получить частоту 32 МГц - своим счётчиком или с PLL? Вопрос 4 Счётчики в Vivado оптимизируются? В ISE я брал 32 разрядный регистр, делел на нём 3 разрядный счётчик и при синтезе у меня старшие разряды отбрасывались и получался 3 разрядный счётчик в Vivado я что-то этого не замечаю, он что пытается развести 32 разряда? Вопрос 5 Как передавать данные между блоками работающими на частотах 64, 384, 32 МГц - напрямую или ставить регистры типа FIFO для надёжности? Вопрос 6 Хочется сделать выходные и входные триггеры и разместить их рядом с ножками - как это описать в констрейнах и как задать время запаздывания/распространения? Вопрос 7 Файл .xdc - один на проект или можно создать некую иерархию из .xdc файлов? констрейны только в .xdc? В верилоге сразу указать нельзя?
  25. Сборка софт процессора MicroBlaze от Xilinx на русском в пошаговом режиме с огромным количеством картинок в нескольких частях: Разработка процессорной системы на базе софт-процессора MicroBlaze в среде Xilinx Vivado IDE/HLx. Часть 1. Разработка процессорной системы на базе софт-процессора MicroBlaze в среде Xilinx Vivado IDE/HLx. Часть 2. Программирование загрузочной FLASH для запуска MicroBlaze Подключение подсистемы памяти к MicroBlaze (MIG 7 Series)