DE0-Nano. Первые впечатления.

Наконец то у меня появилась возможность заказать отладочную плату с ПЛИС от terasic.

О том как заказать такую платку подробно писал в своем блоге товарищ Karlson.
Ну, а я под катом хочу поделиться первыми шагами в ее освоении.

ИМХО если ставить во главу скорость и емкость чипа, то данная плата является наиболее оптимальной для студенческого бюджета. Правда радость от «Academic price», портит равная ей стоимость доставки (итого 126 баксов, о том как немного уменьшить цену читаем по ссылке выше).
И так кому в лом переходить на сайт производителя, краткие характеристики:
  1. Cyclone® IV EP4CE22F17C6N FPGA
    • 22,320 Logic elements (LEs)
    • 594 Embedded memory (Kbits)
    • 66 Embedded 18 x 18 multipliers
    • 4 General-purpose PLLs
    • 153 Maximum FPGA I/O pins
    • On-board USB-Blaster circuit for programming
    • FPGA Serial Configuration Device (EPCS)
  2. Expansion Header
    • Two 40-pin Headers (GPIOs) provides 72 I/O pins
    • One 26-pin header provides 16 digital I/O pins and 8 analog input pins to connect to analog sensors, etc
  3. Memory Devices
    • 32MB SDRAM
    • 2Kb I2C EEPROM
  4. General User Input/Output
    • 8 green LEDs
    • 2 debounced push-buttons
    • 4 dip switches
  5. G-Sensor
    • ADI ADXL345, 3-axis accelerometer with high resolution (13-bit)
  6. A/D Converter
    • NS ADC128S022, 8-Channel, 12-bit A/D Converter
  7. Clock System
    • On-board 50MHz clock oscillator
Откровенно говоря, не густо. Хотя для разных задач — разные инструменты. Например, мне не хватает SRAM и MMC карты. Правда это решается паяльником и прямыми руками. Акселерометр и АЦП для меня же так, скорее игрушка.
Кстати предупреждая холивары по поводу цены, реально на ибей можно найти плату по той же цене с бесплатной доставкой, но с камнем попроще, самое оно для первого знакомства. Либо примерно за те же деньги, но со значительно большим фаршем.
Теперь что хотелось бы отметить по поводу железа:
SDRAM имеет 16 разрядную линию для данных, так что это надо учитывать в разработке.
2Kb eeprom, маркетинговый развод, так как b=bit, то есть нам доступно всего 256 байт.
Ну и в описании как то не упомянули, что USB-Blaster одновременно служит и JTAG-ом и это все построено на базе FT245 и EPM240.
А вот что порадовало, так это акселерометр. Так как, оказалось что кроме банального измерения ускорения, у него есть такая прикольная фича, как датчик одинарного и двойного тапа (хм, я думал что в телефонах эту функцию реализует контроллер тач скрина?), с гибкими настройками и отдельными ногами для прерываний. А также дектор свободного падения (интересно, а нафиг это к примеру в телефоне).
Ну а про кнопки да светики я промолчу, так это не проблема для радиогубителя.

Запуск
И так обсмотрев платку со всех сторон, пора ее включить. Первым делом ставим квартус (можно с прелагаемого CD, но там устаревший 10,1). Подключаем плату в юсб порт (шнурок в комлекте). Винда попросит дрова, тыкаем ее в «диск\altera\quartus\drivers». Драйвер должен установится.
Плата должна замигать дефолтной прошивкой (PWM управление светодиодами). И далее все фичи платы можно проверить с помощью специальной проги идущей в комлекте -DE0_Nano_ControlPanel.exe.

