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

Асинхронный сигнал с ДНУ и синхронная оцифровка данных

Здравствуйте.

 

Собственно задача такова => с ADC идёт поток данных и есть ДНУ - которым мы задаём наш порог..

Нужно иметь до сигнала с ДНУ и после сигнала с ДНУ одинаковое кол-во отсчётов.

Применяю alt_taps -2 штуки. Объём их фиксирован с начала. Между alt_taps стоит мультиплексер, который при приходе сигнала с ДНУ начинает пропускать данные во второй alt_taps.

Однако есть нъюанс - если поднять порог ДНУ высоко(чтоб не ловить всяческие шумы) то сигнал с него будет очень коротким и что самое главное - сигнал по своей сути асинхронен к клоку, что заходит на ADC и в этом беда..

Обрисовал картинку внизу:

post-25329-1217418389_thumb.jpg

Сигнал с ДНУ может возникнуть и сбросится за долго до rising_edge(Input_clock) или будет импульс до falling_edge(Input_clock) - ну в обсчем суть думаю обрисовал.

Первая идея конечно - загнать сигнал с ДНУ как клоковый в тригер и таким образом защёлкнуть его. Сие в принципе не есть гут, как уже неоднократно обсуждалось, потому хотелось бы как то уйти от этого....

:smile3046:

Есть у кого какие идеи как это можно реализовать корректно чтоб не пропускать отсчёты и не заводить сигнал с ДНУ как клоковый ??

Есть мысля перегонять его в Input_clock клоковый домен и там смотреть , но тогда нужно будет иметь ситуацию когда сигнал возникает до rising_edge(Input_clock) и гасится гораздо позже .... Такое в принципе при высоком уровне на ДНУ можно очень долго ждать............

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


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

Здравствуйте.

 

Может я чего-то не до понял прошу прощения.

 

Поставь компаратор на один вход подавай данные, а на второй уровень с которым ты/Вы производишь сравнение, изменение выхода компаратора фиксируй и обрабатывай

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


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

2 Maverick - ситуация такова , что если поднять сильно порог , то могут быть при пикообразных сигналах на входе - коротенькие импульсы на сигнале с ДНУ.

Идею оцифровывания сигнала с ДНУ в принципе можно организовать вот так:

post-25329-1217424179_thumb.jpg

Или в мап въювере:

post-25329-1217424267_thumb.jpg

но так правду я узнаю только через 3 такта при правильном расположении сигнала с ДНУ - сигнал возникает до rising_edge(Input_clock)..

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


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

2 Maverick - ситуация такова , что если поднять сильно порог , то могут быть при пикообразных сигналах на входе - коротенькие импульсы на сигнале с ДНУ.

Идею оцифровывания сигнала с ДНУ в принципе можно организовать вот так:

post-25329-1217424179_thumb.jpg

Или в мап въювере:

post-25329-1217424267_thumb.jpg

но так правду я узнаю только через 3 такта при правильном расположении сигнала с ДНУ - сигнал возникает до rising_edge(Input_clock)..

 

может глупо, просто на работе устал и соображалка не работает :) :

а если взять и увеличить работу блока в 3 раза (т.е. 1 такт данных = 3 или 4 тактам твоего блока), тогда возможно будет реал-тайм.

"я узнаю только через 3 такта " - так это твоя постоянная будет задержка.

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


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

2 Maverick - на счёт постоянной задержки - это и успокаивает - с этим можно жить.

А клок увеличивать - параметры ADC не позволят(соотношение цена/качество, да и там и физика такая что много чего именно по спаду можно вычилить + зачем платить больше)..

 

В обсчем пока других идей не поступило, решил остановится на оцифровывании сигнала с ДНУ (в обсчем предыдущий мой пост)..

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


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

кажется Вы меня не правильно поняли, частоту увеличить нужно в ПЛИС - я это имел ввиду и получаешь 1 такт данных = 3 или 4 тактам твоего блока в ПЛИС

Частота работы для АЦП остается преженей

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


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

2 Maverick - ага..

В прицнипе понял идею - тогда можно будет сократить время между фронтами... Но это лишний плл..

Так что думаю останусь на идее оцифровывания входного сигнала с дну.. Или не буду так высоко порог поднимать...

:)

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


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

Простите что вторгаюсь в беседу умных людей...

А можно узнать что обозначают буквы "ДНУ" ?

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


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

Не в курсе что такое ДНУ, но если сигнал короткий (может не попасть на фронт), то поймать его можно только заведя на асинхронный вход триггера - клок или сброс. После него обязательно поставить пару триггеров подавления метастабильности. Задержка, соответственно, может колебаться на 1 такт.

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


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

2 slog - ДискриминаторНижнегоУровня - компаратор с петлёй обратной связи от дребезга(как по буржуйски не знаю)..

 

2 dvladim - думал над этим ( была идея ), просто хотел поинтересоваться у знающих - может есть какая мутка хитрая чтоб ничего не терять .....

 

Организовал как было здумано - со сдвиговым на тригерах для подавления метастабильности и логикой после => просимулил -> работает.. Буду пробовать в железе...

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


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

2 slog - ДискриминаторНижнегоУровня - компаратор с петлёй обратной связи от дребезга(как по буржуйски не знаю)..

 

не знаю, может быть пригодиться, Xilinx рекомендует бороться с дребезгом (и называет это debounce circuite) так:

--  Provides a one-shot pulse from a non-clock input, with reset
--**Insert the following between the 'architecture' and
---'begin' keywords**
signal Q1, Q2, Q3 : std_logic;

--**Insert the following after the 'begin' keyword**
process(<clock>)
begin
   if (<clock>'event and <clock> = '1') then
      if (<reset> = '1') then
         Q1 <= '0';
         Q2 <= '0';
         Q3 <= '0'; 
      else
         Q1 <= D_IN;
         Q2 <= Q1;
         Q3 <= Q2;
      end if;
   end if;
end process;

Q_OUT <= Q1 and Q2 and (not Q3);

взял из Templates Language

 

Таким образом, вначале ставишь схему подавления от дребезга (которая кстати и делала б синхронизацию со входным сигналом), потом схему компаратора. На постоянную задержку на несколько тактов я бы просто не обращал бы внимания :)

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


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

2 Maverick - на сколько я понимаю - то что вы привели в результате синтеза будет иметь вид той же цепочки на тригерах - там на сколькоя понял стандартная идея цифровать по тактовой асинхронные п оотношению к тактовой сигналы + 1 тригер для устканивания :)

 

А на счёт задержки - там обращать внимание надо- нужно знать максимум (с точностью до уровня квантования и времени 1го такта)

Так что в итоге я как раз и имею схему с тригерами для борьбы с debounce circuite и подгонки под мою частоту + обработка :)

 

А на счёт

Объясните пожалуйста что такое "дискриминатор"?

Я ж вроде уже обрисовал что это за дЫвайсик..

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


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

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

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

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

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

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

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

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

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

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