Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 17:54

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - AHDL(VHDL): Цифровой фильтр для однобитного сигнала
Автор Сообщение
  Заголовок сообщения:  Re: AHDL: Цифровой фильтр для однобитного сигнала  Ответить с цитатой
Понадобилось нечто подобное, но при условии, что период дискретизации лишь в 4-6 раз выше периода "единиц" и "нулей" в последовательном коде, который надо принять.

выделение фронтов и подавление помех делаю так:
Код:
VHDL:
-- шапку с заданием библиотек/входов/выходов опускаю

    signal reg : nibble; -- четырехбитный регистр

begin
    process (clk) begin
        if clk'event and clk = vcc then
            reg <= reg(2 downto 0)&data_in;
            if reg = "0011" or reg = "1100" then
                front_detected <= vcc;
            else
                front_detected <= gnd;
            end if;

            if reg(3 downto 1) = "111" or reg = "1101" then
                data_out <= vcc;
            elsif reg(3 downto 1) = "000" or reg = "0010" then
                data_out <= gnd;
            end if;

        end if;
    end;

end;


Выделеные фронты подаются на цифровую фапч, которая формирует строб-импульсы, нацеленые на середины передаваемых периодов, чтобы зафиксировать данные.

Работает такая штука при передаче данных со скоростью ~41мегабит/сек (250/6) по одному сигнальному проводу.
Применяется для передачи тестовой информации из исследуемой схемы на визуализатор, который эти данные на VGA выводит в нужном виде.
Для передачи данных используется кусок обычного плоского кабеля длиной 0.5 метра. Интересно, что при передачи с Альтеры на Альтеру скорость 41мегабит/сек плучилась нормально, а вот, при передачи с Xilinx на Альтеру пришлось скорость в 2 раза снизить (схема подавления помех и выделения фронтов осталась прежней)
Сообщение Добавлено: Вс июн 24, 2012 05:38
  Заголовок сообщения:  Re: AHDL: Цифровой фильтр для однобитного сигнала  Ответить с цитатой
mOleg писал(а):
ну, так вроде как так быть и должно, сигнал длиной меньше какого-то заданного числа клоков не должен проваливаться сквозь фильтр 8)


Именно. И поэтому, если полезный сигнал сильно зашумлен - он не пройдет на выход вообще, хотя правильный фильтр должен подобные шумы давить, если только они сам сигнал окончательно не перебивают.

Вот, представим, что сигнал единицы содержит короткие провалы в нуль, а сигнал нуля короткие всплески в единицу. Ни тот ни другой не пройдет, потому что в регистре сдвига будут постоянно присутствовать и нули и единицы.
Сообщение Добавлено: Пт авг 12, 2011 18:26
  Заголовок сообщения:  Re: AHDL: Цифровой фильтр для однобитного сигнала  Ответить с цитатой
WingLion писал(а):
mOleg писал(а):
будет, т.к. на выходе стоит RS триггер
Ага, а теперь представим, что пришел сигнал с помехами, так что схемы сравнения не совпадают всегда, т.е. RS-триггер просто не получает сигналы сброса и установки.

ну, так вроде как так быть и должно, сигнал длиной меньше какого-то заданного числа клоков не должен проваливаться сквозь фильтр 8)
Сообщение Добавлено: Пт авг 12, 2011 14:56
  Заголовок сообщения:  Re: AHDL: Цифровой фильтр для однобитного сигнала  Ответить с цитатой
dynamic-wind писал(а):
В азиках, кондер--это обратно смещенный диод, или затвор увеличенного полевика. И т.п.
В ПЛИСах таких ячеек нет, понял.

В ПЛИС такие решения абсолютно противопоказаны. В цифровой электронике, в принципе, тоже - чем меньше норма техпроцесса, тем более противопоказаны. Это же все плывет over PVT.
Сообщение Добавлено: Чт авг 11, 2011 22:30
  Заголовок сообщения:  Re: AHDL: Цифровой фильтр для однобитного сигнала  Ответить с цитатой
WingLion писал(а):
"больше" - это как? Цифровой фильтр - это 1/1000 от ПЛИС-а, а аналоговый - два компонента рядом с ним...

