Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Кит DK-MAXII-1270N
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Wespe
Всем доброго времени суток.

Купил данный кит (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. Буду очень признателен, если поделитесь примерами.
des00
1. обычно с китами идут сорцы референсных примеров, а не только бинарники
2. не знаю спецификации PCI, но делать буфера ввода вывода всегда открытыми как то странно %)
Wespe
Прикрепляю архив со схемой кита.
des00
спрошу еще раз. если судить по описанию борды на сайте производителя

Цитата
Reference designs and demos for MAX II CPLDs (partial list):

USB reference design (with software drivers)
PCI 32-bit target reference design (with software drivers)
LCD controller reference design
Low power demo
Real-time in-system programmability (ISP) demo

идет с китом, также доступны для скачивания с фтп
вы уверены что примеры не поставляются в сорцах ? почему бы там не посмотреть как правильно подключать корку ?
Wespe
Цитата
вы уверены что примеры не поставляются в сорцах ? почему бы там не посмотреть как правильно подключать корку ?


Пример есть. Но я хочу еще rolleyes.gif, чем больше тем лучше. Но мой вопрос немного другой:

Цитата
Будет-ли устройство функционировать нормально, если в проекте будет присутствовать только мегафункция pci?


Поставляемый пример не проливает свет на мой вопрос.

Сегодня рано поутру друг сбросил свой проект с использованием этой мегафункции. Но он его не тестировал на железе. Сегодня попробую вечерком ... Эх, уж больно наворочена эта шина.
Koluchiy
Не работал с PCI на Альтере, но всё равно чего-нибудь скажу.

Цитата
Будет-ли устройство функционировать нормально, если в проекте будет присутствовать только мегафункция pci?

Должно, если его правильно подключить к этому самому проекту, в котором больше ничего нет.

Цитата
Далее включил буферные преобразователи, посадив их выводы #EN на землю?

Интересно, как Вам это удалось.
В моём понимании, буферами ног PCI должен управлять блок PCI.

Цитата
Ставлю плату в компьютер, компьютер не загружается вообще, виснет сразу после включения на этапе идентификации устройств.

Юбыло бы странно, если бы было по-другому.
Если у Вас всегда разрешены выходы, это означает, что Вы постоянно занимаете шину, и по ней даже начать обмен нельзя, даже с Вашим устройством.

Вообще, лично я бы порекомендовал начать с изучения стандарта PCI.
gosu-art
Там буфера стоят типа QS3VH245. Т.е. просто коммутационные ключи, направление которых задается самой лапой ПЛИСины. Если на ноге тристейт, то, соответственно, направление FPGA<-PCI, если 0 или 1 то FPGA->PCI, А если с двух сторон уровни будут, то... smile3009.gif
Если не секрет во сколько обошелся вам этот КИТ?
eugen_pcad_ru
У меня тоже есть этот борд. Работает нормально, ничего не виснет.
Заводская прошивка работает, а Ваша нет? Значит дело в Вашей прошивкеsm.gif
Вы tcl-скрипт для констрейнов использовали?
И потом есть нормальные примеры для работы с платой, начните с их освоения.

P.S.: Да, и самое главное, ядро-то рабочее?
Wespe
Цитата
Должно, если его правильно подключить к этому самому проекту, в котором больше ничего нет.


Спасибо.

Цитата
В моём понимании, буферами ног PCI должен управлять блок PCI


Цитата
Там буфера стоят типа QS3VH245. Т.е. просто коммутационные ключи, направление которых задается самой лапой ПЛИСины. Если на ноге тристейт, то, соответственно, направление FPGA<-PCI, если 0 или 1 то FPGA->PCI, А если с двух сторон уровни будут, то...


