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

 
 
> Кит DK-MAXII-1270N, Работа с PCI
Wespe
сообщение Jan 26 2012, 18:34
Сообщение #1





Группа: Участник
Сообщений: 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. Буду очень признателен, если поделитесь примерами.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Wespe
сообщение Mar 6 2012, 05:18
Сообщение #2





Группа: Участник
Сообщений: 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)?
Go to the top of the page
 
+Quote Post
Serhiy_UA
сообщение Mar 6 2012, 06:26
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 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, но пока не удается.

У меня к Вам вопрос, под какую ОС пишутся драйвера, и в какой среде программа обслуживания?

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 03:40
Рейтинг@Mail.ru


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