Форум творческих людей  

Вернуться   Форум творческих людей > Творчество и фантазия, новые идеи > Полупроводники > Микроконтроллеры
Забыли пароль? Регистрация
Гламур форума

Микроконтроллеры Программирование, конструкции и общие вопросы.
Описание темы:Начинаю работать с ПЛИС ALTERA (EPM3000)

Ответ
 
Опции темы Опции просмотра
Старый 08.09.2012, 18:21   #1
Общительный
pm
Аватар для Волчара
M-Агент
Хорошо Простой проект на ПЛИС

СОДЕРЖАНИЕ

1. ЧАСТЬ ПЕРВАЯ. ВСТУПЛЕНИЕ.
2. ЧАСТЬ ВТОРАЯ. ПЕРВОЕ ЗНАКОМСТВО С QUARTUS'ом.
3. ЧАСТЬ ТРЕТЬЯ. НАЧИНАЕМ ПРОЕКТ.

4. ПРОДОЛЖАЕМ ПРОЕКТ НА ПЛИС.

Последний раз редактировалось Волчара; 01.05.2013 в 12:40..
  Ответить с цитированием
cказали "Спасибо" Волчара
Mantrid (12.09.2012)
Старый 18.09.2012, 19:59   #2
Общительный
pm
Аватар для Волчара
M-Агент
По умолчанию

Часть первая.
ВСТУПЛЕНИЕ.

Просьба сильно не пинать - я сам только учусь, и скоро впервые буду держать в руках настоящий CPLD фирмы ALTERA - EPM240xxx установленный на демонстрационной плате. Есть задумка кое-что на нём сделать.
Если Вы имели счастье когда-нибудь что-нибудь собирать на логических микросхемах, то происходящее в этой теме Вам будет знакомо хоть и с несколько иной стороны, если нет - будет сложно! Прошу задавать вопросы, если что непонятно постараюсь разобраться и объяснить - на то и существует форум!


Итак, приступим.
Что такое ПЛИС?
ПЛИС - это Программируемая Логическая Интегральная Схема.







Простыми словами - это большой "кристалл", чип, в котором есть какие то логические схемы. А чем же она так примечательна и почему её использует "продвинутый люд"? Давайте разбираться.
В отличие от обычных цифровых микросхем, логика работы ПЛИС не определяется при её изготовлении, а задаётся посредством программирования через интерфейс связывающий компьютер и плату с установленной на ней ПЛИС.
В чем же преимущество?
Во первых, это стоимость - сравните цену на EPM3032 и на количество корпусов "расспухи" с эквивалентным количеством элементов. В десятки раз меньше!
Во вторых, представьте себе что Вы спроектировали устройство на дискретных корпусах, развели плату, впаяли "рассыпуху" и... обнаружилось что сигналы неправильно обрабатываются, или например заказчик чуть изменил задание. Что делать? Новую плату? А если у нас стоит ПЛИС, то максимум что потребуется - это подкорректировать проект в среде разработки и перепрошить уже установленную на плату ПЛИС. Таким образом система получается намного гибче!

Найдено в сети:
Статья: ...Потом я увидел в продаже ЕЁ. ОНА стоила дешевле, чем стаканчик мороженого, а уж те чудеса, которые она творила в...
Извините, но панельки для микросхем на жаргоне называются "кроватками"... В общем, я влюбился в программируемую логику всерьёз и надолго...


Какие же они бывают?
Цитата из Вики:
Статья: CPLD
CPLD (англ. complex programmable logic device — сложные программируемые логические устройства) содержат относительно крупные программируемые логические блоки — макроячейки, соединённые с внешними выводами и внутренними шинами. Функциональность CPLD кодируется в энергонезависимой памяти, поэтому нет необходимости их перепрограммировать при включении. Может применяться для расширения числа входов/выходов рядом с большими кристаллами, или для предобработки сигналов (например, контроллер COM-порта, USB, VGA).

