Компьютеры Windows Интернет

Центр микроэлектронного проектирования и обучения: сапр. Железо - ALTERA: микросхемы программируемой логики (ознакомительный материальчик) Радость от разработки на плис

Ты ждал знак? Вот он!

Много лет я не решался начать программировать ПЛИС, потому что это сложно, дорого и больно (как мне казалось). Но хорошо, когда есть друзья, которые помогают сделать первый шаг. И теперь я не понимаю одного - ПОЧЕМУ Я ЖДАЛ ТАК ДОЛГО?

Сейчас я помогу сделать первый шаг и тебе!

А зачем оно мне?

Ты устал постоянно читать доки по своему МК или держать кучу информации в голове. Ты все переписал на asm, но скорости все равно не хватает. Ты подключил два внешних устройства к своему МК, подключаешь третье, но у тебя кончились прерывания, перестают работать те модули, что уже работали. Ты берешь другой МК, более мощный из той же линейки, но опять мануалы, регистры флагов, биты… ад. Меняешь платформу: переходишь на другой МК и выкидываешь на помойку свои знания по прежней платформе. Что бы ты не делал - оно дается тяжело. Ты находишь популярную платформу, в которой можно легко из компонентов собирать проект, но выше аппаратных ограничений данного МК все равно не удается прыгнуть… Где-то на краешке сознания иногда проскакивает мысль, что вот на ПЛИС это бы точно заработало быстро и параллельно, что это «именно та задача, которую бы надо решать на плис», но я стар/глуп/занят/etc чтобы суметь/начать такое делать.

Хочешь наконец вздохнуть свободно? Идем дальше!

Радость от разработки на ПЛИС

У меня был тяжелый рабочий день. С одной работы я приехал на вторую работу, потом на дачу, вечером домашние дела, уроки, потом семейный просмотр кино и только в 23 часа я оказался совершенно свободен! Сказать, что я был уставший - ничего не сказать. Но в таком состоянии я сел за ноут с твердой целью: сделать генератор меандра на 440 Гц. Прошло 20 минут и я уже слышал его в наушниках. Я не верил своим ушам! Еще 15 минут мне потребовалось, чтобы сделать ШИМ и менять громкость. К тому времени плата с ПЛИС у меня была всего с неделю и до этого я пролистал всего пару книг по Verilog.

В тот вечер я понял: ВОТ ОНО! Вот та платформа, в которой я быстро и легко могу превращать свои мысли в реально работающее железо!

Почему так?

Опишу плюсы, которые есть в изучении и применении ПЛИС, хотя их и так все знают:
  • Универсальность знаний - при смене модели МК нужно читать доки. При смене производителя МК нужно читать доки. Нужно постоянно читать доки, постоянно держать в голове кучу информации. При разработке на ПЛИС, если знаешь Verilog или VHDL, то можно не только программировать любой ПЛИС из линейки одного производителя, но и при желании перейти на другого (Altera, Xilinx). Хоть и будут моменты с освоением другой среды разработки, тонких аппаратных моментов, но сама суть подхода проектирования устройств на HDL от этого не изменится.
  • От идеи к железу - при разработке проекта, если тебе не хватает одного мк, то приходится выбирать другой. В принципе можно строить предположения справится или не справится этот МК с проектом. Либо есть какой-то конкретный МК и ты пытаешься туда вместить проект. Чаще всего именно так. Мне это чем-то напоминает подход моего деда, который делает лестницу из того, что есть в сарайке. Хотя можно спроектировать лестницу, купить досок, которые подойдут… От идеи к железу, а не наоборот.
  • Простота применения чужих разработок - можно взять чужой модуль и применить его в своем проекте. По коду сможете понять, как он работает. Даже, если он для xilinx, а вы делаете под altera. Иногда это получается не сарзу, но это проще, чем, например, добавлять двоичные библиотеки к проекту на c++/Qt
  • Независимость блоков. Блоки в HDL, как чистые фунции в ЯП. Зависят только от входных сигналов. Разработанный и отлаженный модуль в будет и дальше работать правильно, как бы не рос проект. Ничто снаружи не повлияет на правильность его работы изнутри. Да и вообще можно забыть, как он работает - это черный ящик. К тому же, блоки работают параллельно .

Проблема выбора

Сильно останавливают вопросы, что выбрать: Altera/Xilinx, Verilog/VHDL, какую отладочную плату взять. Но обо всем по порядку.

Производитель

Я выбрал Altera . Почему? Ну мы вот так с другом решили, хотя название Xilinx мне красивее. НО. Если ты сейчас не можешь выбрать, то я сделаю это за тебя. Тебе нужен Altera! Почему? Я не знаю. Сейчас важнее сделать шаг: сделать выбор. Я выбрал Altera и пока не пожалел.



Язык

Берем Verilog - потомучто … ну ты понял.

Отладочная плата

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

В семействе Altera, за разумные деньги мы можем купить платы с CPLD MAX II на 240, 570 и 1270 элементов, либо более старшие микросхемы FPGA, которые Cyclone 1, 2, 3, 4 с количеством до 10000 и более ячеек. Как же выбрать?

Даже на базе 240 ячеек, проект Марсоход делает просто огромное количество проектов . Настоятельно рекомендую ознакомиться, чтобы иметь примерное представление о сложности проектов, которые можно уместить в 240 ячеек. С другой стороны, существуют проекты , которые полностью программируются под аппаратную копию определенного ПК, включая процессор и всю логику вокруг него (NES , Speccy , Orion , ЮТ-88 , etc). Для этого уже требуется пять, десять и более тысяч ячеек. Плюс эти платы содержат дополнительные внешние устройства.

Поэтому я бы посоветовать взять что-то среднее между 240 и 10000 ячейками, с предпочтением в сторону увеличения в зависимости от доступных средств. На отладочной плате лишние ячейки это не страшно, а если их не хватит - уже ничего не поделаешь. Потом, когда устройство отлажено, станет ясно, сколько надо ячеек, купить под нужное количество, без лишнего «обвеса», дешевле и оставить в готовом устройстве.

То, чем действительно отличаются MAX от Cyclone"ов, кроме количества ячеек, это:
1) У серии MAX внутри нет PLL. На каждой отладочной плате есть генератор, как правило на 50 МГц. Основной массе проектов этого будет достаточно. Все синхронизации будут происходить путем деления 50 МГц на какое-нибудь значение. Либо, можно взять внешний генератор и подать на отдельный вход ПЛИС. А что, если потребуется частота выше 50 МГц? Мне не удалось с ходу найти генераторы выше 50 МГц. Но тут как раз на помощь и приходит PLL, который встроен в Циклоны. На нем можно умножить частоту, например, до 100 МГц.
2) В серии Cyclone встроены аппаратные блоки умножения. Их количество зависит от конкретной модели - тут как раз можно «всетаки заглянуть в инструкции», чтобы узнать сколько. Если предполагаете делать какой-то ЦОС, то они пригодятся: сэкономят ячейки, увеличат скорость. С другой стороны, если нет умножителей, их можно синтезировать, но у маленькой ПЛИС на это может не хватить ресурсов.

Во всем остальном у меня критерий «влезло/не влезло». Отладка на заведомо бОльшей, чем нужно плате, с последующей заливкой в минимально необходимую для этого.

Сколько нужно денег?


Программатор
Я считаю, что у меня нет времени, чтобы паять программаторы на рассыпухе.

300 рублей. Я свой брал на ебее , выглядит так:

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

Начальный уровень 350 - 550 рублей. Это платы на MAX II ( или ячеек). Могут подойти для начального ознакомления и дальнейшего пристройства в конечные устройства. На плате есть генератор, пара кнопок, пара светодиодов, остальные 80 выводов на свое усмотрение.

