Pull to refresh

Comments 58

UFO just landed and posted this here
Надо же было все так в конце испортить! ;)
Могу дополнить: У Xilinx с документацией очень удобно работать используя Document Navigator (DocNav) — локальное приложение, которое содержит обновляемую базу данных всех официальных документов, там есть разные категории документов, можно искать, скачивать, хранить несколько разных версий и т.п. Документы несколько более раздроблены, но смысл тот же, что и у альтеры: есть набор документов, посвященных разным функциональным структурам каждого из семейств FPGA, несколько документов, посвященных процедурам САПР (Synthesis, Implementation, Timing Analysis) и т.д.
Вот, есть еще торт на Хабре, кто бы что ни говорил!
Большое спасибо за материал, пригодится обязательно.

Добрый день, замечательная статья (хотя не уж то нашлось всего три классических ошибки? Например, хоть я и на начальном уровне, но слышал, что ошибкой является так же использование inout портов для чего-либо кроме для физических портов, т.е. для связи между модулями).


Раз тут такая статья, считаю это отличным местом, чтобы задать сопутствующий вопрос: я отношусь почти к студентам, которые хотят стать… скорее SoC designer, ASIC architector и подобное. Собственно множество вопросов возникает:
Правильно ли в этом случае сначала выбирать FPGA и изучать хотя бы его основы? Поиск по вакансиям показал, что даже на junior требования очень размазаны, от C++ и, почему-то питона (иногда лиспа) до знания всех подряд интерфейсов, шин, архитектур. Вообще усредненный список знаний пугает. В каком направлении лучше всего двигаться? Какие есть учебные материалы ближе к моему выбору? В конце концов, под это учатся отдельно или как в программировании: сначала ты программист, потом старший программист, а потом уже можешь стать архитектором (не все проходят этот путь и такие архитекторы видны сразу)? Почему решил, что тут можно идти сразу в архитекторы — по наличию inter и junior вакансий у некоторых компаний.


И стоит ли набирать опыт в виде разработки под arm, avr, x86, etc. на ассемблере (чтобы в тонкостях понимать эти архитектуры) или сконцентрироваться на verilog/vhdl?


P.S. И почему все и везде лепят матлаб? Я понимаю, что ты не инженер, если не знаешь матлаб, но ума не приложу, как он помогает в проработке архитектуры, а не каких-то конкретных алгоритмов.

Например, хоть я и на начальном уровне, но слышал, что ошибкой является так же использование inout портов для чего-либо кроме для физических портов, т.е. для связи между модулями.

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

SoC designer, ASIC architector

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

И почему все и везде лепят матлаб?

Чаще всего матлаб лепят те компании, которые занимаются ЦОС'ом.

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

SoC-дизайнер должен знать и уметь и железо, и софт, который будет на нем вертеться. Ни один RTL-дизайнер еще не стал SoC-дизайнером, разрабатывая свистелки по чужим спекам.

Простейший вопрос, который я задал бы любому, желающему попробовать себя в роли SoC-дизайнера: нарисуй схему айфона и расскажи, где какая пропускная способность шин нужна. И как сделать так, чтоб он работал три дня без подзарядки. И чтоб андроед на нем видео показывал, а не слайд-шоу.

Спасибо за ответ. Т.е. получается, что нужно знать кучу всего и еще немного в присыпку? И не столь важен навык непосредственной реализации RTL, сколько понимание устройства всего, и как это еще должно между собой взаимодействовать? Опять же, не подскажите по литературе?


Заодно: для себя я пока пытаюсь реализовать какую-то совсем простую и примитивную SoC. В данный момент есть простейший CPU, который даже умеет что-то считать, а так же простой текстовый GPU, ну и самопальная шина (с подсматриванием в сторону wishbone). И я хочу довести это до этапа, что это действительно синтезируется и работает на плате, и что можно скармливать какой-то код, однако что-то перемудрил с режимами адресации, поэтому подзавис на RTL модуля загрузки данных, но отвлекся. Я двигаюсь в правильном направлении или это тупиковая ветвь и начинать стоит все же с своей реализации уже проверенных временем архитектур, например, OpenRISC? (попытка придумать все самому, в том числе ассемблер, очень хорошо вправляет мозги в плане — почему у других сделано так или иначе)

Нет таких книг, нужен опыт.