FPGA
FPGA (англ. field-programmable gate array) содержат блоки умножения-суммирования, которые широко применяются при обработке сигналов (DSP), а также логические элементы (как правило, на базе таблиц перекодировки — таблиц истинности) и их блоки коммутации. FPGA обычно используются для обработки сигналов, имеют больше логических элементов и более гибкую архитектуру, чем CPLD. Программа для FPGA хранится в распределённой памяти, которая может быть выполнена как на основе энергозависимых ячеек статического ОЗУ (подобные микросхемы производят, например, фирмы Xilinx и Altera) — в этом случае программа не сохраняется при исчезновении электропитания микросхемы, так и на основе энергонезависимых ячеек Flash-памяти или перемычек antifuse (такие микросхемы производит фирма Actel и Lattice Semiconductor) — в этих случаях программа сохраняется при исчезновении электропитания. Если программа хранится в энергозависимой памяти, то при каждом включении питания микросхемы необходимо заново конфигурировать её при помощи начального загрузчика, который может быть встроен и в саму FPGA. Альтернативой ПЛИС FPGA являются более медленные цифровые процессоры обработки сигналов. FPGA применяются также, как ускорители универсальных процессоров в суперкомпьютерах (например: Cray — XD1, SGI — Проект RASC).


А так же ещё несколько типов, которые нам неинтересны.
Ниже представлена диаграмма распределения доли рынка:

Как видим есть два основных производителя - ALTERA и XILINIX. Наиболее доставаемы у нас в России ALTERA, так уж повелось, хотя ситуация меняется постоянно.
В данном случае мы будем рассматривать CPLD фирмы ALTERA.

Что внутри?
Рассмотрим структуру CPLD на примере серии MAX3000:

Макроячейка ПЛИС семейства MAX3000 состоит из трех основных узлов
- локальной программируемой матрицы (LAB local array);
- матрицы распределения термов (product-term select matrix);
- программируемого регистра (Programmable register).

А это макроячейка:


Конкретную информацию можно посмотреть загрузив фирменный даташит на нужную серию.

Мы пока рассматриваем простейшие ПЛИС, так называемые CPLD, однако они не очень удобны например для реализации алгоритмов цифровой обработки сигналов. Дело в том, что практически при реализации алгоритмов ЦОС требуется выполнение операций задержки на такт, перемножения и суммирования многоразрядных чисел. Настоящая революция в средствах ЦОС произошла с появлением ПЛИС, имеющих архитектуру Field Programmable Gate Array (FPGA). К FPGA относятся например ПЛИС Cyclone I (II, III), FLEXxx, APEX, от ALTERA и XC2000, XC3000, XC4000, Spartan фирмы XILINX.

Особенностью современных FPGA ПЛИС является возможность тестирования узлов с помощью порта JTAG (B-scan), а также наличие внутреннего генератора и схем управления последовательной конфигурацией (кстати, внутренний генератор так же имеется в CPLD EPM240xxx).

ПЛИС, построенные по архитектуре FPGA, состоят из логических блоков (ЛБ) и коммутирующих путей – программируемых матриц соединений. Логические блоки таких ПЛИС состоят из одного или нескольких относительно простых логических элементов, в основе которого лежит таблица перекодировки (ТП, Look-up table, LUT), программируемый мультиплексор, D-триггер, а также цепи управления.

Еще приведу пример структуры FPGA XILINIX (Spartan-3):


Надо сказать что FPGA это совершенно другой уровень. Сравнивать его с CPLD - это всё равно как небо и земля.
В FPGA встречаются встроенные процессорные ядра, бывают даже многоядерные системы.
Однако на FPGA можно сделать едва ли не свой собственный процессор.
Только он будет программным. Т.е. структура такого процессора будет задаваться при программировании файлом конфигурации ячеек такой ПЛИС. Многие производители предоставляют такую возможность - например в структуре среды разработки ALTERA присутствует "мастер" по созданию архитектур таких SOFT-процессоров. У ALTERA они называются NIOS.

Программные процессоры NIOS II создаваемые с помощью логического синтеза:

Максимальное количество ядер фактически ограничивается ресурсами конкретной ПЛИС.

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

Немного о планах на будущее:

Первым проектом будет частотомер на ПЛИС. Это самое лёгкое из того что было задумано.
Возможно попробую создать для своей небольшой домашней лаборатории ещё и универсальный генератор УВЧ+УНЧ с синусоидальными и логическими выходами. Тоже с применением ПЛИС.

Для экспериментов я заказал себе отладочную платку с EPM240T100C5N на борту. Эта CPLD имеет на своём борту 240 эквивалентных логических ячеек.
Дело в том что у меня есть наработка этого проекта и он уместился у меня в EPM3064 (чуть меньше чем в 64 эквивалентных ячейки).
Разницы между этими "камнями" особой нет. Но я буду ориентироваться на то что у Вас есть только отдельный чип, самодельная плата и желание что-нибудь сделать на этом.

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

