Наконец то пришла долгожданная посылка. Дрожащими руками разворачиваю кучу оберточного целлофана и достаю небольшую платку с надписью Altera. Вот про это зеленое создание из коробчонки и пойдет дальнейший разговор.

Наверно сразу возникает мысль, да сколько можно, не пора ли остановиться на одном каком то семействе и пилить статьи? Ведь еще столько всего можно рассказать про AVR. Кроме того, еще не раскрыта тема STM32. А тут еще какой то новый микроконтроллер.

Итак, от изучения STM32 микроконтроллеров не отказываюсь, но, как мне показалось, это те же AVR и их изучение упирается лишь в особенности архитектуры. Конечно этой информации хватит, чтобы не скучать ближайшие годы, поэтому STM32 займет свою нишу в списке статей. Изучать же некие базовые принципы пока легче с AVR, поэтому они тоже останутся и статьи по ним будут.

Вернемся к сабжу. Пока нет вообще никаких планов касаемо ПЛИС, статья лишь для некого общего развития, выльется во что то большее — хорошо, нет — значит нет. Зачем вообще эта затея? Недавно упоминал, что тенденция использования AVR и PIC микроконтроллеров сильно изменилась, ни в одном приборе/устройстве разобранном мною за 3 года я не видел ни тех ни других. Как ни странно, но и STM32 я видел всего в одном устройстве — в своем портативном осциллографе. Часто речь идет о мифических ARM процессорах(микроконтроллерах?) внутри, но на практике я их еще не видел. Зато в 90% реальных случаев, когда вскрываешь крышку и видишь чип… с надписью ALTERA.

Да про них я слышал уже давно, и достаточно часто, но считал его, чем то вроде крутяцкого микроконтроллера поэтому особо не вникал. В неком далеком будущем, когда вырастет борода и лысина, я планировал заняться их изучением. Будущее оказалось совсем не таким и далеким, а суровые реалии внезапно потребовали иметь общее представление обо всем, что творится в мире электроники, поэтому пройти мимо этого вопроса было бы не правильно.

Первое что удивило — это не микроконтроллер вовсе. Дословно ПЛИС — программируемая логическая схема. Так что это набор логических элементов, да да тех самых «или», «не», «и» и т.п, которые можно соединять между собой. На текущем этапе, вообще сложно представить какая от этого польза. Есть мнение, что это позволяет достичь более высоких скоростей работы. Кроме того, рекомендую в интернете ознакомиться с проектами реализованными на ПЛИС, чтобы понять что это круто. Все это подогревает интерес еще больше.

Первое с чего стоит начать — ознакомиться с ценником
fpga1
кто то говорил что EasyAVR это не сбыточная мечта, что тогда говорить про наборы стоимостью в 56-246 килорублей. Хотя цены на конкретные камни достаточно демократичные, но даже так, моя любовь ко всему фирменному угасла, ибо фирменный программатор стоит 20-28к. И да, камешки в достаточно суровых для рядового радиолюбителя корпусах вроде TQFP100, поэтому в домашних условиях сложно представить их приготовление.

Даже те решения, что предлагают самые дешевые радиолюбительские магазины, нельзя назвать дешевыми. Альтернативой является сайт с чудным названием «марсоход» — www.marsohod.org. Не смотря на то, что я не оставляю ссылки, на сайты подразумевающие всякого рода заработки и рекламу, то этот сайт отличается. Основная их деятельность изготовление плат: марсоход, марсоход2 и программатор MBFTDI. Попутно они пилят проекты для этих плат. Но! Проект с открытыми исходниками, схемами, драйверами и сделан с душой. Не хочешь покупать — не покупай, можешь сделать сам, вот тебе вся информация, даже разводка пп. Для каждой платы имеется несколько десятков готовых проектов. Вкупе с демократичными ценами на продукцию, проект достоин похвалы. Собственно всю инфу можно найти у них на сайте, здесь же я попытаюсь прояснять некоторые основные моменты и грабли.