Сейчас свои процесорные ядра никто не делает — все берут ARM за редким, редким исключением.
Поэтому лучше изучать шину AXI4. И I2C.
Этим и отличается SoC-дизайнер / ASIC-архитектор от инженегров. Он знает, когда использовать ARM (и какой), когда ASIP, когда написать свое ядро. Знает, когда использовать AXI4, а когда можно и AXI3, а когда и AHB пойдет, и когда лучше шину пошире и помедленнее, а когда лучше поуже и побыстрее. Знает, как испортить жизнь своим программистам (например, дать им многоядерный проц с некогерентными кэшами и DMA). Знает, какое IP можно купить на рынке. Знает, как все это должно работать, если надо динамически менять частоту, или выключать питание в части кристалла, и кто будет все это верифицировать.

Короче, единственный надежный способ — устроиться к кому-то, кто все это уже знает, подмастерьем.
kahi4, Если Вы используете altera, то подойдут cookbook'и и guide'ы, они хорошо рассматривают вопросы, как и бесплатные видеотренинги на официальном сайте, где объясняют основы связи между FPGA и SoC, процесс создания проекта и пр.
так же хорошо подойдет портал rocketboards.org
Скажите, пожалуйста, а какую плату Вы используете? я сейчас только начал знакомиться с SoC и в качестве учебной получил на выбор Arrow SoCkit, DE1-SoC и DE0-nano-SoC, в прочем, в интернете есть хорошие примеры только на первую и немного на вторую

У самого меня алтера циклон 2 на китайской старой плате. Сейчас думаю обновлять, но не хочу брать готовую SoC, потому что вроде как я сам этим собрался заниматься (комбинировать ip-cores), а не брать готовое, поэтому посматриваю на xilinx kinex 7

ИМХО для обучения DE1-SoC изначально достаточно разнообразной периферии и есть обычные IDC разъёмы которые спокойно покупаются, что даёт возможность что то своё подключить если потребуется.

Arrow SoCkit — тоже хороша но HSMC хрен достанешь если что то своё захочется подключить.

DE0-nano-SoC мало периферии но опять же IDC я бы сказал это больше не для обучения а для прототипирования.
Чаще всего я им предлагаю глянуть две ссылочки (FPGA и JAVA) и самостоятельно сделать выводы.

Что-то, не понял я какие выводы должен студент сделать из этих ссылок? Вроде по Java и вакансий в десятки раз больше и вилка, похоже, что выше, по тем вакансиям что я вижу. Что-то не совсем понял я этой фишки…
Вывод простой: если душа не лежит к электронике и к FPGA, то перспективнее выбирать другую сферу.

А если и лежит, то надо осознавать, что вакансий в этой сфере не так много даже в больших городах (если мы говорим про Россию, разумеется).
UFO just landed and posted this here
КО mode ON
При меньшем знании материала и знании JAVA на текущем рынке можно проще получить ЗП в 50к и обучением, нежели знать VGA и получить 50к как специалист.
КО mode OFF
Сам имею образование по проектированию устройств и вычислительной технике, знаю тонны RFC и обработки протоколов как программно, так и аппаратно, но зарабатываю на жизнь андройд разработкой (ведущий спец), работаю как главный инженер по VOIP + 1-2 своих проекта с циклом жизни год-два.
Есть огромное желание изучить FPGA, но рынок и жизнь диктует обратное. Речь об идейности.
Мне нравится вопрос «Представим, что Вы написали максимально простую HDL-модель 5-стадийного RISC-процессора. Как будете её верифицировать? (Вопрос повышенной сложности)». Буду спрашивать на собеседованиях.
Вот так. Умеете вы опустить человека с небес на землю. «Улыбающийся смайл»
Замечательная статья. Сжато и в одном месте. Надеюсь будете дополнять.
UFO just landed and posted this here
После этого курса реализованный процессор с HDL довольно легко переписывается на Verilog, но вот реализация его на HDL — то ещё веселье.
Хороший пост.

Дополнения: Вот составленные мною зачеты для студентов, которые я тестировал на куче студентов из Индии в небольшом частном университете в Фримонт, Калифорния, где я помогал читать такие курсы по субботам:

http://silicon-russia.com/exams_and_quizes/

