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

 
 
> Программирование обмена между ПК и ПЛИС по PICE, PCI Express + Cи + Stratix IV GX Dev Kit
novartis
сообщение May 28 2010, 14:10
Сообщение #1


Местный
***

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



Добрый день!
Имеется плата Stratix IV GX Development Kit, выполнена в форм-факторе PCIE x8.
Создали в квартусе проект на vhdl, подцепили мегакорку PCIE, сделали простенькую обвязку этой мегафункции, мегафункция настроена на Hard IP, Avalon ST 128. К интерфейсу RX Avalon ST подцепили память шириной 128 бит, глубиной 64 слова. В память пишим данные rx_st_data по сигналу rx_st_valid = '1'.
Воткнули плату в комп под линукс. Наш спец по программированию в линуксе и в С написал драйвер, обнаружил плату, создал тестовую прогу на С, вот ее укороченный код:
Код
int af = open("dev/qwert", O+RDWR | O_SYNC); //
char *am = mmap (NULL, MEM_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, af, 0);
volatile int *ptr = (__typeof(ptr))(am);
volatile int data = 0x0001;
*ptr = data;//запись в плис
int data1;
data1 = *ptr;//чтение из плис

При выполнении программы smile3046.gif в памяти в плисе мы видим следующее:
128 битная посылка на запись data [data][header2][header1][header0]
128 битная посылка на чтение data1 [мусор][header2][header1][header0]
Таким образом мы передали за один пакет (посылку) 32 бита данных.
Попросили нашего спеца по программированию послать не 32 бита (int), а больше, чтобы получилась пакетная передача данных. Он покапался в описаниях на процессор Intel, нашел там 128 разрядный регистр. Код получился таким:
Код
int af = open("dev/qwert", O+RDWR | O_SYNC); //
char *am = mmap (NULL, MEM_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, af, 0);
volatile __v4si *ptr = (__typeof(ptr))(am);
volatile __v4si data = { 0x0001, 0x0002, 0x0003, 0x0004};
*ptr = data;//запись в плис
__v4si data1;
data1 = *ptr;//чтение из плис

В памяти в плисе мы видим следующее:
четыре 128 битных посылки на запись data

[мусор][header2][header1][header0]
[мусор][ мусор ][ 0x0002][ 0x0001]

[мусор][header2][header1][header0]
[мусор][ мусор ][ 0x0004][ 0x0003]

128 битная посылка на чтение data1 [мусор][header2][header1][header0]

А хотелось бы увидеть три хедера и много много байт данных в одном пакете(посылке):
[ мусор ][header2][header1][header0]
[ 0x0004][ 0x0003][ 0x0002][ 0x0001]
[ 0x0008][ 0x0007][ 0x0006][ 0x0005]
...
[ 0x007F][ 0x007E][ 0x007D][ 0x007C]

Куда стоит копать? В программе на Си? Или мегафункцию ковырять? Или нужно DMA организовывать (как это делать представления не имею)?
Наш спец по программированию сказал (кстати очень граммотный и опытный специалист, оснований сомневаться в нем у меня нет), что сделал все что может, большего из процессора не выжать, так как там нет регистров больше 128 бит, хотя даже при 128 разрядном регистре у нас не получается послать посылку со 128 битами данных, а получается послать два пакета по 64 информативных бит данных.

Буду благодарен за любые ответы, советы, комментарии.(извините что многа букф)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- novartis   Программирование обмена между ПК и ПЛИС по PICE   May 28 2010, 14:10
- - dsmv   Цитата(novartis @ May 28 2010, 18:10) Куд...   Jun 1 2010, 13:02
- - AsJohnAs   Это так устроенно. Если пишешь или читаешь регистр...   Jun 1 2010, 14:54
- - novartis   Спасибо за ответы! Зашел на http://plda.com/p...   Jun 3 2010, 16:26
|- - serebr   Цитата(novartis @ Jun 3 2010, 23:26) на с...   Jun 4 2010, 02:09
|- - Suzeren   Цитата(novartis @ Jun 3 2010, 20:26) вот ...   Jul 26 2010, 07:32
|- - serebr   Цитата(Suzeren @ Jul 26 2010, 14:32) Стол...   Jul 26 2010, 07:55
- - AsJohnAs   Так чего-то непонятно из вашего поста кто будет яв...   Jun 3 2010, 18:16
- - AsJohnAs   Цитата(serebr @ Jun 4 2010, 06:09) На сто...   Jun 4 2010, 17:54
|- - -Al-   Цитата(AsJohnAs @ Jun 4 2010, 21:54) Ну э...   Jun 7 2010, 09:46
- - AsJohnAs   ЦитатаDMA умерло вместе с шиной ISA. В PCI и т.д. ...   Jun 7 2010, 12:15
- - -Al-   Цитата(AsJohnAs @ Jun 7 2010, 16:15) Ну е...   Jun 7 2010, 12:29
- - AsJohnAs   Согласен - не очень корректно получилось. Но тепер...   Jun 7 2010, 13:05
- - novartis   Вот непонятки у меня. Персональный компьютер - roo...   Jun 9 2010, 01:49
|- - dmitry-tomsk   Цитата(novartis @ Jun 9 2010, 04:49) Вот ...   Jun 9 2010, 07:07
- - AsJohnAs   Endpoint устройство может послать запрос на чтение...   Jun 9 2010, 06:43
- - novartis   ЦитатаEndpoint устройство может послать запрос на ...   Jun 9 2010, 11:56
- - AsJohnAs   извиняюсь - не квитанция а Message Request. Как ...   Jun 9 2010, 12:52
- - novartis   спасибо, Message Request более понятно) xapp1052.z...   Jun 9 2010, 13:09
- - Suzeren   Здравствуйте. Надеюсь тема еще жива. Помогите разо...   Jul 8 2010, 09:12
|- - serebr   В стандарте PCI Express все поля пакетов подробно ...   Jul 8 2010, 09:31
|- - Voiceц   Цитата(Suzeren @ Jul 8 2010, 13:12) Что я...   Jul 8 2010, 13:10
- - novartis   А сколько стоит ядро PCI-E от PLDA? Кто-нибудь пок...   Aug 5 2010, 17:15
- - dmitry-tomsk   Цитата(novartis @ Aug 5 2010, 21:15) А ск...   Aug 6 2010, 07:54
- - novartis   Цитата(dmitry-tomsk @ Aug 6 2010, 11...   Aug 13 2010, 11:34
- - dmitry-tomsk   Цитата(novartis @ Aug 13 2010, 15:34) Пос...   Aug 13 2010, 12:53


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

 


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


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