В азиках, кондер--это обратно смещенный диод, или затвор увеличенного полевика. И т.п.
В ПЛИСах таких ячеек нет, понял.
Сообщение Добавлено: Чт авг 11, 2011 22:08
  Заголовок сообщения:  Re: AHDL: Цифровой фильтр для однобитного сигнала  Ответить с цитатой
dynamic-wind писал(а):
Аналоговый фильтр (с конденсатором) будет больше цифрового? Импульс скажем 1мкс.


"больше" - это как? Цифровой фильтр - это 1/1000 от ПЛИС-а, а аналоговый - два компонента рядом с ним...
Сообщение Добавлено: Чт авг 11, 2011 18:28
  Заголовок сообщения:  Re: AHDL: Цифровой фильтр для однобитного сигнала  Ответить с цитатой
mOleg писал(а):
будет, т.к. на выходе стоит RS триггер


Ага, а теперь представим, что пришел сигнал с помехами, так что схемы сравнения не совпадают всегда, т.е. RS-триггер просто не получает сигналы сброса и установки.
Сообщение Добавлено: Чт авг 11, 2011 18:24
  Заголовок сообщения:  Re: AHDL: Цифровой фильтр для однобитного сигнала  Ответить с цитатой
WingLion писал(а):
если на вход пройдет регулярная короткая помеха (1 такт длиной и довольно часто), то такая схемка не будет работать, т.к. ни четкого нуля, ни четкой единицы не будет на входе.

будет, т.к. на выходе стоит RS триггер 8)
Сообщение Добавлено: Чт авг 11, 2011 15:48
  Заголовок сообщения:  Re: AHDL: Цифровой фильтр для однобитного сигнала  Ответить с цитатой
Проблема в том, что в произвольно взятом устройстве вряд ли будет гарантия возможности применения конкретных номиналов R и С. Фильтр делается по принципу "чтобы работал", а не "пользователь ответственен за то, чтобы на вход фильтра подавались помехи с характеристиками...". Цифровой фильтр в этом плане более гибок и существенно более стабилен. Фильтр на сброс как раз можно сделать в виде RC, потому что можно вписать требование "длительность сброса не менее ...", и разработчикам обычно не составляет труда обеспечить выполнение этого требования. А вот произвольно взятому источнику часто бывает трудновато объяснить, какие помехи он имеет право генерировать :)
Сообщение Добавлено: Чт авг 11, 2011 15:40
  Заголовок сообщения:  Re: AHDL: Цифровой фильтр для однобитного сигнала  Ответить с цитатой
Хищник писал(а):
У аналогового фильтра нет абсолютно никакой гарантии подавить короткие пики. Только фронт завалит.

А как же работает фильтр в AVR, который (согласно даташиту) фильтрует слишком короткий RESET?
Он это делает при незапущенном тактовом генераторе.
Сообщение Добавлено: Чт авг 11, 2011 15:07
  Заголовок сообщения:  Re: AHDL: Цифровой фильтр для однобитного сигнала  Ответить с цитатой
dynamic-wind писал(а):
Аналоговый фильтр (с конденсатором) будет больше цифрового? Импульс скажем 1мкс.

У аналогового фильтра нет абсолютно никакой гарантии подавить короткие пики. Только фронт завалит.
Сообщение Добавлено: Чт авг 11, 2011 10:59
  Заголовок сообщения:  Re: AHDL: Цифровой фильтр для однобитного сигнала  Ответить с цитатой
Аналоговый фильтр (с конденсатором) будет больше цифрового? Импульс скажем 1мкс.
Сообщение Добавлено: Чт авг 11, 2011 09:23
  Заголовок сообщения:  Re: AHDL: Цифровой фильтр для однобитного сигнала  Ответить с цитатой
mOleg писал(а):
а я так делал:


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

Я с таким уже сталкивался, потому ставил на выходе регистра мажоритар, а не просто сравнение. А потом со счетчиком решил делать.
Сообщение Добавлено: Чт авг 11, 2011 04:47
  Заголовок сообщения:  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;
Сообщение Добавлено: Ср авг 10, 2011 19:49
  Заголовок сообщения:  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;


Не проверено!
Сообщение Добавлено: Вт авг 09, 2011 20:56

Часовой пояс: UTC + 3 часа [ Летнее время ]


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB