МК VS ПЛИС

Жуткое название получилось :) Шифровка.
Попробую теоретически показать преимущество ПЛИС над контроллером в задаче реализации классического генетического алгоритма. Генетические алгоритмы применяться в задачах поиска, когда необходимо для функции y=f(X), где X – вектор параметров по известному значению Y найти X. Можно конечно решить такую задачу методом перебора, но при помощи ГА решить такую задачу возможно быстрее. Будем считать, что мы строим на основе ГА какую то адаптивную систему, в которой необходимо в реальном масштабе времени реагировать на изменения X и быстро находить новые значения X. Например, в системах адаптивной фильтрации для поиска необходимых коэффициентов фильтра. Такая система будет очень требовательна к скорости нахождения коэффициентов.
Что из себя представляет ГА. Вся идея заключается в том что мы кодируем двоичными комбинациями все элементы вектора X, полученная комбинация называется хромосома, а потом при помощи нехитрых операций пытаемся найти наилучший подходящий нам вариант набора параметров вектора X. Насколько хорошо подходят значения вектора Х мы определяем при помощи заданной фитнесс функции, которая как раз зависит от решаемой задачи. Подставляя полученный вектор значений Х в функцию мы получаем определенное значение, которое характеризует приспособленность хромосомы. Рассмотрим приведенный алгоритм.

Из него видно, что для начала работы там надо генерировать случайным образом набор хромосом, т.е. создать популяцию. Дальше мы оцениваем меру приспособленности хромосом всей популяции, для того что бы выявить сильнейших, которые будут иметь в последствии больше шансов на участие в создании следующего поколения, если нашлась хромосома которая удовлетворяет условию остановки алгоритма, то можно поиск решения на этом закончить. Если решение не было обнаружено, то к популяции начинают применять генетические операторы. Их сутью является на основе родительской популяции создать более приспособленную популяцию, которая в свою очередь может дать еще более приспособленную популяцию и т.д. пока не будут выполнены условия останова. Родители для создания новой популяции выбираются при помощи различных методов селекции, которые выдерживают принцип — Чем больше приспособленность хромосомы, тем больше вероятность ее выбор в родительский пул. Основные операторы ГА это
  • Оператор скрещивания. На первом этапе скрещивания выбираются пары хромосом из родительской популяции (родительского пула). Пусть имеются две родительские особи с хромосомами X={x_i,i∈[0;L]} и Y={y_i,i∈[0;L]}. Случайным образом определяется точка внутри хромосомы (точка разрыва), в которой обе хромосомы делятся на две части и обмениваются ими, очевидно, что точка скрещивания, представляет собой натуральное число, меньшее L. Этот вариант скрещивания называется одноточечным.
  • Оператор мутации. Данный оператор необходим для «выбивания» популяции из локального экстремума и препятствует преждевременной сходимости. Это достигается за счет того, что с вероятностью рm изменяет значение гена в хромосоме на противоположное (т.е. с 0 на 1 или обратно).
Рассмотрим реализацию на примере этих простейших операторов.
В итоге, что нам придётся реализовать:
  • Генератор случайных чисел
  • Оператор селекции
  • Оператор скрещивания
  • Оператор Мутации
Сравним вероятные реализации на ПЛИС и микроконтроллере данных операторов. Пускай у нас будет популяция из 100 32-разрядных хромосом. В качестве контроллера берем RISC контроллер с тактовой частотой 200 Мгц.

Для генерации чисел на МК используем генератор М- последовательности по схеме Галуа

Каждый такт работы такого генератора состоит из следующих операций: сдвиг, проверка условия и переход или проверка условия и логическое исключающее сложение; оба варианта выполняются за 3 машинных цикла. Для генерации одной хромосомы необходимо выполнить количество тактов равное ее длине, т.е. для генерации хромосомы необходимо (3+1)*L машинных циклов, так как необходимо записывать в регистр значение сгенерированного бита. Для инициализации всей популяции, с учетом размещения особей в ОЗУ или ПЗУ, необходимо выполнить ((3+1)*L+2)*R машинных циклов.
Например, при размере популяции равном 100 и разрядности хромосомы равной 32, для инициализации начальной популяции потребуется ((3+1)*32+2)*100 = 13000 тактов, что при частоте тактовой частоте 200 MHz составит 65 мкс.
Результат неплохой, но не все МК обладают такими характеристиками. По – этому если у вас МК имеет меньшую тактовую частоту и меньшую разрядность, это время увеличится в разы, а то и в десятки.
Для реализации генератора на ПЛИС используем схему Фибоначчи

Немного модифицировав ее получим следующую схему.

Она позволяет получать одну хромосому за так, при этом как видно с точки зрения ресурсов ПЛИС такой генератор не сильно дорогой и можно запросто сделать 100 таких. Значит, при частоте работы такого генератора 100 МГц мы сможем сформировать целую популяцию за 10 нс. Чувствуете разницу?
Оператор селекции реализуем турнирным методом. Выбираем случайно 4 хромосомы из родительского пула, сравниваем их приспособленности и передаем в родительский пул, только одну из них. Это надо повторить 100 раз. Будем считать, что расчет приспособленности хромосом популяции уже был выполнен и эти значения, где то хранятся. Если не считать, что память контроллера для хранения хромосом довольно ограничена, то посчитаем время выполнения данной операции следующим образом. Считаем что операция чтения 2 такта, а операция сравнения 1 такт — 100*(4*2 + 3+2) – работаем по следующему алгоритму – выбор четырех хромосом, три раза сравнение и одна запись лучшей хромосомы. В итоге при частоте 200 Мгц получим 6.5 мкс. Результат неплохой, но алгоритм весьма утрированный.
Для ПЛИС возьмем следующую схему

Для экономии ресурсов, будем передавать не сами хромосомы, а их номера в популяции, да и везде будет легче работать с их адресами, а сами хромосомы переписывать только там, где это требуется. Как видно здесь три уровня логики, которые будут иметь незначительную задержку порядка тех же 10 нс, если сделать схему синхронной до добавится набольшие задержки до и после прихода синхросигнала. Единственная проблема, в том что вытаскивать случайным образом хромосомы из популяции, при реализации на ПЛИС не выгодно, так как потребуется огромной ресурс в виде большого количества мультиплексоров мультиплексоров для выбора любой хромосомы из популяции. На представленную схему так же потребуется не особо большой ресурс и будет зависеть от разрядности значения приспособленности, где то по одному LUT на разряд для каждого компаратора. Основной расход ресурсов будет на схему выбора хромосомы для проведения турнира. Но это тоже не беда можно будет реализовать параллельный выбор всего родительского пула. Т.е. выполнение будет около 10 нс. Намного лучше чем у контроллера.
Со скрещиванием все просто.
Операцию скрещивания в микроконтроллере выполняется с использованием маски и сводится к последовательному выполнению логических операций: извлечение двух родительских хромосом из ОЗУ (4 машинных цикла), маскирование каждой хромосомы по 2 раза (4 машинных цикла), логическое сложение двух маскированных хромосом по 2 раза (2 машинных цикла), запись двух хромосом в ОЗУ (4 машинных цикла).

При размере популяции равном 100, для получения всех потомков потребуется (4+4+2+4)*50 = 700 тактов, что при частоте тактовой частоте 200 MHz составит 3.5 мкс.
На ПЛИС такую операцию можно выполнить, например по такой схеме.

Как видно здесь два каскада логики, что даст задержку так же порядка 10 нс. Затраты ресурсов будут приходиться на компараторы, разрядность которых зависит от длины хромосомы. Для старших микросхем семейства Spartan 6 такие затраты будут весьма скромными, по этому существует так же возможность обработать все пары параллельно, что даст нам время выполнения операции в 10 нс.
Оператор мутации на МК и ПЛИС можно совместить со скрещиванием, думаю тут особо расписывать нечего.
А теперь посчитайте, сколько потребуется времени для поиска решения, для нахождения решения требуется порядка 50-100 итераций алгоритма.
Тут ПЛИС выходит вперед, а если мы еще допустим организацию конвейера на ПЛИС, сможем вообще пустить несколько поколений в обработку параллельно.
В результате исследования видно преимущество ПЛИС в данной задаче. При это гибкость перестройки всех параметров работы алгоритма(например разрядностей) в ПЛИС будет куда проще, чем переделывание программы для МК.
Вопрос цены, ну пускай плис стоит в 100 раз дороже МК. Но как видно из примера, если вы захотите такую же скорость работы как на ПЛИС, вам потребуются 100 МК плюс титанические усилия по разводке платы, если вообще возможно будет ее сделать.
Надеюсь мне удалось показать, что все таки ПЛИС в некоторых задачах выигрывает МК.
  • +6
  • 13 января 2012, 11:12
  • opolo84

Комментарии (90)

