реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> PCI-E интерфейс в Qsys на Cy IV GX, туториал по настройке
AVR
сообщение Nov 28 2016, 18:46
Сообщение #1


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Здравствуйте!
Есть платка Cyclone IV GX Starter, стандартный поставочный пример-демка видится в системе как PCI-E устройство. Теперь хочется создать уже свое устройство, которое было бы совместимо с ранее написанным (своим) драйвером для ПЛИС другого производителя. Однако у Altera PCI-E ядро оказалось существенно сложнее в подключении и настройке, и судя по всему предназначено для работы именно через Qsys а не как отдельный интерфейс.

Существуют ли хорошие туториалы где бы по шагам была бы объяснена настройка и подключение к Nios? Я не могу найти ничего, только какие-то презентации и слайды, хотя вот для TSE например были подробные туториалы.


--------------------
Go to the top of the page
 
+Quote Post
AVR
сообщение Dec 1 2016, 18:57
Сообщение #2


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Кажется, стала ясна причина невозможности найти туториал, по причине его присутствия прямо в даташите на IP блок: ug_pci_express.pdf 15. Testbench and Design Example и 16. Qsys Design Example. Прошу прощения, не додумался посмотреть на самом видном месте...


--------------------
Go to the top of the page
 
+Quote Post
AVR
сообщение Dec 14 2016, 18:55
Сообщение #3


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Конечно, туториал из 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-пакеты.


--------------------
Go to the top of the page
 
+Quote Post
novartis
сообщение Dec 15 2016, 19:27
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845



подцепите on-chip ram на bar0. Тогда со стороны компа сможете писать данные в ПЛИС (в эту ram) и читать данные из ПЛИС (из этой ram).
Чтобы слать TLP-пакеты из ПЛИС на комп нужно на порт txs подцепить модуль с Avalon Master.
Go to the top of the page
 
+Quote Post
novartis
сообщение Dec 16 2016, 03:53
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845



Цитата(novartis @ Dec 16 2016, 00:27) *
Чтобы слать TLP-пакеты из ПЛИС на комп нужно на порт txs подцепить модуль с Avalon Master.

Неправильно написал. В данном варианте PCIE IP Core в порт txs вы запихиваете просто данные. Сама корка обертывает их tlp, то есть вам даже не нужно с tlp заморачиваться.

Если же хотите самостоятельно формировать пакеты, заголовки для PCIE, то нужно сгенерить PCIE IP Core типа Avalon Streaming. Такой точно можно сгенерить с помощью мегавизарда, а в кусисе - надо смотреть.
Go to the top of the page
 
+Quote Post
AVR
сообщение Dec 16 2016, 06:31
Сообщение #6


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(novartis @ Dec 16 2016, 06:53) *
Если же хотите самостоятельно формировать пакеты, заголовки для PCIE, то нужно сгенерить PCIE IP Core типа Avalon Streaming. Такой точно можно сгенерить с помощью мегавизарда, а в кусисе - надо смотреть.

Спасибо за подсказку! Не знал что есть еще вариант!
Получается, что это уже совсем другое IP-core (может основанное на общем коде) и PDF документации у него другой?
Очень нужно самому (как на ПЛИС других производителей) формировать TLP. Вечером посмотрю, надеюсь "Avalon Streaming" не означает что там сложный интерфейс sm.gif


--------------------
Go to the top of the page
 
+Quote Post
AVR
сообщение Dec 18 2016, 17:50
Сообщение #7


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(novartis @ Dec 16 2016, 06:53) *
Если же хотите самостоятельно формировать пакеты, заголовки для PCIE, то нужно сгенерить PCIE IP Core типа Avalon Streaming. Такой точно можно сгенерить с помощью мегавизарда, а в кусисе - надо смотреть.
Действительно, смог сгенерировать, указал Avalon-ST интерфейс. Правда я удивлен вот чем:
Прикрепленное изображение

Вроде не более нового даташита на корку, но в ней почему-то пишут что Avalon-ST не поддерживается. Может по этой причине у меня проект успешно компилируется, однако задействует НОЛЬ логических элементов и по факту не работает (в отличие от QSys-версии с Avalon-MM интерфейсом).


--------------------
Go to the top of the page
 
+Quote Post
novartis
сообщение Dec 18 2016, 18:26
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845



Ошибка какая-то в пдф, я для стратикс4 конкретно PCIE compiler Avalon Stream (128 бит) создавал и работал.

PCIE Gen2 x8

-- megafunction wizard: %IP Compiler for PCI Express v14.1%
Go to the top of the page
 
+Quote Post
AVR
сообщение Dec 19 2016, 06:34
Сообщение #9


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(novartis @ Dec 18 2016, 21:26) *
для стратикс4 конкретно PCIE compiler Avalon Stream (128 бит) создавал и работал
Можно ли Вас попросить показать участок кода непосредственно подключения сгенерированной корки? Сигналов там очень много, было бы интересно взглянуть только на те что нужны для работы.
Дело в том что мои попытки подключить ровно тот же набор сигналов, как и в случае QSys, приводят к нулевому задействованию регистров в проекте. Видимо оптимизатор видит незадействованные линии и оптимизирует в ноль вообще всё. На данном этапе освоения хотелось бы заставить корку просто увидеться в компьютере с моими параметрами.


--------------------
Go to the top of the page
 
+Quote Post
novartis
сообщение Dec 19 2016, 06:50
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845



Вот мой файл прослойка для стратикса 4.

Прикрепленный файл  most_pcie_x8.vhd ( 24.5 килобайт ) Кол-во скачиваний: 85


Компонент 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


Go to the top of the page
 
+Quote Post
AVR
сообщение Dec 23 2016, 20:12
Сообщение #11


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(novartis @ Dec 19 2016, 09:50) *
Вот мой файл прослойка для стратикса 4.

Спасибо! Это помогло. Теперь это похоже на адекватный интерфейс PCI-E ядра, с которым можно работать. Вся задача решилась без QSys, ядро видится в компьютере.
Правда пока работает если загрузить комп, прошить ПЛИС и сделать ребут - только тогда видится. А если так не делать - загрузка ОС виснет. Ну думаю разберусь, что-то с резетами.

Вот мой вариант подключения на Verilog:Прикрепленный файл  test_altera__20161223.v ( 1.94 килобайт ) Кол-во скачиваний: 207

Тут r_npor это регистр который изначально ноль, а когда пойдут клоки он чуть подержит и затем снимет сигнал сброса npor. Может это ужасное решение, но пока так sm.gif

core_clk_out - это то, от чего мы должны тактить свою пользовательскую логику? И на прием и на передачу? Или только для приема. Это единственный тактовый выход из корки, и так написано в даташите, вроде верно.


--------------------
Go to the top of the page
 
+Quote Post
wolfman
сообщение Dec 25 2016, 13:59
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 529
Регистрация: 15-06-05
Из: Питер
Пользователь №: 6 032



Цитата(AVR @ Dec 24 2016, 06:42) *
core_clk_out - это то, от чего мы должны тактить свою пользовательскую логику? И на прием и на передачу? Или только для приема. Это единственный тактовый выход из корки, и так написано в даташите, вроде верно.

в общем да, надо его использовать.

Я не использовал, но это из-за косяка в схеме, чтобы была совместимость с блоками, в которых была ошибка в подключении PCI-E.


--------------------
Россия это даже не страна.
Россия это секрет, завернутый в загадку и укрытый не проницаемой тайной...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 21:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01481 секунд с 7
ELECTRONIX ©2004-2016