Пример одного из вариантов одного из зачета: http://www.silicon-russia.com/2015/03/19/intro-rtl-fpga-verilog-midterm-1-1/
Где бы еще взять время на это всё? Ни у кого случаем нет свободной машины времени?
Добрый день,
я являюсь подобным студентом, правда имею определенный опыт использования fpga и пару проектов на них
тоже пользуюсь altera, но вот в качестве языка выбор пал на VHDL
и соответственно регулярный вопрос: почему Verilog/SV? для себя пока что нашел преимущества в sv:
— тип данных longint длинной в 128 бит
— конструкция a = b? c: d
в остальном vhdl пока кажется приятнее, да и в университете его преподают, однако на многих вакансиях Verilog, и не могу понять: в университете неправы или на производствах неправы или каждый прав
На verilog писать меньше нужно. И даже он уже неприлично низкоуровневый для текущих задач. Тренд в сторону синтеза C/C++ напрямую в FPGA и схемных редакторов, где единицей дизайна является целое IP-ядро. Сейчас дизайн серьёзных проектов в основном строится на уровне IP-ядер и интерфейсов.
-Тренд в сторону синтеза C/C++ напрямую в FPGA и схемных редакторов

Не имеете ли вы ввиду случаем под схемными редакторами Simulink и последующую компиляцию HDL-кода из него?
Полагаю, тренд синтеза С/С++ касается опять таки SoCFPGA систем, где это еще как-то разумно использовать
Под схемными редакторами я имел в виду IP Block Design в том же Vivado
Вы спрашиваете вопрос из традиционного холивара VHDL и Verilog :)

Мне приятнее SystemVerilog, я знаю, что благодаря ему я более производителен, чем если бы писал на VHDL.

Предлагаю сделать маленький эксперимент:
  • Зайдите в директорию, где у вас хранится Quartus, а затем в директорию ip/altera.
  • Посчитайте, сколько там Verilog, SystemVerilog и VHDL файлов.

У меня получилось вот так:
ish@xmr:~/altera/15.1/ip/altera$ find . -name *.v | wc -l
17006
ish@xmr:~/altera/15.1/ip/altera$ find . -name *.sv | wc -l
6012
ish@xmr:~/altera/15.1/ip/altera$ find . -name *.vhd | wc -l
1321

Если оставить только с уникальными названиями файлов, то получается вот так:
ish@xmr:~/altera/15.1/ip/altera$ find . -name *.v -printf "%f\n" | sort | uniq | wc -l
4952
ish@xmr:~/altera/15.1/ip/altera$ find . -name *.sv -printf "%f\n" | sort | uniq | wc -l
2152
ish@xmr:~/altera/15.1/ip/altera$ find . -name *.vhd -printf "%f\n" | sort | uniq | wc -l
1013
-я знаю, что благодаря ему я более производителен, чем если бы писал на VHDL.

Вот насчет этого как раз и не могу найти ни подтверждений ни опровержений, как раз хотелось бы узнать что бы подразумеваете под производительностью VHDL и Verilog (:
Всё банально — для написания одного и того-же модуля на VHDL надо больше символов ввести, чем на *Verilog. Если предположить, что у двух разработчиков одинаковая скорость печати и одинаковые знания их языков (Один гуру в verilog, другой в vhdl), то первый напишет код быстрее.
Этого ответа я конечно ждал и, с сожалением, дождался
Всё верно.

P.S. Рекомендую глянуть топик FEC на ПЛИС, где Денис Шехалев (des00) пиарит красоту SV :).
Согласен, SystemVerilog с выходом Vivado можно использовать как синтезируемый язык для новых поколений плис Xilinx (думаю Altera тоже не отстаёт). Он обладает функциональностью VHDL (например, можно прокидывать матрицы между модулями) и краткостью Verilog'а. И как плюс, на нём можно писать мощные тестбенчи, а для ASIC верификации под него есть готовые библиотеки для проведения функционального тестирования и тестирования покрытия кодом (например, UVM).
Это весьма упрощенная модель. VHDL как язык со строгой типизацией позволяет избежать множества досадных ошибок, тем самым сэкономив время на отладке. Да можно говорить, что мы огородились тестами на все случаи жизни и всегда все проверяем досконально, но все же ситуация не столь однозначна. Да и непосредственно печатание кода вряд ли занимает столь значителньое время во всем времени разработки.
Согласен с вами, но дальнейшее обсуждение наверняка выльется в очередной VHDL vS Verilog холивар.
Ну а зачем мы тут собрались? ;)
Всегда завидовал людям, чья производительность ограничивается скоростью набора символов.
Большое спасибо за такой шикарный обзорный материал! За wavedrom отдельная благодарность.

