реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Асинхронный сигнал с ДНУ и синхронная оцифровка данных, как правильней реализоватьв FPGA..
Kuzmi4
сообщение Jul 30 2008, 11:56
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



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

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

Сигнал с ДНУ может возникнуть и сбросится за долго до rising_edge(Input_clock) или будет импульс до falling_edge(Input_clock) - ну в обсчем суть думаю обрисовал.
Первая идея конечно - загнать сигнал с ДНУ как клоковый в тригер и таким образом защёлкнуть его. Сие в принципе не есть гут, как уже неоднократно обсуждалось, потому хотелось бы как то уйти от этого....
smile3046.gif
Есть у кого какие идеи как это можно реализовать корректно чтоб не пропускать отсчёты и не заводить сигнал с ДНУ как клоковый ??
Есть мысля перегонять его в Input_clock клоковый домен и там смотреть , но тогда нужно будет иметь ситуацию когда сигнал возникает до rising_edge(Input_clock) и гасится гораздо позже .... Такое в принципе при высоком уровне на ДНУ можно очень долго ждать............
Go to the top of the page
 
+Quote Post
Maverick
сообщение Jul 30 2008, 13:10
Сообщение #2


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Kuzmi4 @ Jul 30 2008, 14:56) *
Здравствуйте.


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

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


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jul 30 2008, 13:24
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



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

Прикрепленное изображение

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

Прикрепленное изображение

но так правду я узнаю только через 3 такта при правильном расположении сигнала с ДНУ - сигнал возникает до rising_edge(Input_clock)..
Go to the top of the page
 
+Quote Post
Maverick
сообщение Jul 30 2008, 13:44
Сообщение #4


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Kuzmi4 @ Jul 30 2008, 16:24) *
2 Maverick - ситуация такова , что если поднять сильно порог , то могут быть при пикообразных сигналах на входе - коротенькие импульсы на сигнале с ДНУ.
Идею оцифровывания сигнала с ДНУ в принципе можно организовать вот так:

Прикрепленное изображение

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

Прикрепленное изображение

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


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


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jul 30 2008, 14:04
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



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

В обсчем пока других идей не поступило, решил остановится на оцифровывании сигнала с ДНУ (в обсчем предыдущий мой пост)..
Go to the top of the page
 
+Quote Post
Maverick
сообщение Jul 30 2008, 14:23
Сообщение #6


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



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


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jul 30 2008, 14:35
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 Maverick - ага..
В прицнипе понял идею - тогда можно будет сократить время между фронтами... Но это лишний плл..
Так что думаю останусь на идее оцифровывания входного сигнала с дну.. Или не буду так высоко порог поднимать...
smile.gif
Go to the top of the page
 
+Quote Post
slog
сообщение Jul 30 2008, 17:25
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 961
Регистрация: 28-11-05
Пользователь №: 11 489



Простите что вторгаюсь в беседу умных людей...
А можно узнать что обозначают буквы "ДНУ" ?


--------------------
В действительности всё не так, как на самом деле.
Go to the top of the page
 
+Quote Post
dvladim
сообщение Jul 30 2008, 18:06
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737



Не в курсе что такое ДНУ, но если сигнал короткий (может не попасть на фронт), то поймать его можно только заведя на асинхронный вход триггера - клок или сброс. После него обязательно поставить пару триггеров подавления метастабильности. Задержка, соответственно, может колебаться на 1 такт.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jul 31 2008, 07:42
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



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

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

Организовал как было здумано - со сдвиговым на тригерах для подавления метастабильности и логикой после => просимулил -> работает.. Буду пробовать в железе...
Go to the top of the page
 
+Quote Post
Maverick
сообщение Jul 31 2008, 08:02
Сообщение #11


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Kuzmi4 @ Jul 31 2008, 10:42) *
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

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


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jul 31 2008, 08:22
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



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

А на счёт задержки - там обращать внимание надо- нужно знать максимум (с точностью до уровня квантования и времени 1го такта)
Так что в итоге я как раз и имею схему с тригерами для борьбы с debounce circuite и подгонки под мою частоту + обработка smile.gif

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

Я ж вроде уже обрисовал что это за дЫвайсик..
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 04:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01668 секунд с 7
ELECTRONIX ©2004-2016