Блок питания
Обязательно должен быть, но не всегда идет в комплекте. Потребуется БП на 5 вольт и ток 2А.

Средний уровень от 900 до 1500 рублей. Это платы Cyclone 1, 2, 3, 4 отличающиеся в основном количеством ячеек.
Маркируются примерно так:
EP2 C5 T144 - Cyclone 2 примерно 5к ячеек
EP4 CE6 E22C8N - Cyclone 4 примерно 6к ячеек
EP2 C8 Q208C8N - Cyclone 2 примерно 8к ячеек

Можно заметить, что Cyclone 3 может иметь больше ячеек, чем Cyclone 4.

Вот несколько вариантов:

835 рублей.
ALTERA FPGA CycloneII EP2C5T144 Minimum System Board for Learn good

880 рублей
Altera CycloneII EP2C5T144 FPGA Mini Development Learn Core Board E081

1265 рублей
EP2C8 EP2C8Q208C8N ALTERA Cyclone II FPGA Evaluation Development Core Board

Платы с расширенными возможностями . Это платы, на которых установлены дополнительные модули (UTP, USB, AUDIO), разъемы (SD, VGA), кнопки, переключатели, светодиоды, семисегментные индикаторы и т.д. Либо может идти базовая плата, а к ней могут прилагаться платы расширения отдельно.

У меня трудится такой комплект - плата + плата расширения:
Altrea EP4CE10E22 FPGA CORE Board+ Device Board USB/Sound/Ethernet/SD Card/VGA
2760 рублей

Вот основная плата. На ней есть 2 светодиода, 2 кнопки, 4 переключателя, семисегментный интикатор и микросхема оперативной памяти.

Плата расширения. На ней распаяны SD, VGA, а так же контроллеры USB(High Speed USB2.0 Chip: CY7C68013A), AUDIO(Sound Card up to 96kHz/32bit ADC/DAC: WM8731S), UTP(100M Ethernet interface: DM9000A):

Эти платы просто вставляются одна в другую, но у меня она пока лежит в ящике. Для своих поделок у меня макетка, с которой я соединяюсь шлейфом, который идет в комплекте. Еще в комплекте идет блок питания на 5 вольт.

ВВЕДЕНИЕ

Обычно, когда кто-то видит функционирующую плату, всегда задают одни и те же вопросы: - Это Ардуино? - А как это работает без Ардуино?

Это не микроконтроллер, это даже не процессор, это ПЛИС. ПЛИС - это программируемая логическая интегральная схема , такая микросхема состоит из множества одинаковых блоков или макроячеек, каждый производитель по своему их называет, так у Xilinx это Slices (ломтики) у Altera - LogicElements (логические элементы). Эти блоки относительно простые, они могут выполнять роль нескольких логических элементов, быть маленькой таблицей поиска (LUT), содержать готовый сумматор, умножитель, блок цифровой обработки сигналов (DSP), в общем все что задумает производитель. Пользователь может по своему желанию расположить и настроить эти блоки как ему захочется, реализовав таким образом достаточно сложные цифровые схемы. На ПЛИС можно реализовать хоть микроконтроллер, реализовав например ту же Ардуино или процессор вашей собственной архитектуры, например не регистровый а стековый процессор, даже свою собственную ПЛИС можно реализовать на ПЛИС!

Из доступных бюджетных ПЛИС можно выделить двух основных производителей Altera и Xilinx, с их продукции можно начать свой путь освоения данных технологий. На мой взгляд лучше выбрать чипы компании Altera, так как их среда проектирования стабильно обновляется, а выбрав один популярный чип Xilinx XC3S500E вам придется довольствоваться устаревшей средой ISE 14.7 (хотя и там есть свои плюсы).

В иностранной литературе можно встретить сокращения для ПЛИС: FPGA и CPLD. CPLD (Complex Programmable Logic Device) - чипы с небольшим числом макроячеек, специализированных блоков и малым энергопотреблением. Большой проект не получится синтезировать для такого типа чипов, но и для них находят применение на практике, так у редкого микроконтроллера найдется, скажем 300 ножек. Такие чипы часто применяют в качестве интерфейсных систем, предобработчиков, расширителей ввода-вывода. FPGA (Field-Programmable Gate Array) - программируемая пользователем вентильная матрица (ППВМ), значительно более мощные чипы по сравнению с CPLD, но потребляющие больше энергии и стоящие значительно дороже. Для уменьшения затрат площади кристалла FPGA чипы могут содержать уже готовые функции, такие как блоки цифровой обработки сигналов (DSP блоки), встроенные процессоры, встроенная память. FPGA широко применяются для проверки и верификации проектов, в так называемой докремниевой проверке пригодности, тем самым уменьшая затраты и время перед выходом продукта. FPGA чипы могут быть переконфигурированы практически в любой момент времени, сейчас ведутся разработки, например в Intel, по совмещению архитектур обычного процессора и чипа FPGA. У Xilinx уже есть такие решения - Zynq, но о них мы пока не будет вести речь.

Разговор пойдет о более простых вещах, тем более ко мне в руки попал набор разработчика: Cyclone IV 4 FPGA Core Board и Altera USB Blaster Downloader PLD Development kit за 35$, приобретенный на AliExpress .

1 Демоплата Cyclone IV 4 FPGA Core Board, краткая характеристика

Рис. 1 - Демоплата Cyclone IV 4 FPGA Core Board

На плате (Рис. 1) установлен чип EP4CE6E22C8N, его характеристики:

Вид ресурса Краткое описание Количество
Logic elements (Les) Число логических блоков - ячеек, основная характеристика, по которым мы можем сравнивать «мощность» чипов, любая синтезированная логика будет затрачивать данные блоки 6,272
Embedded memory (Kbits) Встроенной памяти, пока для нас не важная характеристика 270
Embedded 18x18 multipliers Встроенных аппаратных умножителей, очень важный параметр в цифровой обработке сигналов, вся мощь ПЛИС раскрывается, когда несколько умножителей работают параллельно 15
General-purpose PLLs Узлов фазовой автоподстройки частоты, пока не важная характеристика, упрощает синхронизацию устройств, работающих на разных частотах 2
Global Clock Networks Количество частотных доменов, пока не важная характеристика 10
User I/O Banks Число раздельных пользовательских банков ввода-вывода, пока не важная характеристика 8
Maximum user I/O Число пользовательских пинов ввода-вывода, мы можем подключить любые устройства, как например к Ардуино 91

На плате установлено:

  1. Флэш память – при подаче питания ПЛИС будет сконфигурирована в реализацию во флеш памяти. Вы можете синтезировать свой проект и записать в эту флэш
  2. Кварц 25 Мгц – генератор опорной тактовой частоты, именно на этой частоте будут работать все наши проекты, наша ПЛИС может поддерживать до 10 таких каналов.
  3. Светодиоды – 10, кнопки – 2.
  4. Пины ввода-вывода 61 + 2 земля, 1 не соединен. Можно подключить разнообразные устройства. ЦАП-АЦП, акселерометры и гироскопы, символьный и графические дисплеи, как и у Ардуино.
  5. Питание через USB, или внешнее 5В.

В комплекте также идет программатор JTAG, Altera USB Blaster.

2. Среда Quartus II и наш первый проект

Для работы с данной ПЛИС нам нужно скачать официальную среду разработки - Quartus II Web Edition , она бесплатная. Заходим на официальный сайт http://dl.altera.com/15.0/?edition=web , на момент написания версия 15.0 самая новая, если вышла новее, скачиваем ее.

Выбираем:


