Думаю, дело вкуса. Мои коллеги не против, из минусов этой записи я вижу лишь то, что могут получиться два мультиплексора, которые стоят друг за другом, что не очень хорошо по частотке. Если такое вылезает, то приходится переделывать на case.
Либо еще есть какие-то минусы от такой записи?
Конечно, если данные идут всегда, то смысла вводить сигнал валидности особо нет. С другой стороны, его задержанные братья будут явно показывать на какой стадии мы сейчас находимся, что может быть полезно при отладке.
Насчет «многих случаев»: думаю, всё-таки больше приложений, где данные идут не всегда, следовательно сигнал валидности нужен. Конечно, процент тех и других случаев вряд ли кто-то подсчитывал :)
По этой картинке я тоже принципиальной разницы не увидел, но у AXI4-Stream есть сигнал TUSER, который может быть произвольной длины. По описанию, туда можно положить какую-то информацию о пакете: к примеру, количество vlan'ов, чтобы знать с какого байта начинается IP-заголовок.
В этой ситуации я просто параллельно Avalon-ST добавляю еще одну структуру куда складываю информацию о пакете. Здесь это из коробки, что может быть удобно)
Еще есть сигнал TDEST, который явно показывает, куда (на какой порт) надо передать этот пакет, в Avalon-ST этого нет, приходится это добавлять в вышеупомянутую структуру)
1. Если под «низким уровнем» языка подразумевается то, что надо описывать каждый такт/регистр, то существует класс задач, где без этого не обойтись, что бы выжать нужную производительность. Процессор Opensparc, к примеру, написан на verilog'e и от этого («низкий уровень»)вряд ли можно будет уйти в ближайшее время.
Если хочется писать на С, но на FPGA, то для определенных задач можно попробовать использовать OpenCL, но сколько за Вас квартус производительность выжмет, столько и будет.
2. Не могу согласиться. Да, у Квартуса бывают вещи не самые интуитивные, но всё приходит с опытом :) Пример, что Вы привели, где неясно что прошивать — это нюансы конкретной борды.
И еще такие наблюдения:
1. 1G, 10G, 40G/100G Ethernet контроллеры у Альтеры написаны на Verilog. И я говорю не про врапперы, которая даются пользователю, а именно внутренние модули.
2. Альтера сейчас не продвигает AHDL.
3. Modelsim/Questasim не поддерживает AHDL.
Думаю, AHDL менее популярен, чем VHDL/Verilog. На оpencores большинство проектов на VHDL/Verilog.
Попробуйте в МegaWizard сгенерить DDR, PCIe или Ethernet контроллер на AHDL) Как думаете, почему Альтера не дает это сделать?
О мотивации всё Джордж Карлин в своё время сказал)
Мне, например, интересен SystemC, что бы понять я могу использовать в своей разработке или нет. Статья «Сделай шаг к SystemC» где будет лейтмотивом, что «SystemC это круто», не особо поможет мне разобраться в теме.
А статья «Сравниваем SystemVerilog и SystemC», где разработчик делает НЕ счетчик, а что-то более менее серьезное на обоих языка с пошаговыми инструкциями и сравнениями по частоте, логическим элементам, удобству и гибкости намного больше даст пищи для размышлений.
У Моделсима немного другое назначение, чем простой симулятор)
Большие проекты без Моделсима или аналогичного симулятора невозможно быстро разрабатывать.
Если Вы ставите людей замотивировать что-то сделать (а это похвально и в этом плане я Вас полностью поддерживаю), то сделайте статью с нуля, начиная что и как надо поставить, выбором девкита, описать все шаги, и получить реальный осязаемый продукт. Выложите проект с исходниками, покажите, что сделать обработку ЦОС на FPGA реально просто. Человек просто возмет, купит плату, аналогичную той, что вы используете, по шагам пройдется и получит аналогичный результат.
Мой коллега делал подобную статью: habrahabr.ru/post/235707/. Там расписаны все шаги, и любой просто повторит их и получит такой же результат, что и в статье. Что я должен повторить в вашей статье и какой результат получить?
Так же надо показать альтернативу, что реализация на MCU/CPU займет больше времени/будет не выгодной/не производительной и так далее. К примеру, вы выбрали Altera и Verilog без какой-то ощутимой мотивации. И даже холивар VHDL vs Verilog не развели)
В 14 версии убрали поддержку Cyclone I-III, насколько я помню. Так же 14 версия вроде только 64-битная.
У Quartus есть Web Edition — бесплатная версия. Сравнение можно найти здесь: www.altera.com/literature/po/ss_quartussevswe.pdf
Для маленьких FPGA и маленьких проектов легко подходят старые версия квартуса (9-11), они и меньше весят)
Где ненависть к ПЛИС?)
Я их очень люблю, см. мой профиль)
Просто Вы заявляете, что надо использовать FPGA. На кого направлена статья? На людей, которые не определились — нужна им FPGA или нет для своих задач. Допустим, прочитали на википедии для чего могут они использовать. Не думаю, что после Вашей статьи им еще стало всё понятнее и они больше замотивированы, что FPGA им поможет для решения своих задач.
Ваш пример с Юностью намного более показателен, чем то, что написано в статье. Вы решили конкретную задачу на FPGA и если у человека, который не определился нужно ему это или нет, возникает подобная задача — он поймет, что FPGA это именно то, что ему надо.
Решение на 10 AVR не понравилось -> нашли альтернативу в виде FPGA. Это как раз то, о чем я говорю — надо использовать FPGA только тогда, когда надо, т.к. это не серебряная пуля. Если в другом проекте и без FPGA обходятся, то не надо делать что-то на FPGA)
С другой стороны, в масс-продакте цена может сильно влиять на вариант реализации. И если вариант на FPGA не вписывается в бюджет, то…
Во-вторых, хороших FPGA программистов для больших проектов сейчас сложно найти.
Основная цель статьи — привлечь людей к тому, чтобы они начали использовать ПЛИС.
Люди должны начать использовать ПЛИС только тогда, когда это экономически выгодно и действительно необходимо)
К примеру:
Есть ТЗ на какой-то девайс, и если готовый MCU/CPU не может удовлетворить эти требования ( по производительности, к примеру ), то разработчик ищет варианты, как это можно реализовать. И FPGA является одним из таких вариантов. Для высокопроизводительных вычислений в этом вопросе рядом встает и GPU. А может проще купить мощнее сервер или обсчитывать всё на кластере из серверов?
ЦОС, к примеру, может обсчитываться на специальных готовых DSP-чипах. Для каких-то задач будет проще взять такой процессор, чем писать это всё на FPGA.
В ПЛИС с непривычки очень здорово запутаться можно, а каждая ошибка превращается в 10 минут (почти что минимум) безделья и попивания чая на пересборку проекта.
Используйте симуляцию (modelsim/questasim/бесплатные аналоги) ;)
Хотя, понимаю, что для маленьких проектов их может быть лениво писать)
Я тоже так думаю, просто интересно сравнение производительности чипов, если встал вопрос о деньгах. Тот Cyclone, который стоит в этой плате жирнее (больше логики и памяти) чем Z-7010, и не является лоукостом)
От жирности чипа и спидгрейда (если сравнивать серию Cyclone с одинаковым числом ядер) производительность скорее всего не зависит: эти же числа можно получить при самом дешёвом чипе, который около 50-70$ стоит. На плате за 189$ тоже стоит лоукост чип.
Поэтому я предлагаю сравнивать не борды, а чипы, т.к. не все используют готовые борды в своих задачах, кто-то и сам может развести плату и чип поставить) Плюс интересно кто что делает на FPGA)
Значит, Synplify более паранойный)
Защелкивание лишних данных мне никогда особо не мешало, но т.к. есть мысли переехать на Synplify, то, возможно, придется это учесть, спасибо!
Если не секрет, в своих проектах Вы от всех предупреждений избавляетесь?
Либо еще есть какие-то минусы от такой записи?
P.S. Разве FPGA-шник должен быть железячником? :)
Насчет «многих случаев»: думаю, всё-таки больше приложений, где данные идут не всегда, следовательно сигнал валидности нужен. Конечно, процент тех и других случаев вряд ли кто-то подсчитывал :)
В этой ситуации я просто параллельно Avalon-ST добавляю еще одну структуру куда складываю информацию о пакете. Здесь это из коробки, что может быть удобно)
Еще есть сигнал TDEST, который явно показывает, куда (на какой порт) надо передать этот пакет, в Avalon-ST этого нет, приходится это добавлять в вышеупомянутую структуру)
Обратную связь я упомянул)
С ЦОС я не работал: если более развернуто расскажете про проблемы, возникаемые там — будет замечательно)
Если хочется писать на С, но на FPGA, то для определенных задач можно попробовать использовать OpenCL, но сколько за Вас квартус производительность выжмет, столько и будет.
2. Не могу согласиться. Да, у Квартуса бывают вещи не самые интуитивные, но всё приходит с опытом :) Пример, что Вы привели, где неясно что прошивать — это нюансы конкретной борды.
1. 1G, 10G, 40G/100G Ethernet контроллеры у Альтеры написаны на Verilog. И я говорю не про врапперы, которая даются пользователю, а именно внутренние модули.
2. Альтера сейчас не продвигает AHDL.
3. Modelsim/Questasim не поддерживает AHDL.
DDR и PCIe контроллеры бесплатные.
Попробуйте в МegaWizard сгенерить DDR, PCIe или Ethernet контроллер на AHDL) Как думаете, почему Альтера не дает это сделать?
Мне, например, интересен SystemC, что бы понять я могу использовать в своей разработке или нет. Статья «Сделай шаг к SystemC» где будет лейтмотивом, что «SystemC это круто», не особо поможет мне разобраться в теме.
А статья «Сравниваем SystemVerilog и SystemC», где разработчик делает НЕ счетчик, а что-то более менее серьезное на обоих языка с пошаговыми инструкциями и сравнениями по частоте, логическим элементам, удобству и гибкости намного больше даст пищи для размышлений.
Большие проекты без Моделсима или аналогичного симулятора невозможно быстро разрабатывать.
Мой коллега делал подобную статью: habrahabr.ru/post/235707/. Там расписаны все шаги, и любой просто повторит их и получит такой же результат, что и в статье. Что я должен повторить в вашей статье и какой результат получить?
Так же надо показать альтернативу, что реализация на MCU/CPU займет больше времени/будет не выгодной/не производительной и так далее. К примеру, вы выбрали Altera и Verilog без какой-то ощутимой мотивации. И даже холивар VHDL vs Verilog не развели)
У Quartus есть Web Edition — бесплатная версия. Сравнение можно найти здесь: www.altera.com/literature/po/ss_quartussevswe.pdf
Для маленьких FPGA и маленьких проектов легко подходят старые версия квартуса (9-11), они и меньше весят)
Я их очень люблю, см. мой профиль)
Просто Вы заявляете, что надо использовать FPGA. На кого направлена статья? На людей, которые не определились — нужна им FPGA или нет для своих задач. Допустим, прочитали на википедии для чего могут они использовать. Не думаю, что после Вашей статьи им еще стало всё понятнее и они больше замотивированы, что FPGA им поможет для решения своих задач.
Ваш пример с Юностью намного более показателен, чем то, что написано в статье. Вы решили конкретную задачу на FPGA и если у человека, который не определился нужно ему это или нет, возникает подобная задача — он поймет, что FPGA это именно то, что ему надо.
Решение на 10 AVR не понравилось -> нашли альтернативу в виде FPGA. Это как раз то, о чем я говорю — надо использовать FPGA только тогда, когда надо, т.к. это не серебряная пуля. Если в другом проекте и без FPGA обходятся, то не надо делать что-то на FPGA)
С другой стороны, в масс-продакте цена может сильно влиять на вариант реализации. И если вариант на FPGA не вписывается в бюджет, то…
Во-вторых, хороших FPGA программистов для больших проектов сейчас сложно найти.
Люди должны начать использовать ПЛИС только тогда, когда это экономически выгодно и действительно необходимо)
К примеру:
Есть ТЗ на какой-то девайс, и если готовый MCU/CPU не может удовлетворить эти требования ( по производительности, к примеру ), то разработчик ищет варианты, как это можно реализовать. И FPGA является одним из таких вариантов. Для высокопроизводительных вычислений в этом вопросе рядом встает и GPU. А может проще купить мощнее сервер или обсчитывать всё на кластере из серверов?
ЦОС, к примеру, может обсчитываться на специальных готовых DSP-чипах. Для каких-то задач будет проще взять такой процессор, чем писать это всё на FPGA.
Используйте симуляцию (modelsim/questasim/бесплатные аналоги) ;)
Хотя, понимаю, что для маленьких проектов их может быть лениво писать)
От жирности чипа и спидгрейда (если сравнивать серию Cyclone с одинаковым числом ядер) производительность скорее всего не зависит: эти же числа можно получить при самом дешёвом чипе, который около 50-70$ стоит. На плате за 189$ тоже стоит лоукост чип.
Поэтому я предлагаю сравнивать не борды, а чипы, т.к. не все используют готовые борды в своих задачах, кто-то и сам может развести плату и чип поставить) Плюс интересно кто что делает на FPGA)