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

проблема с waitrequest в qsys SOC

Добрый день коллеги

Сделал в qsys  SOC систему (циклон 5 SOC ) в котором есть 2 dma мастера (разные компоненты в qsys ) - один на чтение, второй на запись. Эти мастера подсоеденены на один порт DDR памяти.

На запись мастер работает без проблем. Когда начал запускать второй мастер на чтение данных из DDR памяти то у меня на шине авалон постоянно waiterequest  = "1"

Хотя эти мастера не работают одновременно.

В чем может быть проблема?

ЗЫ Сейчас думаю эти мастера посадить на разные порты DDR памяти

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Maverick_ сказал:

Сейчас думаю эти мастера посадить на разные порты DDR памяти

Это улучшит ситуацию со скоростью работы памяти. И если поставить фифошки побольше на каждый порт - то существенно улучшит. Однако с тестом write-read-write придётся повозиться. Вопрос - а отдельно если подключить мастер по чтению - ситуация та же? Может при создании забыли указать полярность waiterequest   корректно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отдельно мастер записи работает.

Вместе я не проверял работу. Запуск автоматов делается программно и даже в отдельных программах.

Сейчас не работает автомат чтения.

1 hour ago, new123 said:

А на записывающем waitrequest при этом ноль приходит?

если работает, да значит 0

во вложении мастер чтения

vga_generator.vhd

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сам я не пробовал, я изначально рассадил чтение и запись по разным портам, но вот тут поднялся схожий вопрос и пользователь из интела ответил, что мол это нормально даже по умолчанию, и READ надо поднимать, даже если wait в 1, потом сидеть и ждать

https://community.intel.com/t5/FPGA-Intellectual-Property/Avalon-Dual-Master-Bus-with-constant-waitrequest-on-connection/m-p/1192928#M21811

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не сталкивался с проблемами при одновременном чтении/записи. Шина сама всё разрулит. И да, как уже заметил new123, запрос на чтение/запись можно (и нужно) подавать когда waitrequest в единице и дожидаться его освобождения. Как только шина освободится от другого мастера (арбитраж не позволит одному мастеру занимать шину вечно), шину займет другой мастер и т.д. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если по разным портам контроллера DDR раскиданы мастера, то врядли будет wait в 1 стоять постоянно.

С другой стороны не раз сталкивался, что Altera далеко не всегда выполняет свои же требования стандарта в части handshake. Потому я всегда стараюсь их выполнять и всё работает стабильно. Если wait в 1, то по правилам я могу свой запрос выставить по моей готовности и я его выставляю.

При настройке портов и своих устройств в Qsys указывается ещё и задержка по чтению (не помню уже точное название). Если там значение больше 0, то обычно в таких случаях в чистом виде у Altera  handshake не работает и нужно запрашивать и ждать ответа.

Изменено пользователем warrior-2001
очепятка

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...