Ну и самый глобальный, третий проект, в необозримом будущем - планирую сделать самодельный осциллографический пробник ручного типа с питанием от "батареек" или аккумуляторов с частотами дискретизации до 100МГц или выше и частотой наблюдаемого сигнала примерно до 50 МГц ("губа не дура" - скажут некоторые...). Дисплей планируется взять от сотового телефона Nokia N95. Как то так.

Последний раз редактировалось Волчара; 01.05.2013 в 21:31..
  Ответить с цитированием
Старый 18.09.2012, 21:05   #3
гил_бейтс
pm
Аватар для Mantrid
По умолчанию

Цитата:
Сообщение от Волчара Посмотреть сообщение
осциллографический пробник ручного типа с питанием от "батареек" или аккумуляторов с частотами дискретизации до 100МГц или выше и частотой наблюдаемого сигнала до 50 МГц.
На ПЛИС? А как с повторяемостью?
  Ответить с цитированием
cказали "Спасибо" Mantrid
Волчара (18.09.2012)
Старый 18.09.2012, 21:08   #4
Общительный
pm
Аватар для Волчара
M-Агент
По умолчанию

Цитата:
Сообщение от Mantrid Посмотреть сообщение
На ПЛИС? А как с повторяемостью?
А что такого?
Без ПЛИС там делать нечего В цифровой технике.
Я уже и автоматический аттенюатор разработал... и ещё кое что для него. Вот только "в железе" попробовать не могу пока - отладочную платку надо будет сделать и микрух заказать.
С повторяемостью... думаю проблем особых не будет. На ПЛИС будет реализована только небольшая часть осциллографа - управляющая, взамен логики-рассыпухи. Преимущества в моём первом посте.
Основная часть ложится на плечи мощного микроконтроллера из серии LPC178x с драйверами LCD/TFT дисплеев на борту (хоть до 1024*768). Уж экранчик от мобильника слопает за милую душу. А если писать на какой-нибудь FreeRTOS... Но про неё чуть позже. У меня был опыт написания простейших программ на ОСРВ (операционной системе реального времени) OSA, кстати русского автора.

Последний раз редактировалось Волчара; 01.05.2013 в 09:19..
  Ответить с цитированием
Старый 18.09.2012, 21:13   #5
гил_бейтс
pm
Аватар для Mantrid
По умолчанию

А я уж испугался, что ПЛИС уже и АЦП под 100 МГц содержат внутри... Аттенюатор на чем-то редком и "АналогоДевисном", надо думать? Масштабирующий усилитель с фантастической полосой пропускания?
  Ответить с цитированием
cказали "Спасибо" Mantrid
Волчара (18.09.2012)
Старый 18.09.2012, 21:21   #6
Общительный
pm
Аватар для Волчара
M-Агент
По умолчанию

АЦП внутри содержат микроконтроллеры, по поводу ПЛИС - ничего сказать не могу, я их только начал изучать. Но в любом случае характеристики встроенных АЦП никуда не годятся.
Для подобных целей может удачно подойти что-нибудь типа AD9280 с параллельной выходной шиной на 8 бит и частотой как раз примерно в 100Msps (мегасэмплов (мегаотсчётов) в секунду).
8 бит в принципе для ручного пробника выше требуемого. На моём USB-осциллографе те же 8 бит АЦП , вполне нормальная точность если сильно не издеваться над прибором (например не ставить предел 50В/дел пытаясь замерить напряжение на пальчиковой батарейке).

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

Последний раз редактировалось Волчара; 01.05.2013 в 09:20..
  Ответить с цитированием
Старый 18.09.2012, 21:23   #7
гил_бейтс
pm
Аватар для Mantrid
По умолчанию

Ладно-ладно, верю, умолкаю Пардон за лирику, можно почистить от нее, если хотите. Продолжайте про ПЛИС, я внимательно слежу за темой
  Ответить с цитированием
cказали "Спасибо" Mantrid
Волчара (18.09.2012)
Старый 14.10.2012, 12:13   #8
Общительный
pm
Аватар для Волчара
M-Агент
По умолчанию

