Jump to content

    
Sign in to follow this  
Maverick_

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

Recommended Posts

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

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

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

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

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

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

Share this post


Link to post
Share on other sites
1 час назад, Maverick_ сказал:

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

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

Share this post


Link to post
Share on other sites

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

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

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

1 hour ago, new123 said:

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

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

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

vga_generator.vhd

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

Edited by warrior-2001
очепятка

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this