Рис. 2 - выбираем необходимые продукты Altera

И жмем кнопку скачать (Download Selected Files). После чего нам предложат зарегистрироваться, регистрируемся, скачиваем и устанавливаем.

Создадим свой первый проект.

Запускаем Quartus, выбираем главное меню File -> New Project Wizard, появляется окно введения, жмем next. Далее нужно указать каталог для проекта и его имя, третье поля – имя верхнего модуля, попозже увидите, что это. Выбираем папку, куда хотим сохранить проект и придумываем имя, у меня test1.


Рис. 3 - окно мастра нового проекта

Жмем next, у нас спрашивают, пустой проект (empty project) или шаблон (Project template). Оставляем пустой, next. Дальше нас просят добавить существующие файлы, у нас ничего нет, поскольку мы только начинаем свой путь, жмем next.

Далее нам необходимо выбрать наш чип, это можно сделать в любое время. Выбираем как на рисунке, Family – Cyclone IV E, specific device selected in “Available devices” и выбираем наш чип EP4CE6E22C8N, он в самом начале. Если у вас другой, найдите свой, это важно . Жмем next.


Рис. 4 -

Появится окно - выбора средств проектирования, отладки, пока это пропускаем, нажимаем next и затем finish.


Рис. 5 - Окно « Assinments-Deice »

В окне выбираем пункт «Unused pins». Эта настройка определяет, что будет с неподключенными пинами. Это может быть важно, в своем проекте вы вряд ли используете все пины, а не подключенные могут быть на деле соединены с землей или питанием (ну мало ли, кто разводил плату). Если вы подадите единичку на заземленный пин, то он сгорит, поэтому нужно внимательно следить за этим.

По умолчанию неиспользуемые пины «As input tri-stated with weak pull-up» (пины для ввода, находятся в третьем состоянии с высоким импедансом, со слабой подтяжкой по питанию), можно оставить или выбрать «As input tri-stated». Про подтягивающий резистор можете прочитать на википедии https://ru.wikipedia.org/wiki/Подтягивающий_резистор . В цифровой технике может быть три состояния, логическая единица – это напряжение питания или высокий уровень, логический ноль – это когда вывод подключен к земле или низкий уровень и высокоимпедансное состояние. Высокоимпедансное состояние - это когда пин имеет очень высокое сопротивление и практически не влияет на провод, к которому подключен, такое состояние нужно, например, при организации шин, когда множество устройств подключены к одному проводу и не активные устройства не мешают работе.


Рис. 6 - Окно « Device and Pin Options » , Unused Pins

Подключаем это все в «Assignment Editor»


Рис. 7 - Вызов « Assignment Editor » из меню или панели

В появившемся окне делаем как у меня, ну или если совсем правильно, то согласно схеме вашей платы.


Рис. 8 - Assinement Editor

В колонке «To» вписываем имя входа или выхода. В колонке «Assignment Name» выбираем «Location». В колонке «Value» номер контакта микросхемы, согласно схемы платы (у меня номера пинов написаны прямо на плате).

Также нужно указать, что делать с кнопками, которые одной ногой подключены к земле, а другой ко входу чипа. При нажатии на ноге будет низкий уровень, а вот без нажатия, непонятно, нога чипа будет просто висеть в воздухе, что очень плохо. Нужно подтянуть к питанию вход чипа либо резистором на плате, либо боле элегантным способом в «Assignments Editor». В колонке «Assignment Name» выбираем «Weak Pull Up resistor» для группы key* (группа обозначается через звездочку).


Рис. 9 - Assignment Editor

Далее нужно создать описание модуля верхнего уровня, который будет работать непосредственно с ножками чипа, все остальные модули будут работать только с ним. В главном меню жмем New, и выбираем "Design Files-> Block Diagram/Schematic File".


Рис. 10 - Диалог новых файлов

В открывшемся окне выбираем инструмент «Pin Tool» и располагаем вход и выход (пины ввода и вывода) на диаграмме. Переименовываем вход как key, выход как led и соединяем их проводником. Сохраняем и нажимаем "Start Compilation".


Рис. 11 - Окно графического описания, выделены Pin Tool и Start Compilation

После компиляции у нас возникли предупреждения, пока игнорируем их, они касаются неподключенных пинов, отсутствия тактового сигнала и описания для «Timing Analyzer».

Подключаем демоплату и программатор, выбираем инструмент «Programmer». В окне должно значиться «USB-Blaster », если нет то нажимаем «Hardware Setup» и пытаемся разобраться почему нет, скорее всего не установлены драйвера, смотрим в устройства Windows, ищем неопределенные устройства, может с кабелем проблема. Если все хорошо нажимаем «Auto Detect» и выбираем наш чип.


Рис. 12 - Окно Programmer

Нажимаем двойным щелчком мыши в поле «File» и выбираем файл для записи на ПЛИС (находиться в папке output_files нашего проекта), ставим галочку в поле «Program / Configure», и нажимаем кнопку «Start».


Рис. 13 - Окно Programmer, наш чип уже сконфигурирован

Поздравляю с первой конфигурацией ПЛИС! Диод D1 должен светиться, при нажатии key1 должен гаснуть (так как кнопка замыкает ножку с землей), далее мы с этим что-нибудь сделаем)

Для большинства радиолюбителей конструкторов занимающихся собственными разработками давно известны и освоены цифровые микросхемы. Многие достаточно давно проектируют свои конструкции на микроконтроллерах так как это в значительной степени уменьшает габариты и улучшает функциональность устройств. Вот только беда в том, что не всё можно построить на основе контроллера. Быстродействующие устройства требующие мгновенной реакции на изменяющиеся входные сигналы построить на микроконтроллере не удастся так как в нём организована поэтапная (конвейерная) обработка команд в результате которых принимается решение о выдаче того или иного сигнала. Поэтому наряду с микроконтроллерами приходится использовать обычную логику, иногда с приличным количеством корпусов. Следствием этого является большое число внешних соединений, сложность конструкции и большие габариты печатных плат, большая длина соединительных проводников, сложность построения устройств с высокой тактовой частотой, низкая надёжность. Решением данной проблемы является использование программируемых логических интегральных схем (ПЛИС), которые представляют собой совокупность некоторого числа функциональных базовых элементов, не имеющих жестких электрических соединений между собой, что позволяет задавать практически произвольную конфигурацию с целью создания той или иной электронной схемы. На первом этапе ПЛИС представляли собой микросхемы с пережигаемыми перемычками такие как К556РТ4-РТ5 и др. на них можно было создать некоторые функции но запихнуть небольшую схему со счётчиками и триггерами было не возможно.

Этапы проектирования устройств на основе простой логики плохо автоматизированы и в случае ошибки необходимо дорабатывать плату вводить дополнительные элементы. Изучение программного Пакета MAX+plus II BASELINE и ПЛИС фирмы Altera, позволит не только упростить схему но и не наступать на множество подводных камней. Данное программное обеспечение можно использовать и при проектировании схем на 155серии и её аналогах. Для программирования (создания соединений) в PLD (а также и

CPLD) используются технологии EPROM, EEPROM и FLASH. Для радиолюбителей наибольший интерес представляют микросхемы FLASH так как они позволяют перепрограммировать кристалл порядка 100 раз и после снятия питающего напряжения сохраняют структуру установленную в результате программирования.

