Forth http://fforum.winglion.ru/ |
|
AHDL(VHDL): Цифровой фильтр для однобитного сигнала http://fforum.winglion.ru/viewtopic.php?f=11&t=2748 |
Страница 1 из 2 |
Автор: | WingLion [ Пн авг 08, 2011 20:25 ] |
Заголовок сообщения: | AHDL(VHDL): Цифровой фильтр для однобитного сигнала |
Код: TITLE "1 bit filter";
SUBDESIGN BitFiltr ( Di : input; CLK : input; Do : output; -- CNT[4..0] : output; ) VARIABLE CNT[4..0] : DFF; SHMIDT : DFF; BEGIN CNT[].clk = CLK; Do = SHMIDT; CASE (DFF((CNT[] < 3),CLK,,),DFF(Di,CLK,,), DFF((CNT[] > 28),CLK,,)) IS WHEN B"X10" => CNT[] = CNT[] + 1; WHEN B"00X" => CNT[] = CNT[] - 1; WHEN others => CNT[] = CNT[]; END CASE; SHMIDT.clk = CLK; CASE (DFF((CNT[] < 10),CLK,,),SHMIDT,DFF((CNT[] > 20),CLK,,)) IS WHEN B"1XX" => SHMIDT = GND; WHEN B"XX1" => SHMIDT = VCC; WHEN others => SHMIDT = SHMIDT; END CASE; END; |
Автор: | Hishnik [ Пн авг 08, 2011 21:27 ] |
Заголовок сообщения: | Re: AHDL: Цифровой фильтр для однобитного сигнала |
Aka антидребезг? |
Автор: | WingLion [ Пн авг 08, 2011 22:07 ] |
Заголовок сообщения: | Re: AHDL: Цифровой фильтр для однобитного сигнала |
Типа того |
Автор: | Hishnik [ Вт авг 09, 2011 12:47 ] |
Заголовок сообщения: | Re: AHDL: Цифровой фильтр для однобитного сигнала |
Для подавления дребезга на кнопках время маловато. Если только это не используется как выделение фронта асинхронно приходящего клока. |
Автор: | WingLion [ Вт авг 09, 2011 20:43 ] |
Заголовок сообщения: | Re: AHDL: Цифровой фильтр для однобитного сигнала |
Если клок на схему подать не сильно высокий, то и для подавления дребезга подойдет... в крайнем случае, можно разрядность счетчика поднять или сделать на всех тригерах вход разрешения, на который подавать нечастые короткие импульсы. |
Автор: | WingLion [ Вт авг 09, 2011 20:56 ] |
Заголовок сообщения: | Re: AHDL: Цифровой фильтр для однобитного сигнала |
Параметризованый набросок на VHDL: Код: entity bitfiltr is Port( clk, input_pin, ENA : in std_logic; out_pinn : out std_logic ); end bitfiltr; arhitecture rtl of BitFiultr is signal out_pin : std_logic; signal count : integer; constant max : integer := 1000; constant min : integer := 10; constant gap : integer := 500; constant vcc : std_logic := '1'; begin process (clk) begin if clk'event and clk=vcc and ENA = vcc then if input_pin = vcc then if count >max then count <= max+1; else count <=count + 1; end if; else if count < min then count <= min-1; else count <= count - 1; end if; end if; if count > (max+min+gap)/2 then out_pin <= vcc; elsif count < (max+min-gap)/2 then out_pin <= gnd; else out_pin <= out_pin; end if; out_pinn <= out_pin; end if; end process; end; Не проверено! |
Автор: | mOleg [ Ср авг 10, 2011 19:49 ] |
Заголовок сообщения: | Re: AHDL: Цифровой фильтр для однобитного сигнала |
а я так делал: Parameters (tau=75,sync=25); |
Автор: | WingLion [ Чт авг 11, 2011 04:47 ] |
Заголовок сообщения: | Re: AHDL: Цифровой фильтр для однобитного сигнала |
mOleg писал(а): а я так делал: если на вход пройдет регулярная короткая помеха (1 такт длиной и довольно часто), то такая схемка не будет работать, т.к. ни четкого нуля, ни четкой единицы не будет на входе. Я с таким уже сталкивался, потому ставил на выходе регистра мажоритар, а не просто сравнение. А потом со счетчиком решил делать. |
Автор: | dynamic-wind [ Чт авг 11, 2011 09:23 ] |
Заголовок сообщения: | Re: AHDL: Цифровой фильтр для однобитного сигнала |
Аналоговый фильтр (с конденсатором) будет больше цифрового? Импульс скажем 1мкс. |
Автор: | Hishnik [ Чт авг 11, 2011 10:59 ] |
Заголовок сообщения: | Re: AHDL: Цифровой фильтр для однобитного сигнала |
dynamic-wind писал(а): Аналоговый фильтр (с конденсатором) будет больше цифрового? Импульс скажем 1мкс. У аналогового фильтра нет абсолютно никакой гарантии подавить короткие пики. Только фронт завалит. |
Автор: | dynamic-wind [ Чт авг 11, 2011 15:07 ] |
Заголовок сообщения: | Re: AHDL: Цифровой фильтр для однобитного сигнала |
Хищник писал(а): У аналогового фильтра нет абсолютно никакой гарантии подавить короткие пики. Только фронт завалит. А как же работает фильтр в AVR, который (согласно даташиту) фильтрует слишком короткий RESET? Он это делает при незапущенном тактовом генераторе. |
Автор: | Hishnik [ Чт авг 11, 2011 15:40 ] |
Заголовок сообщения: | Re: AHDL: Цифровой фильтр для однобитного сигнала |
Проблема в том, что в произвольно взятом устройстве вряд ли будет гарантия возможности применения конкретных номиналов R и С. Фильтр делается по принципу "чтобы работал", а не "пользователь ответственен за то, чтобы на вход фильтра подавались помехи с характеристиками...". Цифровой фильтр в этом плане более гибок и существенно более стабилен. Фильтр на сброс как раз можно сделать в виде RC, потому что можно вписать требование "длительность сброса не менее ...", и разработчикам обычно не составляет труда обеспечить выполнение этого требования. А вот произвольно взятому источнику часто бывает трудновато объяснить, какие помехи он имеет право генерировать |
Автор: | mOleg [ Чт авг 11, 2011 15:48 ] |
Заголовок сообщения: | Re: AHDL: Цифровой фильтр для однобитного сигнала |
WingLion писал(а): если на вход пройдет регулярная короткая помеха (1 такт длиной и довольно часто), то такая схемка не будет работать, т.к. ни четкого нуля, ни четкой единицы не будет на входе. будет, т.к. на выходе стоит RS триггер |
Автор: | WingLion [ Чт авг 11, 2011 18:24 ] |
Заголовок сообщения: | Re: AHDL: Цифровой фильтр для однобитного сигнала |
mOleg писал(а): будет, т.к. на выходе стоит RS триггер Ага, а теперь представим, что пришел сигнал с помехами, так что схемы сравнения не совпадают всегда, т.е. RS-триггер просто не получает сигналы сброса и установки. |
Автор: | WingLion [ Чт авг 11, 2011 18:28 ] |
Заголовок сообщения: | Re: AHDL: Цифровой фильтр для однобитного сигнала |
dynamic-wind писал(а): Аналоговый фильтр (с конденсатором) будет больше цифрового? Импульс скажем 1мкс. "больше" - это как? Цифровой фильтр - это 1/1000 от ПЛИС-а, а аналоговый - два компонента рядом с ним... |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |