1891ВМ12Я 0 28 ноября, 2016 Опубликовано 28 ноября, 2016 · Жалоба Здравствуйте! Есть платка Cyclone IV GX Starter, стандартный поставочный пример-демка видится в системе как PCI-E устройство. Теперь хочется создать уже свое устройство, которое было бы совместимо с ранее написанным (своим) драйвером для ПЛИС другого производителя. Однако у Altera PCI-E ядро оказалось существенно сложнее в подключении и настройке, и судя по всему предназначено для работы именно через Qsys а не как отдельный интерфейс. Существуют ли хорошие туториалы где бы по шагам была бы объяснена настройка и подключение к Nios? Я не могу найти ничего, только какие-то презентации и слайды, хотя вот для TSE например были подробные туториалы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 1 декабря, 2016 Опубликовано 1 декабря, 2016 · Жалоба Кажется, стала ясна причина невозможности найти туториал, по причине его присутствия прямо в даташите на IP блок: ug_pci_express.pdf 15. Testbench and Design Example и 16. Qsys Design Example. Прошу прощения, не додумался посмотреть на самом видном месте... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 14 декабря, 2016 Опубликовано 14 декабря, 2016 · Жалоба Конечно, туториал из ug_pci_express.pdf не подошел имеющейся у меня отладочной плате по многим причинам, но тем не менее удалось сгенерировать систему, состоящую из одного лишь ядра IP Compiler (плюс altgx_reconfig и PLL в топ модуле): Такая прошивка определилась в системе, однако у нее нет "региона памяти" (т.е. BAR0). Он видится только если подключить MM Slave типа памяти или тому подобного. А как работать с альтеровским PCI-E ядром БЕЗ таких извращений? В документации даже пишут: In the Qsys design flow, the PCI Base Address Registers (Type 0 Configuration Space) Bar Size and Avalon Base Address information populates from Qsys. You cannot enter this information in the IP Compiler for PCI Express parameter editor. Хочу как у Lattice и Xilinx просто слать TLP пакеты и принимать. Что же туда подцепить чтобы оно схватило размер для BAR0, и при этом легко писать/читать туда данные? FIFO может быть (один в одну сторону, другой в обратную на передачу)? Могу Nios2 туда воткнуть, но хочется ведь из своей простой логики слать TLP-пакеты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novartis 0 15 декабря, 2016 Опубликовано 15 декабря, 2016 · Жалоба подцепите on-chip ram на bar0. Тогда со стороны компа сможете писать данные в ПЛИС (в эту ram) и читать данные из ПЛИС (из этой ram). Чтобы слать TLP-пакеты из ПЛИС на комп нужно на порт txs подцепить модуль с Avalon Master. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novartis 0 16 декабря, 2016 Опубликовано 16 декабря, 2016 · Жалоба Чтобы слать TLP-пакеты из ПЛИС на комп нужно на порт txs подцепить модуль с Avalon Master. Неправильно написал. В данном варианте PCIE IP Core в порт txs вы запихиваете просто данные. Сама корка обертывает их tlp, то есть вам даже не нужно с tlp заморачиваться. Если же хотите самостоятельно формировать пакеты, заголовки для PCIE, то нужно сгенерить PCIE IP Core типа Avalon Streaming. Такой точно можно сгенерить с помощью мегавизарда, а в кусисе - надо смотреть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 16 декабря, 2016 Опубликовано 16 декабря, 2016 · Жалоба Если же хотите самостоятельно формировать пакеты, заголовки для PCIE, то нужно сгенерить PCIE IP Core типа Avalon Streaming. Такой точно можно сгенерить с помощью мегавизарда, а в кусисе - надо смотреть. Спасибо за подсказку! Не знал что есть еще вариант! Получается, что это уже совсем другое IP-core (может основанное на общем коде) и PDF документации у него другой? Очень нужно самому (как на ПЛИС других производителей) формировать TLP. Вечером посмотрю, надеюсь "Avalon Streaming" не означает что там сложный интерфейс :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 18 декабря, 2016 Опубликовано 18 декабря, 2016 · Жалоба Если же хотите самостоятельно формировать пакеты, заголовки для PCIE, то нужно сгенерить PCIE IP Core типа Avalon Streaming. Такой точно можно сгенерить с помощью мегавизарда, а в кусисе - надо смотреть.Действительно, смог сгенерировать, указал Avalon-ST интерфейс. Правда я удивлен вот чем: Вроде не более нового даташита на корку, но в ней почему-то пишут что Avalon-ST не поддерживается. Может по этой причине у меня проект успешно компилируется, однако задействует НОЛЬ логических элементов и по факту не работает (в отличие от QSys-версии с Avalon-MM интерфейсом). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novartis 0 18 декабря, 2016 Опубликовано 18 декабря, 2016 · Жалоба Ошибка какая-то в пдф, я для стратикс4 конкретно PCIE compiler Avalon Stream (128 бит) создавал и работал. PCIE Gen2 x8 -- megafunction wizard: %IP Compiler for PCI Express v14.1% Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 19 декабря, 2016 Опубликовано 19 декабря, 2016 · Жалоба для стратикс4 конкретно PCIE compiler Avalon Stream (128 бит) создавал и работалМожно ли Вас попросить показать участок кода непосредственно подключения сгенерированной корки? Сигналов там очень много, было бы интересно взглянуть только на те что нужны для работы. Дело в том что мои попытки подключить ровно тот же набор сигналов, как и в случае QSys, приводят к нулевому задействованию регистров в проекте. Видимо оптимизатор видит незадействованные линии и оптимизирует в ноль вообще всё. На данном этапе освоения хотелось бы заставить корку просто увидеться в компьютере с моими параметрами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novartis 0 19 декабря, 2016 Опубликовано 19 декабря, 2016 · Жалоба Вот мой файл прослойка для стратикса 4. most_pcie_x8.vhd Компонент altpcierd_reconfig_clk_pll - альтеровский, прописан в .qip файле set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) ip_compiler_for_pci_express-library/altpcierd_reconfig_clk_pll.v ] Компонент pcie_rs_hip должен быть в сгенеренной папке pcie_x8_examples\chaining_dma Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 23 декабря, 2016 Опубликовано 23 декабря, 2016 · Жалоба Вот мой файл прослойка для стратикса 4. Спасибо! Это помогло. Теперь это похоже на адекватный интерфейс PCI-E ядра, с которым можно работать. Вся задача решилась без QSys, ядро видится в компьютере. Правда пока работает если загрузить комп, прошить ПЛИС и сделать ребут - только тогда видится. А если так не делать - загрузка ОС виснет. Ну думаю разберусь, что-то с резетами. Вот мой вариант подключения на Verilog:test_altera__20161223.v Тут r_npor это регистр который изначально ноль, а когда пойдут клоки он чуть подержит и затем снимет сигнал сброса npor. Может это ужасное решение, но пока так :) core_clk_out - это то, от чего мы должны тактить свою пользовательскую логику? И на прием и на передачу? Или только для приема. Это единственный тактовый выход из корки, и так написано в даташите, вроде верно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wolfman 0 25 декабря, 2016 Опубликовано 25 декабря, 2016 · Жалоба core_clk_out - это то, от чего мы должны тактить свою пользовательскую логику? И на прием и на передачу? Или только для приема. Это единственный тактовый выход из корки, и так написано в даташите, вроде верно. в общем да, надо его использовать. Я не использовал, но это из-за косяка в схеме, чтобы была совместимость с блоками, в которых была ошибка в подключении PCI-E. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 6 мая, 2021 Опубликовано 6 мая, 2021 · Жалоба On 12/15/2016 at 10:27 PM, novartis said: подцепите on-chip ram на bar0. Тогда со стороны компа сможете писать данные в ПЛИС (в эту ram) и читать данные из ПЛИС (из этой ram). Чтобы слать TLP-пакеты из ПЛИС на комп нужно на порт txs подцепить модуль с Avalon Master. Представляете, прошло почти 5 лет, и сегодня эта информация пригодилась! Именно так и заработало, сейчас просто нужно было через ниос это запустить и это заработало. Подскажите пожалуйста, а можно ли как то без DMA слать с компьютера (хоста) пакеты скажем 4 килобайта за 1 раз, пусть даже они будут побиты на N * max_payload? В настройках вижу какие то упоминания страниц памяти, где нужно задать таблицу преобразования в настройках PCI ядра. Является ли это тем самым искомым механизмом? Со стороны ПЛИС принять большой TLP не видится проблемой, но чисто программно, на Linux, не ясно что это может быть. Или возможно заполняем в ядре ОС некую страницу памяти, а потом даем команду синхронизировать после чего пойдет серия TLP пакетов записи. Есть необходимость обойтись без относительно медленных IO запросов по 4 байта, что годится лишь для чтения статусных регистров. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novartis 0 8 июня, 2021 Опубликовано 8 июня, 2021 · Жалоба On 5/7/2021 at 12:10 AM, AVR said: Подскажите пожалуйста, а можно ли как то без DMA слать с компьютера (хоста) пакеты скажем 4 килобайта за 1 раз, пусть даже они будут побиты на N * max_payload? С помощью такой команды можно записать 32 байта за раз _mm256_storeu_si256. On 5/7/2021 at 12:10 AM, AVR said: Есть необходимость обойтись без относительно медленных IO запросов по 4 байта, что годится лишь для чтения статусных регистров. Это на чтение они медленные (может и микросекунда быть, зависит от платформы), а на запись пауза между TLP пакетами 50-100нс (ну тоже зависит от платформы) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 8 июня, 2021 Опубликовано 8 июня, 2021 · Жалоба 2 hours ago, novartis said: Это на чтение они медленные (может и микросекунда быть, зависит от платформы), а на запись пауза между TLP пакетами 50-100нс (ну тоже зависит от платформы) Спасибо, это действительно ценная информация, ведь проверить я бы это мог не скоро. В таком случае, производительности будет более чем достаточно задачи, поток в ПЛИС менее 250 килобайт в секунду, не будет загрузки процессора более чем 1 процент, что приемлимо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться