Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: PCI Интерфейс на ПЛИС
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
M_A
Мне необходимо сделать на Альтере PCI устройство, которое будет передавать внеш данные в комп.
Вроде есть готовые варианты, но я пока новичок, и если чего не заработает, в чужом наверное фиг разберусь...
Вопрос вот в чем, насколько сложно реализовать PCI на плис с нуля?
Это поможет мне лучше освоить программироание ПЛИС и реализацию на них конкретных задач.
Но не слишком ли неподъемная задача для начинающего?
Буду благодарен не только ответам, но и советам!
Dimonira
Начинающему, по-моему, лучше для начала всё-таки взять чужое.
Есть Альтеровские родные корки, а есть корки от PLDA (тут на ФТП лежат). Там есть и доки и готовая симуляция, чтобы ознакомиться.
Вот с ознакомления с доками, потом симуляцией и начинай.
А потом реализуешь в железе, запустишь всё и подумаешь: "А нафига мне своё делать, когда уже всё прекрасно работает?" smile.gif
Удачи.
makc
Работать-то оно работает, но часто не поддерживает некторые функции, без которых не сделать требуемое устройство. Например, не поддерживает PCI Expansion ROM. И из-за этого может появиться необходимость в разработке своего...
Elresearch
Если знаете что такое FSM, то не так уж сложно.
M_A
Угу, понятно, всем спасибо за помощь, подкинули пищу для ума.
Но все таки хотелось бы узнать, шибко ли запарочно сделать работающий PCI с нуля???

To Elresearch
Я пока начинающий, и что такое FSM Не знаю...
Elresearch
Functional State Machine :-) Просто ими в стандарте PCI описывается "как оно работает". так что без этого никак ;-)
Vitus
Если делаете Target без Burst'а то задача не такая уж и сложная. Возмите спецификацию и тщательно ее изучите для того чтобы отбросить все лишнее и оставить только то что необходимо. кроме того в и-нете полно информации и разного рода примеров реализации.
Vitus
А я всегда считал что FSM = Finite State Mashine blush.gif
Elresearch
:-D ну главное это State Mashine, а Finite иль Functional неважно. Просто если сказать SM, то могут непрально понять ;-)
CO2040
Цитата(M_A @ Jan 27 2005, 09:05)
Мне необходимо сделать на Альтере PCI устройство, которое будет передавать внеш данные в комп.
Вроде есть готовые варианты, но я пока новичок, и если чего не заработает, в чужом наверное фиг разберусь...
Вопрос вот в чем, насколько сложно реализовать PCI на плис с нуля?
Это поможет мне лучше освоить программироание ПЛИС и реализацию на них конкретных задач.
Но не слишком ли неподъемная задача для начинающего?
Буду благодарен не только ответам, но и советам!
*



Лучше всего начать разбираться с MegaCore PCIT1. Я с этого PCI и осваивал. Потом к этому PCIT1 свой приписал модулек, который позволил получить на выходе ISA-подобный интерфейс. Также там не было поддержки Expansion ROM (хотя в документации декларировалось), а когда понадобилось - внимательно пересмотрел все исходники и нашел нужные сигналы, которые пришлось только "вывести" наружу. Потом прыгал от радости когда на мою часть BIOS передавалось управление...
Все делал тогда именно как начинающий и в одиночку - начиная от разводки платы, изучения AHDL и кончая написанием софта, который позволил этой плате полноценно "задышать", на все ушло около 4 месяцев.
Короче процесс освоения PCI был в кайф. Жалко что теперь это уже никому не нужно и все эти разработки и тестовый софт валяются без дела. Т.е. осваивать какой-либо интерфейс имеет смысл если это востребовано.
M_A
У меня то это точно будет востребовано и проработает на благо науки не один год biggrin.gif
Artyom
У меня Все было просто smile.gif
когда писалось PCI устройство M/T ....я по просту использовал Альтеровскую корку и МегаДекрипт smile.gif Но на изучение этой корки ушло где-то 2 месяца (особо не усердствуя) ... Зато все работает на УРА...... То же самое я советую сделать и тебе...... С Target устройствами все намного проще...... и код меньше..... Дезай...... smile.gif Могу кинуть MegaDecript если нуна......
prom
Цитата(Artyom @ Jan 31 2005, 10:40)
У меня Все было просто smile.gif
когда писалось PCI устройство M/T ....я по просту использовал Альтеровскую корку и МегаДекрипт smile.gif  Но на изучение этой корки ушло где-то 2 месяца (особо не усердствуя) ... Зато все работает на УРА...... То же самое я советую сделать и тебе...... С Target устройствами все намного проще...... и код меньше..... Дезай...... smile.gif  Могу кинуть MegaDecript если нуна......
*