А можете привести примеры вопросов, которые задают уже не junior, а senior-ам на собеседованиях? Чтобы было куда стремиться дальше.
Да вопросы такие же на самом деле.

Про что еще можно спросить:
  • оптимизация (по ресурсам и частоте)
  • конвейеризация
  • нюансы САПР'а (его дополнительные возможности, галочки для оптимизаций, например)
  • внутренние интерфейсы (семейства Avalon, AXI)
  • верификация: UVM SVA, coverage, constrained random tests


Скрытый текст
Не факт, что я сам бы без проблем ответил на все вышеперечисленные темы, потому что кое-что не использую каждый день и знаю только «со словарём».

Плюс чисто RTL-дизайнеру скорее всего не будут задавать вопросы по advanced верификации.


Ну и разумеется, вопросы по сфере, для которой будет писаться прошивка FPGA.
Если ЦОС, то можно спросить про фильтры, если Ethernet, то про то как работает свитч или роутер.

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

Если команда разрабатывает для Ethernet'a на частоте 200 МГц на Stratix V, и приходит человек с годом опыта и он делал аналогичные задачи, то этот человек «опытнее», чем тот, который пять лет делал SPI-контроллеры на частоте 20 МГц на маленьких простеньких чипах.

Понять, насколько потенциальный кандидат успешно решал задачи, легко, если с ним поболтает час или два технический специалист (читай, другой FPGA разработчик), спрашивая простые вопросы:
  • Как делали? Какая была архитектура всего проекта?
  • Какие IP-ядра использовали готовые (покупные или из опенсорса)?
  • Какие модули конкретно ты разработал? Сколько времени это заняло?
  • Какие вылезли косяки/баги?
  • Какая самая сложная проблема была?
  • Как оптимизировали? Что помогло в оптимизации?
  • Какой интерфейс использовали?
  • Как настраивали [модули или IP-ядра]?
  • Как была построена верификация?
  • Как тестировали на железе?
Для азера 200МГц не нужно :) Гиг работет на 125МГц, 10Гиг — на 156,25 :))
Спасибо за статью, очень интересно.
Но, как показывает практика, работы с железом в СНГ, постсоветском пространстве очень мало — нет почти ничего.
Вот так это и остается в лучшем случае, как хобби. :)
Тем, кто работает в этой сфере — поклон!
где ж была ваша статья 3 года назад?) Очень хорошая подборка, спасибо вам большое, сам освежил некоторые тонкие моменты и младшим коллегам показал.

И хотел бы задать вопрос. Возможно я что-то упустил, но в своей практике столкнулся с очень ограниченной поддержкой SV конструкций САПРом от альтеры. Если это так, то в чем вы тогда моделируете? Сам я Занимаюсь разработкой ASICов и тут таких проблем нет.
Три года назад я сам был джуниором, сорри :)

SV симулировали в Modelsim, синтезировали родным Квартусом.

Какие синтезируемые конструкции не работали у Альтеры, а работали для ASIC-синтезатора?
Я сталкивался с двумя проявлениями — inside и динамические массивы. Первое выяснилось в ходе прототипирования модуля, второе случайно сам выяснил. Вообще, нашел вот табличку со списком поддерживаемых конструкций. Есть почти все, но почему-то не упоминаются классы и вещи связанные с constrained random verification.
Может кому-то пригодится. Xilinx Zynq. Много полезной информации почерпнул о нем тут и еще тут
Иван, спасибо за статью!

Добавлю, что далеко не каждый Junior (и даже Middle) может похвастаться всем тем, что требуется из списка «Необходимо». Особенно, если после нескольких лет работы у человека начинается специализация в то или иное направление (реализация высокоскоростных интерфейсов или углубление в ЦОС, например). Получается, что существенную область разработки человек попросту игнорирует из-за специфики конкретно его работы.

Меня часто спрашивают начинающие разработчики на ПЛИС (зачастую студенты старших курсов), что почитать, какие книжки нужно держать под рукой, что нужно уметь, знать, применять и куда расти. Когда я им вываливаю полный список того, что прочитал я или мои коллеги (и что ещё предстоит прочесть), то энтузиазм несколько угасает. Теперь в список для чтения ещё и вашу статью добавлю! :)

