Jump to content

    
Sign in to follow this  
M_A

PCI Интерфейс на ПЛИС

Recommended Posts

Если не хочется использовать WinDriver, с его готовым драйвером Kernel-уровня, то возьмите KernelDriver (той же фирмы Jungo) и напишите полностью свой драйвер - с помощью Wizard не представляет никакой сложности, при условии что Вы все-таки владеете некими зачатками программирования.

Для этого Вам понадобится Jungo Kernel Driver + Windows 2003 DDK. Здесь на Ftp все это есть.

Share this post


Link to post
Share on other sites
А насколько это сложно с "програмной" точки зрения ? Кто нибудь писал свой драйвер на PCI ? Нужно будет просто писать/читать несколько регистров как максимум делать это по прерыванию. Готовые решения вроде WinDriver и т.п использовать не хотелось бы. Поделитесь впечатлениями.....

Я писАл. Под линукс. WinDriver... выкинул эту бяку. Драйвер char-устройства (для платы ЦАП/АЦП, bus master) пишется за пол-недели. С драйвером сетевого устройства сейчас сижу. Спустя 2 месяца начинает работать (долго постигал тонкости сетевой подсистемы линукса).

Лично моё мнение - написание драйверов достаточно простая и тривиальная задача. По крайней мере - для линукса.

Гораздо сложнее сделать само устройство и программу работы с ним :).

Share this post


Link to post
Share on other sites

WinDriver/KernelDriver не хочется использовать только по одной причине - у Заказчика возникнет вопрос: "Куплен ли он официально?" Дело все в том что все ПО которое входит в комплект поставки за должно быть лицензионным даже винда на копьютер с которым все это поставляется покупается официально. Но в любом случае спасибо большое за информацию о ориентировочных сроках - хоть какая то информация для планирования есть !

Share this post


Link to post
Share on other sites

Хочу задать Уважаемой публике пару вопросов.

Вопрос №1 к ЯдроПисателям:

Не встречал ли кто исходники хорошего TestBench'а для шины на VHDL? Типа как компилёные библиотеки в корке от PLDA.

Вопрос №2 к ДровоПисателям:

Как часто (mS, uS, ... pS ;-) можно прерывать шину под WinNT? Хотелось бы услышать что-нибудь из практического опыта.

Share this post


Link to post
Share on other sites
Как часто (mS, uS, ... pS ;-) можно прерывать шину под WinNT?
На моей махарайке прерывания обслуживались так: драйвер, когда получал от винды управление по приходу прерывания - эти прерывания запрещал, и взводил событие. Приложение, проснувшись по этому событию - в конце своей работы прерывание разрешало. Поэтому вопрос о максимальной частоте прерываний закрвался автоматически - "лишние" прерывания просто не обслуживались, а количество работы, которое необходимо проделать по прерыванию, определяло приложение. Частота прерывний у нас не превышала нескольких десятков Гц в худшем случае.

Максимальная частота прерываний, ИМХО, ограничена временем обработки прервания драйвером. Реакция на них, насколько я понял из бесед с программёрами, минимальна, ибо обслуживаются они на каком-то там высоком уровне привелегий, и если в этот момент не обслуживаются другие прервания - всё происходит практически мгновенно. :)

Share this post


Link to post
Share on other sites

Хочу немного пояснить свою траблу. Задача следущая: извне поступает информация, прореживается, накапливается и передаётся в шину, причём хотелось бы передавать её по внешнему событию (условно - шпиндель переместился на 3мм, а это происходит раз в ~ 80 uS ;-). Что касаемо соотношения входного потока и слива результатов в шину, то это примерно 100 к 1, накапливаем 120-150 uS передаём 1-1.2 uS (PCI/66/32). Так вот мои программеры говроят:"Ты накопляй её полдня или хотя бы 10-100 mS, а потом мы заберём, а чаще ВИНДА не успевает и усё виснет", но буфер тоже не резиновый, хотя прерывать можно и на 8, 16 ... событие. Так вот мне хотелось бы знать кто мне тут мозги парит, и где компромис.

Share this post


Link to post
Share on other sites

Ну уж не знаю, кому верить. Наверняка покажет только эксперимент.

Похоже, что Вам плясать нужно от размеров буфера. Заполнился на половину (примерно), и тогда сливать.

Драйвер сами пишите или используете нечто готовое типа ВыньДривер? В последнем случае заморочки по быстодействию могут иметь место, причём фиг что сделаешь. :( Наши то программёры напряглись и написали свой, избавив меня от кучи проблем.

Share this post


Link to post
Share on other sites

PhilipS

Windows 2003 DDK не требует никакого лицензирования и поставлялся Microsoft бесплатно - только оплатить 25 $ за доставку. В нем много уже готовых заготовок для разного вида драйверов, на основе которых можно сделать свой и никаких заморочек с лицензированием. Да и Jungo Kernel Driver выдает исходную заготовку, которая в дальнешем компилируется Windows 2003 DDK.

Share this post


Link to post
Share on other sites

Сам не програмист, но стал свидетелем того как человек понимающий в этом деле не многим более меня, в частности что такое Visual Studio, написал драйвер обеспечивающий доступ к портам, примерно за 1 месяц. Из этого следует что стоит только захотеть. :excl:

Share this post


Link to post
Share on other sites
Как часто (mS, uS, ... pS ;-) можно прерывать шину под WinNT?
На моей махарайке прерывания обслуживались так: драйвер, когда получал от винды управление по приходу прерывания - эти прерывания запрещал, и взводил событие. Приложение, проснувшись по этому событию - в конце своей работы прерывание разрешало. Поэтому вопрос о максимальной частоте прерываний закрвался автоматически - "лишние" прерывания просто не обслуживались, а количество работы, которое необходимо проделать по прерыванию, определяло приложение. Частота прерывний у нас не превышала нескольких десятков Гц в худшем случае.

Максимальная частота прерываний, ИМХО, ограничена временем обработки прервания драйвером. Реакция на них, насколько я понял из бесед с программёрами, минимальна, ибо обслуживаются они на каком-то там высоком уровне привелегий, и если в этот момент не обслуживаются другие прервания - всё происходит практически мгновенно. :)

 

Капец!!! С таким же успехом можно сделать в апликации бесконечный цикл со вставленным туда например Sleep(10) и не пользовать никаких прерываний

Но зато гении дровописатели очень напрягались

Share this post


Link to post
Share on other sites

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

7.0.2 не смог дешифрировать.

 

А вообще удачи в начинаниях.

Особенно если для науки.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this