RSS свернуть / развернуть
комментарий был удален
Пост из серии что лучше — автомобиль или пароход.
+2
Как раз наоборот пытался показать, что прост так сравнивать нельзя, нужна задача. Все зависит от задачи.
0
раскрыть комментарий
-13
раскрыть комментарий
-10
ох ты ж…
оказывается, есть алгоритмы, которые можно распараллелить
+1
По-моему как раз сейчас становятся актуально алгоритмы параллельных вычислений, так как везде вводиться многопроцессорность, вот тут как раз ПЛИС может увеличить свою популярность.
0
Более того есть куча алгоритмов, которые работают на плис намного быстрее, но распространены программно. К примеру помните картинку подсчета CRC для 1-wire dallas. А ведь ее можно прямо практически не переделывая засунуть в ПЛИС, и она будет ее обрабатывать, в то время как МК требует в несколько раз больше тактов для его подсчета.(Надо заметить, что вроде многие современные процессоры имеют тоже аппаратную поддержку CRC)
0
opolo84
это был тонкий стёбнамёк на нечестность сравнения: можно подобрать алгоритмы, на которых gpcpu выиграют, хотя бы итерационные алгоритмы за счёт частоты
Signaller
таки Вы, видимо, не сопрягали плис и «расчётчика»
0
За выигрыш за счет частоты будем оплачивать энергопотреблением.
0
Пример хорош, но в тоже время сложноват, это с одной стороны. С другой стороны, любой пример может быть для кого-то сложноват. А так за статью однозначно +1.
Она позволяет получать одну хромосому за так,
может в конце имелось ввиду за такт?
0
вообще хорошо бы получать за так, к сожалению не получается :(
0
Кул. Только можно пример из жизни, где простому смертному пригодится алгоритм такого типа?
0
  • avatar
  • _YS_
  • 13 января 2012, 12:15
Да много где, в робототехнике например, обучение нейронных сетей и т.д. Кстати сейчас при помощи ГА пытаются писать оптимальные программы. Там в качестве генов выступают куски кода. Правда это уже не ПЛИС :)
0
Кстати вот еще пример применения.
0
Отличная статья получилась спасибо!

Единственное, я бы изменил название — оно вводит в заблуждение прочтя его подумал что тема действительно «что лучше машины или пароходы»

На мой взгляд хорошая аналогия МК VS ПЛИС — серийный автомобиль VS спроектированный и собранный под определенную задачу.
0
К сожалению не могу уже ничего отредактировать. Если пофантазировать, то можно так например сравнить. Вот есть метро, когда все ждут когда придет поезд, а есть индивидуальное такси вот такое
0
очепятка
большого количества мультиплексоров мультиплексоров для выбора любой хромосомы из популяции. На представленную схему


я правильно понял, что выходное значение мы получаем из набора случайных последовательностей путем выбора наилучших значений и последующим «скрещиванием» лучших с лучшими?
0
Да, но всегда существует вероятность попадания плохих хромосом, для того что бы разнообразить генофонд, иначе алгоритм будет сходиться к локальному экстремуму(решению), а не к глобальному.
0
Такое впечатление, что статью написал теоретик.
Расчеты теоретические, не указана конкретика. Для генерации случайных чисел используются разные алгоритмы.
Также не приведен пример решения задачи без генетических алгоритмов. Т.е. не с чем сравнивать.
0
  • avatar
  • a9d
  • 13 января 2012, 14:34
это из разряда «оптимизация поджига газоразрядной лампы высокого давления с помощью нечёткой логики»
0
Значит мне надо было написать 60 страничный всеобъемлющий пост, который бы никто не стал читать. Почему разные генераторы, можно посмотреть здесь. А цель поста была показать область применения ПЛИС, а не сравнивать решения с ГА и без, для этого книги по оптимизации и теории алгоритмов есть.
0
Автор, зачем ты наркоман?
Сравнили х*й с зенитной установкой!
Яркий пример, когда писать нечего, но очень хочется и начинаются бессмысленные посты. Вместо пафоса «смотрите, мк sosnooly у плис» можно было бы просто написать «есть такая задача, генетические алгоритмы. Можно решить с помощью ПЛИС», с конкретными примерами. А тут так… С таким же успехом можно написать, что БПФ намного эффективнее делается на ПЛИС, привести умные формулы, картинки, и на этом всё. Ни конкретной реализации, ни кода, ни чего другого
-1
Вообще странная реакция. Я просто пытался показать вариант задачи подходящей для решения для ПЛИС, чем на МК, так как в сообществе с этим проблема. Ни в коем случае я не пытался выставить ПЛИС круче МК, я дал пример задачи, с которой ПЛИС справиться лучше. Проектировать можно «сверху вниз» и «снизу вверх» это простой пример первого проектирования, есть задача, подбираем под нее функциональные элементы.
0
Не обращай внимания, это микроконтроллерщики бузят!:) Статья на самом деле классная!!!
0
Я? Микроконтроллерщик? Парень, вы ой как ошибаешься…
-1
:))))) Можно на ты, а то мне как филологу весело:))) А мне статья вполне понравилась! Подчерпнул много нового и интересного! А остальное неважно!:)
+1
Просто статья о том, о сём, а в общем — ни о чем.
Так, общий треп на тему.
0
Вопрос в том, кому она адресована, статья-то.
Профессионалам? Пфф, они и так знают, где лучше МК применить, а где без ПЛИСины не обойтись. Новичкам? Ну для них статья вообще смысла не имеет. Ну да, прочитал он эту статью. Познал могущество ПЛИС. А дальше что? Он сможет что-нить сделать, имея на руках демоборду с ПЛИС?
0
Интересно, если вам задали разработать устройство, для решения конкретной задачи, вы сразу поймете, что лучше для нее использовать или нет? ГА реализуют и на контроллерах AVR, не факт что надо использовать ПЛИС, все зависит от задачи. Ограниченно мыслите однако.
0
Ну да, прочитал он эту статью. Познал могущество ПЛИС. А дальше что? Он сможет что-нить сделать, имея на руках демоборду с ПЛИС?
ну так, ведь тег «ПЛИС» прописан. жмем, и видим четыре страницы тем. там и для старта достаточно, и про демоборду, и про марсоход… так что, если начинающий впечатлится, не отходя от кассы можно почитать для старта…
0
ГА это почти и есть перебор, значимое отличие это операция скрещивания, от её выбора может многое меняться. Алгоритм из категории `поодходит для всего но очень дорог, используем когда не найден способ лучше`. Хотя во многих случаях действительно лучше ничего нет. Но, что действительно уже дошло до использования его в реальном времени?
0
На ПЛИС его давно уже делают, только там реализовывают вероятностный ГА, он быстрее работает. Вот пример. Интересный кстати.
0
Вот еще, если интересно конечно.
0
Да на самом деле полно задач, в которых ПЛИС выигрывает у МК. И вообще, все что параллелится, неплохо делать на ПЛИС.
Так что микроконтроллерщики, прочитайте статью прежде чем возмущаться :)

