|
Кит DK-MAXII-1270N, Работа с PCI |
|
|
|
Jan 26 2012, 18:34
|
Группа: Участник
Сообщений: 11
Регистрация: 2-06-11
Пользователь №: 65 433

|
Всем доброго времени суток.
Купил данный кит (DK-MAXII-1270N) чтобы поработать для удовольствия с ПЛИС, а именно попробовать создать простое устройство, которое можно "повесить" на PCI-шину. Сразу же залил в ПЛИС демонстрационный проект PCI. Вставил плату в соответствующе гнездо в компьютере, загрузил копьютер и успешно считал конфигурационное пространство. Далее я начал создавать свой собственный проект. Работаю в Quartus II 9.1, PCI compiler V9.1. Создал проект, в ем создал файл block diagramm/schematic file. Далее сгенерировал pci32t. Соединил выводы этой мегафункции с пинами ПЛИС, как было сказано в документации на кит, остальные выводы я оставил нетронутыми, т.е. никакой другой логики нету вообще, только эта мегафункция. Далее включил буферные преобразователи, посадив их выводы #EN на землю. Ну и последним шагом все неиспользуемые выводы ПЛИС перевел в высокоимп. состояние. Ставлю плату в компьютер, компьютер не загружается вообще, виснет сразу после включения на этапе идентификации устройств. В документации на pci_compiler нашел, что с транзакциями чтения конфигурац. пространства мегафункция справляется сама, без помощи внешней логики. Вопрос. Будет-ли устройство функционировать нормально, если в проекте будет присутствовать только мегафункция pci? Если да, то буду искать ошибку у себя в своем проекте ... P.S. Хотел сначала убедиться что устройство работает нормально с одной лишь этой мегафункцией, а потом "довешивать" остальную логику. P.S.2. Буду очень признателен, если поделитесь примерами.
|
|
|
|
|
 |
Ответов
|
Mar 6 2012, 05:18
|
Группа: Участник
Сообщений: 11
Регистрация: 2-06-11
Пользователь №: 65 433

|
Собственно, реализовал.
Механизм следующий - пишу в два регистра числа, когда они сложатся, выставляю прерывание. Прерывания на PCI шине разделяемые, на одной линии может "сидеть" несколько плат, поэтому надо проверять, кто выставил прерывание. Для этого я создал регистр, в который писал определенное число, если выставил прерывание. В функции-обработчике прерывания просто читал этот регистр, и если прерывание выставил я, то читаю результат суммы.
Однако, я решил немного модернизировать устройство, сделать "по человечески" интерфейс. Хочу оставить только 2 БАРа. Но не могу понять одну вещь, касающуюся адресации. БАРы у меня определены как порты I/O. В драйвере получаю нач. адреса этих портов и их длину. Например, получаю BAR0 - 9f00 (16). Если я буду обращаться по адресу 9f00 попаду в BAR0, если по адресу 9f00+4 тоже в этот БАР, если 9f08 тоже BAR0 и если 9f0c тоже BAR0. Тут все понятно. Теперь я смотрю что выставляет моей локальной логике мегафункция в качестве адреса (линии l_adro). А выставляет она мне тот же адрес, что присутствует на шине. Т.е. если я обращусь к BAR0 по адресу 9f00, то мегафункция выдаст мне на линиях l_adro 9f00. Собственно вопрос. Младшие два разряда этого адреса - 00 это и есть "относительный" адрес для моей локальной логики? Начальный адрес любого бара будет начинаться с 00 (9f00, 9c00, 9a00)?
|
|
|
|
|
Mar 6 2012, 06:26
|
Знающий
   
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112

|
BIOS формирует младшие адреса как ххх0, хх00, х000, и т.п., то есть они всегда нулевые, выровнены к размеру затребованных в BAR пространств I/O или памяти. У меня специализация на Altera по pci32t и pci32mt, все на verilog, с этим я справляюсь, PCI-плата тоже своя на CycloneIII. Программы обслуживания пишут в DOS и Линукс, но уже другие программисты, и тоже успешно. Но хотел бы, ради интереса, добраться своими программами к своей аппаратуре со стороны WinXP, например под C++Builder 6, но пока не удается.
У меня к Вам вопрос, под какую ОС пишутся драйвера, и в какой среде программа обслуживания?
|
|
|
|
Сообщений в этой теме
Wespe Кит DK-MAXII-1270N Jan 26 2012, 18:34 des00 1. обычно с китами идут сорцы референсных примеров... Jan 26 2012, 18:48 Wespe Прикрепляю архив со схемой кита. Jan 26 2012, 19:07 des00 спрошу еще раз. если судить по описанию борды на с... Jan 26 2012, 19:38 Wespe Цитатавы уверены что примеры не поставляются в сор... Jan 27 2012, 04:15 Koluchiy Не работал с PCI на Альтере, но всё равно чего-ниб... Jan 27 2012, 04:49 gosu-art Там буфера стоят типа QS3VH245. Т.е. просто коммут... Jan 27 2012, 05:27 eugen_pcad_ru У меня тоже есть этот борд. Работает нормально, ни... Jan 27 2012, 05:34 Wespe ЦитатаДолжно, если его правильно подключить к этом... Jan 27 2012, 08:54 gosu-art По поводу буфферов можно в AN330 почитать, но ско... Jan 27 2012, 09:42 sazh Цитата(Wespe @ Jan 26 2012, 21:34) Всем д... Jan 27 2012, 10:00 Wespe ЦитатаВ ЭФО брали? тоже наверное куплю себе.
Зака... Jan 27 2012, 10:16 Wespe Заработало.
lt_abortn, lt_rdyn, lt_discn, lirqn ... Jan 28 2012, 18:23 des00 Цитата(Wespe @ Jan 28 2012, 13:23) Буду о... Jan 28 2012, 18:30 Wespe Цитатабессмысленно
Зато получу уовольствие, а там... Jan 28 2012, 18:38 Wespe Работаю в Kubuntu, Linux. Самой программы как так... Mar 6 2012, 07:06
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|