В данной статье будут рассмотрены вопросы поэтапной разработки схем на основе ПЛИС фирмы Altera — EPM3064А как наиболее дешёвой. Она размещена в 44 выводном корпусе типа PLCC. Микросхема имеет смешанное питание и мультивольтовый интерфейс ввода/вывода (I/O). Напряжение питания логического ядра 3,3 вольта элементов ввода/вывода – 5; 3,3; и 2,5 вольта. Максимальная тактовая частота 227,3мГц в зависимости от модификации. Установкой битов конфигурации возможно управлять крутизной фронтов (Slew Rate ) входных/выходных сигналов. Имеется также реализация выходов с открытым стоком установкой бита (Open Drain ). Имеется возможность установить режим энергосбережения который уменьшает более чем на 50% потребляемую мощность. Имеется также возможность установить бит секретности (security bit ) который не позволит скопировать внутреннюю конфигурацию микросхемы. Данная микросхема имеет 4 блока логических матриц и 64 макроячейки. Программируемые триггеры макроячеек имеют индивидуальные входы синхронизации (clock ), разрешения синхронизации (clock enable ), обнуления (clear ), и предустановки (preset ). Каждая макроячейка может рассматриваться как программируемая матрица И и фиксированная матрица ИЛИ . На выходе матрицы ИЛИ включен регистр с конфигурируемой схемой управления. Схема управления регистром обеспечивает независимо программируемые сигналы синхронизации, разрешения синхронизации, обнуления, и предустановки. В данную микросхему по мнению автора можно запихнуть 10-15 корпусов 155 серии (в продаже имеются микросхемы EPM3256 с 16 блоками логических матриц и 158 выводами).

Архитектура EPM3064A включает следующие элементы: Логические блоки (LABs ). Макроячейки (Macrocells ). Логические расширители, разделяемый (Shareable ) и параллельный (Parallel ). Программируемая матрица соединений (PIA ). Блоки управления вводом/выводом (I/ O control blocks ). Микросхема имеет четыре специализированных входа (dedicated pin ) которые могут использоваться как входы общего назначения или входы высокоскоростных глобальных управляющих сигналов (синхронизации –clock , обнуления clear и двух сигналов разрешения выхода — enable ), для каждой макроячейки и контакта ввода вывода. Блок схема изображена на рис1.

РИС 1

Основу архитектуры EPM 3064A составляют логические блоки , состоящие из 16 макроячеек . Логические блоки соединяются вместе при помощи программируемой матрицы соединений (PIA ). К каждому логическому блоку подводятся следующие сигналы: 36 сигналов от PIA , используемых в качестве логических входов. Глобальные управляющие сигналы. Непосредственные цепи от входных буферов к регистрам, обеспечивающие высокое быстродействие. Подробнее о функциональном составе и принципе работы микросхемы можно почитать в .

РИС 2

Для программирования микросхемы необходимо изготовить специальный загрузочный кабель ByteBlasterMV Рис2 . Он позволяет быстро и эффективно изменять конфигурацию ПЛИС как в стадии тестирования проекта, так и во время эксплуатации. Перепрограммирование может быть выполнено непосредственно в системе. Пока идет программирование, выводы микросхемы переводятся в третье состояние, для избежания конфликта с системой. Сопротивление внутренних “подтягивающих” резисторов 50 кОм.

Данный загрузочный кабель можно использовать для программирования микросхем серий МАХ 3000А, МАХ7000, МАХ 9000 а так же многих других, подробнее можно почитать в . Схема загрузочного кабеля приведена на рис3. Разъём Х1 подключается непосредственно к параллельному порту компьютера или через удлиняющий кабель причём его длинна не должна превышать 1,5 метра. Питание для программатора берётся непосредственно от схемы проектируемого устройства. Для нормальной работы программатора необходимо установить драйвер ByteBlasterMV о чём будет описано далее. Микросхему D 1 желательно использовать оригинальную так как она может работать в диапазоне питающих напряжений от 2,5 до 5 вольт (в крайнем случае можно заменить на 1564АП5). Все резисторы типа МЛТ 0,125. Конденсатор С1 керамический.

РИС 3

Печатная плата Рис4 . изготовлена из одностороннего фольгированного стеклотекстолита толщиной 1,5мм и размерами 52х43мм.

РИС 4

Для создания проекта в среде системы MAX+PLUS II фирмы ALTERA необходимо скачать с интернета и установить Рис5. свободно распространяемый файл baseline10_1.exe ссылка на сайт приведена в . После установки программы для полнофункциональной работы необходимо зайти на сайт фирмы Альтера и получить файл лицензии . На этойстранице выбираете ссылку MAX+PLUS II software for students & universities . На следующей странице выбираете ссылку Version 10.2, 10.1, or 9.23 и нажимаете кнопку continue . На следующей странице в окне набираете Ваш регистрационный номер жесткого диска. Для этого в Windows нажимаете кнопку ПУСК затем Программы, Стандартные, командная строка, и набираете команду dir иenter .

РИС 5

Во второй строке распечатается серийный номер диска состоящий из 8 цифр. Вот его и необходимо ввести. Далее нажимаете кнопку continue и на следующей странице заполняете форму. По окончании заполнения формы нажмите кнопку continue. Файл лицензии будет выслан вам по почте. Создайте папку c:\mp2student\ и поместите туда высланный вам файл license.dat . Для установки файла лицензии запустите MAX+plus II 10.1 BASELINE далее нажмите вкладку Options и License Setup в появившемся окне нажмите кнопку Browse, и укажите путь до файла лицензии. Нажмите кнопку OK . После этого все приложения станут доступные. После этого необходимо установить файл драйвера программатора. Для этого нажимаем кнопку ПУСК затем Настройка, панель управления, установка оборудования далее затем кнопку Д а, устройство уже подсоединено и кнопку далее . В следующем окне выбираем Добавление нового устройства и Д алее . Устанавливаем кнопку на Установка оборудования выбранного из списка вручную и Д алее . В списке выбираем Звуковые, видео и игровые устройства и Д алее . Нажимаем кнопку У становить с диска , далее кнопку Обзор . Устанавливаем путь C:\maxplus2\Drivers\win2000 если у вас установлен WindowsXP затем кнопку ОК. Из списка выбираем Altera ByteBlaster , кнопку далее и Готово .

Система MAX+PLUS II имеет средства удобного ввода проекта, компиляции и отладки, а также непосредственного программирования устройств. Программное обеспечение системы MAX+PLUS II содержит 11 приложений и главную управляющую программу. Различные приложения, обеспечивающие создание проекта, могут быть активизированы мгновенно, что позволяет пользователю переключаться между ними щелчком мыши или с помощью команд меню. В это же время может работать одно из фоновых приложений, например, компилятор, симулятор, анализатор синхронизации и программатор.

В таблице приведено описание приложений.

Таблица

Приложение Выполняемая функция
Hierarchy Display Обзор иерархии — отображает текущую иерархичнскую структуру файлов в виде дерева с ветвями, представляющими собой подпроекты.
Graphic Editor Графический редактор — позволяет разрабатывать схемный логический проект в формате реального отображения на экране.
Symbol Editor Символьный редактор — позволяет редактировать существующие символы и создавать новые.
Text Editor Текстовый редактор — позволяет создавать и редактировать текстовые файлы логического дизайна, написанные на языках AHDL, VHDL, Verilog HDL.
Waveform Editor Сигнальный редактор — выполняет двойную функцию: инструмент для разработки дизайна и инструмент для ввода тестовых векторов и наблюдения результатов тестирования.
Floorplan Editor Поуровневый планировщик — позволяет графическими средствами делать назначения контактам устройства и ресурсов логических элементов.
Compiler Компилятор — обрабатывает графические проекты.
Simulator Симулятор — позволяет тестировать логические операции и внутреннюю синхронизацию проектируемой логической цепи.
Timing Analyzer Временной анализатор — анализирует работу проектируемой логической цепи после того, как она была синтезирована и оптимизирована компилятором.
Programmer Программатор — позволяет программировать, конфигурировать, проводить верификацию и тестировать ПЛИС фирмы ALTERA.
Message Processor Генератор сообщений — выдает на экран сообщения об ошибках, предупреждающие и информационные сообщения.

