Comments 41
И отдельно интересно было бы почитать про процессор с мультиклеточной архитектурой и его реальное применение.
По поводу мигания светодиодиками — на этих выходных решил сделать небольшой проект и уложиться в „пару вечеров“. Сейчас готовлю статью и скоро можно будет поглядеть, что из этого вышло.
А российские ПЛИС существуют только для военных, причем даже они пытаются использовать импорт там, где это возможно. Если вы не военный, то смело считайте, что российских ПЛИС не существует в природе.
В одном ТЗ меня сильно зажали по времени — сигнал со входа сразу должен был выдаваться на выход и под ним уже должны были быть данные. Данные-то я, понятно дело, готовил заранее и потом из небольшого буфера выдавал, но у меня не было возможности впихнуть выходной регистр на входной управляющий сигнал, т.к. работал на частоте, которая не могла обеспечить маленькую задержку. В результате он откуда-то выходил (вне моей схемы), я его ещё пару раз считывал (растягивал по схеме) и выдавал куда-то далее (хлопался он там где-то близко регистром или нет?) — вот и представьте какая длина у этой линии в ПЛИСе? Но это уже головная боль была у того, кто весь поект собирал. Наверное не от хорошей жизни так решили делать.
А вот когда я проект собирал. Возник казус с стыком отлаженных схем. Одна схема опрашивала две другие. Один сигнал управления (выбор схемы), второй — запрос готовности. А результат опроса уже анализировался на следюущем такте, т.е. сигнал-то еще надо было развести между двумя другими. Ну да, не продуман был стык. Схемы уже отлажены, никто не горит желанием переделывать) Поставил асинхронный мультиплексор и навесил на него временные ограничения благо частота была небольшая и там запас был хороший.
Я бы не стал возводить синхронную работу схемы в безоговорочный принцип. Есть вещи, где некритичны задержки и допустима асинхронная схема. Просто разработчик должен понимать что это может за собой повлечь. И если есть возможность сделать всё по тактам — лучше делать по тактам)
А в целом, моё мнение, что VHDL, что Verilog себя изжили: слишком низкоуровневые. За языками типа SystemC будущее!
А Verilog живет, процветает и обвешивается расширениями, тем же SystemVerilog кстати.
А SystemVerilog абсолютно ничего нового не добавляет к последней версии Veriloga в плане синтеза. Verilog'и, VHDL'и и прочие AHDL'и себя изжили. Они были хорошы пока ПЛИСины были относительно маленькие и многие ещё мыслили категориями 155ой серии. Сейчас писанина навороченных систем обработки сигналов на том же
Вот, кстати, довольно профессиональное мнение по этому поводу от человека, имевшего отношение в том числе к разработке таких языков:
panchul.livejournal.com/473865.html
Плюс верилога — лаконичность (кроме бесящего begin — end) и возможность стрелять в ногу под любым углом (если есть на то необходимость).
Лично у меня впечатление от общения с ПЛИС совершенно противоположное — если можно обойтись без них, то лучше обойтись. С этими корявыми языками (Verilog/VHDL) с ещё более корявыми синтезаторами, этой области, которая пропитана проприетарщиной и всеми её пороками до мозга костей, лучше избегать.
imgur.com/qnYFjwU
imgur.com/JscvPeU
imgur.com/nTGyoWa
P.S. вставить по-нормальному карма не позволяет
Усли же каждый у себя в гараже будет на ПЛИС клепать, то качество этих изделий будет… понятно какое. К тому же это удар по экосистеме — когда ты делаешь свою схему с нуля даже без софт процессора (а если и с ним, то кастомной архитектуры), то ты становишься оторван от всего богатства уже написанного кода, который можно было бы применить. Скажете, что можно будет использовать IP-ядра и делать их самим? Пока область IP-ядер находится в зачаточном состоянии. И видели бы вы, например, Memory Interface Generator (позволяющий реализовать контроллер памяти DDR1/2/3 и др.) или ядро 10 Gigabit Ethernet Mac от Xilinx — там столько всего гвоздями прибито не просто под ПЛИС конкретного производителя, а под конкретное семейство.
А вот обсуждать экономическую часть я больше не берусь. Мир экономики и финансов — он вообще другой. Я же из мира техники. Однажды я порассуждал с моим товарищем, у которого свой бизнес. Про ПЛИСы, которые мне просто интересны, про STM, стоимостью которого вообще можно пренебречь, про ARM. А им это вообще не интересно (изящность решения, полет творческо-технической мысли, перспективы развития). Из самых важных моментов он мне назвал: 1) сможешь ли ты в принципе с делать такое устройство; 2) как быстро ты сделаешь это устройство (чем быстрее, тем лучше). Про стоимость, ценообразование настоятельно рекомендовалось не рассуждать.
Но еще мне просто интересна ПЛИС, как платформа для разработки. Поэтому мы ее и обсуждаем.
Вообще, обычно грамотные ребята системы обработки строят на комбинации: ПЛИС + дээспишник или мощный арм. Плисина молотит всё, что быстро и однообразно (т.е. без сложных ветвлений), а проц добивает то, что медленно и с большим количеством «если». Это — правильный путь, всё остальное — способ попасть на счётчик у заказчика.
Извиняюсь за ответ на очень старый коммент, но я соглашусь.
У меня STM32F407 очень тяжело справляется с преобразованием потока данных 24 бит 48k smp/s сначала в 24 бит 384k smp/s, потом в 9 бит 384k посредством дельта-сигма модуляции. А на МК возложена еще и куча других задач. Потому эту задачу я отвел для FPGA. Даже дешевый вариант Cyclone II (EP2C5T144C8N) справляется с преобразованием и дальнейшей обработкой этого потока просто на ура. По барабану даже на то, что там КИХ фильтр высокого порядка для апсемплинга.
Собственно, с этой задачи и началось мое освоение ПЛИС. Освоил быстро, благо с логической схемотехникой был знаком даже до освоения микроконтроллеров. В качестве языка выбрал Verilog. Писанины на нем меньше, чем на VHDL. Тот же КИХ писал сам. В железе заработал сразу, так как при разработке следовал стандарту: Строгая синхронщина, управляемая конечным автоматом. И так во всех функциональных модулях. Проект сложный, в нем я сразу столкнулся со всем многообразием методов отстрелить себе ногу. Столкнулся даже с синхронизацией между разными тактовыми доменами. Но все построил так, что Таймквесту достаточно было только сказать, какие и откуда у меня тактовые частоты и больше ничего ему не потребовалось.
Есть ли в этом какой то реальный смысл и польза или овчинка выделки не стоит? Есть какие то наработки по использованию привычного opencl с fpga (хотя бы в виде конвертера в verilog)?
Microsoft Bing использует аппаратное ускорение на базе FPGA Altera ссылка
OpenCL — модная тема у альтеры, опять же, последний год-два. Но каких они там успехов добились сказать сейчас не готов.
ПЛИС — мои первые шаги