Страница 1 из 1

Как побороть "дребезг".

Добавлено: Чт янв 29, 2009 16:37:50
Штабскапитан Овечкин
Делаю проект на ПЛИС MAX II. В симуляции всё выглядит вполне прилично, а в железе получается, что при записи в регистры происходит не 1 запись, а несколько. При чём, и по фронту и по спаду сигнала WR. Навешивал R/C фильтр - помогает, но не радикально. Да и некрасиво как-то, сопли одним словом.
Подскажите, есть ли какие-нибудь грамотные приёмы для преодоления этого явления ресурсами самого чипа.

Добавлено: Чт янв 29, 2009 16:43:49
ЛеонидК
Очень смущает ”дребезг”. У Вас механическме кнопки? Похоже нет.
Ищите в программе.

Добавлено: Чт янв 29, 2009 17:06:11
МитяРа
А что за регистры - внешние что-ли..
Хоть бы схемку привёл...

Добавлено: Чт янв 29, 2009 17:09:34
Штабскапитан Овечкин
Да нет, не кнопки. И "дребезгом" я это назвал чисто условно. На самом деле, не знаю, что это. Возможно переходные процессы на индуктивности входных проводов. По крайней мере, фильтр немного уменьшает это явление, триггер шмидта на входе, похоже, решил проблему, но хотелось бы по возможности обойтись без внешних "соплей".

Добавлено: Чт янв 29, 2009 17:12:52
Штабскапитан Овечкин
В проекте 16 регистров, в которые данные пишутся в один адрес, друг за другом. Дык вот, счётчик, который раздаёт эти данные по регистрам, мельтешит. Т.е. считает не по разу, а по несколько.

Добавлено: Чт янв 29, 2009 17:23:47
МитяРа
Если ты подключаешь к своей плате что-то внешнее, будь то датчики, или исполнительные устройства или ещё что-то, то надо соблюдать некие правила.
Причём, для входных цепей - одни, а для выходных - другие, а есть и общие для всех..
..
Это называется грамотным проектированием устройств..
Только - без обид..
Сейчас очень много развелось "дилетантов-чайников", которые нахватавшись верхушек - сразу берутся за что-то более-менее сложное,
а потом, когда это не работает как надо, то удивляются..
Есть проектирование - от слова "проект",
а тут встретил "проектировку" - это от слова "проЖект" наверное.. :)
..
Если хочешь конкретный ответ - приведи кусок схемы и сформулируй конкретный вопрос.. С удовольствием отвечу..
Могу те, порекомендовать одну книжку, но она у мя дома..
Названия сейчас не вспомню - длинное...

Добавлено: Чт янв 29, 2009 17:46:26
Штабскапитан Овечкин
Да приводить "кусок схемы", мне кажется, нет смысла. Тут кусок не получится, придётся вываливать весь "прожект" :)). Дело в том, что схема-то из нескольких кусков. Это надо все составные части сюда вываливать. А проблема-то ясна и на пальцах - счётчик по каждому фронту инкрементит не на 1-цу, а на 2-3-5-7 и т.д. И по спаду тоже иногда дёргается. То есть, да, как ты и говоришь, обыкновенный "звон" входных верёвок. Дык вот хотелось бы побороть это как-то внутри ПЛИСки. Снаружи, вроде бы удалось, но это ж не гламурно. :))

Добавлено: Чт янв 29, 2009 17:55:08
МитяРа
Введи тактирование записи, по какому либо сигналу..
Если ты применил регистры по типу ИР22, то будет котовасия надо по типу ИР23..
..
Это всё про тот-же логический анализатор?

Добавлено: Чт янв 29, 2009 18:09:58
Штабскапитан Овечкин
Ну да, это про тот цифровой тестер. Каналы у меня уже работают. Щас делаю контроллер. С ISA хочу перейти на IDE. Поскольку адресное пространчтво маловато, приходится грузить и выгружать канальные регистры по очереди через один адрес.

А как это тактировать запись? Т.е., пустить через DFF, к примеру? Тогда опять-таки будет дело случая. Клок DFF-а вполне иногда может прийти одновременно с мусором на линии WR.
Мне так кажется. :))

А по типу ИР22 это как будет? LATCH? У меня всё DFF. Да и не в регистрах же проблема (повторяюсь). Забудем об регистрах. С ними всё хорошо. Колбасится счётчик, который этим регистрам включает ENABLE.

Добавлено: Чт янв 29, 2009 18:18:23
МитяРа
с мусором на линии WR
Это, что за линия WR по которой идёт мусор..
Любой сигнал записи данных, куда-то, должен выставляться активным, после гарантированного нахождения данных на шине..
И не должен содержать никакого мусора..
..
А насчёт тактированной записи - мя подумал, что ты внутри ПЛИСки сделал стек регистров и в них пишешь..
..
Стандарт на IDE не читал, но принципы обмена везде одинаковы..
..
У тя вообще буфера между ПЛИС и IDE имеются или как на входе, т.е. "ничего нет"..?