А связка ПЛИС+МК вообще убойная.
Правда я лично считаю что вшивать в МК в ПЛИС как некоторые любят делать — это уже перебор и неоправданная трата вентилей/рублей, лучше поставить МК отдельно.
+1
Только в большинстве задач любителей можно обойтись и МК, а он дешевле. Поэтому в сторону ПЛИС они обычно смотрят когда МК уже недостаточно. А так, конечно, ПЛИС штука отличная.
+1
Естественно, применение ПЛИС в любительских задачах — это маньячество :)
Все же дорогое это удовольствие.
Да и никто не утверждал, что «ПЛИС круче МК», это разные инструменты, которые хороши каждый для своих задач.
0
Плох тот солдат, что не мечтает стать генералом. Профессионалы из любителей вырастают гораздо более крутые, чем из тех, кого папа в универ хороший устроил. Поэтому это не маньячество, а изучение конкретного решения. Решил задачу (не важно на чем, ПЛИС или МК), получил удовольствие — возьми с полки пирожок :)
0
Нет, ну сейчас отладочные платы под недорогие ПЛИСины уже более-менее доступны. Поиграться можно.
Однако в оконечное устройство их пихать без надобности не имеет смысла. Им ведь и питание особое нужно, и флешка (ну или мк).
0
Это понятно, что всему свое время и место, но любительская братия далека от оконечных устройств, большинство начинаний заканчивается на стадии хорошо собранной платы, до корпуса дело не доходит. Или я не прав :)? Вопрос в изучении, а оно явно не лишнее.
0
Ага, только вот с ПЛИСами, по крайней мере хорошими, «на коленке» уже не поиграешься :) Что касается изучения — только на отладочной плате.
0
третий циклон достаточно «хорошая плис»? есть многокиловентильные и в QFP корпусе. вполне доступно для изготовления лутом или фр.
0
Интересная идея, это менять прошивку ПЛИС на лету при помощи внешнего МК.
0
Зачем? Некоторые ПЛИС сами умеют реконфигурироваться частями без остановки.
0
Это какие же? конкретные модели? давно хотелось с ними поиграться:)
0
Ну я бы сказал что все современные активные ветки главных производителей это умеюь. Например это умеют XILINX SPARTAN3 и ALTERA CYCLON III — это вобщем то нейнизшие из активных линеек. Достать кит для них стоит до $100 — $200. Есть у них корпуса которые можно паять дома. И сами чипы стоят не дорого.
0
Теперь дело за алгоритмами :) Что бы использовать данное преимущество.
0
Присоединяюсь! Огромный потенциал для творчества!:)
0
Жаль только не видно `хороших` плис, которые как МК документированны в такой степени, чтобы было можно в hex редакторе прошику создавать.
0
А такого и не будет. Многие альтеровские «корки» (тот же их процессор Nios) закрыты и вообще платные. Даже включив их в свой проект Вы не увидите их структуру.
Если я конечно тут не наврал.
0
А зачем вам это? Вы думаете что у вас получится самому правильно нарутить десятки тысячь ячеек вручную? Вобщем то в древние времена для CPLD так и делали. были такие бумажные шаблоны на которых вручную ставили точки на пересечении линий и потом переводили в фаил для програмирования. Но там было по ОДНОМУ ЭЛЕМЕНТУ НА КРПУС!!! В некоторых случаях бывало и по 4 или по 8 елементов :)
0
А зачем знать набор инструкций МК и их коды, интерфейсы и протоколы прошивания? `Вы думаете что у вас получится самому правильно нарутить` мегабайт hex кодов и загнать их в МК отбивая каждый бит на клавишах?
0
А зачем в начале заморачиваться со случайной генерацией популяции? Просто постоянно брать одну и ту же, все равно она мутирует, так быстрее будет.
А еще мне кажется, что данный способ будет работать только для медленно изменяющихся относительно работы устройства систем.
0
Не быстрее — проще.
0
Если возьмем случайно, больше вероятность найти глобальный минимум и быстрее при этом. В том то и дело, что если повысить скорость выполнения алгоритма, то можно и для быстродействующих систем применить.
0
Во-первых, как я понимаю, это делается только один раз при пуске системы. Потом этот алгоритм даже для мутации не используется(или я невнимательно читал?)
Во-вторых, тогда, для увеличения вероятности, надо брать не случайно, а высчитывать по алгоритму какому-нибудь для наибольшей вероятности требуемых параметров. Желательно, с учетом предыдущего опыта. Если без учета опыта, то случайно в пределах максимума вероятности.
По поводу быстродействия, мне кажется, что когда требуется высокое быстродействие систем, то пока все же быстрее будут работать «параллельные» системы, чем адаптивные.
0
Да генерация поколения используется только раз, но генератор необходим для генерации случайных значений точек скрещивания и мутации. Если используют селекцию методом рулетки то и там он нужен, в общем очень необходимая вещь. Есть разные методы генерации популяции, самый простой, метод одеяла, когда любая комбинация равновероятна и все генерируемые особи перекрывают всю область возможных Х. То что вы предлагаете, называется метод дробовика или фокусировки( не знаю кто придумал такие странные названия), когда особи генерируются в определенной области значений Х. Где то у меня была статья, на тему сравнения разных методов генерации популяции, но щас не могу найти.
По поводу быстродействия, мне кажется, что когда требуется высокое быстродействие систем, то пока все же быстрее будут работать «параллельные» системы, чем адаптивные.
Здесь вы что то перепутали в понятиях.
0
А по-моему весь сайт обо все и ниочем :) (не бейте ногами)
хотите реальную задачу? их есть у меня!
инвертор, точнее частотный преобразователь именуемый в народе как «частотник».
схем частотников на базе жесткой логики и МК — пруд пруди, а между тем, ПЛИС как раз подходит для этой цели как нельзя лучше! примитивный однофазной частотник можно конечно реализовать на МК, это довольно просто, минимум обвязки, для этого подойдет даже attiny13, а вот 3х фазный с ШИМ регулировкой напряжения внутри одного периода выходного напряжения вот как раз тот случай когда овчинка стоит выделки и при сравнении по стоимости и по затратам на разработку и производство самый что ни нинаесть лучший пример! в качестве основы предлагаю XC9572XL его цена ~80-100руб за штуку в розницу, доступен, компактен и очень подходит для небольших разработок/хобби…
ну что возьметесь? али слабо?
-1
примитивный однофазной частотник можно конечно реализовать на МК… а вот 3х фазный с ШИМ регулировкой напряжения внутри одного периода выходного напряжения
Стесняюсь спросить, а в чём проблемы сделать 3-фазный ШИМ частотник на мк? Ну пусть не на тини13, но средней руки 8битника за $1-2 с головой для этой задачи хватит. Да и кэп тут по случаю сообщает, что ST в этом направлении усилено тужилось и как ни странно разродилось на готовое решение, которое можно взять за основу, что бы не придумывать очередной лисапед с нуля.
0
XC9572XL?
Товарисчь, вы часом не перепили? какой 3х фазный частотник у вас туда нихрена не влезет. А ОС вы как реализуете на CPLD? как раз на примитивный 1 фазный ресурсов этой хрени только и хватит, не более… И то это будет настолько убого…

