Pull to refresh

Comments 45

Клавиатура на фото — тру. Эх, где мои 17 лет…
:) Не совсем. От шифта под ентером отделена какая-то кнопка. Это не тру.
Зато одновременно большой Enter и большой backspace! Из-за этого и перенесли слэши к шифту. Но вообще да, не совсем тру ибо псевдомеханика :( Тру мне ученики обещали на днюху подарить.
А Вы правда думаете детей посадить за квартус, чтоб они роботов программировали?
Неужели получится? Как Вы это делаете? От ПЛИС иногда студенты впадают в уныние. Ну и англоязычный интерфейс — довольно таки большое препятствие.
Правда. Получится или нет — посмотрим. Собственно мы пока только начали. Есть группа старшеклассников с высокой мотивацией — пробуем пока с ними. Поскольку они уже пробовали на вкус программирование, то им понятней Verilog. Условная «малышня» (7-8 класс, есть несколько товарищей младше) пока занимаются с простой электроникой, их приобщать буду после осознанного построения цифровой логики на базе микросхем низкой степени интеграции. И видимо на уровне именно графического построения.

Естественно речь не идет о встраиваемых процессорах, оптимизации архитектуры и пр. Но на уровне «запихать горку логики в один кристалл» думаю тема ПЛИС подъемна заинтересованным школьникам.

Англоязычный интерфейс действительно препятствие, но тут ничего не попишешь…

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

В общем посмотрим что и как получится. Если тема пойдет и удастся нащупать удачную методику преподавания, то есть честолюбивые планы забабахать свой робонабор чисто на ПЛИС :)
До сих пор не знаю английский, но английский интерфейс никогда не был препятствием. Просто запоминаются слова и то, для чего они в этой программе. Проблемы потом только в изучении английского, потому что перевод слова значит не совсем то, что в программировании.
Чтобы студенты не впадали в уныние, нужно просто преподавать ПЛИС интересно.

Конечно, если давать делать что-нибудь скучное (мультиплексор из гейтов) и с графическим schematic entry (как это дается в некоторых российских вузовских методичках), то студент впадет в уныние.

А вот скажем построить свой процессор шаг за шагом — это поинтереснее ( http://www.silicon-russia.com/public_materials/2016_09_01_kazakhstan/day_4_microarchitecture/01_slides/03_DDCA2e_LectureSlides_Ch7_Ru_2016_09_01.pptx ).

Хотя вы правы в том, что придумать цепочку задач, которые были бы и доступны, и интересны — это нетривиальная задача.
UFO just landed and posted this here

Я сажаю, вроде ничего, работает.

можете сделать картинки кликабельными?
Ой блин… Не проконтролировал… Думал habrastorage сам готовый код дает. Может ткнете в инструкцию как это сделать, с ходу не нашел.
глаза от шрифтов в квартусе чуть не вытекли, самостоятельно такой ставили или «так и было»?
Так было. Меня лично напрягает только текст на верилоге.
UFO just landed and posted this here
Да, после этого комментария залез в квартус и нашел где меняются шрифты :)
Сама статья хорошая, спасибо, оказывается программирование FPGA не намного сложнее чем любого другого микроконтроллера. Но вам не кажется, что использовать FPGA Altera Cyclone V для мигания светодиодами это как убийство мухи из гранатомёта?
Просто хотелось бы понять какие реальные преимущества у такой схемы по сравнению с любыми другими контроллерами (STM например).
Реальные преимущества схемы мигания светодиодом на ПЛИС в том, что можно помигать на циклоне в 4000 ячеек, и с тем же успехом переехать на MAX240. Не переписывая ни одной буквы кода. По аналогии с STM это было бы равнозначно переезду с STM32 на STM8. С определенными нюансами можно было бы переехать даже на другого производителя. Я пробовал и в принципе это реально.
Можно мигать с частотой 1 ГГц! А если правильный кристалл взять, то и 10 ;)
Сэр. Убийство мухи из гранатомета очень оправдано, если совершено для обучения и ведет к более выскому уровню владению гранатомета. Тем более, что гранатомет подарили. Учебный.
Ну это же классика — для железячника помигать светодиодом это как для программиста «Hello world!». Просто первый урок. К тому же не просто мигание, а реализация логических функций.

И как уже верно отметили, циклон подарен и плата удобна для обучения — все наглядно, разные кнопочки-светодиодики, VGA и т.д. Для установки на роботов есть дешевые и голые MAXII, для заливки на которые нужно только поменять конфигурационный файл для физических выводов.

Что касается преимуществ ПЛИС перед микроконтроллерами в робототехнике, то основное — возможность синхронно выполнять ряд параллельных и независимых процессов. Т.е. реальная многозадачность.

А основная сложность как раз таки принципиальное отличие в программировании по сравнению с микроконтроллером. Нужен «железно»-ориентированный подход. По факту это не «программирование», а «конфигурирование». Ну и для серьезных проектов постоянно держать в голове временные диаграммы, чтобы обеспечить синхронность работы. Для уже сформировавшегося программиста это может представлять почти непреодолимую сложность.
Похоже я облажался. Заказал с Китая такую платку: https://ru.aliexpress.com/item/FPGA-development-board-ALTERA-IV-EP4CE-four-generations-NIOSII-send-send-remote-control-to-send-video/32657715247.html

Приехала вместе с CD. На нем все на китайском языке. Есть какие-то примеры, но они явно написаны под иной чип или плату. Я нашел лишь несколько, которые подошли и все они примитивные и только лишь моргают светодиодами.

Никакой инфы какие ноги чипа куда распаяны, кроме этих четырех светодиодов у меня нет.

