Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Кто подскажет?
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
PaulB
Приветствую всех знатоков электроники и тех, кто хочет ей овладеть. smile.gif
Мой вопрос скорей всего не покажется новым и даже в этой ветке я нашёл информацию по нему, но она меня не удовлетворила.
Опять же. Я являюсь новичком в освоении ПЛИС. Основная задача состоит в том, что мне надо разработать и создать PCI устройство которое бы имело «промежуточный» характер, то есть принимать информацию с внешних устройств и отправлять её в PC, и наоборот: PC отправляет информацию на внешние платы. Получается - Двухсторонняя связь. Я могу предположить, что для первого проекта это не так уж и сложно.

После прочтения нескольких статей и относительно небольшого количества вопросов обсуждавшихся в этой ветке, я пришёл к некому мнению: итак ПЛИС представляет из себя, большое количество логических элементов (помещенный в небольшой корпус), а чтобы создать нужные нам логические входы – нужно запрограммировать нашу ПЛИС-ину. Прошивка там не такая как на МК. Для того чтобы написать прошивку и прошить, надо скачать, например MAX+Plus (ну для этих целей достаточно много программ, более новых и надёжных), так же, для написания прошивки можно использовать четыре способа: графический, символьный, текстовый или диаграммный. После написания прошивки надо провести процесс отладки и если всё OK, то можно прошивать саму ПЛИС-ину. Для того чтобы прошить, одной программы мало, нужен ещё и программатор (переделанный программатор от МК- например AVR).
Ну, а в остальном, делается плата, устанавливается на неё сама ПЛИС и обвязка того устройства которое мы (или разработчик) создаем.
Это небольшое описание того чего я понял из прочитанных мною статей. Если что-то не так, то пожалуйста, объясните что именно.

Что делать дальше?
Кроме как поиска информации и её прочтения, я больше нечего не предпринимал. Наверное, надо скачать одну из программ, для проектирования ПЛИС устройств – вот только какую? Я прекрасно понимаю, что каждый из разработчиков использует ту программу, которая ему по душе, но всё же может мы сойдемся в чём-то одном?

Дальше следует выбор самой ПЛИС- микросхемы? Тут я даже прокомментировать не могу.
Ну, а дальше пойдут вопросы непосредственно самого программирования и создание устройства, но это после скачивания и установки программы.

help.gif
makc
1. Нужно определиться, какие внешние интерфейсы должны поддерживаться. Их пропускная способность и объемы передаваемых через них данных. Это нужно чтобы определить архитектуру проекта ПЛИС и убедиться в том, что пропускной способности PCI для Вашей задачи будет достаточно.
2. ПЛИС - это действительно набор базовых элементов, который можно сконфигурировать для выполнения требуемой функции.
3. Определиться с производителем ПЛИС, т.к. это будет определять тип используемого ПО для разработки прошивки ПЛИС и тип программатора (кабеля для конфигурирования ПЛИС).
4. Для программирования ПЛИС программатор МК не подойдет. Нужен будет другой программатор. Его придется либо купить (более быстрый и удобный для шины USB), либо собрать самостоятельно (на LPT - более медленный и не такой современный).
5. Определиться с выбором конкретного кристалла, удовлетворяющего требованиям емкости, быстродействия и количеству контактов/ввода вывода.
6. Теперь можно разрабатывать схемотехнику устройства и проектировать прошивку ПЛИС.

Вы задаете слишком общие вопросы. Они должны быть конкретнее.
PaulB
Цитата
1. Нужно определиться, какие внешние интерфейсы должны поддерживаться. Их пропускная способность и объемы передаваемых через них данных. Это нужно чтобы определить архитектуру проекта ПЛИС и убедиться в том, что пропускной способности PCI для Вашей задачи будет достаточно.


То есть "внешние интерфейсы" и "пропускной способности PCI"?

Цитата
3. Определиться с производителем ПЛИС, т.к. это будет определять тип используемого ПО для разработки прошивки ПЛИС и тип программатора (кабеля для конфигурирования ПЛИС).


Я вообщето скланяюсь к "Altera", правда не смогу объяснить почему.

Цитата
4. Для программирования ПЛИС программатор МК не подойдет. Нужен будет другой программатор. Его придется либо купить (более быстрый и удобный для шины USB), либо собрать самостоятельно (на LPT - более медленный и не такой современный).


Ну вы меня немножко не так поняли. Я имел в виду, что программатор от МК всего лишь похож на программатор от ПЛИС, и от МК можно переделать в программатор от ПЛИС. Сам буду паять.