Можешь выложить на фтп? Пригодится wink.gif
Esquire
На FTP уже есть все, что нужно, см. pub/FPGA/_IPcores_/PCI/ cranky.gif .
PhilipS
А насколько это сложно с "програмной" точки зрения ? Кто нибудь писал свой драйвер на PCI ? Нужно будет просто писать/читать несколько регистров как максимум делать это по прерыванию. Готовые решения вроде WinDriver и т.п использовать не хотелось бы. Поделитесь впечатлениями.....
Vjacheslav
Если не хочется использовать WinDriver, с его готовым драйвером Kernel-уровня, то возьмите KernelDriver (той же фирмы Jungo) и напишите полностью свой драйвер - с помощью Wizard не представляет никакой сложности, при условии что Вы все-таки владеете некими зачатками программирования.
Для этого Вам понадобится Jungo Kernel Driver + Windows 2003 DDK. Здесь на Ftp все это есть.
gab
Цитата(PhilipS @ Feb 8 2005, 13:30)
А насколько это сложно с "програмной" точки зрения ? Кто нибудь писал свой драйвер на PCI ? Нужно будет просто писать/читать несколько регистров как максимум делать это по прерыванию. Готовые решения вроде WinDriver и т.п использовать не хотелось бы. Поделитесь впечатлениями.....
*