На втором марсоходе программер встроенный и поболее ништяков, но для себя я решил взять первый марсоход и программатор, в случае успеха, платы можно делать самостоятельно и нужен будет программатор отдельно. Итак заказ сделан, чтобы оплатить его побыстрее решил сделать это наличкой. Побежал с бумажкой в ближайший банк и был послан, не смотря на то что оплату можно сделать через любой банк, сделать удалось это лишь в сбере, отстояв длинную очередь. Так что лучше уж веб платежки. Надо отдать должное, заказ обработали оперативно и пришел он достаточно быстро — грубо говоря за неделю, даже почта России не облажалась. За это отдельный респект.

В комплекте пришел программатор, плата марсоход и проводок питания, но почему было не положить шнурок от программатора до платы. Пришлось повозиться и паять свой шнурок. Сам камень именуется EPM240T100C5. Хорошо это или плохо пока не понятно. Вот она платка с кварцем на 100мгц и питанием 3.3В.
marsohod

Теперь дойдем до самого интересного, проекты пишутся в Quartus II web edition. Скачать ее было довольно напряжно, а папка после полной установки занимает более 10Гб!!! Создать первый проект оказалось достаточно проблематично, ибо среда не очень дружелюбна, без мануалов тут не обойтись.
fpga4

Сам процесс создания проекта и нет смысла описывать, на сайте марсохода все в картинках. Основные моменты: 1. создается проект; 2. выбираем камень 3. выбираем язык, на котором будет писаться проект, например авторы юзают Verilog. 4. собственно пишем программу 5.настраиваем не подключенные пины 6.настраиваем подключенные пины 7.компилируем 8.шьем.

Компилится жесть как долго, на мой взгляд 2 минуты, это гемор. При компиляции постоянно вылезает нытье с просьбой купить программу. Шьется все через JTAG. На удивление, с установкой драйверов и определением программатора проблем не было — все как часы.
fpga3

Предлагаю посмотреть пример «программы» hello world. Например, светодиод(led0) постоянно горит, но при нажатии кнопки(key0) — гаснет. Как бы инверсия. Реализуем это так: в основной программе — состояние светодиода равно состоянию кнопки, а в настройках подтягиваем пин с кнопкой к + питания.

module test_wires
(
input wire key0,  
output wire led0,
);
assign led0 = key0;
endmodule

Не знаю очевиден ли пример, но думаю для первого проекта нормально. Причем вы должны понимать, что это не та программа, которую мы заливаем в микроконтроллер, здесь нет последовательно выполняемых инструкций. Есть набор логики, который мы можем соединять «внутри» ПЛИСины, грубо говоря мы собираем свою схему, описывая то как она будет реализована в тексте программы. Кстати, существует возможность схему не описывать текстом, а рисовать, до этого вероятно дойдем как нибудь в другой раз.

В следующий раз, попробую соорудить что то более понятное и полезное. Желающие могут потестировать прошивку