Цитата
5. Определиться с выбором конкретного кристалла, удовлетворяющего требованиям емкости, быстродействия и количеству контактов/ввода вывода.
6. Теперь можно разрабатывать схемотехнику устройства и проектировать прошивку ПЛИС.


По этим пунктам я крайне затрудняюсь ответить.
sazh
Если у вас нет конкретной цели, может имеет смысл какой нибудь kit купить.
Зайдите на сайт производителя, наберите в поисковике pci
Например на сайте альтера
http://www.altera.com/products/devkits/alt...maxii-1270.html
CodeWarrior1241
Я хочу произвести небольшое сравнение, надеюсь что модеры не сочтут это как переход на личность. Есть пользователь на форуме - RHnd. Человек пришел на форум как знающий что хочет, но не знающий как это осущствить на ПЛИС. Другие месные "зубры" быстро помогли поставить его наноги. Такое впечетление что Вы в аналогичной ситуации, и к Вам подлежат теже самые советы.

Ваш выбор кристалла и всего связанного с ним вращается вокруг Ваших нужд, которые Вы не написали ни в какой степени. Если Вы делаете проект для университета/самообразования, у вас будет конкретный выбор. Если вы делаете промышленное средство, у Вас другой выбор. Если, скажем, Вы делаете data aquisition карту для индустриальных целей, так Вы вобще сможите купить готовую карту и только написать прошивку для ПЛИСа который на ней находится.

Некоторые пользователи говорят что освоенние Alter-ы, и выполнение проектов на Verilog-е дается легчем чем Xilinx и VHDL. Может быть. Если Вы начнете с инетоского варианта Quartus II flow и симулятором типа ModelSim, у Вас будет реальная возможность зделать первые шаги вобще без траты денег. Часто, первый шаг для изучения нового МК это заставить LED на плате моргать. С ПЛИСом тоже самое, только в симуляторе Вы сможите точно проверить Вашу design, написав тестовую программу которая стимулирует её и выявляет её поведение. На сайте Altera есть все для начинающих. Естессно что такое изучение не заменяет requirements definition (вроде ТЗ?), надо в любом случае определить как карта будет собирать данные, через какой интерфайс, что с этими данными надо делать в ПЛИС, какой PCI нужен (их несколько скоростей и напрежений), и что с данными будет делать ПК, и будер ли ПК вобще...
makc
Цитата(PaulB @ May 23 2007, 22:42) *
То есть "внешние интерфейсы" и "пропускной способности PCI"?



Вы же сами написали:
Цитата
мне надо разработать и создать PCI устройство которое бы имело «промежуточный» характер, то есть принимать информацию с внешних устройств и отправлять её в PC, и наоборот


И чтобы принимать информацию от внешних устройств Вам неизбежно придется их как-то соединить с разрабатываемым Вами устройством. Соединение выполняется с использованием стандартных (или нестандартных) интерфейсов, т.к. RS-232/485, CAN и др.

Цитата
Я вообщето скланяюсь к "Altera", правда не смогу объяснить почему.


Попробуйте для начала оценить "доставаемость" комплектующих в Вашем регионе. Почитайте форум на тему плюсов и минусов средств разработки отдельных производителей ПЛИС. Это поможет сделать более-менее обоснованный выбор.

Цитата
Ну вы меня немножко не так поняли. Я имел в виду, что программатор от МК всего лишь похож на программатор от ПЛИС, и от МК можно переделать в программатор от ПЛИС. Сам буду паять.


Проще сделать с нуля. smile.gif

Цитата
По этим пунктам я крайне затрудняюсь ответить.


Без этого, боюсь, ничего путного может и не получиться.
PaulB
И так. Внешние устройства будут иметь интерфейс – I2C ("Inter-Integrated Circuit"). И я предположу, что для этого интерфейса нужна обвязка, например микросхемы PCF8583, PCF8574 и т.д. Еще этот интерфейс различается по классам: "Master"- и "Slave" – устройство. "Master"- абонент может быть достаточно легко реализован чисто программными средствами, а "Slave"- устройства требует аппаратной поддержки, кроме случая очень низких скоростей обмена. Можно реализовать переключение между этими двумя классами.

PCI устройство может питаться от 3.3В и 5В. А вот какое напряжение питания выбрать? Может выбрать 5В, так как в случае необходимости можно сделать 3.3В?

