Здравствуйте.
В ядре PCI-E от Altera обмен данными с платой построен следующим образом.
Запись данных в плату идет через Bar0 с которого идут на OnChip: http://itmages.ru/image/view/1894191/ab4f91a7
Чтение данных с платы в память ПК надо осуществлять с помощью DMA, который подцеплен на OnChip и на Txs: http://itmages.ru/image/view/1894192/b6a7b059 . DMA считывает данные из OnChip и отправляет их на Txs, откуда они уже и отправляются в память ПК. По крайней мере так мне объяснили.
Никто не работал с ядром PCI-E от Altera? Можете объяснить процесс обмена данными между ПК и платой? Что, откуда и как идет?
Столкнулся со следующей проблемой: в DMA записываю адрес откуда читать (OnChip платы) и адрес (32-битный) куда записать прочитанные данные (буфер в памяти ПК).
Контроллер DMA считывает данные, а потом отправляет их на Txs, откуда они по ходу и должны попасть в память ПК, но txs_address имеет разрядность 25 бит, получается, что он отрезает старшие разряды начального 32-битного адреса и отправляет данные неизвестно куда. По моему я неправильно понимаю весь механизм передачи данных.
Может кто-нибудь пояснить или рассказать как там на самом деле все происходит? Как и какие адреса писать в DMA, чтобы организовать обмен данными между платой и памятью ПК?