Перейти к содержанию
    

alexadmin

Свой
  • Постов

    757
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о alexadmin

  • Звание
    Знающий
    Знающий

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

5 088 просмотров профиля
  1. Пользуюсь Vwmare 16: Win7/Win10 Host, Ubuntu 20 Guest. Vivado/SDK/Vitis с программатором работают.
  2. Сейчас вам Zynq присоветуют. Благо там уже ARM есть и от Z80 можно будет избавиться 😆
  3. Спасибо! Получилось. Версия 2019.1 в процессе синтеза выдает "Could not create 'LOC' constraint because the specified site '1'b0' could not be found in current part". А на версии 2020.2 собралось нормально. Так-то да, но в данном случае расстановка локов - и есть основная задача всего этого кода.
  4. Я пока наколдовал конструкцию function [1:8*2] str_itoa(integer n); begin $sformat(str_itoa, "%d", n); end endfunction localparam s={"SLICE_X",str_itoa(X)}; // "SLICE_X"+str.itoa(X); (* LOC=s *) FDCE i ( ... но на нее выдается предупреждение Could not create 'LOC' constraint because the specified site '72'b01010011010011000100100101000011010001010101111101011000xxxxxxxxxxxxxxxx' could not be found in current part Похоже и вызов функции не отрабатывается и что-то идет не так при назначении подобной строки в аттрибут.
  5. Коллеги, имеется VHDL-код в котором значения аттрибутов синтеза вычисляются через входные параметры, примерно так: Generic ( X : natural; Y : natural) ... function FFBEL(n: natural) return string is ... attribute LOC of FFi:label is "SLICE_X" & integer'image(X)& "Y" & integer'image(Y); attribute BEL of FFi:label is FFBEL(2*i); ... FFi : FDCE ( ... Есть ли возможность написать эквивалентный код на (System)Verilog? Попытка написать что-то типа string s="SLICE_X13Y13"; //(* LOC="SLICE_X13Y13" *) FDCE FFi ( (* LOC=s *) FDCE FFi ( ... сразу дает ошибку "ERROR: [Synth 8-1002] s is not a constant", про попытки преобразования чисел в строку я уж и не говорю. Что в общем логично, если верить стандарту 1800, который определяет аттрибуты как константы: attribute_instance ::= (* attr_spec { , attr_spec } *) attr_spec ::= attr_name [ = constant_expression ] Может можно придумать какой-то обходной путь? Vivado, если что. Переписывать на tcl не предлагать.
  6. Линк запустился не на полной скорости (или это я с эзернетом путаю?)
  7. Если не хочется ломать голову - возьмите ядро AXI Bridge for PCI Express. В нем можно просто писать по адресам, а не вручную формировать очереди запросов.
  8. Я совсем не в теме, но говин были же китайцами вроде. И уже все?
  9. Это артефакты какой-то древней архитектуры. Потом Xilinx переметнулся на правильную стороны, но осадочек остался. У них и биты в модуле PIO, что ли, были когда-то перевернуты ;)
  10. Спасибо, в общем я все правильно придумал. Просто ввело в некоторое недоумение что у зайлинкса в их примере про фифо ничего нет... PS Буфер непосредственно внутри ядра есть на приемной стороне, он и выравнивает скорости. Если буфер не использовать, то они предлагают тактировать интерфейс данных восстановленным клоком.
  11. Добрый день. У меня, что называется, быстровопрос, для тех кто в теме. Никогда ранее не работал с ethernet и вообще пакетной передачей. Использую 10G/25G Ethernet subsystem и к нему прикручен AXI DMA контроллер (примерно как в https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842542/Baremetal+XXV+Ethernet+driver с тем отличием что у них MCDMA, у меня просто DMA), который берет данные для передачи из памяти и пихает в stream-интерфейс ethernet. И точно так же берет принимаемые данные из stream-интерфейса и пишет в память. Никакого fifo-буфера между ними нет. Данные пока передаю в простом loopback на трансивере самому себе. При передаче пакетов я вижу, что в процессе подачи данных на ethernet-контроллер на потоковом интерфейсе могут возникать паузы когда tvalid уходит в 0. Контроллер воспринимает это, видимо, как окончание пакета (несмотря на отсутствие tlast). В итоге на приемной стороне я вместо одного пакета вижу пачку невалидных пакетов разной длины (и, видимо, не в loopback-тесте, а через настоящий свитч, эти пакеты не пройдут). По моим представлениям это должно работать как-то не так. Я так понимаю, нужно обеспечить непрерывную подачу данных на ядро ethernet: Увеличить скорость памяти. Но не факт, что это решит проблему (а с внешней DDR точно не решит) Поставить FIFO-буфер размером в один пакет. Но это какой-то перерасход ресурса (особенно если использовать jumbo-фреймы) и лишняя задержка - нужно включить fifo в packet mode чтобы он накапливал весь пакет, потом только отдавал дальше. Что вообще обычно с этим делают?
  12. Кто ж его знает. Где, кем, когда не синтезируется... Может быть из-за малой разрядности аргументов. Может быть из-за отсутствия регистров по входу. Может быть из-за того, что в вашем проекте и так уже 99% DSP заняты.
×
×
  • Создать...