Discussion:
Многоканальный ши как сделать?
(слишком старое сообщение для ответа)
Alexander Borovsky
2005-03-11 16:43:29 UTC
Permalink
Скажем на MAX3128 надо сделать 16тиканальный 4хбитный ШИМ, как оно проще
делается? Параметры шима будет задавать контроллер естественно.

San.
Dmitry Kuznetsov
2005-03-11 17:26:33 UTC
Permalink
Hello, "Alexander Borovsky" <***@vast.spb.ru>
On Fri, 11 Mar 2005 16:43:29 +0000 (UTC), you wrote:

AB> Скажем на MAX3128 надо сделать 16тиканальный 4хбитный ШИМ, как оно проще
AB> делается? Параметры шима будет задавать контроллер естественно.

Процитирую сам себя...

From: Dmitry Kuznetsov <***@orc.ru>
Newsgroups: fido7.ru.embedded
Subject: Re: Посоветуйте ПЛИС
Date: Mon, 18 Jun 2001 12:14:54 +0000 (UTC)

From: Dmitry Kuznetsov <***@orc.ru>
Newsgroups: fido7.ru.embedded
Subject: Re: Микросхемка ШИМ или ПИД
Date: Tue, 11 Sep 2001 20:27:22 +0000 (UTC)

Если задать NUMBER = 16 и WIDTH = 4, то в МАХ3128 влезает...


================ цитата ON =================
Хочу сделать следующее: Мне нужно 96 ШИМов 8-ми разрядных,
хочу взять 12 ПЛИС (еще незнаю каких) и организовать по 8
ШИМов в каждой ПЛИС.
Вот накидал для MAX+ на AHDL.
Код не претендует на оптимальность и безглючность.
А для оценки сойдет и такой.

PARAMETERS ( NUMBER = 96, WIDTH = 8 );
CONSTANT nu = NUMBER; CONSTANT aw = CEIL(LOG2(nu));
CONSTANT dw = WIDTH;
SUBDESIGN pwm_96 (
a[aw-1..0], d[dw-1..0], /wr, clk, /rst : INPUT;
out[nu-1..0] : OUTPUT;
)
VARIABLE
cnt[dw-1..0] : DFF; -- общий счетчик
set : LCELL; -- установка триггеров в "1"
reg[nu-1..0][dw-1..0] : DFFE; -- значения PWM
fix[nu-1..0] : DFFE; -- триггеры PWM
cmp[nu-1..0] : LCELL; -- компараторы сброса в "0"
BEGIN
cnt[].clk = clk; cnt[] = cnt[] + 1; cnt[].clrn = /rst;
set = cnt[]==0;
reg[][].clk = /wr; fix[].clk = !clk;
FOR i IN nu-1 TO 0 GENERATE
reg[i][].ena = a[]==i; reg[i][] = d[];
cmp[i] = reg[i][]==cnt[];
fix[i].ena = set # cmp[i]; -- два окна для триггера
fix[i].d = set & !cmp[i]; -- (установка и сброс)
END GENERATE;
out[] = fix[];
END;

================ цитата OFF =================



<< Алкоголь - мое топливо! Я - могучий робот! Б-и-и-и-п!
<<
Dmitry Kuznetsov, Moscow, http://www.orc.ru/~dkuzn/index.htm
[Team Беговая Черепаха] [Team LEXX]
*
Ilia Tarasov
2005-03-11 18:59:23 UTC
Permalink
Fri Mar 11 2005 19:43, Alexander Borovsky wrote to All:

AB> Скажем на MAX3128 надо сделать 16тиканальный 4хбитный ШИМ, как оно проще
AB> делается? Параметры шима будет задавать контроллер естественно.

port...

pwm_cod1 : in std_logic_vector(1 downto 0);
-- и сюда еще 15 каналов

architecture...

signal st : std_logic_vector(1 downto 0); -- это если 4-битный

process(clk)
begin
if clk'event and clk='1' then
st <= st + 1;
end if;
end process;

pwm1 <= '1' when pwm_cod1 > st else '0';
pwm2 <= '1' when pwm_cod2 > st else '0';

и т.д.

bye

Loading...