Часть вторая.
ПЕРВОЕ ЗНАКОМСТВО С QUARTUS'ом.

Для создания своих проектов нам потребуется так называемая IDE - Интегрированная среда разработки (англ. Integrated Development Environment). IDE для ПЛИС фирмы ALTERA называется QUARTUS.
Надо отметить, что изначально, на заре развития этих чипов, существовала другая среда. Называлась она MAX+PLUS II. Интерфейс для того времени был достаточно нормальным, естественно для современного представления это жуткое "ископаемое" с примитивными функциями и неудобством работы (хотя, для кого как). Да и поддержки более менее доставаемых современных чипов в ней почти нет, кроме EPM7000/3000. Серией MAX II там ещё и не пахнет, на тот момент она была видимо в процессе зачатия .
Достать эту IDE можно:
С официального сайта: http://www.altera.ru/
Здесь надо отметить два важных момента:
1. С официального сайта, зарегистрировавшись, можно скачать версию Web Edition - что то типа студенческой версии с ограничениями. Честно говоря какие там ограничения стоят - я не помню.
2. Компания ALTERA ежегодно обновляет свой софт, на данный момент версия 12. Однако каждая новая версия становится всё тяжелее и тяжелее и добавляется поддержка новых и весьма дорогих чипов. Простому доморощенному электронщику-самоучке они и не нужны.
Поэтому пользоваться будем версией 9.
Я простой человек, и покупать за бешеные деньги забугорный софт я не собираюсь - просто не на что. Поэтому пойдём другим путём.

*Вкратце, почему же именно версия 9, а не скажем 7 или 10?
Дело в том, что несмотря на развитие софта, кое что он успел потерять. А потерял он встроенный логический анализатор (Waveform) начиная с версии 10. Весьма удобный, кстати. Вместо него предлагается ModelSim стороннего разработчика. Навороченный и тяжёлый. Я его пока не осваивал - мне хватает встроенного в 9-ю версию собственного анализатора.

Также можно найти IDE на сторонних сайтах специализирующихся на софте. Например свою версию Quartus II 9.1 для домашних целей я нашёл тут в комплекте с лекарством от жадности. Тырить придётся около 2,8 Гб - modelsim (573Мб) и nios2eds (578Мб) можно не загружать, они нам и не понадобятся.

Стянули? Начинаем установку.
Открываем папку .../91_acds/quartus/ ищем и запускаем setup.exe Установить можно в любую папку на любой диск, но обязательно название путей и папок должно быть на латинице!. В этом состоит недостаток многих англоязычных программ - они не понимают кириллицу в путях. Установка не отличается от установки большинства программ, думаю разберётесь.
как установить программу так, чтобы потом бесследно можно было её удалить?
очень просто, можно использовать программы которые отслеживают установку, например в Uninstall Tool есть функция "Установить и следить".

Установилась?
Есть один важный момент - для того чтобы всё работало и лицензия не слетала каждое переподключение к сети, необходимо чтобы на Вашем компьютере была включена поддержка сети LAN.
Посмотреть какие сетевые соединения на Вашем компьютере действуют можно например так:
Жмём кнопку "Windows" (кружочек с флагом) возле ALT или CTRL, или кнопку "Пуск", далее "Выполнить", пишем cmd и жмём Enter.
В открывшемся окне пишем следующее:
Цитата:
ipconfig /all
и жмём Enter снова.
Получится типа такого:
Конфигурация сетевых подключений
Microsoft Windows [Version X.X.XXXX]
(c) Корпорация Майкрософт (Microsoft Corp.), 20XX.
C:\Users\XXXXXXXX>ipconfig /all

Настройка протокола IP для Windows

Имя компьютера . . . . . . . . . : <имя Вашего компьютера>
Основной DNS-суффикс . . . . . . :
Тип узла. . . . . . . . . . . . . : Гибридный
IP-маршрутизация включена . . . . : Нет
WINS-прокси включен . . . . . . . : Нет

Адаптер широкополосной мобильной связи Подключение через адаптер широкополосной
мобильной связи 2:

DNS-суффикс подключения . . . . . :
Описание. . . . . . . . . . . . . : HUAWEI Mobile Connect - 3G Network Card #
2
Физический адрес. . . . . . . . . : 00-10-1E-18-7F-CA
...
...
...

Ethernet adapter Подключение по локальной сети:

Состояние среды. . . . . . . . : Среда передачи недоступна.
DNS-суффикс подключения . . . . . :
Описание. . . . . . . . . . . . . : Atheros AR8151 PCI-E Gigabit Ethernet Controller
Физический адрес. . . . . . . . . : E2-3A-7F-C6-F3-10
DHCP включен. . . . . . . . . . . : Да
Автонастройка включена. . . . . . : Да

...
...
...

C:\Users\XXXXXXXX>

Нас интересует только Ethernet adapter. Если он есть - всё в порядке. Если нет - придётся лезть в настройки системы или даже в BIOS - включать его.

Теперь надо вылечить от жадности, приведу "рецепт" из папки crack:
То что доктор прописал

1. Копируем sys_cpt.dll в altera/91/quartus/bin/
2. Генерим quartus.dat при помощи keymaker.exe и подсовываем квартусу
Лучше скопировать его в altera/91/quartus/bin/

Надеюсь тут разберётесь.

Думаете вылечили? А вот и нет!
Пускаем QUARTUS (который 32-bit, x64 пока неизлечимый ), лезем в меню Tools/License Setup... напротив первой строчки License file выбираем сгенерированный ранее файл quartus.dat, кстати, его можно переименовать как угодно но только с расширением *.dat. Жмём Ок.
Перезапускаем QUARTUS...

Всё, софт для создания своих поделок на ПЛИС мы установили!

Последний раз редактировалось Волчара; 01.05.2013 в 12:32..
  Ответить с цитированием
cказали "Спасибо" Волчара
Mantrid (21.10.2012)
Старый 21.10.2012, 14:27   #9
Общительный
pm
Аватар для Волчара
M-Агент
По умолчанию

Отдохнули?
Продолжим!
Часть третья.
НАЧИНАЕМ ПРОЕКТ.


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

Как же работают такие устройства?
Имеется некий счётный вход устройства, на который поступают импульсы с измеряемой схемы.
Далее сигнал поступает на усилитель-формирователь. Он нужен для усиления слабых импульсов, ведь логика то работает с уровнями от 0 до 3 или 5 Вольт, слабые сигналы с какого-нибудь гетеродина радиоприёмника с уровнем в 10-100 мВ будут просто не в состоянии переключить логический элемент. Ему ведь требуется для переключения не менее 1 В, а для стабильно-устойчивого переключения - не менее 0,8 от напряжения питания. А почему же еще и "формирователь"? А потому что сигнал с аналоговых устройств будет синусоидальный, а нам для работы с логическими элементами требуются прямоугольные импульсы. Формирователь можно сделать например на триггере Шмитта.
Эти устройства имеют уникальное свойство переключать состояние выхода из логического 0 в 1 при превышении входным сигналом определённого значения. Таким образом из синусоиды мы получим последовательность прямоугольных импульсов. На схеме ниже показан триггер Шмитта с инверсией по выходу, поэтому сигнал out изображен именно с инверсией и некоторым сдвигом поскольку имеется порог переключения элемента.


Сформированные импульсы поступают на счётное устройство, ведущее подсчёт этих импульсов за заданный промежуток времени.
На выходах счётного устройства появляется код соответствующий числу импульсов за некоторый промежуток времени выраженный в двоично-десятичном коде.
Теперь этот код необходимо преобразовать в нормальный человеческий вид для отображения на индикаторе.
Как это сделать?

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

Должно получится что то типа этого:

Последний раз редактировалось Волчара; 24.10.2012 в 21:29..
  Ответить с цитированием
Эти 2 пользователи сказали Спасибо Волчара за это сообщение:
Mantrid (21.10.2012), Ясон (23.10.2012)
Старый 23.10.2012, 18:31   #10
Специалист
pm
По умолчанию

К стати имеется относительно неплохой опорник "гиацинт" Так что если тактовая частота будет 5 мГц это неплохо
  Ответить с цитированием
cказали "Спасибо" Ясон
Волчара (24.10.2012)
Ответ

Закладки

Метки
Altera, AT91SAM, common, CPLD, ctrl, data, FPGA, ПЛИС, input, jpg, lexx, load, mantrid, org, output, upload, wikimedia, wikipedia, www, Xilinix

Опции темы
Опции просмотра

Быстрый переход


Текущее время: 03:33. Часовой пояс GMT +3.