Если и делать то не ниже 3 спартанца, каконить 3S50AN

А вообще на мк в этой теме вне конкуренции. Намного проще отлаживать, проще схема, на борту есть АЦП и т.д.

А вообще, какой частотник? если гтовый, заводского изготовления со всеми регуляторами, ОС и т.п. можно купить дешевле 4тр… вот именно, что овчинка не стоит!
+1
слетелось воронье и накинулось с криками «наших бьют» :)
я не перепил. и заметьте я не предлагаю сравнивать паровоз и пароход, а точнее самолет и вертолет, а если еще точнее грузовой самолет и вертолет-пожарник и не доказываю, что одно лучше/круче другого. напротив я прекрасно понимаю, чем одни отличаются от других. я предлагаю автору статьи на конкретном примере показать как можно сделать проект XC9572XL и какие будут преимущества перед МК (а они будут, я вас уверяю). пример будет довольно простой и понятный для начинающего.
что касается ШИМ и его реализации на МК, это конечно не проблема, но дьявол, как известно кроется в деталях, поэтому если рассматривать примитивный 1фазный частотник — гавно вопрос, можно сделать конечно элементарно.
что потребуется для этого:
управление ключами полумоста (2 независимых выхода МК = 2ШИМ, работающих на одной частоте, сдвинутые по фазе на 180) + гарантированное обеспечение deat-time
это как минимум для 1канала (примитив). т.е. attiny13 с этим справился и с успехом заменит с десяток деталей (слева по схеме от ключей VT1,VT2) на схеме radiokot.ru/circuit/power/converter/14/
при этом частота ШИМ = частоте вых напряжения

теперь, чтобы обеспечить более плавное управление нагрузкой для одной фазы необходимо изменять скважность в рамках 1 периода вых напряжения (предположим =50Гц) согласно теории www.artesk.ru/invertor_shema.html (рис 8), следовательно частота ШИМ сильно больше (минимум на порядок) частоты вых напряжения. При этом скважность каждого канала (а их у нас пока 2) необходимо изменять практически каждый период (что само по себе уже не одновременно и может вызывать различные косяки) при этом МК будет работать исключительно на формирование сигналов, их подстройку и т.п.

теперь чтобы реализовать 3х фазный частотник умножте все перечисленое на 3 и посмотрите что у вас получится?! если речь идет о примитивном устройстве типа ago.kulichki.com/index/radio/radio-15.htm
минимум 3 канала ШИМ, а вообще-то говоря не плохо было бы 6каналов…
да можно еще задействовать ОС (видимо для контроля тока!?) в общем гимор еще тот.
ну не суть, допустим это все сделано допустим работает, только лучше ли оно того же решения на ПЛИС?

и что же мы в итоге имеем? задача не стоит создать супер-пупер частотник, на коленке и за копейки, который порвет любой профессиональный и навороченный стоимостью несоклько килобаксов, задача состоит в другом на простом и главное полезном и конкретном примере показать начинающим как можно эффективно использовать плис.

что же вы не говорите какая плисина потребуется для впихивания ГА? :))
0
для впихивания ГА? :))

ГА?
XC9572XL и какие будут преимущества перед МК (а они будут, я вас уверяю)
Назовите хоть 1 преимущество? (джаст фо фан не предлагать)

Не нужно мне впаривать теорию, и размещать ссылки на радиокота (это даже частотником трудно назвать). Проснитесь, есть мк специально заточенные под управление двигателями, те же dsPIC например, там уже аппаратно весь ваш текст с теорией реализован! И стоит этот мк соизмеримо с вашей CPLD-шкой

теперь, чтобы обеспечить более плавное управление нагрузкой для одной фазы необходимо изменять скважность в рамках 1 периода вых напряжения (предположим =50Гц) согласно теории

Вообще есть 3 закона регулирования напряжения совместно с частотой, это U/f = const, U/корень f = const, U/f^2 = const. При этом ШИМ не обязательно менять так чтобы ток был синусоидальный, такой метод применяют снижения потерь в двигателе за счет снижения кол-ва гармоник и снижение биения момента, но как раз для любителей это не особо и важно!