Забавно, но у тех, кто ко мне обращается, тажке зачастую возникает вопрос: "FPGA vs WEB"? И практически всегда люди делают выбор в сторону того, что проще и в конечном счете позволяет иметь бОльшую гибкость. И это правильно.

P.S. кстати, а где в требованиях умение пользоваться осциллографом? (с железками ведь работаем, как-никак) :)
Эта статья — это мой взгляд на позицию Junior FPGA Design Engineer, и в нем не входит умение пользоваться осциллографом. У Вас может быть другой взгляд и это вполне нормально :)

Конечно, это очень спорно, потому что многие в эту «должность» вкладывают еще и умение разводить платы (т.е. схемотехника) и пр.

Я считаю, что FPGA Design Engineer должен быть в первую очередь хорошим RTL-кодером. Конечно, умение пользоваться осциллографом никому не вредит, но я лично предпочту работать с человеком, который знает что такое констрейны и метастабильность и умеет быстро писать код, но не умеет тыкать в резисторы щупом для просмотра сигналов.
Тоже верно, требования везде разные. Даже на hh по вакансии можно заблаговременно предположить, где с железкой будешь иметь дело напрямую, а где хватит встроенных анализаторов (типа ChipScope для Xilinx).

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

Сфера ЦОС:
— Эммануил С. Айфичер, Барри У. Джервис. Digital Signal Processing: A Practical Approach
— Рабинер и Голд. Теория и практика цифровой обработки сигналов.

Также при углублении в область ЦОС на ПЛИС очень полезно будет на начальном этапе ознакомиться с даташитами на IP-ядра от тех вендоров, с которыми будете работать. В даташитах подробно описаны основные моменты, без сильного углубления в теорию. Дополнительный плюс таких IP-ядер — легкость моделирования и отладки.

High Speed Trancsivers:
— High-Speed Serial I/O Made Simple от Xilinx.

Книга позволяет получить первичное представление о гигабитных трансиверах и их начинке, дает основные определения и описывает проблемы, возникающие при разработке интерфейсов передачи.
Не плохой список, сейчас как раз из жены делаю плисовода, пригодиться :)
Но есть и критика.
Во-первых, не согласен категорически с разделом «Не соблюдение принципов синхронного дизайна». Как говорят классики, шедевр создают только те, кто выходят за пределы правил. Асинхронщина часто помогает сделать тот же кусок кода в 2-3 короче, просто, что бы понимать как работают асинхронные схемы нужно больше опыта и понимания, чем при тупом ваянии синхронных схем. Более того, есть случаи, когда без асинхронных схем не обойтись. Нужно, как в анекдоте, просто уметь их готовить :))
Насчёт использования STP. «Нет, ребята, всё не так, всё не так, ребята». Во многих случаях гораздо быстрее и удобнее прикрутить STP и посмотреть, что там происходит. Насчёт 5-10 минут, кто вам мешает пересобирать только тот кусок, который не работает, не трогая остальной проект? Я не слышал, что бы в Квартусе оменили опцию частичной пересборки. Или по-вашему для проверки какого-то небольшого тонкого куска лучше и быстрее ваять на 20 страницах верстак (который больше не понадобиться)? А дальше, что бы было (относительно) адекватное моделирование, вы запустите моделсим в режиме вентильного моделирования и этот неповоротоивый монстр будёт её обсчитывать минут 20-30 и в конце-концов тупо свалиться. Ну да, конечно, это явно быстрее, чем в два щелчка прикрутить stp и за 10 мин пересобрать схему :)) И не надо забывать, что stp вам показывает живые сигналы, а моделирование — это некоторое и довольно грубое к оным приближение.
Ну и, кстати, реально СистемВерилог по-сути не имеет существенных преимуществ на тем же Верилогом-2001. Мало того, как выразился как-то про СистемСи Панчул, — «это очередная попытка изнасиловать мозг разработчика». То же я бы сказал про СистемСи. Единственная полезность для меня там оказалась в упакованных массивах. Всё остальное — нафиг не нужно. Я уже 20 лет ваяю сложнючие схемы обработки сигналов (топовые Стратиксы-4 забиваются под завязку), но ничего сложнее тупого верстака на верилоге, который вычитывает входные данные из файла, сгенерённого Матлабом, прогоняет через Моделлсим и потом пишет выходы для того же Матлаба мне никогда не надо было.
Но есть и критика.