Хм ... в референс-дизайне этот вывод (#OE) действительно идет на вывод ПЛИС (в проекте он - pci_enablen). Собственно, я посадил его на gnd, как и в референс-дизайне. Посмотрю как работают эти буфера. Странно, в референс-дизайне действие с этим сигналом только одно - сажают его на gnd. Хотя, я уже засомневался, приду домой, поизучаю реф.-диз. еще разок, может что и упустил.

Цитата
Заводская прошивка работает, а Ваша нет? Значит дело в Вашей прошивке


Это понятно, вопрос был немного в другом, а именно: должно ли работать то что я задумал. И мне ответили:

Цитата
Должно, если его правильно подключить к этому самому проекту, в котором больше ничего нет.


Цитата
Вы tcl-скрипт для констрейнов использовали?


Не знаю что есть tcl-скрипт, вечером попробую разобраться.

Цитата
P.S.: Да, и самое главное, ядро-то рабочее?


Что подразумевается под ядром?

Цитата
Если не секрет во сколько обошелся вам этот КИТ?


Недорого, чуть более 8 тыс. руб. Сначала метил на кит с Cyclone II, но он оказался дороговат, более 45 тыс. руб. в России.
gosu-art
По поводу буфферов можно в AN330 почитать, но скорее всего дело не в этом...
Цитата
Недорого, чуть более 8 тыс. руб

В ЭФО брали? тоже наверное куплю себе.
sazh
Цитата(Wespe @ Jan 26 2012, 21:34) *
Всем доброго времени суток.

Далее я начал создавать свой собственный проект. Работаю в Quartus II 9.1, PCI compiler V9.1. Создал проект, в ем создал файл block diagramm/schematic file. Далее сгенерировал pci32t. Соединил выводы этой мегафункции с пинами ПЛИС, как было сказано в документации на кит, остальные выводы я оставил нетронутыми, т.е. никакой другой логики нету вообще, только эта мегафункция. Далее включил буферные преобразователи, посадив их выводы #EN на землю. Ну и последним шагом все неиспользуемые выводы ПЛИС перевел в высокоимп. состояние. P.S. Хотел сначала убедиться что устройство работает нормально с одной лишь этой мегафункцией, а потом "довешивать" остальную логику.

wire pci_enablen = 1'b0; ////// это из Вашего проекта.
Порядок действий неправильный. Ибо у Вас на корке задействованы bar0 как память и bar1 как I/O.
Из ничего и выйдет ничего. Синтезатор видимо выкинул ваш ipcore за ненадобностью. (Посмотрите используемые ресурсы в реальности)
Если у Вас есть лицензия на корку, поменяйте в полном проекте версию PCI compiler на свою (пути переукажите и попробуйте получить *.pof файл), все должно также заработать. (не забудьте о количестве перепрожига ПЗУ ~100 раз по документации)
Wespe
Цитата
В ЭФО брали? тоже наверное куплю себе.


Заказывал в chipfind вместе с кучей других штуковин fman.gif

Цитата
Если у Вас есть лицензия на корку


К сожалению, нет. Я получал сообщение при прошивке о том, что работать будет только час 05.gif

Цитата
Порядок действий неправильный.


Понятно, буду создавать проект целиком.

gosu-art, единственный минус - кол-во перезаписи этого MAX II. Хотя мне кажется, что при отсутствии термоциклирования, чип будет выдерживать много более 100 циклов зап. Если мой сдохнет, переставлю в какой-нибудь конторе.
Wespe
Заработало.

lt_abortn, lt_rdyn, lt_discn, lirqn посадил на vcc. Теперь все грузится и могу считать конфигурационное пространство. 08.gif

Теперь буду пытаться сделать следующее. Буду отправлять на плату два числа, ПЛИС будет их складывать и отправлять результат.
des00
Цитата(Wespe @ Jan 28 2012, 13:23) *
Буду отправлять на плату два числа, ПЛИС будет их складывать и отправлять результат.

бессмысленно, если уж делать на максе, в качестве первого проекта, то что нить посерьезнее %) а два числа сложить и в симуляторе можно.
Wespe
Цитата
бессмысленно


Зато получу уовольствие, а там можно и что-нибудь по-серьезнее собрать. Хочу двигаться от простого к сложному. Заодно освежу в памяти verilog, на котором писал последний раз в ВУЗе.
Wespe
Собственно, реализовал.

Механизм следующий - пишу в два регистра числа, когда они сложатся, выставляю прерывание. Прерывания на 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)?
Serhiy_UA
BIOS формирует младшие адреса как ххх0, хх00, х000, и т.п., то есть они всегда нулевые, выровнены к размеру затребованных в BAR пространств I/O или памяти.

У меня специализация на Altera по pci32t и pci32mt, все на verilog, с этим я справляюсь, PCI-плата тоже своя на CycloneIII. Программы обслуживания пишут в DOS и Линукс, но уже другие программисты, и тоже успешно. Но хотел бы, ради интереса, добраться своими программами к своей аппаратуре со стороны WinXP, например под C++Builder 6, но пока не удается.

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

Wespe
Работаю в Kubuntu, Linux. Самой программы как таковой нету. Есть только драйвер, а сообщения печатаю в лог ядра.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.