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);

constant cycles = ceil(tau div sync)-1;

SubDesign finp
( clk : input;
inp : input; -- вход

pos : output; -- в '1' если сигнал положителен ~ tau ns
neg : output; -- в '1' если сигнал отрицателен ~ tau ns
o : output; -- в '1' если pos, в '0' если neg
)

Variable
T[cycles..1] : dffe;

Begin
T[] = (T[cycles-1..1],inp); T[].clk = clk;
pos = dff(.d=( T[] == -1 ),.clk=clk);
neg = dff(.d=( T[] == 0 ),.clk=clk);

o = srff(.s=pos, .r=neg, .clk=clk);
End;

Автор:  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 триггер 8)

Автор:  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/