Перейти к содержанию
    

Многоканальный ШИМ

Здавствуйте Уважаемые!!!

Помогите выбрать правельный подход для реализации шим процессора на ПЛИС.

Я хочу связать avr и плис по spi для того чтоб управлять десятком "РГБ" светодиодов, но у меня не хватает ресурсов плис, а именно epm540 может есть какое нибудь экономичное решение данной проблемы???

Я делаю так:

В плис создал сдвиговой регистр по принципу 74hc595 150bit в него гружу код всех 30 каналов шима, по 5 на канал цвета, счётчик 12bit (шим 12 бит) и 30 компараторов которые из регистра выделяют шим на каждый канал цвета (всего 30 каналов).

Всё это кушает огромное кол-во LE.

Вопрос:

Каким образом снизить количество лэ для подобного дела???

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

чтоб управлять десятком "РГБ" светодиодов, но у меня не хватает ресурсов плис, а именно epm540 может есть какое нибудь экономичное решение данной проблемы???
Специальные драйверы для светодиодов (походите там по сайту, есть и другие драйверы с другим количеством каналов).

Всё-таки, 3*10 светодиодов это приличный суммарный ток для ПЛИСки, не говоря уже про нецелесообразность её применения.

upd: ссылку подправил

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это конечно всё здорово драйверы и прочее, но я уже заразился интересом реализации такого драйвера на плис попробую сам заделать.

Структуру драйвера глянул в даташите, осталось по структурной схеме драйвера сбацать свой :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рабочие напряжение и ток синего светодиода посмотрели? 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

Повзаимствовал её откуда-то отсюда с электроникса же, но уже не помню откуда именно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да! Я в курсе "ерм" не суть важно по токовым режимам, можно задействовать несколько ног на один канал если можно :-)

Да и не в этом дело, можно ULN2003 поставить для уверенности, самое главное шим реализовать или как вы предложили сигма-дельта модулятор но он жрёт больше ресурсов чем шим!!!

Сумматор в нём сложнее устроен чем компаратор

 

Я просто не соображу можно ли сделать многоканальный шим на одном только модуле шима, раскидывая его по каналам с помощью например счётчика и демультиплексора?

Или нужно шимить все каналы своим модулем шима?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я просто не соображу можно ли сделать многоканальный шим на одном только модуле шима, раскидывая его по каналам с помощью например счётчика и демультиплексора?

Или нужно шимить все каналы своим модулем шима?

 

В принципе можно. У меня на сайте найдите "Краткий Курс", глава о многопоточности...

Выглядеть будет так:

Кольцевой регистр 30 раз по 12 разрядов (или память) в котором хранятся пороги сравнения, еще один такой-же + к нему аккумулятор для инкремента значений, 1 схема сравнения, 12 RS триггеров и немного управления...

Кольцо переписываете по кругу, 1 регистр сравниваете и выход сравнения записываете в выходной триггер, соотв. номеру канала...

А схема управления по очереди взводит RS триггера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В принципе можно. У меня на сайте найдите "Краткий Курс", глава о многопоточности...

Выглядеть будет так:

Кольцевой регистр 30 раз по 12 разрядов (или память) в котором хранятся пороги сравнения, еще один такой-же + к нему аккумулятор для инкремента значений, 1 схема сравнения, 12 RS триггеров и немного управления...

Кольцо переписываете по кругу, 1 регистр сравниваете и выход сравнения записываете в выходной триггер, соотв. номеру канала...

А схема управления по очереди взводит RS триггера.

Оооо!

Спасибо!!!

Надо попробовать, хоть какая то мысль интересная :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Оооо!

Спасибо!!!

Надо попробовать, хоть какая то мысль интересная :-)

 

Читайте, там же все с картинками нарисовано... И с примерами...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

iosifk,

Спасибо огромное!!!

Я уже читал рание эти труды!

А тут вы напомнили и у меня родилась идея... Ща попробую написать на Veriloge :08:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...