Создадим рабочий каталог в котором будем размещать наш проект C:\ALTERA_WORK\schetchic . Схему можно описывать на языках AHDL, VHDL, Verilog HDL (для тех кто предпочитает программирование) или графическим способом (больше подходит для радиолюбителей). Файл проекта - это графический, текстовый или сигнальный файл, созданный с помощью графического или сигнального редакторов системы MAX+PLUS II. Этот файл содержит логику для проекта MAX+PLUS II и компилируется компилятором. Компилятор может автоматически обрабатывать следующие файлы проекта: графические файлы проекта (.gdf ); текстовые файлы проекта на языке AHDL (.tdf ); сигнальные файлы проекта (.wdf ); файлы проекта на языке VHDL (.vhd ); файлы проекта на языке Verilog (.v ); схемные файлы OrCAD (.sch ); входные файлы EDIF (edf ); файлы формата Xilinx Netlist (.xnf ); файлы проекта Altera (.adf ); файлы цифрового автомата (.smf ). Вспомогательные файлы - это файлы, связанные с проектом MAX+PLUS II, но не являющиеся частью его иерархического дерева. Большинство таких файлов не содержит логики проекта. Некоторые из них создаются автоматически приложением системы MAX+PLUS II, другие - пользователем. Примерами вспомогательных файлов являются файлы назначений и конфигурации (.acf ), символьные файлы (.sym ), файлы отчета (.rpt ) и файлы тестовых векторов (.vec ).

Итак в главном меню нажимаем File затем New и выбираем пункт Graphic Editor file и OK рис6. Откроется окно графического редактора. Далее сохраним наш проект под именем schetchic . gdf в наш каталог C:\ALTERA_WORK\ для этого нажимаем File затем Save As и OK . Привяжем имя файла к файлу проекта для этого в главном меню нажимаем File затем Project и далее Set Project to Current File или вместо этого можно нажать одновременно клавиши Ctrl + Shift + J . Зададим тип микросхемы который будет использоваться в проекте. Для этого в главном меню нажмем кнопку Assign затем Device .

В появившемся окне в строке Device Familay выбираем серию MAX 3000 A . А в окне Devices EPM3064ALC44-4 и OK . Если вы не знаете какой объём у вас будет занимать проект то Devices лучше установить AUTO , компилятор сам подберёт тип микросхемы.

РИС 6

В рабочей библиотеке имеются элементы различного вида:

1). Логических примитивов (находящихся в папке c:\maxplus2\max2lib\prim\) таких элементов как and , or , nor и др. с различным количеством входов.

2). Аналогов дискретной логики 74-й серии являющиеся аналогами 155 серии (находящихся в папке c:\maxplus2\max2lib\mf\).

3). Параметризированных логических функций, позволяющих создавать проекты цифровых устройств любой сложности (находящихся в папке c:\maxplus2\max2lib\mega_lpm\).

Cоздадим каталог в котором будем размещать собственную библиотеку компонентов C:\ALTERA_WORK\Altera_Lib и подключим её к проекту. Для этого в главном меню нажмем кнопку Options затем User Libraries и в окно Directory Name введём путь c:\altera_work\altera_lib затем OK. Разместить на экране символ можно двумя способами для этого щелкнем правой кнопкой по месту где хотим разместить элемент и выберем в появившемся окне менюшку Enter Symbo l в окне Symbol Name появившегося окна набрать имя элемента и нажать ОК . Или выбрать необходимую библиотеку в окне Symbol Libraries диалогового окна Enter Symbol и двойным щелчком левой клавиши мыши открыть её. Затем аналогичным образом выбрать необходимый элемент в окне Symbol File . Если проект небольшой и вас устраивают все элементы находящиеся в библиотеке то таким образом устанавливаем все необходимые элементы и соединяем их выводы при помощи проводников. Для этого в графическом редакторе слева находятся пиктограммы при нажатии на которые можно получить соединение прямая линия, линии размещённые под прямым углом, сектора и окружности.Если линия выделена красным цветом то на ней можно нанести адрес соединения а само соединение не делать. Входные и выходные цепи наносят выбрав в библиотеке элементов input и output (при необходимости присваиваем им имя). Для нанесения логической единицы и нуля набираем vcc или gnd . А если необходим свой символ то необходимо открыть новое окно графического редактора и нарисовать схему компонента Рис7 присвоить ему имя и сохранить в библиотеке c:\altera_work\altera_lib . Привязать к файлу проекта и откомпилировать нажав ctrl+ L . Если ошибок нет, то можно проверить работу схемы при помощи симулятора.

РИС 7

Для этого открываем Waveform Editor , сохраняем файл под тем же именем. На первой строчке под Name : щёлкаем правой кнопкой мышки, и выбираем меню Enter nodes from SNF , в появившемся окне нажимаем кнопку List , в окне Available Nodes & Groups появятся все входы и выходы нашей схемы. Выделяем необходимые (в данном случае IN и OUT ) и нажимаем кнопку => выделенные символы скопируются в правое окно. Нажимаем OK . В редакторе можно увидеть осциллограмму Рис8. Под именем Value можно установить первоначальное состояние входного сигнала для этого левой кнопкой мышки щелкаем по строке слева, в редакторе высвечиваются пиктограммы логической 1 и 0, нажатием пиктограммы присваиваем состояние входа. Можно ввести изменяющийся во времени сигнал или Z состояние. Конечное время осциллограммы можно ввести зайдя в меню File затемEnd Time . Метки времени устанавливаются через меню Options затем Grig Size .

Для просмотра состояния осциллограммы во времени, запустим Simulator нажав кнопки Ctrl+ Shift+ L . Осциллограмму можно увидеть на Рис9. Если полученная модель компонента нас устраивает нарисуем изображение символа. Для этого откроем редактор символа, в главном меню нажимаем File затем New и выбираем пункт Symbol Editor file и OK рис6. Нажав левую кнопку мышки рисуем очертание символа предварительно выбрав слева в пиктограмме инструмент для рисования.

Двойным щелчком левой кнопки мышки открываем меню Enter Pinstub слева в окне указываем тип вывода вход иливыход I / O Type . В окне Full Pinstub Name Указываем имя вывода (в нашем случае IN входOUT выход). Размеры всех линий и надписей можно изменять и перемещать щёлкнув левой кнопкой по перемещаемому элементу. Файл необходимо сохранить под тем же именем что и файл графического редактора в нашу папку библиотеки.

Закрыв все вспомогательные окна можно ввести символ в файл нашего проекта.

Рассмотрим практическую схему трёхразрядного счётчика с динамической индикацией Рис10. Блок питания собран на микросхеме D 2 типа LM 317 и обеспечивает необходимое для D 1 напряжение.

РИС 10

Выходной ток разрядов индикатора может быть порядка 80 ма при всех включенных индикаторах, поэтому разряды индикаторов коммутируются транзисторами VT 1-VT 3. Для экспериментальной модели выбрана схема внутреннего генератора, внешние цепи которого представляют собой резисторы R 16,R 18,C 2, но в рабочей схеме генератор лучше делать внешним. По мнению автора ПЛИС не очень хорошо работают с ёмкостными нагрузками. Разъём Х1 необходим для подключения к программатору.

Рассмотрим внутреннюю структуру проекта Рис11. Все компоненты создавались заново, по приведённой выше методике и сохранялись в собственной библиотеке компонентов.

