Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Многоканальный ШИМ
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
uragan90
Здавствуйте Уважаемые!!!
Помогите выбрать правельный подход для реализации шим процессора на ПЛИС.
Я хочу связать avr и плис по spi для того чтоб управлять десятком "РГБ" светодиодов, но у меня не хватает ресурсов плис, а именно epm540 может есть какое нибудь экономичное решение данной проблемы???
Я делаю так:
В плис создал сдвиговой регистр по принципу 74hc595 150bit в него гружу код всех 30 каналов шима, по 5 на канал цвета, счётчик 12bit (шим 12 бит) и 30 компараторов которые из регистра выделяют шим на каждый канал цвета (всего 30 каналов).
Всё это кушает огромное кол-во LE.
Вопрос:
Каким образом снизить количество лэ для подобного дела???
EvgenyNik
Цитата(uragan90 @ Sep 18 2013, 09:30) *
чтоб управлять десятком "РГБ" светодиодов, но у меня не хватает ресурсов плис, а именно epm540 может есть какое нибудь экономичное решение данной проблемы???
Специальные драйверы для светодиодов (походите там по сайту, есть и другие драйверы с другим количеством каналов).
Всё-таки, 3*10 светодиодов это приличный суммарный ток для ПЛИСки, не говоря уже про нецелесообразность её применения.
upd: ссылку подправил
uragan90
Ооо! Спасибо!!!
Действительно то что нужно :-)
uragan90
Это конечно всё здорово драйверы и прочее, но я уже заразился интересом реализации такого драйвера на плис попробую сам заделать.
Структуру драйвера глянул в даташите, осталось по структурной схеме драйвера сбацать свой :-)
EvgenyNik
Рабочие напряжение и ток синего светодиода посмотрели? EPMка позволяет выйти на уровень вменяемого свечения?
"Счётчики" и "компараторы" - это да, классика жанра. Но более экономично по структуре и равномернее в плане мерцания свечения будет следующая реализация ШИМа:
Код
module Modulator(in, clk, out);
parameter WIDTH = 9;
input[WIDTH-1:0] in;
input clk;
output out;

reg[WIDTH:0] acc = 0;
assign out = acc[WIDTH];

always @(posedge clk) acc <= acc + in + out - (out << WIDTH);

endmodule

Повзаимствовал её откуда-то отсюда с электроникса же, но уже не помню откуда именно.
uragan90
Да! Я в курсе "ерм" не суть важно по токовым режимам, можно задействовать несколько ног на один канал если можно :-)
Да и не в этом дело, можно ULN2003 поставить для уверенности, самое главное шим реализовать или как вы предложили сигма-дельта модулятор но он жрёт больше ресурсов чем шим!!!
Сумматор в нём сложнее устроен чем компаратор

Я просто не соображу можно ли сделать многоканальный шим на одном только модуле шима, раскидывая его по каналам с помощью например счётчика и демультиплексора?
Или нужно шимить все каналы своим модулем шима?
iosifk
Цитата(uragan90 @ Sep 18 2013, 17:45) *
Я просто не соображу можно ли сделать многоканальный шим на одном только модуле шима, раскидывая его по каналам с помощью например счётчика и демультиплексора?
Или нужно шимить все каналы своим модулем шима?


В принципе можно. У меня на сайте найдите "Краткий Курс", глава о многопоточности...
Выглядеть будет так:
Кольцевой регистр 30 раз по 12 разрядов (или память) в котором хранятся пороги сравнения, еще один такой-же + к нему аккумулятор для инкремента значений, 1 схема сравнения, 12 RS триггеров и немного управления...
Кольцо переписываете по кругу, 1 регистр сравниваете и выход сравнения записываете в выходной триггер, соотв. номеру канала...
А схема управления по очереди взводит RS триггера.
uragan90
Цитата(iosifk @ Sep 18 2013, 17:55) *
В принципе можно. У меня на сайте найдите "Краткий Курс", глава о многопоточности...
Выглядеть будет так:
Кольцевой регистр 30 раз по 12 разрядов (или память) в котором хранятся пороги сравнения, еще один такой-же + к нему аккумулятор для инкремента значений, 1 схема сравнения, 12 RS триггеров и немного управления...
Кольцо переписываете по кругу, 1 регистр сравниваете и выход сравнения записываете в выходной триггер, соотв. номеру канала...
А схема управления по очереди взводит RS триггера.

Оооо!
Спасибо!!!
Надо попробовать, хоть какая то мысль интересная :-)
iosifk
Цитата(uragan90 @ Sep 18 2013, 18:01) *
Оооо!
Спасибо!!!
Надо попробовать, хоть какая то мысль интересная :-)


Читайте, там же все с картинками нарисовано... И с примерами...
uragan90
iosifk,
Спасибо огромное!!!
Я уже читал рание эти труды!
А тут вы напомнили и у меня родилась идея... Ща попробую написать на Veriloge 08.gif
нечитатель
Для 30 каналов достаточно просто AVR, если вместо "ШИМ" написать "MIBAM".
Corner
Реверсивный счетчик в помощь...
stu
все же порекомендую микруху типа MBI5030 c PWM
или http://www.ti.com/lsds/ti/power-management....page#p2192=PWM per Pin
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.