18 комментариев: ПЛИС первые шаги

  • Класс, пора покупать ПЛИС, в универе ребятам на дипломе так и не удалось заставить правильно считать количество оборотов на тахогенераторе.

  • воууу! вот это мосч!)))

  • admin, а Вы не пробовали программировать в Max+plusII ? Он немного дружелюбней, чем квартус 🙂 Правда, шить все равно приходиться через квартус, но работать, возможно, проще. Как раз, на лабораторных изучали альтеру на примере EPM128SQC100-15, так пишем на AHDL, а через преподавателя шьем с помощью квартуса. По AHDL есть и книга, с примерами.

  • На самом деле квартус не так и плох, скорее не привычен. Но скорость компиляции это капец

  • Я думаю, что изучение ПЛИС можно начать с проекта часов.

  • Та проект часов — не так прост, как кажеться, как по мне 🙂
    По идее — проще начать с того, как нужную частоту получить, связать это с индикацией и, потом управление кнопками и т.д. С кнопками — еще хорошо бы рассмотреть борьбу с дребезгом контактов. Как показали лабораторные — не всегда это тривиальная задача 🙂

  • Часы — конечный результат с множеством подзадач.

  • Конечный результат- это ядро какого-нибудь процессора внутри плиски.
    Самому схемы чертить конечно интересно, но реальную мощь осознаешь только после того, как у тебя в одном чипе будет сразу и микроконтроллер, и горсть логики, плюс работать все это будет с частотами под 100 МГц и выше.

    P.S.
    А часы довольно просто сделать, достаточно иметь какую-нибудь книжечку с примерами логики на базовых элементах. В данном случае нам нужны декодеры BCD в 7-сегментный индикатор, делитель для часового генератора, счетчики, и немного логики для их сброса после достижения принятых человеком пределов в счислении времени.
    Я языки вроде Verilog знаю паршиво, но вот схемой сделать часы вовсе не сложно. Все же это очень большой холивар, мол схемами лучше делать прошивку или кодом.

    P.P.S.
    Вот админ, рассказывал ему десятки раз, почему стоит изучать ПЛИС, а в итоге он прошил таковую первее меня. Зараза. :mrgreen:

  • Хорошо бы добавить тему про ПЛИС на форуме. ИМХО: ПЛИС можно сделать и из авр-ок, но согласен с iEugene0x7CA, нужно минимум 104 MНz.

  • Жандос, а каким образом из авр-ок ПЛИСку собрать? Наоборот — это еще да, но из авр-к — чего-то я не допонял 🙂
    Терзает меня вопрос: а зачем из ПЛИС ваять ядро процессора, когда процессор можна приобрести уже готовым? Понятно, если хотим наваять какую-то свою мудреную архитектуру, а если иначе…

  • иначе затем, чтобы на твоей плате было минимум внешней обвязки, это здорово экономит габариты, деньги, массу.

  • Ether, ответ очень пост: «Потому, что можно!». 🙂
    Если ты проф. разраб, и тебе нужно сделать серийную девайсину, в которой будет плисина- можно здорово сэкономить пространство и деньги, применив всего одну микрушку, а не 2(плисина+МК).
    Но в целом почти всегда просто МК дешевле просто ПЛИСки, так что делать МК из ПЛИС нету смысла, когда не нужен рядом обвес из быстродействующей логики.

    Кстати, стоит оговорится, что юзаемая нами плисина- это CPLD, в них очень мало элементов(в нашей всего 240, линейка Max II), и служат такие штуки почти всегда просто заменой горсти логических микросхем.
    Компьютеры собирают уже на FPGA с количеством элементов от 5000(Cyclone линейка) до 300000(Stratix линейка). Но эти паскуды дорогущие… Под 300 долларов за штучку. 😯
    Вообще FPGA по-правильному используется только для отладки, в готовый аппарат ставится уже аппаратная копия(ASIC) того, что ты делал на программируемой логике, но заказать партию таких довольно дорого, и делается это тогда, когда выпускается не менее тысячи аппаратов…
    Или же когда каждый аппарат настолько дорог, что 300-баксовая микрушка в нем покажется покупателю копеечной.

  • Автор , не зацикливайтесь в ПЛИС на языке Verilog, VHD, для начало показали бы пример на логике, элементарный тригер. там можно схематикой все делать. для кого то это покажется легче , чем язык программирования учить. лично я привык все делать на логике и крупные схемы собирать в модуль, а когда логикой не получается тогда пишу в Verilog, Указывание в ПЛИС на то , что пишется это на языке некоторых может отпугнуть. преимущество ПЛИС перед МК , это то , что он делает все параллельно одно из большинства преимуществ

  • Мне так видится что ПЛИСинами интересуются обычно люди, которые уже попробовали себя в программировании. Синтаксис Verilog прост, проблемы скорее не в языке, а в понимании того как это все работает внутри, поэтому да, наверно некоторые вещи проще понять когда рисуешь. Но как по мне так писать быстрее в разы. Про основы наверно стоит написать, тут Вы правы. Пока у меня идет процесс переосмысления подхода к ПЛИСинам 🙂

  • В Протеусе есть готовые часы на логике, надо только нарисовать и в плис зашить

  • чем то подобным в данный момент и занимаюсь :mrgreen:

  • А ПЛИСину в Китае заказывать или с какого-нить сайта-производителя?

  • самый дешевый вариант будет у дядюшки ляо. если ждать лень можно и у местных барыг.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Последние комментарии
  • Загрузка...
Счетчик
Яндекс.Метрика