Добавлено: Чт янв 29, 2009 18:23:09
Штабскапитан Овечкин
Буфера - это внешние какие-то? Нет, снаружи ничего. Сразу из порта в ПЛИСку. Или такое недопустимо? Тогда и вопрос снимается.

Под мусором я разумею как раз "звон" длинной верёвки. А то, что IDE выставляет WR корректно, т.е. на фоне стабильного адреса и данных, это никоим образом в моём случае не спасает. Ещё раз повторю (может быть недостаточно толково объяснил) - идёт счёт сигнала WR, а потом уже запись в соответствующий регистер, на который укажет счётчик.

Добавлено: Чт янв 29, 2009 18:47:26
МитяРа
:shock: :shock: :shock:
Всё, что приходит/уходит с платы во "внешку" - должно быть развязано..
Буфером, фильтром, оптроном, ещё как нить..
..
Надо начинать с азов.. в данном случае - с сопряжения длинных линий, есть такой термин..
..
Никакой симулятор никогда не учтёт реальное положение дел..
..
До завтра...

Добавлено: Чт янв 29, 2009 19:33:58
Штабскапитан Овечкин
Понял. Значит надо ставить шмиттер на входе и не выделываться. Ну что ж. Раз так все делают, значит и меня это устраивает. Тем более, что оно даже и работает! :)

Будем считать, что вопрос исчерпан. :))

Добавлено: Пт янв 30, 2009 14:21:38
МитяРа
Один, чистый ТШ тебе может не помочь.. Надо линии согласовывать..
Книжку пока не нашёл. Найду - напишу...

Добавлено: Пт янв 30, 2009 18:42:51
mackerel
А каково соотношение частоты "звенящего" сигнала и max внутренней чвстоты ПЛИС? Если внутренняя частота в несколько раз больше, то всё решается элементарно, последовательной мажоритарной схемой.

Добавлено: Пт янв 30, 2009 18:46:01
Штабскапитан Овечкин
Если не трудно, по-подробне. Что это за схема?

Добавлено: Пт янв 30, 2009 20:01:01
mackerel
Ну, я, наверное, сгоряча назвал схемку мажоритарной - она даже проще, это, скорее, интегратор. Ну, представьте сдвиговый регистр на n разрядов (чем больше n, тем ниже должна быть частота внешнего сигнала, обычно n = 3...4). Вот. На вход регистра подаём наш приходящий сигнал (со звоном), тактируем его самой высокой внутренней частотой. Тоже понятно. Этой же частотой тактируем ещё один D-триггер (со входом разрешения!). На его D вход подаём сигнал с одного из разрядов (любого) нашего регистра. А вот вход разрешения... тут самое интересное. Его соединяем с выходом схемки, которая формирует "1", только если на её входах - а они соединены с выходами всё того же регистра - одинаковые значения. Или все "0", или все "1". Эту схемку Вы, наверное, и сами можете нарисовать. Всё! Теперь высокочастотный "звон" подавлен.

Добавлено: Сб янв 31, 2009 00:28:16
mackerel
Да, ещё "вдогонку". Как уже говорилось, линию всё-таки очень желательно согласовать. Худший вариант передачи сигнала - длинный ненагруженный "хвост". Ну, или нагруженный только на КМОП вход, что почти одно и тоже.
А вышеописанная схема у нас применяется уже много лет. Только желательно её ставить на все "звенящие" входы - и данные, и стробы, тогда задержки между ними нет.

Добавлено: Сб янв 31, 2009 11:34:05
Штабскапитан Овечкин
Спасибо! Идея понятна. Другими словами, если я всё правильно понял, надо дождаться момента, когда на выходах регистра соберутся все 1-цы. По правде сказать, мне такое приходило в голову. Но думал, что, может быть, существует более элегантрое решение.

Добавлено: Сб янв 31, 2009 12:33:50
mackerel
Штабскапитан Овечкин писал(а):Спасибо! Идея понятна. Другими словами, если я всё правильно понял, надо дождаться момента, когда на выходах регистра соберутся все 1-цы. По правде сказать, мне такое приходило в голову. Но думал, что, может быть, существует более элегантрое решение.
Или все единицы, тогда на выходе D-триггера "1", или все нули, тогда на его выходе - "0". В других случаях на его выходе состояние остаётся прежним!!! Только так!
А когда сделаете соответствующую комбинационную схему. увидете, что интегратор получается достаточно-таки элегантным.