РИС 11

На схеме компонент 0_3r_commutator – это трёхразрядный коммутатор который переключает по очереди разряды индикатора а также выдаёт управляющие уровни на мультиплексоры 0_3 and _ or . Мультиплексоры подключают в зависимости от индицируемого разряда десятичные счётчики 0_2 b _10 d _ counter к двоично семисегментному дешифратору 0_ bcd _7 seg . В названиях компонентов присутствует предлог 0 _ которым мы обозначаем элемент собственной библиотеки. На схеме в проекте MAX+PLUS II двойным щелчком левой кнопки мышки по компоненту откроется графический редактор и мы увидим схему элемента. На рис 12 изображен коммутатор,схема которого состоит из примитивов стандартной библиотеки. Название NOT означает инвертор, DFF D триггер,AND 2 – элемент И с двумя входами. На рис 13 приведена внутренняя схема двоично десятичного счётчика. На рис 14 мультиплексора. И рис 15 двоично семисегментного дешифратора. Ниже приведен список некоторых мегафункций стандартной библиотеки.

РИС 12

РИС 13

РИС 14

Логические элементы (Gates):

lpm_and – элемент И

lpm_inv – элемент НЕ (инвертор)

lpm_bustri – шина с тремя состояниями

lpm_mux — мультиплексор

lpm_clshift — логический сдвиг

lpm_or – элемент ИЛИ

lpm_constant — константа

lpm_xor – Элемент исключающее ИЛИ

lpm_decode — декодер

mux – мультиплексор

busmux — мультиплексор

РИС 15

Арифметические компоненты:

divide* — делитель

lpm_compare — компаратор

lpm_abs – абсолютное значение

lpm_counter — счетчик

lpm_add_sub – сумматор/вычитатель

lpm_divide — делитель

lpm_mult — умножитель

Элементы памяти:

altdpram* — двухпортовое ОЗУ

lpm_latch – регистр-защелка

lpm_shiftreg – сдвиговый регистр

dcfifo* — Dual-Clock FIFO

lpm_ram_dp — двухпортовое ОЗУ

scfifo* — Single-Clock FIFO

lpm_ram_dq – ОЗУ с раздельным входным и выходным портом

csdpram — Cycle-Shared Dual-Port

lpm_ram_io — ОЗУ с общим входным и выходным портом

lpm_ff — Триггер

lpm_rom — ПЗУ

lpm_fifo — Single-Clock FIFO

lpm_dff* — D – триггер и сдвиговый регистр

lpm_fifo_dc — Dual-Clock FIFO

lpm_tff* – T -триггер

Другие функции:

clklock — PLL (Phase-Locked Loop)

pll – детектор фронта импульса

ntsc – генератор видеосигнала NTSC

После того как созданы все компоненты, нарисована общая схема проекта и сделаны все соединения, необходимо сохранить проект и произвести компиляцию. При отсутствии ошибок необходимо зайти в Waveform Editor и как было рассмотрено выше убедиться в правильности работы проекта Рис16.

РИС 16

Разведённая компилятором схема автоматически назначает входные и выходные ножки это можно посмотреть в Floorplan Editor нажав кнопку . В этом же редакторе можно изменить назначение ножек по собственному желанию. Для этого надо нажать кнопку и мышью перетащить имена выводов, отображаемых в окне Unassigned Nodes & Pins , на соответствующие номера выводов ПЛИС, а затем перекомпилировать проект. После этого любые изменения, вносимые во внутреннюю структуру проекта, т.е. не связанные с добавлением или удалением выводов, не будут изменять назначение выводов.

После этого подключаем схему Рис10 через разъём Х1 к программатору, а программатор к компьютеру(все эти процедуры проделываем при выключенном компьютере) подаём питание на схему. Открываем окно Programmer и нажимаем кнопку Program . После того как программа зальётся схема переключится в рабочий режим. Данный способ позволяет менять внутреннюю схему устройства в зависимости от изменяющихся задач не переделывая печатной платы.

Не смотря на кажущуюся сложность изучения программной среды MAX+PLUS II вы сможете делать проекты гораздо быстрее так как проектирование и отладка на компьютере даёт больше информации чем изготовление схемы на макетке и дальнейшее исследование при помощи осциллографа. Как уже отмечалось ранее полученные результаты можно с успехом использовать при изготовлении конструкций на основе 155-555 серии.

1 Назначение выводов в проекте Quartus II

В меню Assignements Device… выбираем ПЛИС, в которую вы собираетесь «залить» проект. В группе Device Family нужно выбрать семейство, к которому относится ваша ПЛИС. В поле Available devices выберите модель вашей ПЛИС. У меня, например, это Cyclone II, модель EP2C5T144C8.

В группе Show in "Available devices" list можно отсортировать устройства по типу корпуса (Package ) или по количеству выводов (Pin count ), чтобы быстрее найти вашу модель ПЛИС.

Нелишним будет задать, в каком состоянии будут находиться неподключённые ножки ПЛИС. Нажмите кнопку Device and Pin Options… , перейдите к пункту Unused Pins , и укажите состояние выводов.


После того как указали модель ПЛИС, закрываем окно Device , нажав кнопку OK .

Если вы хотите, чтобы синтезатор сам назначил функции выводам, то можно ничего больше не делать. А для того, чтобы вручную назначить выводы ПЛИС, идём в меню Assignements Pin Planner или нажимаем сочетание клавиш Ctrl+Shift+N .


Запуск инструмента назначения выводов Pin Planner

Запустится инструмент назначения выводов Pin Planner . Внизу отображается список используемых в вашем проекте пинов ввода-вывода с соответствующими именами Node Name .


Теперь в столбце Location нужно задать номера выводов. Дважды кликаем на соответствующей ячейке и выбираем номер вывода, или же вводим с клавиатуры номер. Номера выводов будут зависеть от вашей макетной платы. Например, в моей плате тактовый импульс CLK, согласно мануалу, на 17 выводе, а выходам OUT1…OUT5 я назначу свободные выводы 94, 97, 100, 103 и 93.


После того, как все выводы были определены, окно планировщика пинов Pin Planner можно закрыть. Теперь скомпилируйте проект: Processing Start Compilation или Ctrl+L .


2 Установка драйвера для программатора USB Blaster

Подключим программатор USB Blaster к компьютеру (если у вас его нет, то можно приобрести на Али-Экспресс). При первом подключении необходимо установить драйвер. Он устанавливается стандартным образом, и находится в директории Квартуса, в папке drivers : C:\altera\13.0sp1\quartus\drivers


После установки драйвера, программатор будет отображаться в диспетчере устройств как Altera USB-Blaster.

через интерфейс JTAG

ПЛИС фирмы Altera поддерживают несколько режимов программирования. Сначала рассмотрим загрузку прошивки в ПЛИС через интерфейс JTAG . Подключите программатор к разъёму JTAG на плате с ПЛИС.

Запустим инструмент для программирования: Tools Programmer .

Добавим программатор. Для этого нажмём кнопку Hardware Setup… и в выпадающем списке выберем подключённый USB Blaster. Закроем окно Hardware Setup .


В окне программатора Programmer нажмите кнопку Auto Detect , чтобы Quartus попытался автоматически определить подключённую ПЛИС и файл прошивки *.sof.

Файл прошивки создаётся Квартусом по умолчанию при компиляции и сохраняется в директории output_files , если не задано иное.

В окне Programmer выберите режим JTAG , установите галочку Program/Configure и нажмите кнопку Start . Прошивка будет записана в память ПЛИС.


в режиме Active Serial