Запускаем и нифига не работет. Но это как раз тот случай, когда надо не долбатся, а сразу идти на форум где лежит решение. А оно очень простое:
1) Открываем Quartus->Programmer->Add File. И в той же папке гле лежит DE0_Nano_ControlPanel.exe, находим DE0_Nano_ControlPanel.sof ( это что то типа того же, что и .hex для контроллеров.)
2) Прошиваем
3) Перезапускаем DE0_Nano_ControlPanel и теперь можно с компа зажигать светодиоды, читать значения АЦП, писать в память и тд.
Кстати, лирическое отступление по поводу ControlPanel, когда в плис загружается ее .sof файл, то это непросто «железная» схема с UART, а процессор NIOS II, который управляет всей переферией и обменивается данными с компоп. Так вот этот процессор даже на «Hellow word», забирает 2000-2500 логических элементов. Ну а прошивка под ControlPanel и того все 6000. Так что если хотите поигратся не только с логикой, но и процессорами (доступны кроме NIOS, еще ARM32, MIPS), то продаваемых на ebay отладок может оказаться недостаточно.
Дальше на диске кроме даташитов лежат демопримеры и очень подробный мануал по созданию проектов.
Из полезняшек также стоит отметить DE0_Nano_SystemBuilder, это начальный кодогенератор (типа как в CodeVision), позволяет задать подключаемую периферию. Минус только в том, что выведенные пины можно подключить целой планкой, никакой индивидуальной конфигурации блин.


Об автономной работе
Момент общеизвестный, но напомню (так самому пришлось вспоминать). Файл .sof прошивается непосредственно в FPGA, которая как известно никакой флеши внутри не имеет. И естественно при отключении питания прошивка улетатет. Для решения этой проблемы и стоит рядом флешка (FPGA Serial Configuration Device (EPCS)), но во время отладки ее лучше не прошивать, так как шьется долго, да и ресурс у нее все таки ограничен.
Также надо отметить, что квартус по умолчанию не генерит прошивку для флеш. И для нее файл .sof надо сконвертировать в файл .jik. Подробно и с картинками это расписано в мануле, который я на всяк случай приаттачил (движок отказался схавать, по этому ссылка, это депозит, так что если будет глючить, остается только качать у производителя).
На этом пока все, откопаю еще чего интересного, напишу.
  • +4
  • 08 сентября 2012, 21:00
  • Signaller

Комментарии (28)

RSS свернуть / развернуть
Во вариант для студента: estore.ti.com/Stellaris-LaunchPad.aspx
0
cortex-m4 это из другой оперы.
0
  • avatar
  • a9d
  • 08 сентября 2012, 21:38
Так вот этот процессор даже на «Hellow word», забирает 2000-2500 логических элементов. Ну а прошивка под ControlPanel и того все 6000. Так что если хотите поигратся не только с логикой, но и процессорами (доступны кроме NIOS, еще ARM32, MIPS), то продаваемых на ebay отладок может оказаться недостаточно.
ниос он разный бывает, вот примерная табличка по использованию ячеек для циклонов:
Nios II/f     2100 
Nios II/s     1620 
Nios II/e     980 
Nios II JTAG  290 
UART          130 
JTAG UART     160 
SDR SDRAM     360 
Timer         150

причем /f это полноценный процессор с MMU, кэшами, и т.д. на нём человеческий линукс запустить можно.
а уж /е так спокойно влезет даже в младшие плисы на 5-6К ячеек.
0
  • avatar
  • _pv
  • 08 сентября 2012, 22:47
Спасибо за табличку, а то я только по самому ниосу видел. А что касается ячеек, то имхо покупать плис только под процессор безсмысленно. Сила плисины в том что на ней можно замутить афигенную схему по цос, сложный «железный интерфейс», но вот гибкого управления этим всем без проца порой не достичь. И возникает вопрос, так что ж к плисине еще проц рядом паять? Вот тут и нужен ниос и ему подобное.
Вот из такого подхода я и считаю что 5-6К может оказатся мало.
К примеру, кусочек схемы, которую я мучаю в минимальном обеме 3К, и еще не все фичи реализованы и это без проца.
Да и еще важный момент, это занимаемая память кристалла, например в том же примере про контрол панел при 6 К — 25%, ячеек ушла аж половина памяти плисины.
0
использование внутренней памяти тут не показатель, ниос может память программ/данных во внешнем сдраме целиком держать а внутренняя — только под кэш (опциональный).
0
  • avatar
  • _pv
  • 09 сентября 2012, 12:02
