Kuzmi4 0 30 июля, 2008 Опубликовано 30 июля, 2008 · Жалоба Здравствуйте. Собственно задача такова => с ADC идёт поток данных и есть ДНУ - которым мы задаём наш порог.. Нужно иметь до сигнала с ДНУ и после сигнала с ДНУ одинаковое кол-во отсчётов. Применяю alt_taps -2 штуки. Объём их фиксирован с начала. Между alt_taps стоит мультиплексер, который при приходе сигнала с ДНУ начинает пропускать данные во второй alt_taps. Однако есть нъюанс - если поднять порог ДНУ высоко(чтоб не ловить всяческие шумы) то сигнал с него будет очень коротким и что самое главное - сигнал по своей сути асинхронен к клоку, что заходит на ADC и в этом беда.. Обрисовал картинку внизу: Сигнал с ДНУ может возникнуть и сбросится за долго до rising_edge(Input_clock) или будет импульс до falling_edge(Input_clock) - ну в обсчем суть думаю обрисовал. Первая идея конечно - загнать сигнал с ДНУ как клоковый в тригер и таким образом защёлкнуть его. Сие в принципе не есть гут, как уже неоднократно обсуждалось, потому хотелось бы как то уйти от этого.... :smile3046: Есть у кого какие идеи как это можно реализовать корректно чтоб не пропускать отсчёты и не заводить сигнал с ДНУ как клоковый ?? Есть мысля перегонять его в Input_clock клоковый домен и там смотреть , но тогда нужно будет иметь ситуацию когда сигнал возникает до rising_edge(Input_clock) и гасится гораздо позже .... Такое в принципе при высоком уровне на ДНУ можно очень долго ждать............ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 30 июля, 2008 Опубликовано 30 июля, 2008 · Жалоба Здравствуйте. Может я чего-то не до понял прошу прощения. Поставь компаратор на один вход подавай данные, а на второй уровень с которым ты/Вы производишь сравнение, изменение выхода компаратора фиксируй и обрабатывай Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 30 июля, 2008 Опубликовано 30 июля, 2008 · Жалоба 2 Maverick - ситуация такова , что если поднять сильно порог , то могут быть при пикообразных сигналах на входе - коротенькие импульсы на сигнале с ДНУ. Идею оцифровывания сигнала с ДНУ в принципе можно организовать вот так: Или в мап въювере: но так правду я узнаю только через 3 такта при правильном расположении сигнала с ДНУ - сигнал возникает до rising_edge(Input_clock).. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 30 июля, 2008 Опубликовано 30 июля, 2008 · Жалоба 2 Maverick - ситуация такова , что если поднять сильно порог , то могут быть при пикообразных сигналах на входе - коротенькие импульсы на сигнале с ДНУ. Идею оцифровывания сигнала с ДНУ в принципе можно организовать вот так: Или в мап въювере: но так правду я узнаю только через 3 такта при правильном расположении сигнала с ДНУ - сигнал возникает до rising_edge(Input_clock).. может глупо, просто на работе устал и соображалка не работает :) : а если взять и увеличить работу блока в 3 раза (т.е. 1 такт данных = 3 или 4 тактам твоего блока), тогда возможно будет реал-тайм. "я узнаю только через 3 такта " - так это твоя постоянная будет задержка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 30 июля, 2008 Опубликовано 30 июля, 2008 · Жалоба 2 Maverick - на счёт постоянной задержки - это и успокаивает - с этим можно жить. А клок увеличивать - параметры ADC не позволят(соотношение цена/качество, да и там и физика такая что много чего именно по спаду можно вычилить + зачем платить больше).. В обсчем пока других идей не поступило, решил остановится на оцифровывании сигнала с ДНУ (в обсчем предыдущий мой пост).. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 30 июля, 2008 Опубликовано 30 июля, 2008 · Жалоба кажется Вы меня не правильно поняли, частоту увеличить нужно в ПЛИС - я это имел ввиду и получаешь 1 такт данных = 3 или 4 тактам твоего блока в ПЛИС Частота работы для АЦП остается преженей Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 30 июля, 2008 Опубликовано 30 июля, 2008 · Жалоба 2 Maverick - ага.. В прицнипе понял идею - тогда можно будет сократить время между фронтами... Но это лишний плл.. Так что думаю останусь на идее оцифровывания входного сигнала с дну.. Или не буду так высоко порог поднимать... :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slog 0 30 июля, 2008 Опубликовано 30 июля, 2008 · Жалоба Простите что вторгаюсь в беседу умных людей... А можно узнать что обозначают буквы "ДНУ" ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 30 июля, 2008 Опубликовано 30 июля, 2008 · Жалоба Не в курсе что такое ДНУ, но если сигнал короткий (может не попасть на фронт), то поймать его можно только заведя на асинхронный вход триггера - клок или сброс. После него обязательно поставить пару триггеров подавления метастабильности. Задержка, соответственно, может колебаться на 1 такт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 31 июля, 2008 Опубликовано 31 июля, 2008 · Жалоба 2 slog - ДискриминаторНижнегоУровня - компаратор с петлёй обратной связи от дребезга(как по буржуйски не знаю).. 2 dvladim - думал над этим ( была идея ), просто хотел поинтересоваться у знающих - может есть какая мутка хитрая чтоб ничего не терять ..... Организовал как было здумано - со сдвиговым на тригерах для подавления метастабильности и логикой после => просимулил -> работает.. Буду пробовать в железе... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 31 июля, 2008 Опубликовано 31 июля, 2008 · Жалоба 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 Таким образом, вначале ставишь схему подавления от дребезга (которая кстати и делала б синхронизацию со входным сигналом), потом схему компаратора. На постоянную задержку на несколько тактов я бы просто не обращал бы внимания :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 31 июля, 2008 Опубликовано 31 июля, 2008 · Жалоба 2 Maverick - на сколько я понимаю - то что вы привели в результате синтеза будет иметь вид той же цепочки на тригерах - там на сколькоя понял стандартная идея цифровать по тактовой асинхронные п оотношению к тактовой сигналы + 1 тригер для устканивания :) А на счёт задержки - там обращать внимание надо- нужно знать максимум (с точностью до уровня квантования и времени 1го такта) Так что в итоге я как раз и имею схему с тригерами для борьбы с debounce circuite и подгонки под мою частоту + обработка :) А на счёт Объясните пожалуйста что такое "дискриминатор"? Я ж вроде уже обрисовал что это за дЫвайсик.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться