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

    

Lutovid

Свой
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Частый гость
  • День рождения 17.05.1992

Контакты

  • Сайт
    http://
  • ICQ
    0

Информация

  • Город
    Москва

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

834 просмотра профиля
  1. С трансиверами встречал разные проблемы - возможно стоит копнуть в сторону эквалайзеров dfe/lpm? Убедитесь что эквализация включена
  2. Здравствуйте! не подскажете пожалуйста материал по акси интерфейсу с нормальными временными диаграммами? я вот пока ищу, но как оказалось это не так просто, у ксайлинкса их нет, я так понял надо у arm искать, но все что я пока нашел - это не то что хотелось бы=/. Я просто решил попользовать прегенерируемый код вивадо(акси мастер) - он вроде работает, поменял ширину шины на 512 бит и выставил величину берстов до 128 и наблюдаю, что промежутки между берстами уж слишком большие - приводят к понижению пропускной способности в 2 раза(миг на входе 512 бит и соответственно мастер под него я делаю 512 бит, соединены через акси интерконнект), все что я вижу - это то что акси интерконнект сигнал bvalid выставляет поздно, после этого начинается новый берст, но чтоб разобраться, нужно все таки изучить акси стандарт

    Извините что пишу в личные сообщения, показалось, что так проще будет

    1. Показать предыдущие комментарии  Ещё #
    2. Lutovid

      Lutovid

      Спасибо! буду изучать референс. Для меня не понятным является тот факт, что когда я завершаю транзакцию(то есть берст в моем случае), та нога, которая является статусом выполнения транзакции, как вы написали, поднимается через большой промежуток времени. Не понятно что интерконнект все это время делает=/. Пропускная способность слэйва позволяет гнать хоть непрерывный поток... Для моей задачи это прям очень критично, поэтому надо будет докапываться до истины.

    3. RobFPGA

      RobFPGA

      Приветствую!

      axi4_b* сигнализирует тогда когда транзакция записи пробежала весь путь от вас к памяти и обратно. Понятное дело что будет большой latency. Для ускорения как я и писал можно делать конвеер - генерируете новые транзакции на axi4_aw* и axi4_w* (или на axi4_ar*) не дожидаясь прихода статуса на axi4_b* (или прихода данных на axi4_r*). В настройках интерконекта есть параметр (write|read)issule который задает сколько транзакций может быть в "полете" у данного интерконнекта. Ну и ваш FSM фактически должен состоять из 3 - один генирирует запросы на шину axi4_aw* и на второй FSM, который шлет данные на axi4_w* и в конце бурста плюсует счетчик третьему FSM, который проверяет на axi4_b* что запись прошла. 

      Удачи! Rob.

    4. Lutovid

      Lutovid

      ааа, спасибо! теперья понял вас! Так и сделаю)

  3. Спасибо! CPU мне не нужен, почитаю про AXI_DataMover
  4. Я полагаю для этх задач уже есть готовые решения, поэтому хотелось бы избежать такого метода
  5. Спасибо за ответ! Объединить нужно вглубь, свой CDC делать времени к сожалению нет. Так что я сразу рассчитывал на первый вариант впросы правда остались - пропускная способность изменится ли? как я бы мог использовать приведенные вами готовые блоки? я не имел опыта работы с ними(кроме интерконнекта - про который я и думал - идея была использовать только его и миги, а мастером свою стэйт машину) Хотя вопрос наверно глупый, так как я скупо описал задачу, но суть пока только в том, что бы циклично писать, источник данных - акси стрим, единственное решение, которое я сейчас ищу - это упрощение интерфейса общения - в стандартном мэмори мэпд интерфейсе слишком много ног и всякой интерфейсной логики + сохранение пропускной способности
  6. Привет всем! У меня появилась задача сделать ринг буффер на ддр. Циклично писать по очереди все адреса ddr4. Я уже реализовывал подобную задачу для одной микросхемы - выбирал нэтив интерфейс и писал стейт машину, но в этот раз задача - объединить 2 микросхемы в одну область адресного пространства. Возник вопрос как это сделать корректнее - никогда не использовал DMA, на сколько целесообразно его использовать и чем он поможет? или объединить через акси интерконнект? основная проблема в том, что приходится ставить два MIG контроллера у которых свой клоковый домен. Мне бы хотелось писать свою стейт машину на одном клоковом домене и управлять данными и адресами чере какой-то переходник. Велосипеды делать желания нет. Соответственно вопрос - как решать такую задачу корректнее и быстрее И изменится ли пропускная способность при использовании доп. ядер? Необходимо циклично писать в обе ддр на максимально допустимой пропускной способности. Может быть есть какие-то примеры - я пока не нашел? Пока я вижу только подключение обоих мигов через интерконнект к моей стейт машине(мастеру). Но является ли это решение оптимальным? Работа с акси стримом все таки по проще.
  7. Да, ошибся, подзабыл уже это уточнение, но вероятность встретить плисины с одинаковым DNA все же довольно низкая, и сомнительно, что у кого-то это получилось.
  8. По идее в даташитах пишут, что в рамках одного семейства они должны быть уникальны
  9. https://www.xilinx.com/products/boards-and-...1-vcu108-g.html Я работал на этой. из доп удобств - есть и cfp и qsfp
  10. Здравствуйте у ксайлинкс есть ядра PCS/PMA - в зависимости от настроек они включают трансиверы и логику обработки(скремблирование(гирбокс) и тд) вас там задержка не устраивает? Если так, то есть сомнения, что можно задержку эту уменьшить - там логики-то не много - дескремблер, клок коррекшн и приведение к стандарту xgmii(есть навороты флоу контрола и тд< но если по минимуму говорить). Или я не понял что значит софтовый :laughing:
  11. Спасибо! Учел все вышеперечисленные советы и loopы убрались! Возьму за правило такой стиль описания
  12. Выяснил вот что - если создать проект с одним этим файлом, то вивадо не ругается, если же включить его как дочерний модуль< то возникает критикал варнинг на картинке тот самый луп(один из) - он есть во всех случаях синтеза< просто когда-то на него ругается вивадо, а когда-то нет... вводит в ступор...
  13. Спасибо, гляну, но мне все таки кажется, что дело тут не в алгоритмике, все же это простейший автомат без всякой логики< по идее он должен был завестись... попробовал ресет как у вас, не помогло =/ может есть галка какая в настройках синтезатора, которая поможет ему это съесть... Собственно 4 страница вашего документа - я не вижу сильных различий за исключением списка чувствительности и типа присвоения
  14. STOP : begin sm_state_next <= IDLE; end все то же самое =/