Altera cyclone iv ep4ce6

Altera cyclone iv ep4ce6

Ресурсы СБИС ПЛ Cyclone IV E

Cyclone IV E (напряжения питания ядра 1.0 В и 1.2 В)
EP4CE6 EP4CE10 EP4CE15 EP4CE22 EP4CE30 EP4CE40 EP4CE55 EP4CE75 EP4CE115
Ресурсы Кол-во логических элементов, тысяч 6 10 15 22 29 40 56 75 114
Кол-во блоков встроенного ОЗУ M9K 30 46 56 66 66 126 260 305 432
Объем строенного ОЗУ (кбит) 270 414 504 594 594 1 134 2 340 2 745 3 888
Кол-во умножителей
18 x 18
15 23 56 66 66 116 154 200 266
Архитектурные особенности Кол-во глобальных цепей тактирования 10 10 20 20 20 20 20 20 20
Кол-во блоков PLL 2 2 4 4 4 4 4 4 4
Размер конфигурационного файла (Мбит) 2.8 2.8 3.9 5.5 9.1 9.1 14.2 19 27.2
Подсистема ввода-вывода Поддерживаемые уровни напряжения ввода-вывода (В) 1.2, 1.5, 1.8, 2.5, 3.3
Поддерживаемые стандарты ввода-вывода LVTTL, LVCMOS, PCI, PCI-X, LVDS, mini-LVDS, RSDS, LVPECL, Differential SSTL-15, Differential SSTL-18, Differential SSTL-2, Differential HSTL-12, Differential HSTL-15, Differential HSTL-18, SSTL-15 (I and II), SSTL-18 (I and II), SSTL-2 (I and II), 1.2-V HSTL (I and II), 1.5-V HSTL (I and II), 1.8-V HSTL (I and II)
Кол-во каналов LVDS 66 66 137 52 224 224 160 178 230
Поддерживаемые интерфейсы внешней памяти DDR2, DDR, QDR II, RLDRAM II, SDR

Типы корпусов и количество линий ввода-вывода СБИС ПЛ Cyclone IV E

Тип корпуса EQFP (E) FBGA (F) MBGA (M) (1) UBGA (U)
Количество выводов 144 256 484 780 164 256 484
Габариты корпуса (мм) 22 x 22 17 x 17 23 x 23 29 x 29 8 x 8 14 x 14 19 x 19
Расстояние между соседними выводами (мм) 0.5 1.0 1.0 1.0 0.5 0.8 0.8
EP4CE6 91 179 179
EP4CE10 91 179 179
EP4CE15 81 165 343 74 165
EP4CE22 79 153 153
EP4CE30 328 532
EP4CE40 328 532 328
EP4CE55 324 374 324
EP4CE75 292 426 292
EP4CE115 280 528

(1) Тип корпуса Micro FineLine BGA.
назад
— Возможность вертикальной миграции

Дистрибуция электронных компонентов www.efo.ru

Конструктивы и корпуса РЭА
www.korpusa.ru

Мир беспроводных решений
www.wless.ru

Профессиональные усилители класса D www.sound-power.ru

Датчики и первичные преобразователи www.efo-sensor.ru

Кварцевые резонаторы и генераторы www.golledge.ru

Компоненты для промавтоматики www.efomation.ru

Продукция Lattice Semiconductor www.latticesemi.ru

© All rights reserved. EFO Ltd. При использовании материалов ссылка на источник обязательна.

ВВЕДЕНИЕ

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

Это не микроконтроллер, это даже не процессор, это ПЛИС. ПЛИС — это программируемая логическая интегральная схема, такая микросхема состоит из множества одинаковых блоков или макроячеек, каждый производитель по своему их называет, так у 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 18×18 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.

Далее главное меню Assignments -> Device, здесь можно выбрать чип (нашу ПЛИС), выбираем если не выбрали, нажимаем кнопку «Device and Pin Options».


Рис. 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