Не вижу никаких преимуществ ПЛИС в этой теме! Вы сами хоть работали с ISE? а плисину которую вы предлагаете, это не только не серьезно — это смешно :) Хотя если вы любитель садамазы, тогда без комментариев…
0
представьте себе работал и с исе и много с чем еще, и про VHDL знаю не по наслышке
вот только мне не понятен ваш смех про плисину или вы привыкли использовать тяжелую артиллерию там где мелкокалиберный пистолет справится!?
0
Не силен в этой теме, надо время тратить разбираться, а его нет. Если вы в теме, напишите статью, интересно будет.
0
не в теме про что? про частотники?
ну тогда по-проще, по-легче и по-бесполезнее UART. конечно не 2х проводный, а полноценный с сигналами готовности, прерываниями, буферизацией. можно до кучи еще регисторов настройки добавить: скорость, четность…
это уж каждый школьник знает в отличие от «ГА» и разбираться в теме не надо все просто и начинающему тоже будет понят
0
Я чета не понял, курсак горит? Вам же понятно объяснили, что рациональнее сделать на МК. И даже ткнули носом в готовое решение от ST. Зачем делать никому не нужное устройство, да еще таким извращенским способом? Только курсак приходит на ум.
0
какой курсак в январе месяце?
0
почему никому не нужное? люди интересуются, вон только сколько я ссылок привел, люди схемы ищут, промышленные образцы выпускаются… а вы говорите никому не нужное устройство. ну да конечно ГА каждый смертный по 10 раз на дню создают, и причем преимущественно на МК!
вы наверное удивитесь на сколько просто и гармонично устройство реализуется на плис
0
вы наверное удивитесь на сколько просто и гармонично устройство реализуется на плис
В таком случае, почему бы тебе вместо троллинга не накатать статью об этом?
+2
Если хочется подкачать скиллы на ПЛИС лучше найти какую-то другую тему, чем частотник. Получится несколько неуклюжее устройство, тк прийдется городить внешние АЦП или компараторы для организации ОС. Частотник хорошо «ложится» в МК с развитой аналоговой периферией.
0
Трех- (и более) канальные таймеры, в том числе с аппаратной поддержкой dead time и прочими заточками для управления движками — давно стандартная фича во многих МК. Думаю, вместо того, что бы пытаться «прикидывать на пальцах» стоит почитать даташиты и аппноты на эти МК. Не вредно так же глянуть на ценник. Скажем, даже самые дешевые STM32F100, стартующие с ~полутора баксов за штуку штатно имеют вот такую штуку:
— 16-bit, 6-channel advanced-control timer: up to 6 channels for PWM output, dead time generation and emergency stop
Как не сложно догадаться это как раз такой специальный таймер для управления двигателем. В более толстых чипах таких таймеров не один.

Я ничего не имею против ПЛИС, но выбранная для сравнения задача явно не одна из тех, где преимущество ПЛИС бесспорно.
0
16 бит однако довольно много, не слишком ли медленный ШИМ получается? Или их мона юзать в 8-битном режиме?
Алсо, есть еще и специально заточенные под задачи управления моторами МК. Скажем, тот люминари, который TI в MOTORCOMBO рассылала.
P.S. А моделистские ESC — это ведь и есть частотник?
0
А моделистские ESC — это ведь и есть частотник?

Ага, а БКДПТ — это по сути синхронный двигатель… только управляют им так, что он ведет себя как двигатель ПТ на участках не близких к нулевой скорости…
0
Ну, так можно любым синхронником управлять. В принципе, ДПТ — тот же синхронник со встроенным генератором.
0
ДПТ это все же не синхронник, СД по определению имеет совершенно жесткую характеристику по оборотам (в статическом режиме конечно), единственная проблема это вываливание из синхронизма при набросе нагрузки. Поэтому проще БКДПТ превратить в ДПТ чем работать с ним в режиме СД.
0
СД по определению имеет совершенно жесткую характеристику по оборотам
Ну это только потому, что он питается фиксированной частотой. Коллекторник же генерирует ее себе сам и частота зависит от нагрузки на валу и всего такого. А в остальном это именно синхронная машина, только постоянные магниты перенесены на статор, а формирующие вращающееся поле — на ротор. ESC'и тоже могут рулить BLDC в режиме фиксированных оборотов (там это называется «функция говернера» и типично для вертолетных есок), просто для большинства задач моделистов больше подходит имитация ДПТ с его адаптацией оборотов под нагрузку.
0
Ну это да, коллектор — тот же инвертор… Однако машина все же имеющая коллектор уже не синхронная :)

Для вертолетных есок двигатель так же работает в режиме ДПТ только с обратной связью. Не видел ни 1 конструкции кто бы отважился запустить БКДПТ в режиме СД, и хоть как то с ним работать… Работать то оно работает но при нагрузке успешно вываливается из синхронизма, что приводит к красивому изгоранию транзисторов… Если БКТПТ выпускали и позиционировали как СД и писали все их хар-ки и максимальный момент то можно было бы их юзать в режиме СД, однако там есть тоже свои заморочки да и посути это не нужно. СД вообще есть смысл регулировать начиная от мегавата :)
0
Однако машина все же имеющая коллектор уже не синхронная :)
Но все же ее можно рассматривать как синхронную со встроенным автогенерирующим инвертором.
Работать то оно работает но при нагрузке успешно вываливается из синхронизма, что приводит к красивому изгоранию транзисторов…
Гм, ну да, за синхронизмом оно наверное все же следит… Но с другой стороны, как стабилизировать обороты движка, кроме как зафиксировав частоту, которой он запитывается?
Ну и вроде физически между синхронником и бесколлекторником разницы почти нет. AFAIK только некоторая разница в форме магнитопровода, приводящая к тому, что для BLDC оптимальная форма питающего тока трапециеидальная, а для PMSM — синусоидальная.
0
Слежение за синхронизмом тут получается автоматически, т.к. в регуляторах прослушивается обратня ЭДС или же если есть по датчикам холла положение ротора. Но хар-ка в этом случае получается всеравно мягкая, но дергая частоту и напряжение регулятором скорости туда сюда поддерживают обороты на 1 уровне, откуда харка- опять получается жесткая. :) такие вот дела…
Хотя сам двигатель может работать с жестокой каркой до определенного предела, но это СД а не БКДПТ :) Двигатель 1 и тот же но работа немного разная.
0
По поводу оптимальной формы тока тут хз, возможно и есть какая то оптимальная форма, однако оптимальная для чего? синус оптимален всегда, по гармоникам, а как следствие и по нагреву, потерям и по отсутствию биения момента…
0
Я не помню. Это связано с формой сердечника. ЕМНИП у PMSM биения момента отсутствуют на синусе, а у BLDC на трапеции. Ну и если их крутить за вал, то форма EMF будет аналогичная — трапециеидальная у BLDC и синусоидальная у PMSM. Кстати, коллекторники в режиме генератора выдают как раз трапецию, только выпрямленную.
Но суть работы у них все же одинаковая. А вот у реактивных (а хотя… согласно вики, они тоже синхронные, да и в принципе по определению оттуда синхронная машина — это где ротор вращается синхронно с полем, коллекторник тоже по сути туда попадает) и асинхронных суть работы несколько иная.
0
Если что-то крутить за вал, трапеция никак не получится :)
0
Ну, вроде тот сигнал, который я получал от коллекторника и правда не трапецией называется. Но и не синус. Похож на меандр, только с нарастанием фронтов (и спадов) порядка 10-20% периода.
0
я имел ввиду бесщеточные двигатели…
0
Ответил выше. Результат с коллекторником повторить не удалось. Опробованные выдают постоянку практически без провалов и пульсаций.
0
Алсо, снял BEMF с моделистского BLDC и синхронника от винта. Видно, что у BLDC не совсем синус, верхушки завалены — в некотором роде, можно считать эту форму сигнала некоторым приближением к от синуса к «трапеции». А вот у синхронника — чистый синус.


P.S. А заодно это еще один случай, когда Nano DSO уверенно порвал превосходящие параметрами осциллографической части осциллографы вроде HPS140 за счет своего удобства и функциональности.
0
я бы не назвал это трапецией, если бы была плоская вершина то да… а так это близко к синусу, содержание гармоник я думаю не более 5-10%…
китайские БКДПТ не страдают обычно высоким качеством сборки… зачастую магниты криво наклеены на аутраннерах, так что мб всякая кривость и на выходе…
0
Вершина как раз и подрезана, плюс фронты круче, чем у синуса. Хотя конечно, совсем чуть-чуть приближение, только по сравнению со второй картинкой. Причем оно стабильно такую картинку выдает, так что не в кривости дело.
Я где-то читал, что это оптимизация под питание прямоугольным напряжением.
А вот движок от винта по видимому оптимизирован под максимально ровное вращение, потому и дает такой чистый синус.
0
У каждого канала отдельно грузится верхний предел и скважность. Так что их можно в каком угодно режиме использовать, от 2 до 16 бит.
0
а готовое решение зачем предлагаете?
так для сравнения между самодельным частотником на МК и частотником на ПЛИС это конечно интересно, не более.
понятно, что практически все кустарное по себестоимости дороже покупного (если считать человеко-часы потраченные на разработку и изготовление)
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.