Чтобы прошивка сохранилась в ПЗУ, запишем прошивку в режиме Active Serial .

Подключите кабель программатора к разъёму AS или Active Serial . Запустите программу прошивки: Tools Programmer .

Выберите режим Mode Active Serial . Соглашайтесь при ответе на уточняющий вопрос.

Добавим файл прошивки, нажав кнопку Add File… В поддиректории проекта output_files найдите файл с расширением .pof .


После открытия файла прошивки, установите галочки Program/Configure и, по желанию,остальные.


Обратите внимание на тип конфигурационной памяти в столбце Device : он должен соответствовать типу памяти, которая установлена у вас на плате.

Нажмите кнопку Start для загрузки прошивки в конфигурационную память ПЛИС.


Для преобразования и настройки файлов прошивок существует инструмент, который доступен из меню File Convert Programming Files… .


(C) Research/VolgaSoft Современные технологии. ALTERA. (ознакомительный материальчик) ВСТУПЛЕНИЕ В этой статье пойдет речь о совре- менном маленьком чуде, о расчитанном прорыве в мире цифровой электроники - микросхемах программируемой логики. Это тот кирпичик, который стоит в самых сов- ременных моделях ZX-SPECTRUM - GMX и СПРИНТЕР , это та самая микросхемина, на которой можно сделать почти все - от Z80X (допустим, 30мгц, машинный цикл 1 такт), до всего Пентагона вместе с 2D акселератором, GSкой, мышью и IDE конт- роллером. Наверное каждый радиолюбитель раз- рабатывая цифровое устройство, в душе мечтал - где бы найти таблетку от всех болезней - микросхему, которая заменит все. Инженеры особенно нуждались в подо- бных устройствах, так как при разработке серьезного изделия приходилось проекти- ровать заказную интегральную схему "под задачу". От момента вычерчивания логики, до появления рабочего изделия проходило как правило несколько месяцев и затрачи- валось огромное количество ресурсов. Но спрос рождает предложение - появились полузаказные большие интегральные схемы (БИС) и программируемые логические мат- рицы (ПЛМ). Наука не стояла на месте, техноло- гии становились все более и более совер- шенными, и однажды был анонсирован выход пакета "софт"+"железо"+"камень". Задумка была очень простой: разработчик рисует в софте схему (может переносит ее с бума- ги), или описывает логику будущего изде- лия двоичными уравнениями и простыми операторами, затем компилятор переводит схему в некий код, а код зашивается про- грамматором ("железо") в микросхему про- граммируемой логики ("камень"), которую можно сразу же впаивать в плату. И ника- ких затрат на разработку кристалла, и испытания. Разработчики цифровых уст- ройств подхватили "на ура" новинку. На сегодня на рынке масса призводи- телей БИС программируемой a логики (ПЛ). Их продукты отличаются a как емкостью и архитектурой, a так и качеством софта и аппаратной поддержки, сервисом и в конце концов стоимостью. Явным лидером сегодня является фир- ма Altera Corporation . Она завоевала рынок благодоря не только широкому спек- тру изделий, но и грамотному распростра- нению своей продукции. Например, пользо- вание софтпродукцией (студенческие вер- сии) с целью обучения - бесплатно. Для России в общем-то не принципиально (у нас почти никто в глаза не видал закон об авторском праве), а вот за границей этот вопрос актуален. К тому-же продук- ция фирмы буквально вломилась на отечес- твенный рынок - в результате мы теперь почти все сидим на ней. ОТ СЛОВ - К ДЕЛУ СБИС ПЛ фирмы Altera классифицирую- тся по следующим признакам: 1) степень интеграции (количество доступных вентилей (элементов 2И-НЕ) и триггеров); 2) архитектура простейшего функцио- нального преобразователя (ячейки); 3) организация внутренней структуры СБИС и структуры матрицы соеденений фун- кциональных преобразователей (метод сое- динения ячеек); 4) наличие внутренней RAM памяти; 5) технологии изготовления програм- мируемого элемента (Fuse, EPROM, EEPROM, FLASH, SRAM) - то, каким образом зашита схема. Для работы с большинством своих БИС ПЛ фирма Altera предлагает язык описания аппаратуры MAX+plus II. В системе автоматизации проектиро- вания MAX+plus II поддержано шесть се- мейств СБИС ПЛ. ┌─────────┬──────────────────────┐ │ │ Параметры │ │ ├──────────┬─────┬─────┤ │Семейство│Логическая│UPin │Tech │ │ │ емкость │ │ │ │ │ │ │ │ ├─────────┼──────────┼─────┼─────┤ │Classic │ 300-900 │22-64│EPROM│ │MAX5000 │ 600-3750 │24-84│EPROM│ │MAX7000E │ 600-5000 │до164│EEP- │ │MAX9000 │ 6e3-12e3 │до216│ROM │ │FLEX8000A│ 2500-16e3│до208│SRAM │ │FLEX10K │ 1e4-1e5 │до406│SRAM │ └─────────┴──────────┴─────┴─────┘ Логическая емкость - число доступ- ных элементов 2И-НЕ, то есть в FLEX10K влезет до 25000 наших ЛА3-их. UPin - число пользовательских выво- дов. Tech - технология. Практическое пояснение к таблице: допустим берем самый дохлый FLEX8000A (техноглогия SRAM - т.е. после включения питания схемку ус тройства надо "залить" в альтерину), вешаем пользовательскими ногами на шину родимиго Спекки (при этом останется несколько свободных), делаем элементарный дешифратор порта на россыпи и сцепляем его со входом альтерины. Что мы получаем? Мы получаем супер устройст- во!!! Ведь теперь можно вливать в альте- ру фактически любую схему!!! Это может быть что угодно от внешнего мат. процес- сора (допустим в один порт побайтно ло- жим 16-битное число, в другой - второе число, еще куда-нибудь - код операции, затем снимаем результат), до всего, что уму постижимо (если ткнуть несколько свободных ног "куда следует" - можно сделать аппаратную заливку и аппаратное построение отрезков, многоканальные про- граммируемые прерывания (особенно актуа- льно для цифрового звука), новые комман- ды процессора (как в "спринтере" или до- полнительные регистры процессора....). Можно наделать библиотек аппаратных фун- кций чтобы не изобретать велик, как это до сих пор делают упрямые "кодеры" и считывать их в соответствии с задачей. "Прошивка" схемы того же FLEX8282A ("са- мый дохлый", см. выше) весит, если мне не изменяет память, 6кБ. Во время конфи- гурирования все пользовательские ноги находятся в Z-состоянии и не влияют на работу системы. Если нужно сделать уст- ройство "на века" и не конфигурировать его каждый раз после включения - можно использовать семейство MAX. Так же неко- торые БИС семейства МАХ имеют защиту от "сливания схемы" - бит секретности раз- работки, однако, на мой взгляд, примене- ние этого семейства несколько ограничено (по крайней мере в "домашних" условиях) из-за необходимости в программаторе и ограниченом количестве циклов программи- рования. ТЕПЕРЬ ПАРА СЛОВ О СРЕДЕ РАЗРАБОТ- КИ: ЯЗЫКЕ ОПИСАНИЯ АППАРАТУРЫ MAX + PLUS II. Система MAX + plus II написана под следующие платформы: PC , MAC , SUN . Ни Спекки , ни прeсловутой подружки в этом списке почему-то не оказалось. Система очень добрая, простая и с широкими воз- можностями. Основными компонентами яв- ляются графический и текстовый редакто- ры, компилятор, редактор диаграмм (он же "дебуггер"), таймер, редактор размещения и разводки. В графическом редакторе рисуется схема устройства (если использовано гра- фическое задание). В качестве элементов схемы можно задействовать логику "по бу- ржуйскому госту", есть там и вся 74 се- рия, а если не нравятся вражеские обоз- начения - можно нарисовать все по-нашин- ски и заставить работать. Текстовый редактор используется для текстового описания аппаратуры. Язык что-то среднее между dBase , C , Pas- cal . Есть чуть ли не готовая комманда описания синхронного конечного автомата, есть и if и case . Сумматор описывается буквально как C=A+B . А телефонная чип-карта описывается и тестируется (см. ниже) за часик не напрягаясь. Компилятор проверяет схемку (или текстик) и генерирует прошивку под зада- нный "кирпич". Широко регулируемые пре- делы оптимизации по скорости и объему позволяют выжать из устройства максимум быстродействия или минимум занимаемой площади на кристалле. Есть полезная вещь дизайн доктор. Показывает где есть гонки и опасные места, и при каких условиях они появятся, не забывает попросить на- жать сброс для инициализации устройства после включения и т.д. В редакторе диаграмм можно промоде- лировать работу будущего устройства: до- пустим задать входные сигналы и посмот- реть соотвествующие им выходные, гонки тоже не забывают отображаться. Поэтому прежде чем собирать схему лучше прогнать ее в "максе" и проверить. Правда нашелся и глючечек - не завелся Т-триггер сдела- нный из RS , сихронизируемого перепадом, хотя на практике он пахал. Просмотр диа- грамм сделан очень удобно: можно смот- реть диаграммы, объединив их в группы и представив удобную для просмотра систему исчисления (двоичную, десятичную, шест- надцатиричную). Входные данные можно за- давать в том числе и кодом Грея . Можно посмотреть и внутренние состояния авто- мата. Таймер - он и в африке таймер - по- казывает задержки и максимально возмож- ную рабочую частоту устройства. Редактор размещения и разводки ис- пользуется для "аппаратного" убирания гонок (перестановки логических ячеек) и расстановки пользовательских выводов. Прайс дистрибьтера фирмы Altera я к величайшему несчастью потерял, посему скажу лишь по памяти, что FLEX10K10 стоит от $20, FLEX8282A от $8, элементы семейства MAX стоят от $3.3. Если инте- ресно, где можно добыть информацию, мо- жете пролистать до конца статьи, ибо да- лее пойдет справочная информация. БОЛЕЕ ПОДРОБНАЯ ИНФОРМАЦИЯ О СЕМЕЙСТВАХ Семейство Classic объединяет 3 се- рии СБИС. БИС этого семейства позволяют заменить устройство, содержащее от 10 до 20 микросхем средней степени интеграции, и обеспечивают: * задерку распространения сигнала от любого входа да выхода БИС не более 10 нс; * устойчивую работу на частотах до 100 МГц; * возможность работать в режиме по- ниженного энергопотребления; * возможность задания режима секре- тности разработки (из микрухи схему на- зад не слить). Прим.: похоже уже сняты с производ- ства. Семейство MAX5000 объединяет 5 се- рий СБИС. БИС этого семейства позволяют заменить устройство, содержащее до нес- кольких десятков микросхем средней сте- пени интеграции, и обеспечивают: * задерку распространения сигнала от любого входа да выхода БИС не более 15 нс; * устойчивую работу на частотах до 76 МГц; * возможность задания режима секре- тности разработки; * возможность использования трех режимов работы выходных буферов: вход, выход, двунаправленный. Семейство MAX7000 объединяет 7 се- рий СБИС. БИС этого семейства позволяют заменить устройство, содержащее до сотни микросхем средней степени интеграции, и обеспечивают: * задержку распространения сигнала от любого входа дo выхода БИС не более 5 нс; * устойчивую работу на частотах до 178 МГц; * возможность регулирования скорос- ти переключения выходных буферов; * возможность использования 4-х ре- жимов работы выходных буферов: вход, вы- ход, двунаправленный, открытый коллек- тор; * возможность задания режима пони- женного энергопотребления как для всей СБИС в целом, так и для цепей распрост- ранения отдельных сигналов; * возможность программирования и репрограммирования после распайки на плате; * возможность задания режима секре- тности разработки; * работу с пониженным (3.3 В) нап- ряжением питания. Прим.: ряд серий соответствует ста- ндарту шины PCI. Семейство FLEX8000A объединяет 7 серий СБИС. БИС этого семейства позво- ляют заменить устройство, занимающее де- сятки плат, выполненных на микросхемах средней степени интеграции, и обеспечи- вают возможность: * устойчивой работы на частотах до 294 МГц; * эмуляции внутренней шины с 3мя состояниями; * работы с пониженным (3.3 В) нап- ряжением питания; * работы в системах со смешанным (3.3 В, 5 В) напряжением питания; * реализации неограниченного числа циклов конфигурирования, в том числе и "на лету", т.е. без выключения питания СБИС; * регулирования скорости переключе- ния выходных буферов; * возможность использования 3-х ре- жимов работы выходных буферов: вход, вы- ход, двунаправленный. Прим.: все СБИС этой серии соответ- ствует стандарту шины PCI. Семейство MAX9000 объединяет 4 се- рий микросхем. БИС этого семейства поз- воляют заменить устройство, занимающее десятки плат, выполненных на микросхемах средней степени интеграции и обеспечи- вают возможность: * устойчивую работу на частотах до 125 МГц; * независимого использования логи- ческой части и триггера макроячейки; * возможность задания режима пони- женного энергопотребления как для всей СБИС в целом, так и для цепей распрост- ранения отдельных сигналов; * возможность программирования и репрограммирования после распайки на плате; * работы в системах со смешанным (3.3 В, 5 В) напряжением питания; * регулирования скорости переключе- ния выходных буферов; * использование 3-х режимов работы выходных буферов: вход, выход, двунапра- вленный. Прим.: ряд серий соответствует ста- ндарту шины PCI. Семейство FLEX10K объединяет 7 се- рий СБИС. БИС этого семейства позволяют заменить устройство, занимающее сотни плат, выполненных на микросхемах средней степени интеграции, и обеспечивают воз- можность: * устойчивой работы на частотах до 450 Мгц; * реализации на кристалле статичес- кой памяти и ПЗУ объемом до 24Кбит; * независимого использования логи- ческой части и триггера кадого логичес- кого элемента; * эмуляции внутренней шины с 3мя состояниями; * умножения внутренней тактовой ча- стоты; * работы в системах со смешанным (3.3 В, 5 В) напряжением питания; * реализации неограниченного числа циклов конфигурирования, в том числе и "на лету", т.е. без выключения питания СБИС; * регулирования скорости переключе- ния выходных буферов; * возможность использования 4-х ре- жимов работы выходных буферов: вход, вы- ход, двунаправленный, открытый коллек- тор. Прим.: все СБИС этой серии соответ- ствует стандарту шины PCI. Вот такие дела. Добавлю лишь, что прогресс не стоит на месте и в каждом семействе серий поприбавилось. ЯВКИ WWW.ALTERA.COM - там можно получить более подробную информацию и электронные ключи к программе MAX + Plus II (прики- нувшись студентом или научным работни- ком). Фирма ЭФО. E-mail: [email protected] Тел. (812) 247-5340 194021 Санкт-Петербург, Политехническая ул.,21 (здесь можно купить соответсвующие элементы). ЛИТЕРАТУРА 1. Обзор элементной базы фирмы ALTERA (Антонов А.П., Мелехин В.Ф., Филлипов А.С.; СПб 1997) 2. Эта же книга (только кажется по больше) лежит на компакте с MAX + Plus II в виде.PDF (кажись 45 МБ), правда на английском.