Ну мне лично для 99% случаев хватает обыкновенной FSM для упраления. И занимает оно очень мало и работает на 100Мгц. Один раз понадобился проц посложней и я выбрал софт АТМЕГА — хватило и + софт у меня уже стоит и всё отлажено. Ну и я ещё ненаписал пока проэкт который бы забирал больше 6к ячеек и с процессором… Вот только сейчас пишу — будет занимать скорей всего всю плисину — потому что много паралельных одинаковых модулей… Но опять — упралять 196 модулями будет простой FSM.
0
Та тоже стараюсь конечными автоматами обходится, но иногда проще программу написать, чем думать как его в железе сделать.
0
Я тоже о такой думал. На ней можно интерфейс для TFT дисплея сделать…
0
Поделитесь ссылкой на реализацию ARM9 для FPGA.
0
А тут смотрел?
0
оО… сразу не заметил. — opencores.org/project,amber

Нужно будет попробовать — это проще, чем ЛУТить плату под QFP208 =).
0
Ну, это не ARM9, однако.
0
  • avatar
  • Vga
  • 10 сентября 2012, 13:57
=( Как я понял, там есть MMU.
0
На страничке Amber'а написано, что MMU в нем нету. Да и он на архитектуре ARMv2, тогда как ARM9 — это уже ARMv5.
0
  • avatar
  • Vga
  • 10 сентября 2012, 14:58
Что ж… Посмотрел лог загрузки linux, увидел там страницы. Сделал вывод.
0
Дождитесь Cyclone V. Там на борту Cortex-A9. Уже инженерные сэмплы есть.
0
там самый гуманный из корпусов это U484 — 19x19 c шагом 0.8мм
0
  • avatar
  • _pv
  • 12 сентября 2012, 22:23
У Ti Cortex A9 в BGA с шагом шаров 0.4 мм (!!!). Эти вещи явно не для самоделок.
0
ну самый ужасный корпус найти задачи вроде нет, скорее наоборот, а вот allwinner a13, например, так вообще в lqfp.
и даже не в самоделках дело, если есть возможность обойтись 4х, а то и 2х слойной платой с qfn/qfp/самыми простыми bga корпусами, типа памяти где шарики повдоль в 2-3 ряда всего и вообще без переходных отверстий между вывожами все сигналы из под корпуса вытаскиваются, то зачем лезть в 8-10 слоёв с дикими нормами на толщину дорожек, зазоры и переходные отверстия.
0
  • avatar
  • _pv
  • 14 сентября 2012, 13:59
Про то как сгенерить jic-файл для прошивки флешки написано в AN-370 от Altera.
0
0
Что-то я себе весь мозг изломал… Скажите, можно ли сделать из сабжа простенький радиоприёмник, довесив сигма-дельта АЦП на паре конденсаторов и резисторов?
Купил в ЭФО примерно за 3500 р.
0
Радиоприемник? На ПЛИС? Интернет-радио, чтоль?
0
  • avatar
  • Vga
  • 18 сентября 2012, 13:23
Вот это. Хотя я ничего особо в этом не понимаю.
0
SDR? Насколько я знаю, его основа — это быстрый АЦП/ЦАП (смотря по тому, принимать или излучать ты хочешь) и аналоговая радиочасть, которая сдвигает сигнал с ЦАПа в нужный диапазон РЧ (и наоборот, сдвигает нужный диапазон РЧ в полосу частот АЦП для приема). А с генерацией/расковыриванием цифрового сигнала на ЦАП/с АЦП вполне справляется компьютер, хотя тут можно и ПЛИС припахать, но это дороже, так что применяется только если комп не справляется.
0
  • avatar
  • Vga
  • 18 сентября 2012, 17:05
Тогда лучше вот это.
Там еще одна статья была в тот же день. Да и вообще, инфы — море.
0
Ну как успехи? ))
Я сегодня на 12-ом квартусе сделал и запустил на ней niosII + sdram + i2c core ))) Байтики в eeprom пишутся-читаются
0
Потихоньку, замучал старый проект так сказать в «железе». (Собственно, под него и брал платку). Попутно нашел пару не больших косяков, ну и понял что можно добавить пару плюшек. Но конечный автомат под них делать сложно, по этому потихоньку курю этот Ниос.
А I2C core альтеровское, или то что шло в примерах к плате?
А то, я его упорно пытался понять по исходникам, но в основном файле все просто, а дополнительных как то жуткая муть.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.