Comments 47
Пыталась понять, что же такое ПЛИС, но после прочтения статьи всё же пришлось гуглить.
Ниже, чтобы другим не приходилось искать, привожу фрагмент из вики.
Так же нашла в продаже для юридических лиц "Микросхемы ПЛИС (PLD, CPLD, FPGA)"...
У меня такой вопрос к автору статьи. Скажите, пожалуйста, возможно ли изготовить АЛУ (арифметико-логическое устройство) с другой математикой в своей основе или только собирать из того, что есть?
Спасибо за статью и за вашу работу! С удовольствием добавляю статью в закладки и буду ждать новых!
Определение ПЛИС из вики: "Программи́руемая логи́ческая интегра́льная схе́ма (ПЛИС, англ. programmable logic device, PLD) — электронный компонент (интегральная микросхема), используемый для создания конфигурируемых цифровых электронных схем. В отличие от обычных цифровых микросхем, логика работы ПЛИС не определяется при изготовлении, а задаётся посредством программирования (проектирования). Для программирования используются программатор и IDE (отладочная среда), позволяющие задать желаемую структуру цифрового устройства в виде принципиальной электрической схемы или программы на специальных языках описания аппаратуры (Verilog, VHDL, AHDL и других). Альтернативой ПЛИС являются:
БМК — базовые матричные кристаллы, требующие заводского производственного процесса для программирования;
ASIC — специализированные заказные большие интегральные схемы (БИС), которые при малосерийном и единичном производстве существенно дороже;
специализированные компьютеры, процессоры (например, цифровой сигнальный процессор) или микроконтроллеры, которые из‑за программного способа реализации алгоритмов в работе медленнее ПЛИС;
непрограммируемые цифровые устройства и системы, настроенные на решение заранее известных задач, построенные на принципах так называемой «жёсткой логики».
Некоторые производители для своих ПЛИС предлагают программные процессоры, которые можно модифицировать под конкретную задачу, а затем встроить в ПЛИС. Тем самым:
обеспечивается увеличение свободного места на печатной плате (возможность уменьшения размеров платы);
упрощается проектирование ПЛИС;
увеличивается быстродействие ПЛИС."
Большое спасибо за комментарий! По поводу АЛУ - да, возможно. При помощи ПЛИС вы можете организовать собственную схему на уровне регистров, комбинационных схем, некоторых аппаратных блоков и связей между ними. Но, как правильно заметили, есть ряд ограничений, таких как количество логических ячеек, предельная частота работы и т.д.
Пыталась понять, что же такое ПЛИС, но после прочтения статьи всё же пришлось гуглить.
Это можно сравнить с набором однотипных деталей. Которые можно соеденять между собой, для получения сложных схем(да в результате компиляции тескта на языке VHDL/Verillog проще считать что получается именно схема а не программа, но это тоже не всегда верно). Тут вроде более менее наглядно раскисано что это за детали. Но это в общем в частности там бывют всяки хитрые дополнения.
Скажите, пожалуйста, возможно ли изготовить АЛУ (арифметико-логическое устройство) с другой математикой в своей основе или только собирать из того, что есть?
Можно реализовать всё то можно описать опиать базовыми блоками. Тоесть аналоговое АЛУ написать не получится, а вот цифровое без проблем.
На сколько понимаю: аналоговое устройство не пишут, его собирают. Для сборки нужна схема электрическая принципиальная. Но это уже давно прошлый век. Хотя в электричестве программистам тоже полезно разбираться, без него ни один комп пока что не работает...
Я глубоко не изучал попрос но кажется были(или есть) и нечто вроде аналоговых FPGA. А по поводу пишут/собирают ну вот цифровое можно собрать на какой нибудь 74 серии, а можно наспиать и загнать в FPGA.
Тут такое, - по факту на FPGA тоже "собирают" схему (описанную на Verilog или на другом языке) из ячеек FPGA. И да, есть программируемые аналоговые матрицы (FPAA), которые позволяют "собирать" аналоговые схемы. Например от Lattice.
может мой старый видос поможет тебе лучше понять што такое плис
Скажите, пожалуйста, возможно ли изготовить АЛУ (арифметико-логическое устройство) с другой математикой в своей основе или только собирать из того, что есть?
На ПЛИС возможно всё. Лишь бы хватило ячеек.
"Всё" это очень абстрактно! Я уже довольно давно ищу тех, кто способен реализовать математику в железе, но пока тщетно.
В статье речь идет о понимании архитектуры и того, как работают внутренние блоки, такие как блоки памяти, умножители, сумматоры, и т.д. Мой вопрос о возможности реализации новых принципов построения самих внутренних блоков. В первую очередь сумматора и как следствие остальных.
Почитайте вот это: http://www.labfor.ru/articles/fpga_arch_le
Ну в составные устройства вы можете заложить ту логику, которую захотите, а вот изменить физическую структуру триггеров, лутов или аппаратных блоков памяти уже, конечно, не получится, это то, что зашито в кристалле на заводе. Здесь уже нужно обращаться к asic, но это не уровень отдельного человека или маленькой группы, этим занимаются корпорации, уж больно дорого.
Спасибо за ответ! Хотя бы узнать, какие корпорации этим занимаются...
Или они штампуют готовое с сумасшедшей скоростью и никаких разработчиков по этой теме уже нет. Но, по логике вещей, они всё равно должны экспериментировать с материалами кристаллов
Мой вопрос о возможности реализации новых принципов построения самих внутренних блоков.
А говоря о новых принципах, вы что подразумеваете? Если вы остаетесь в базисе двоичной логики И-ИЛИ-НЕ, то пользуйтесь ПЛИС и реализуйте все, что вам угодно. Но, видимо, вы имеете ввиду какие то другие принципы?
Вам нужно подготовить ТЗ и связаться с проектировщиками, - вам они порасказывают много чего. Но, ожидайте что разработа обойдется в приличную сумму (50-150 k$) и прогон на прототипе еще +25 k$. Все это весьма примерно. Потом, если зайдет, - еще и по стоимости пластин (зависит от техпроцесса) + разварка и корпусирование. Недешево выйдет.
Если вы не знаете как подготовить ТЗ - то дальше просто не имеет смысла двигаться.
Что именно вы ищете? Приведите пример.
А какую математику в железе Вы хотите реализовать?
wire [7:0]result;
wire [7:0]a;
wire [7:0]b;
assign result = a+b;
Ну вот на Verilog уже сумматор. Это математика? Откомпилируете, загрузите в ПЛИС и будет суммировать.
Что именно вы хотите? "Другая математика в своей основе" это смело. Троичная логика? Комплексные числа? Это всё возможно на стандартной ПЛИС. У меня на руках ПЛИС GW5A.
Другая математика по отношению к элементной базе ПК, а не по отношению к математике в целом. Из формальной логики мне не нравится правило, что "из лжи может следовать истина" . На мой взгляд, здесь сидит ментальная ошибка.
Кажется, я понимаю. Вы представляете биты - разряды в числе не как разряды, а как Истина / Ложь. Но это не совсем та Ложь, что "Неправда", а просто отсутствие. Пример 20 / 4 = 5. Вот здесь 0 - не Ложь, а отсутствие единиц в младшем разряде числа 20. И нормально получается "истина". Так же и в двоичном исчислении.
Хоть xilinx, хоть altera, не поставляют официально чипы в Россию и вообще везде пытаются перекрыть кислород разработчикам.
Даже квартус лет 5 назад не мог официально скачать из России на офсайте.
Объясните какой смысл вкладывать столько усилий ради того чтобы потом не иметь возможности работать с fpga этих производителей по причине присоединения к санкциям сша?
Да, действительно, сейчас есть определенные проблемы с доставаимостью чипов, особенно это касается altera, с xilinx наши заграничные товарищи подружились лучше. Здесь я рассматриваю xilinx и altera потому что, во-первых, они пока еще держат большую часть мирового рынка, во-вторых, с чисто китайской архитектурой пока не работал, сложно учить тому, в чем сам не разбираешься.
Я искал альтернативы среди китайских производителей. Наткнулся на Gowin. Они с 2014 года на рынке, вроде одна из самых серьезных компаний китайских, которые производят энергоэффективные плис для промышленности. У них на сайте даже есть devkits.
https://www.gowinsemi.com/en/support/devkits_detail/56/
Но мне бы хотелось отечественный аналог аля Амур МИК32 😄
Китайцы сейчас активно развиваются, нашим, к сожалению, пока еще далеко. Здесь можно производителей посмотреть: https://github.com/FPGA-Systems/fpga-awesome-list
Отечественные ПЛИС есть, но те, о которых мне известно, являются клонами древних Альтер, ну и, как обычно, их фиг достанешь :)
Приобрести ПЛИСы в России не является проблемой от слова совсем - Китайпосылторг работает исправно. А вот с проприетарным софтом для них - беда, получить лицензию на Quartus или Vivado становится всё сложнее и сложнее. Но есть опенсорсный тулчейн на базе Yosys. На Хабре есть несколько статей на тему использования опенсорсных тулов для синтеза под ПЛИС, в том числе и за моим авторством. С проприетарных тулов настоятельно рекоменудую сползать.
Девкиты купить не проблема. Проблема в том, что производители против использования их продукции в России и вот это больше всего огорчает. Изучение и освоение какого-нибудь vivado и zynq 7000 потребует немало времени и труда. И в текущей ситуации начинать изучение с нуля является всё более сомнительной затеей, на мой взгляд.
Ну так это проблема общая для всей микроэлектроники в России, не только для ПЛИСов. И именно по этому рекомендую отвязываться от проприетарных тулов - чтобы не зависить от поставщика, рыночной и политической коньюктуры. Микросхемы ПЛИС приобрести всё еще не проблема, даже самые топовые. Да, придется слегка переплатить и немного больше подождать.
Возможно странный вопрос..
Вы не смотрели на лабораторные работы Юрия Панчула https://github.com/yuri-panchul/basics-graphics-music (ЛАБы для Школы Синтеза Цифровых Схем)? Чем они вам не подходят для обучения студентов? Почему решились делать именно свой курс? Я понимаю, что Вы хотите сделать всеобъемлющий курс, раз там и цифровые фильтры и PCIe и загрузчики/device tree/модули ядра. Но начальный уровень то лабы школы синтеза точно покрывают?
Создать свой курс дело же явно не простое. Судя по тому, что вы используете ChatGPT - дело на самом деле очень трудное. И моё мнение - ChatGPT Вам всё испортит. Читать очень трудно.
Добрый вечер! Да, сейчас уже видел работы Юрия Панчула, очень качественный материал. На тот момент, когда я начинал, я с ними знаком еще не был. Вообще этот курс задумывался как вспомогательный, на основе которого преподаватели уже могли выстроить свои занятия со студентами и обеспечить первичную подготовку кадров для нашего предприятия. При этом никто не мешает использовать и работы Юрия. Здесь я просто решил поделиться своими наработками, вдруг кому-то пригодится. Но дело и правда не простое, а я обычный инженер - делаю что могу. Надеюсь, что во вред никому не пойдет.
Но если, например, Ядро захочет организовать свою лабораторию на физфаке ЮФУ, думаю, никто против не будет😁. Но пока они туда не добрались.
Мне кажется у Вас слишком большая программа, чтобы запихать её в 2 часа в неделю даже на 2 семестра. Потом, многие практические вещи типа имплементации различных контроллеров, элементов ЦОС и теде можно вынести в индивидуальную подготовку типа практикума или курсовиков или диплома, это сократит аудиторную программу и сохранит охват. Требуется огромная методическая работа и инфраструктура. Поизучайте, например, учебные программы по этой тематике зарубежных университетов, я не встречал там таких объёмов в рамках одного курса. К примеру драйверы PCI и КИХ фильтры изучаются разными людьми.
Ну и последнее - каков предполагаемый уровень зарплаты молодого специалиста, успешно освоившего такой курс и готового сразу начать что то разрабатывать?)
Ну здесь основная идея в том, чтобы познакомить студентов с существующими понятиями. Естественно, никто не будет их просить разработать за неделю собственный pci контроллер, однако, если они будут знать хотя бы в общих чертах, что такое pci, что существуют готовые корки, как их настроить, что с другой стороны есть драйвер и как он примерно работает - это будет неплохо. Но в любом случае это пока только идея. По поводу непосредственно учебной программы, я бы оставил ее формирование в руках преподавателя. Мои материалы - это скорее то, что можно использовать для подготовки учебной программы и одновременно дополнительное чтение для студентов. Ну и зарплата - по своему опыту мог бы сказать, что молодого специалиста ожидает небольшая, однако, здесь уже многое зависит от самого специалиста, его способностей и удачи в конце концов.
Это больше похоже на программу подготовки, а не отдельного курса. Раньше была такая форма обучения как ЦИПС -целевая интенсивная подготовка студентов, когда предприятия забирали себе по группе с потока какой то специальности и готовили по своей программе на будущем рабочем месте. Научный коммунизм и охрана труда всё равно, конечно, сохранялись, но курсы по выбору ВУЗа заменялись более актуальными. То, что описано, подходит больше для такой формы обучения, имхо
По поводу Microblaze и софта под него. Начиная с версии Vivado 2024.1 Xilinx предлагает версию Microblaze V, построенный на базе архитектуры RISC-V. А Xilinx SDK уже устарела, сейчас это называется Vitis. Но с последней версией, построенной уже не на эклипсе (вроде как) и использующей питоновские скрипты, у меня возникли проблемы с созданием платформы и даже при попытке портирования уже созданного проекта в классическом Vitis. Поэтому пока что использую классический Vitis. Ещё как дополнение к статье можно рассказать про HLS для создания и симуляции модулей на языке C++. В разделе симуляции проектов я бы добавил Modelsim или Questasim, как наиболее популярные симуляторы под Windows. Вроде пока всё.
Спасибо за дополнения, с последними версиями пока не работал, если доберусь до тех глав, буду изучать.
Добрый день! Этот курс в разработке и будет периодически выходить ?
Введение в ПЛИС: Содержание курса