А вот данные поступаемые через I2C интерфейс, должны каким то образом обрабатываться или могут поступать на прямую, в ПК?
makc
Цитата(PaulB @ May 26 2007, 11:54) *
И так. Внешние устройства будут иметь интерфейс – I2C ("Inter-Integrated Circuit"). И я предположу, что для этого интерфейса нужна обвязка, например микросхемы PCF8583, PCF8574 и т.д. Еще этот интерфейс различается по классам: "Master"- и "Slave" – устройство. "Master"- абонент может быть достаточно легко реализован чисто программными средствами, а "Slave"- устройства требует аппаратной поддержки, кроме случая очень низких скоростей обмена. Можно реализовать переключение между этими двумя классами.


Уже ближе к делу. Если начать вдаваться в подробности, то при правильном выборе ПЛИС можно обойтись без использования дополнительных ИС, или ограничиться простыми буферными ИС для преобразования уровней сигналов.

Если я правильно понимаю, что Ваше устройство должно выполнять сбор данных и быть Master'ом на шине I2C. Master можно реализовать в ПЛИС, это не сложно.

Цитата
PCI устройство может питаться от 3.3В и 5В. А вот какое напряжение питания выбрать? Может выбрать 5В, так как в случае необходимости можно сделать 3.3В?


Если Вы планируете работать со старыми матплатами, то лучше ориентироваться на 5В. 3.3В есть далеко не на всех старых машинах (особенно в корпусах AT, если помните такие).

Цитата
А вот данные поступаемые через I2C интерфейс, должны каким то образом обрабатываться или могут поступать на прямую, в ПК?


Все зависит от Ваших целей. Что это за данные и что можно/нужно с ними делать никто кроме Вас не знает. Нам Вы об этом не говорите, т.е. и посоветовать Вам что-то определенное в этом случае сложно.
PaulB
С интерфейсом (I2C) и питанием (я выбираю 5В) вроде понятно.

Цитата
Если я правильно понимаю, что Ваше устройство должно выполнять сбор данных и быть Master'ом на шине I2C. Master можно реализовать в ПЛИС, это не сложно.


Моё устройство также может быть и Slave. Хотелось бы конечно реализовать переключение между "Master" и "Slave", но главное вообще, чтобы хоть что ни будь, получилось и работало.

Данные – да в принципе «любые». Устройство (интерфейсная плата), по сути, будет центральным контроллером (эдаким спинным мозгом), реализующим простейшие (ну для начала хотя бы простейшие) автономные операции. И она же будет являться мостом между всеми устройствами и ПК.

Например: одним из устройств подключаемых к интерфейсной плате является, грубо говоря, плата с датчиками. Эта плата уже сама будет конфигурировать данные о датчике, то есть номер (адрес) датчика и то, какие данные он нам сообщает. Получается то, что интерфейсной плате останется просто передать данные в ПК, а там программа, которая уже решит, что с этими данными делать.
CodeWarrior1241
Цитата(PaulB @ May 27 2007, 09:05) *
Моё устройство также может быть и Slave. Хотелось бы конечно реализовать переключение между "Master" и "Slave", но главное вообще, чтобы хоть что ни будь, получилось и работало.

Это переключение - предельно просто. Воспользуйтесь ядром процессора встроенным ПЛИС, напремер Microblaze, там есть возможность для каждой I2C передачи выставлят статус ПЛИСа как master или slave. Естессно какое-то из slave'ов тоже должно выставить себя как master, или Вам надо пользоватся multi-master и соответствущим образом выставить Microblaze.

Цитата
одним из устройств подключаемых к интерфейсной плате является, грубо говоря, плата с датчиками. Эта плата уже сама будет конфигурировать данные о датчике, то есть номер (адрес) датчика и то, какие данные он нам сообщает. Получается то, что интерфейсной плате останется просто передать данные в ПК, а там программа, которая уже решит, что с этими данными делать.

Это тоже реально, но вам придется написать driver для ПК в Вашей выбранной OS. Для этого тоже есть ресурсы на форуме.
PaulB
Цитата
Цитата
одним из устройств подключаемых к интерфейсной плате является, грубо говоря, плата с датчиками. Эта плата уже сама будет конфигурировать данные о датчике, то есть номер (адрес) датчика и то, какие данные он нам сообщает. Получается то, что интерфейсной плате останется просто передать данные в ПК, а там программа, которая уже решит, что с этими данными делать.


Это тоже реально, но вам придется написать driver для ПК в Вашей выбранной OS. Для этого тоже есть ресурсы на форуме.


Я на написание драйвера и рассчитывал, иначе, зачем мне всё это. Все устройства должны управляться программно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.