Yuri124 0 Posted November 9, 2020 (edited) · Report post On 11/7/2020 at 7:47 PM, Digi said: задача стоит сопрячь 2х портовую память с Avalon-MM и самописным , внешним, контроллером а напрямую сигналы с памяти на свой контроллер никак не получается или Вам это не нужно? В V цыклоне в qsys память представлена своими сигналами, есть картинка с диаграммой работы, по ней можно написать свой контроллер. Если же память вешать на общую шину - это, как понимаю, возможны непредсказуемые задержки. Шина, конечно, это разрулит... Мне было важно без задержек на максимальной скорости использовать память, поэтому обошелся без шины, чтобы гарантированно не было ни такта задержки. Edited November 9, 2020 by Yuri124 Quote Ответить с цитированием Share this post Link to post Share on other sites
Digi 0 Posted November 10, 2020 · Report post 21 hours ago, Yuri124 said: а напрямую сигналы с памяти на свой контроллер никак не получается или Вам это не нужно? В V цыклоне в qsys память представлена своими сигналами, есть картинка с диаграммой работы, по ней можно написать свой контроллер. Если же память вешать на общую шину - это, как понимаю, возможны непредсказуемые задержки. Шина, конечно, это разрулит... Мне было важно без задержек на максимальной скорости использовать память, поэтому обошелся без шины, чтобы гарантированно не было ни такта задержки. Так как раз и хотел получить прямые сигналы второго порта памяти вывести на контроллер. Так как контроллер уже отлажен с ними. Сейчас вытащил Avalon шину второго порта памяти, пытаюсь её прилепить к контроллеру. Quote Ответить с цитированием Share this post Link to post Share on other sites
new123 0 Posted November 10, 2020 · Report post 23 hours ago, Yuri124 said: чтобы гарантированно не было ни такта задержки спрашиваю чисто для опыта, подразумеваете большие задержки? Там же в авалоне простой арбитр стоит, задержки думаю такта 3-4, если шина очень сильно нагружена, а так waitrequest всегда свободен у меня. Тут правда наверное уместно сказать, кому как эти 4 такта, может это и много в каких то задачах Quote Ответить с цитированием Share this post Link to post Share on other sites
Yuri124 0 Posted November 10, 2020 (edited) · Report post 7 hours ago, new123 said: кому как эти 4 такта мне нужно было (читать из одного блока памяти поток данных)/(обрабатыватьь этот поток в конвейере)/(писать этот поток в другой блок памяти) как можно быстрее - т.е синхронно. Если где-то не дай Бог waitquest бы появился - весь синхронизм насмарку. А так знаю - со второго такта чтения пошел поток не останавливаясь, и управляю им как хочу. Конечно, раз шина была бы выделенная - то задержек не должно было бы быть в теории... 8 hours ago, Digi said: хотел получить прямые сигналы второго порта памяти вывести на контроллер. Так как контроллер уже отлажен с ними. Сейчас вытащил Avalon шину второго порта памяти, пытаюсь её прилепить к контроллеру так если непосредственно с сигналами порта контроллер уже работает - почему бы не создать instance этого контроллера в qsys и не завести шину памяти как она есть в этот контроллер. Или можно экспортировать из qsys наружу, в top, а там уже подключить к контролеру. А не придумывать костыль между авалоном памяти и контроллером... Edited November 10, 2020 by Yuri124 Quote Ответить с цитированием Share this post Link to post Share on other sites
Digi 0 Posted November 11, 2020 · Report post 15 hours ago, Yuri124 said: почему бы не создать instance этого контроллера в qsys и не завести шину памяти как она есть в этот контроллер. Не знаю, чем мне поможет Instance контроллера в QSys ведь к нему всё равно от памяти будет идти интерфейс Avalon. Мне то нужно вытащить(экспортировать) сигналы порта памяти. Чтобы получилась Instance в Qsys Двухпортовой памяти, к которой к одному порту подключена шина Avalon а другой порт экспортировался наружу в виде сигналов. К тому же у меня нет опыта в создании своего Instance для QSys. Временно решил проблему так, так как пока что только только чтение контроллером из памяти, я экспортировал Avalon второго порта и подключил соответствующие сигналы к контроллеру. Диаграмма работы шины вроде совпадает с диаграммой голой памяти. Quote Ответить с цитированием Share this post Link to post Share on other sites
Yuri124 0 Posted November 11, 2020 · Report post 17 minutes ago, Digi said: чем мне поможет Instance контроллера в QSys ведь к нему всё равно от памяти будет идти интерфейс Avalon. Мне то нужно вытащить(экспортировать) сигналы порта памяти. Чтобы получилась Instance в Qsys Двухпортовой памяти, к которой к одному порту подключена шина Avalon а другой порт экспортировался наружу в виде сигналов хм, я так понял из ранее написанного - у Вас есть блок двухпортовой памяти, один порт подключен к авалону и кто-то туда что-то пишет/читает по этой шине. Второй порт - тоже к авалону, но его нужно подключить к уже отлаженному контроллеру, умеющему работать не с этой шиной, а просто с сигналами памяти. И это - суть проблема, которую нужно решить. А сейчас, после этой фразы - ничего не понимаю... 24 minutes ago, Digi said: нет опыта в создании своего Instance для QSys вызываете мастер создания, описываете сигналы (только желательно сразу все правильно, иначе потом поменять - в моей версии Кватруса был большой гемор), связываете это с файлом описания Вашего контроллера. В qsys добавляете Ваш контроллер, голую шину памяти напрямую, только ее одну, без объединения с другими шинами, подключаете к соотв. шине контроллера - всё... Quote Ответить с цитированием Share this post Link to post Share on other sites
Digi 0 Posted November 11, 2020 · Report post 9 minutes ago, Yuri124 said: хм, я так понял из ранее написанного - у Вас есть блок двухпортовой памяти, один порт подключен к авалону и кто-то туда что-то пишет/читает по этой шине. Второй порт - тоже к авалону, но его нужно подключить к уже отлаженному контроллеру, умеющему работать не с этой шиной, а просто с сигналами памяти. И это - суть проблема, которую нужно решить. А сейчас, после этой фразы - ничего не понимаю... вызываете мастер создания, описываете сигналы (только желательно сразу все правильно, иначе потом поменять - в моей версии Кватруса был большой гемор), связываете это с файлом описания Вашего контроллера. В qsys добавляете Ваш контроллер, голую шину памяти напрямую, только ее одну, без объединения с другими шинами, подключаете к соотв. шине контроллера - всё... Вот так сейчас сделано. Quote Ответить с цитированием Share this post Link to post Share on other sites
new123 0 Posted November 11, 2020 · Report post Вижу знакомые pio =) Quote Ответить с цитированием Share this post Link to post Share on other sites
Digi 0 Posted November 11, 2020 · Report post 3 minutes ago, new123 said: Вижу знакомые pio =) Ага. Потом буду голову ломать, как к этому внешний DMA контроллер прикрутить и надыбать драйвер ))) Так как разрядность шины 64бит, а Avalon MM DMA работает только с шиной 128 бит. А так как 128 бит возможно только на Gen2 4х а у меня только 1х Gen1 то Avalon MM DMA не доступен. Поэтому только внешний контроллер.... Quote Ответить с цитированием Share this post Link to post Share on other sites
new123 0 Posted November 11, 2020 (edited) · Report post Придется изучать TLP и делать самому tlp общение с 64-битной адресацией. Там у вас в букваре по арии раздел есть по этой части Edited November 11, 2020 by new123 Quote Ответить с цитированием Share this post Link to post Share on other sites
Yuri124 0 Posted November 11, 2020 · Report post 37 minutes ago, Digi said: так сейчас сделано спасибо. Меня немного напрягает название этого блока "PCIe_mm_ram" - звучит так, что это блок памяти, встроенный в PCIe, а не независимая память. В сое время пробовал на Cyclone V применить такую корку (PCIe memory mapped - как то так она называлась), точно уже не помню, как она в qsys выглядела - но не заработала так, как мне нужно было (практически - работала, но тайминги в TimeQuest не сходились), а в более быстром Arria V было всё нормально. А чистые блоки памяти (ohchip RAM) в qsys появлялось со своими родными сигналами что-то типа wr, rd, clk_en - точно уже не помню на 100%, но не авалон. И wait не было, что для меня было важно. Quote Ответить с цитированием Share this post Link to post Share on other sites
Digi 0 Posted November 11, 2020 · Report post 1 minute ago, Yuri124 said: Меня немного напрягает название этого блока "PCIe_mm_ram" - звучит так, что это блок памяти, встроенный в PCIe, а не независимая память Оно примерно так и есть, это блок памяти подключен к контроллеру PCIe а с другой стороны подключен мой контроллер. Этот блок памяти является буфером обмена между компом и и моей железкой. Quote Ответить с цитированием Share this post Link to post Share on other sites
Yuri124 0 Posted November 11, 2020 · Report post 23 minutes ago, new123 said: Придется изучать TLP и делать самому tlp общение с 64-битной адресацией Зачем? К txs прикрутить контроллер DMA и можно гонять туда-сюда данные между компом и ПЛИС. Блок PCIe сам побъет поток на tlp нужного размера и добавит служебные и будет контролировать всё сам. Только зачем это нужно, если уже имеется memory mapped PCIe блок, который внутри имеет DMA, которое знает и про подключенный к нему блок памяти, и про имеющийся в PCIe буфер, и не будет создавать ни лишнюю задержку, ни лишние промежуточные буферы памяти при перекачке данных туда-сюда. Главное - правильно этим добром воспользоваться... 9 minutes ago, Digi said: Оно примерно так и есть спасибо, теперь понятно. Похоже - нужно смотреть, что там за сигналы в той шине авалон, что Вы уже и начали делать. Quote Ответить с цитированием Share this post Link to post Share on other sites
new123 0 Posted November 11, 2020 · Report post 1 minute ago, Yuri124 said: К txs прикрутить контроллер DMA и мо да точно. 1 minute ago, Yuri124 said: memory mapped PCIe блок, который внутри имеет DMA я так понял, именно эта корка не встает на gen1 x1. Я посмотрел букварь, там действительно, все плюшки начинаются с gen 2 x4 Quote Ответить с цитированием Share this post Link to post Share on other sites
Digi 0 Posted November 11, 2020 · Report post 2 minutes ago, Yuri124 said: Только зачем это нужно, если уже имеется memory mapped PCIe блок, который внутри имеет DMA Я же писал, что этот блок работает с PCIe Gen2 x4, А у меня х1. С таким интерфейсом он не работает Quote Ответить с цитированием Share this post Link to post Share on other sites