Осторожненько

На нашем форуме прозвучал один интересный вопрос, ответить на который на самом деле оказалось не так и просто. Вопрос заключался в следующем: "Какие меры предосторожности следует предпринять перед прошивкой проекта в чип CPLD? Нужно ли опасаться испортить чип?".

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

Первая рекомендация.
В проекте Altera Quartus II зайдите в меню Assignments->Device. Появится диалоговое окно Device и на нем будет кнопка Device and Pin Options. Нажмите ее и увидите следующее диалоговое окно:

Altera Quartus Device and Pin Options

В этом диалоге есть одна довольно важная опция: Unused pins. Эта опция позволяет сказать программе Quartus, что делать с неиспользуемыми контактами микросхемы. При создании нового проекта, по умолчанию, Quartus устанавливает эту опцию в "As output driving zero". Я же настоятельно рекомендую в ваших экспериментах установить ее в "As input tristated". Попробую объяснить.

Предположим, что ваш проект использует только один входной и один выходной сигнал, а всего в ПЛИС EPM240T100C5 имеется кажется около 80 пользовательских пинов. Наш проект для платы Марсоход может, например, выглядеть вот так:

Простой проект для ПЛИС

Здесь видно вход key от кнопочки платы, один инвертор и выход на светодиод led. Ничего особенно мудреного. При нажатии на кнопочку должен загореться светодиод.

Плата у нас есть готовая, по ее схеме видно какой контакт куда подключен на плате. Назначения я сделал в Quartus Assignment Editor вот так:

Назначения свойств контактов ПЛИС

Вроде все верно. Можно компилировать и пробовать. Так?

Так да не совсем так...
В последней версии платы Марсоход 1.3 установлен кварцевый генератор. Его выход подключен к контакту чипа ПЛИС, который на схеме называется pt_right.

Если не обратить внимание на опцию Unused pins в диалоге Device and Pin Options, то компилятор Quartus все неиспользуемые пины изнутри микросхемы подключит к ЗЕМЛЕ (As output driving zero). Это значит, что выход генератора фактически оказывается закороченным на землю, а это уже не хорошо. Совсем другое дело, если я установлю опцию Unused pin в значение As input tristated. Тогда все неиспользуемые мною пины будут находиться в высокоомном состоянии, как будто это входы. Ток в эти пины не потечет. Значит будет не важно, что там снаружи подключено к ним и я могу делать какие-то свои простые эксперименты с небольшим количеством пинов на нашей конкретной плате.

Должен сказать, я недавно и сам "прокололся" на этой фишке. Я взял для своих экспериментов один из имеющихся у нас PCIexpress Developer Kit - это довольно сложная плата с FPGA CycloneII, DDR2, Ethernet PHY, Flash и прочими прибамбасами. Сделал быстренько новый проект для всего нескольких пинов. Загрузил проект в чип и вроде бы он заработал - светодиодики заморгали как нужно. Однако когда я случайно коснулся пальцем микросхемы FPGA, то чуть не обжегся - настолько она была горячая. Тут же я выключил питание и вспомнил про опцию Unused pins - конечно она стояла "не правильно" в положении "As output driving zero". Пины, не использованные в моем проекте тянули на землю выходные сигналы внешних микросхем Ethernet и DDR.

После того, как поставил эту опцию в правильные "As input tristated", перекомпилировал и заново загрузил проект в микросхему - она стала почти холодная.

Вот кстати и вторая рекомендация.
При загрузке проекта в микросхему придерживайте ее корпус пальцем. Если после загрузки микросхема начинает сильно греться - немедленно выключайте и думайте, что сделано не так.

На самом деле, не нужно пугаться. Во всех опубликованных наших проектах Quartus II для платы Марсоход скорее всего опция Unused Pins стоит в As Input Tristate. Кроме того, скорее всего в наших проектах нет неиспользованных контактов.
Так что самый безопасный путь - брать какой-то готовый наш проект и исправлять его. Однако помните то, что я вам порекомендовал. Smile

Третья рекомендация.
Читайте сообщения Quartus II при компиляции проекта. Некоторые сообщения очень важны.
Окно сообщений легко найти - выберите пункт меню View->Utility Windows->Messages.
Я понимаю, что сообщения на английском языке и может быть не все понятно - привыкнете.
Вот пример важного сообщения:

Простой проект для ПЛИС и светодиода

Я добавил в проект еще один вывод, но "забыл" назначить ему номер контакта микросхемы. В этом случае Quartus выведет мой сигнал на ту ножку микросхемы, которая покажется ему самому удобнее и выдаст сообщение Critical Warning.
Не забывайте, что микросхема припаяна на вашу (нашу) плату. Куда попадет этот вывод? Если я не назначу номер контакта микросхемы своему выводу, то Quartus может вывести его куда угодно на незанятые ножки микросхемы. А если на те ножки микросхемы которые уже объединены на плате для подключения моторчиков? Не будет ли там конфликта сигналов?

Ну вот пожалуй все советы...  Будьте внимательны!


 

  

Добавить комментарий