Я писАл. Под линукс. WinDriver... выкинул эту бяку. Драйвер char-устройства (для платы ЦАП/АЦП, bus master) пишется за пол-недели. С драйвером сетевого устройства сейчас сижу. Спустя 2 месяца начинает работать (долго постигал тонкости сетевой подсистемы линукса).
Лично моё мнение - написание драйверов достаточно простая и тривиальная задача. По крайней мере - для линукса.
Гораздо сложнее сделать само устройство и программу работы с ним smile.gif.
PhilipS
WinDriver/KernelDriver не хочется использовать только по одной причине - у Заказчика возникнет вопрос: "Куплен ли он официально?" Дело все в том что все ПО которое входит в комплект поставки за должно быть лицензионным даже винда на копьютер с которым все это поставляется покупается официально. Но в любом случае спасибо большое за информацию о ориентировочных сроках - хоть какая то информация для планирования есть !
k_george
Хочу задать Уважаемой публике пару вопросов.
Вопрос №1 к ЯдроПисателям:
Не встречал ли кто исходники хорошего TestBench'а для шины на VHDL? Типа как компилёные библиотеки в корке от PLDA.
Вопрос №2 к ДровоПисателям:
Как часто (mS, uS, ... pS ;-) можно прерывать шину под WinNT? Хотелось бы услышать что-нибудь из практического опыта.
Vitёk
Цитата
Как часто (mS, uS, ... pS ;-) можно прерывать шину под WinNT?
На моей махарайке прерывания обслуживались так: драйвер, когда получал от винды управление по приходу прерывания - эти прерывания запрещал, и взводил событие. Приложение, проснувшись по этому событию - в конце своей работы прерывание разрешало. Поэтому вопрос о максимальной частоте прерываний закрвался автоматически - "лишние" прерывания просто не обслуживались, а количество работы, которое необходимо проделать по прерыванию, определяло приложение. Частота прерывний у нас не превышала нескольких десятков Гц в худшем случае.
Максимальная частота прерываний, ИМХО, ограничена временем обработки прервания драйвером. Реакция на них, насколько я понял из бесед с программёрами, минимальна, ибо обслуживаются они на каком-то там высоком уровне привелегий, и если в этот момент не обслуживаются другие прервания - всё происходит практически мгновенно. smile.gif
k_george
Хочу немного пояснить свою траблу. Задача следущая: извне поступает информация, прореживается, накапливается и передаётся в шину, причём хотелось бы передавать её по внешнему событию (условно - шпиндель переместился на 3мм, а это происходит раз в ~ 80 uS ;-). Что касаемо соотношения входного потока и слива результатов в шину, то это примерно 100 к 1, накапливаем 120-150 uS передаём 1-1.2 uS (PCI/66/32). Так вот мои программеры говроят:"Ты накопляй её полдня или хотя бы 10-100 mS, а потом мы заберём, а чаще ВИНДА не успевает и усё виснет", но буфер тоже не резиновый, хотя прерывать можно и на 8, 16 ... событие. Так вот мне хотелось бы знать кто мне тут мозги парит, и где компромис.
Vitёk
Ну уж не знаю, кому верить. Наверняка покажет только эксперимент.
Похоже, что Вам плясать нужно от размеров буфера. Заполнился на половину (примерно), и тогда сливать.
Драйвер сами пишите или используете нечто готовое типа ВыньДривер? В последнем случае заморочки по быстодействию могут иметь место, причём фиг что сделаешь. sad.gif Наши то программёры напряглись и написали свой, избавив меня от кучи проблем.
Vjacheslav
PhilipS
Windows 2003 DDK не требует никакого лицензирования и поставлялся Microsoft бесплатно - только оплатить 25 $ за доставку. В нем много уже готовых заготовок для разного вида драйверов, на основе которых можно сделать свой и никаких заморочек с лицензированием. Да и Jungo Kernel Driver выдает исходную заготовку, которая в дальнешем компилируется Windows 2003 DDK.
FLTI
Цитата(Vitus @ Jan 27 2005, 11:46)
Если делаете Target без Burst'а то задача не такая уж и сложная.
*


А если с Burst ом, то намного сложнее получается? За счет чего?
ALexx_V
Сам не програмист, но стал свидетелем того как человек понимающий в этом деле не многим более меня, в частности что такое Visual Studio, написал драйвер обеспечивающий доступ к портам, примерно за 1 месяц. Из этого следует что стоит только захотеть. excl.gif
dachny
Цитата(Vitёk @ Feb 9 2005, 14:47)
Цитата
Как часто (mS, uS, ... pS ;-) можно прерывать шину под WinNT?
На моей махарайке прерывания обслуживались так: драйвер, когда получал от винды управление по приходу прерывания - эти прерывания запрещал, и взводил событие. Приложение, проснувшись по этому событию - в конце своей работы прерывание разрешало. Поэтому вопрос о максимальной частоте прерываний закрвался автоматически - "лишние" прерывания просто не обслуживались, а количество работы, которое необходимо проделать по прерыванию, определяло приложение. Частота прерывний у нас не превышала нескольких десятков Гц в худшем случае.
Максимальная частота прерываний, ИМХО, ограничена временем обработки прервания драйвером. Реакция на них, насколько я понял из бесед с программёрами, минимальна, ибо обслуживаются они на каком-то там высоком уровне привелегий, и если в этот момент не обслуживаются другие прервания - всё происходит практически мгновенно. smile.gif
*



Капец!!! С таким же успехом можно сделать в апликации бесконечный цикл со вставленным туда например Sleep(10) и не пользовать никаких прерываний
Но зато гении дровописатели очень напрягались
IEC
При первой разработке PCI устройства Я вообще начал с PLX9052, потом создал другую плату уже л на Альтеровской корке 1999г. Использовал ACEX. Новый альтеровский софт 3.2.0 так и не впихнул в кристал, машина зависала. Корка от PLDA 7.0.1 пошла на этой же плате.
7.0.2 не смог дешифрировать.

А вообще удачи в начинаниях.
Особенно если для науки.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.