Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Программирование PCI core на С++
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
xxxmatrixxx
Здравствуйте,

требуется осуществить обмен по PCI на частоте 66 МГц и разрядностью 64 бита...

PCI Lite не подходит, т.к. максмальная разрядность 32 бита...

PCI идет в составе с NIOS2, DDR... c установленной MicroC и стэком протоколов TCP/IP nichestack...

Мне необходимо адресоваться к внутренней DDR, размер которой равен 256 Мбайт и логически разбита на 4 банка(страницы) по 64Мбайт

Проект в SOPC Builder и инициализация коры PCI представлены на рисунках ниже...

Вопрос:
Я по документации нашел только как адресное пространство шины PCI транслируется на шину Avalon и наоборот, но как отследить состояние на шине PCI я так и не нашел... т.е. как узнать, завершился ли обмен по шине, передались ли все данные на сторону PСI и т.д. ???



У меня реализована шина PCI 64 бита, а сторона Avalon работает на 32 разряда...
Вопрос такой: когда я буду принимать по шине PCI данные 64 бита, то скорее всего они разобьются в 2 ячейки по 32 бита на стороне Avalon,
но как передавать на сторону PCI - 2 по 32 бита, либо одной пачкой по 64 бита??? другой вариант я рассматривал, чтобы сделать на стороне Avalon 64разрядную память, а не 32х разрядную... подключить к основной схеме через мост 64/32 бита... что посоветуете?

gosu-art
Я тоже сейчас хочу попробовать PCI через SOPC. пока без Ниоса. Не пройму... че за Avalon CRA port? как его использовать?
gosu-art
Ну пример из гайда заработал 1111493779.gif Пишу, читаю из компа через обычный ДМА.
Нажмите для просмотра прикрепленного файла
Правда за одну транзакцию ДМА можно передать максимум 4к байт.
gosu-art
....
gosu-art
Протестировал скорость с SOPC PCI + DMA+NIOS! в устройство 95МБ в комп 114 МБ! Старый ДМА не позволяет передавать более 4096 байт при 1024 берсте( время одной транзакции = 38-45 мкс), если поставить длину передачи больше, то контроллер ДМА выставляет burst lenth = 0, что для PCI SOPC контроллера непозволительно (должно быть минимум 1 для одиночной) происходит зависание... приходится перепрошивать ПЛИСcrying.gif Ниосом,причем, уже сложновато разруливать таким потоком при таком ДМА. Буду пробовать SGDMA.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.