У каждого свой взгляд на эту сферу и это вполне нормально)
Спасибо, что высказываете своё мнение по данной теме.

Или по-вашему для проверки какого-то небольшого тонкого куска лучше и быстрее ваять на 20 страницах верстак (который больше не понадобиться)?

Лучше — да. Быстрее — нет. А вообще ответ зависит от специфики граничного случая.

Этот «верстак» можно сохранить как один из тесткейсов, и запускать каждую ночь в continuous integration и спать спокойно, зная, что с утра вам придет репорт о том, что вы или ваши коллеги ничего не сломали после последнего коммита.

Я уже 20 лет ваяю сложнючие схемы обработки сигналов (топовые Стратиксы-4 забиваются под завязку), но ничего сложнее тупого верстака на верилоге, который вычитывает входные данные из файла, сгенерённого Матлабом, прогоняет через Моделлсим и потом пишет выходы для того же Матлаба мне никогда не надо было.

Если на протяжении 20 лет вам удается обходится минимальными тестами и окружениями для тестирования и всё разрабатывается за минимальное время и работает с первого раза, без дебага и пр., то это очень здорово.

У меня другая сфера разработки под FPGA (не ЦОС) и другой опыт, который говорит о том, что лучше студента/джуниора заставлять писать тесты, и сначала на них прогонять данные, а только потом запускать это всё на железе. Возможно, когда у меня будет 20 лет разработки под FPGA, то у меня будет другое мнение по этому вопросу.

Какой путь трансформаций проходят исходники (*.v файлики) с момента написания до момента попадания в Flash память FPGA?

Подобно программированию на С(ях), где цепь такая

*.с->*.obj->*.elf->*.bin->OnChipNorFlash

Какая "пищевая цепочка" файлов в ToolСhain(е) для FPGA?

Можно ли представить схему ToolСhain() для разработки на FPGA?

https://habr.com/ru/articles/688542/

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

Для изучения FPGA нужна такая учебная задача, которую на микроконтроллере решить нереально .

Реализацией на FPGA светофора или soft процессора сегодня никого не удивишь. Это наоборот провоцирует отвращение, так как выглядит техническим садизмом. Разумнее взять готовый микроконтроллер и сделать этот пресловутый учебный светофор.

На FPGA можно DSP на лету делать. Вот на это надо акцент делать! Дискретное преобразование Фурье, цифровые фильтры, корреляция, свертка, смешивания сигналов. Вот это надо сразу пробовать на FPGA.

Поэтому FPGA и используют как основу радиолокаторов (РЛС).

Но ADC DAC для РЛС школьникам и ВУЗовцам не по карману. Там цены за полмиллиона рублей за микросхему ADC (AD9208-3000EBZ)
https://www.chipdip.ru/product0/8005793559

Зато вот аудиокодеки стоят дёшево.
https://habr.com/ru/articles/703588/

Поэтому FPGA надо изучать в контексте аудио обработки.

Причём в США так уже давно делают вот ссылка на учебный курс (канал Bruce Land )
https://www.youtube.com/watch?v=56ax9pXFY-A
https://www.youtube.com/watch?v=E-DvVidEvVg

Audio+FPGA просто калейдоскоп приличных вариантов учебных проектов

-звуковые сонары
-Звуковые дальномеры
-Детекторы стрельбы
-Звуковые эффекты в реально времени (эхо, дисторшн),
-Звуковая локализация,
-Передача бинарных данных модулированным звуком (DTMF)
-обновление прошивок звуком
-Звуковые лазеры (см проекты MIT)
-Определение скорости поездов по доплеровскому смещению от звука колес
-Звуковая навигация
-наушники с активным шумоподавлением

--датчики шума в реальном времени
-дефектоскопы
-звуковые датчики уровня жидкостей
-звуковые датчики скорости потока жидкости
и прочее

При этом все полученные в аудио обработке знания легко переносятся на радиодиапазон просто повышением частоты и стоимости микросхем ADC/DAC.

Какую отладочную плату с FPGA Вы могли бы порекомендовать в качестве отладочной платы для изучения и экспериментов? Желательно, чтобы на PCB был чип аудиокодека.

Sign up to leave a comment.

Articles

Change theme settings