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

 
 
> PCI Express ядро от Xilinx, Обмен происходит только по одному двойному слову.
AlphaMil
сообщение Feb 3 2014, 17:27
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



Использую сгенерированное ядро PCIE от Xilinx. Для приема и отправки данных используются модули из примера для этого ядра. С помощью ChipScope смотрю содержимое поля Lenght в TLP (на шине AXI). Оно всегда равно 0x001. Перерыл инет, кто говорит, что это ограничение самого ядра, кто - на шине висит устройство, которое может обмениваться только по одному двойному слову (у меня - точно не висит такого устройства). Может уже кто сталкивался и решил эту проблему? Может порекомендуете другое какое ядра (ПЛИС Kintex7, использую аппаратный блок).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AlphaMil
сообщение Feb 3 2014, 20:00
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



Но ведь выходом PCIE ядра является интерфейс AXI (как на прием, так и на передачу), я не подключаю ядро к процессору (синтезированному, или аппаратному), я сделал автомат состояний, который приняв транзакцию делает парсинг и, например, пишет или читает данные в/из блочной памяти. Это и есть аналог DMA (если я правильно понимаю). Так вот даже на этом этапе количество двойных слов ограничено одним. Т.е. хост не может даже запросить у меня более чем одно двойное слово. А не может запросить - как ему просто отдать больше, тупо посылкой на запись в память, инициированной с железки?
Go to the top of the page
 
+Quote Post
SM
сообщение Feb 3 2014, 20:03
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(AlphaMil @ Feb 4 2014, 00:00) *
А не может запросить - как ему просто отдать больше, тупо посылкой на запись в память, инициированной с железки?


Да, только не тупо, а умно - перед этим надо в драйвере на PC отмапить и залочить нужный кусок памяти, получить у ядра ОС его физический адрес на шине PCI[e], и вот по этому адресу провести запись, инициированную с железки (или вычитать его, тоже инициировав операцию с железки). Вот это и есть DMA - когда не PC дергает железку "дай данное/получи данное", а железка сама инициирует DMA-передачу в память (или из памяти) компьютера. То есть в FPGA нужен DMA-контроллер, который примет от PC список адресов в ее памяти и длин блоков, и произведет нужные передачи в/из памяти PC, инициировав нужные транзакции на шине PCIe.

В этом, для начала, может помочь Jungo WinDriver - простой способ сделать эти операции на PC без написания своего драйвера (залочить область памяти и получить ее физический адрес для DMA-доступа, и записать эти данные в железку).
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 17:07
Рейтинг@Mail.ru


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