Далее нам нужно настроить пины, это нужно чтобы сигнал шел на нужные нам ножки чипа, ведь изначально Quartus не знает, что куда подключено и как именно осуществлена разводка платы.

Подключаем это все в «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[0], выход как led[0] и соединяем их проводником. Сохраняем и нажимаем "Start Compilation".


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

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

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

Читайте также:  Автодом из пазика своими руками


Рис. 12 — Окно Programmer

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


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

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

Отладочная плата на Cyclone IV и немного про FPGA

Автор: balmer
Опубликовано 22.11.2018
Создано при помощи КотоРед.

Отладочная плата для FPGA. На основе Cyclone IV EP4CE10.

Дальше идет много строк, про каждую из которых можно холиварить. А про некоторые строки можно холиварить по нескольким темам.

Плюсы и особенности:

EP4CE10 — стоит сейчас порядка 600 рублей, поэтому вполне множно применять даже не в слишком сложных устройствах.
LQFP144 корпус достаточно легко паять. Нижний подогрев платы правда все равно потребуется, чтобы припаять центральный земляной вывод.
Среда разработки Intel Quartus сравнительно проста в освоении. Работает как под Windows так и под Linux (я естественно использую Linux). Бесплатной версии Lite достаточно, чтобы писать прошивку для этого чипа.
Пара примеров для этой платы написал на Verilog, потому как синтаксис его более красив, чем у VHDL.

FPGA — это удивительно крутая и вместе с тем убогая штука. Она необычайно гибкая.

Хочешь написать свой процессор — пожалуйста! Пистать данные напрямую на дисплей по HDMI? — Без проблемм! Реализовать 20 штук UART в одном чипе? — Раз плюнуть! Сделать обработку звука с гарантированной задержкой менее 1 милисекунды — да этож стандартная задача! Умножть десяток пар чисел за процессорный такт — могем!

Вместе с тем — во многих возможностях, много печали. Начинать писать прошивку надо с самых азов. Настолько низкоуровневых азов, что даже голый ассемблер кажется на этом фоне крайне высокоуровневым инструментом. Хочется переслать несколько байт с одного места памяти в другое? Сначала придется реализовать DMA, а потом уже байтики пересылать.

Вот простейший пример кода на Verilog

always @(posedge clock)
begin
outa UART конвертору CP2102.
led110, l1d111, led114, led115 — выходы на светодиоды, подключенные к соответствующим номерам ножек.

count[25:0] это массив D-триггеров, в которых размещается переменная reg [25:0] count;
add0 это блок, который каждый такт прибавляет единичку к count. См. строку: count UART для общения с компьютером простого
— SPI Flash на 32 мегабита — в ней хранится прошивка
— кристал 50 МГц для тактирования FPGA
— 28 ножек пользовательских, часть из которых собранны в пару IDC-10 разъемов, которые мне очень нравятся.
— питание 3.3 V, 2.5V и 1.2 V которое требуется для этой микросхемы
— ну и конечноже JTAG разъем для заливки прошивки и дебагирования

По умолчанию отладочная плата питается по USB шнуру, потребляет 31 ма. Но можно вытащить соответствующую перемычку, и питать от отдельного источника +5V.
Импульсный блок питания китайский на MP1584. Это хороший низкошумящий блок питания. Китайцы продают их настолько дешево, что смысла саммому собирать из деталей нет.

Дам только ссылку на схему, ибо смотреть на цифровые схемы — только в медитацию впадать.
А вот фотки платы прикреплю.

Небольщое замечание по пайке. EP4CE10E22C8N имеет снизу GND ножку большую, площадью почти квадратный сантиметр. Поэтому паять надо обязательно с нижним подогревом, паяльной пастой и феном.

Ну и таки самое главное — ссылка на GitHub на котором хостится этот проект.
Там есть исходники платы и пара тестовых проектов.

Ссылка на основную публикацию
Adblock detector