Никогда не имел опыт работы с ПЛИС и хотел начать с этой платы, но сейчас она для меня как кирпич. Может посоветуете куда капнуть? Визуально смотреть что куда распаяно?
UFO just landed and posted this here
Поддерживаю. Чип установлен не бга-шный, так что срисовать схему с помощью обычной звонилки не должно составить труда.
UFO just landed and posted this here
Вот тут абсолютно не согласен. Мы то и дело реверсим схемы с каких-нибудь плат. Занимаемся этим уже много много лет. И ни разу за всё время не «выпалили» ни одной ноги. Под «звонилкой», я конечно, подразумеваю нормальную цифровую цешку, а не самоделку из батарейки и лампочки.
UFO just landed and posted this here
Ну Вы вообще меня запугали насмерть :) Двадцать с лишним лет рисую платы с помощью звонилок и ни разу не задумался о том, насколько опасное это занятие. Теперь плохо спать буду…

А по делу: не морочьте человеку голову. С помощью лупы он точно ничего не нарисует, потому как платы нынче никто не делает двуслойными — тем более такого уровня интеграции. Так что только звонилка — только хардкор!
UFO just landed and posted this here
Волков бояться — в лес не ходить :)

Вот пример платы, с которой недавно пришлось рисовать кусок схемы.
UFO just landed and posted this here
А вот и не угадали! :) Чипов было заменено 12 штук (2 из них — BGA). Это интерфейсная плата от АТС. Никакого золота — обычная повседневная рутина.
Вроде в отзывах пишут, что документация на английском. Стоит написать продавцу. Можно погрозить плохими отзывами.
Вот например отзыв с российским флажком: «Его работы удивительным». Может так русскоязычный написать? Думаю, отзывы проплачены.

На сиди 99% инфы на китайском и несколько статей на английском, так что формально дока на английском у них как бы есть, правда она никак не относится к конкретному устройству.

Вообще, ругаться с продавцом пока охоты нет, устройство по сборке очень качественное, буду пытаться заняться реверс-инженерингом как посоветовали выше
Отзывы не проплачены, уберите флажок «переводить на русский» и увидите, что русский флажок просто комментировал на английском :)

И не забывайте, что это китайцы. У них менталитет такой, что если не поругались то и ладно. Если наехать — все сделают как надо.
Поскольку я тут пошумел на китайцев, хочу сказать, что не все так плохо как я думал. У меня получилось среди тысячи иероглифов найти файлы для квартуса, где прописаны номера ног для VGA в частности. Сегодня я сделал свой первый проект «пин-понг» — нарисовал рамку и в ней шарик отскакивает от краев. На удивление, это оказалось не так уж трудно, в основном были косяки, связанные с тем, что для модулей необходимы регистры в качестве входного параметра и wire для выходного. В общем, спасибо за совет, но решил к китайцу не обращаться, сам разберусь
Хочу дать пару советов начинающим работать с демоплатами.

Первое. На этих платах обычно установлено некоторое количество периферии. Это могут быть память, АЦП, eeprom, датчик положения в пространстве ну и т.п. Вся эта периферия уже подключена к каким-то ножкам чипа FPGA. Часть из этих ножек подают какие-то управляющие сигналы на эту периферию. Например, это могут быть сигналы Chip Select или Output Enable. Лучше не оставлять эти ножки ненастроенными: нужно объявить их в проекте и подать на них такой статический уровень, который бы держал выходы периферии в отключенном состоянии.

Второе. Это такой простенький «лайфхак». На старте изучения платы (когда только начинаешь «играться» с ней) можно не париться с объявлением ножек вручную в пинплэнере, коих у чипа может быть несколько десятков, а то и сотен. Гораздо проще открыть файл с расширением «qsf» из любой демки от платы (это обычный текстовый файл), найти в нём блок команд, описывающих ножки, и скопировать этот блок в qsf-файл своего проекта. После чего можно будет сразу приступить к написанию кода на верилоге с использованием этих ножек.
Первое описано в данной статье.

Второе упомянуто, более подробно в следующих выпусках. Под нашу плату есть прога (правда только под винду), которая создает этот файл, но названия ножек в результате я счел не совсем логичными и понятными.
Первое описано в данной статье.
Вы, по всей видимости, имеете в виду абзац с этим текстом:
Поэтому безопасней неиспользуемые выводы сделать входами с высоким сопротивлением — As input tri-stated

Да, с этим я почти согласен. Но не полностью. Я не рекомендую настраивать абсолютно все неиспользуемые ножки на ввод. Ножки управления сигналами CS и OE периферии лучше всё-таки объявить в модуле, настроить на вывод и подать на них статический уровень — чтобы явно отключить периферию.

То есть примерно так:

module basic_logic
(
output DRAM_CS_N,
output G_SENSOR_CS_N,
output ADC_CS_N,
...
);

assign DRAM_CS_N = 1'b 1;
assign G_SENSOR_CS_N = 1'b 1;
assign ADC_CS_N = 1'b 1;
...
endmodule

Проще поставить Input tri-state with weak pull-up. Этого в 99% случаев начинающему будет достаточно.
Статья хоть и простая, но интересная.
Я понимаю, что вы не программист. Но код оформлять нужно не скриншотами а оборачивать в тег .
И форматирование будет, и скопировать можно, чтобы воспроизвести. И вы не даете ссылку на код. Как-бы мувитон.
А именно на verilog файл, и на файлы настройки для linux. Действительно будет здорово, если вы весь код выложите на github.

Здорово помогло. Спасибо!

Sign up to leave a comment.

Articles