|
Фронты входного сигнала в EPM7160STC-6, глючит счетчик |
|
|
|
Mar 30 2006, 08:28
|
Группа: Новичок
Сообщений: 4
Регистрация: 9-03-06
Из: Novgorod the Great
Пользователь №: 15 082

|
Добрый день ! Подскажите в чем может быть дело ? ПЛИС MAX EPM 7160STC 100-6 используется в качестве делителя частоы, внутри счетчик на ЛПМ функции. Тактовая частота 10 Мгц. Входная частота 10 кГц. Входной сигнал синус проходит через оптопару потом идет в виде меандра в ПЛИС На выходе ПЛИС наблюдаем дрожание сигнала и различные частоты но не те что нужно, зависит от амплитуды входного сигнала, если подать меандр то все нормально. Какие существуют ограничения на фронты входных сигналов ? Как можно выйти из ситуации без использования триггера шмита?
|
|
|
|
|
Apr 4 2006, 12:56
|
Группа: Новичок
Сообщений: 4
Регистрация: 9-03-06
Из: Novgorod the Great
Пользователь №: 15 082

|
а подскажите тогда тип оптопары ? сейчас стоит HCPL0630 ....это какая ? обычная ?
а триггер шмитта начальник ставить не хочет (запрещает).
|
|
|
|
|
Apr 4 2006, 17:34
|
Участник

Группа: Участник
Сообщений: 65
Регистрация: 7-02-05
Из: Уфа
Пользователь №: 2 474

|
посмотри HCPL2231 - выход тр. Шм, может быть подойдет даже по распиновке, хотя у HCPL0630 выход тоже цифровой ( Dual Channel, High CMR, High Speed, TTL Compatible Optocouplers 8 Pin DIP and SOIC-8)
Сообщение отредактировал AlHakim - Apr 4 2006, 17:36
|
|
|
|
|
Apr 5 2006, 02:30
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
нафига вам "внешний" триггер Шмидта? Это же как "дребезг" в механическом контакте. И поступать с ним надо соответственно. Завести на селектор переднего фронта, с него передний фронт на RS-триггер, на вход установки, например. На вход сброса завести задний фронт, но не напрямую с селектора заднего фронта, а через цепь "мёртвого времени", которая бы блокировала прохождение сигнала сброса на время, большее, чем "дребезг". Это время, думаю, вам уже известно из экспериментов.
|
|
|
|
|
Apr 5 2006, 05:14
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(vikrus @ Mar 30 2006, 12:28)  Добрый день ! Подскажите в чем может быть дело ? ПЛИС MAX EPM 7160STC 100-6 используется в качестве делителя частоы, внутри счетчик на ЛПМ функции. Тактовая частота 10 Мгц. Входная частота 10 кГц. Входной сигнал синус проходит через оптопару потом идет в виде меандра в ПЛИС На выходе ПЛИС наблюдаем дрожание сигнала и различные частоты но не те что нужно, зависит от амплитуды входного сигнала, если подать меандр то все нормально. Какие существуют ограничения на фронты входных сигналов ? Как можно выйти из ситуации без использования триггера шмита? Скажу Вам так - ответов много и все неправильные! Делается все гораздо проще цифровым методом. Внутри ставите сдвиговый регистр на частоте 10 Мгц. Его глубина определяется длительностью импульсов помехи, которые могут быть на фронтах. Далее ставится RS-триггер. Если в сдвиговом регистре N нулей подряд, то это значит что сигнал идет на R вход триггера, если N единиц подряд - то на S. Можно сделать и "круче". Т.е. реверсивный счетчик и схему сравнения с порогом. Выше верхнего порога - 1, ниже нижнего - 0. При таком варианте из входных данных будут фильтроваться одиночные импульы помехи. Итог: в программируемой логике надо все делать цифровое, синхронное и не "жалеть патронов". Удачи!
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Apr 5 2006, 08:03
|
Частый гость
 
Группа: Свой
Сообщений: 160
Регистрация: 23-12-04
Из: Уфа
Пользователь №: 1 631

|
Цитата(iosifk @ Apr 5 2006, 11:14)  Можно сделать и "круче". Т.е. реверсивный счетчик и схему сравнения с порогом. Выше верхнего порога - 1, ниже нижнего - 0. При таком варианте из входных данных будут фильтроваться одиночные импульы помехи. В дополнение: Пример реализации такого фильтра: Код // // Схема фильтрации сигнала с линии, и выделения фронтов. // // Представляет собой реверсивный счетчик, с заданной разрядностью (параметр Width), // который считает в сторону увеличения при единице на InData до достижения // максимального значения, и блокируется. // При нуле на InData считает в сторону уменьшения, с заданным шагом (DecrementStep), // до достижения состояния 0, и блокируется. // // При максимальном значение, если выходные данные равны нулю, выдается единица // на eDataFront (при единице на eClk), и происходит изменение выходных данных на единицу. // // В состоянии 0, если выходные данные равны единице, выдается единица // на eDataFront (при единице на eClk), и происходит изменение выходных данных на ноль. // module DataFilter( input Clk, /* Системная высокочастотная тактовая (например 10 МГц) */ input nInit, /* Асинхронный сброс */ input eClk, /* Разрешение тактирования по Clk (если устраивает работа на частоте Clk, то поставить в единицу) */ input InData, /* Входной сигнал */ output eDataFront, /* Признак изменения выходного сигнала по ближайшему фронту Clk, с eClk=1 */ output reg OutData /* Выходной сигнал, привязанный к фронту Clk, с eClk=1 */ );
parameter Width = 5; parameter DecrementStep = 1;
wire [Width-1:0]CntMax = (1<<Width)-1;
reg [Width-1:0]Cnt; // Реверсивный счетчик.
assign eDataFront = ((Cnt < DecrementStep && OutData != 0) || (Cnt == CntMax && OutData == 0)) && eClk; // Импульсы фронтов входного сигнала
always @(negedge nInit or posedge Clk) if(!nInit) begin OutData <= 1; Cnt <= 0; end else if(eClk) begin if(Cnt < CntMax && InData) // Условие для инкремента Cnt <= Cnt + 1;
if(Cnt >= DecrementStep && !InData) // Условие для декремента Cnt <= Cnt - DecrementStep;
if(eDataFront) OutData <= (Cnt == CntMax? 1 : 0); // Изменение текущего значения end
endmodule
|
|
|
|
|
Apr 5 2006, 08:28
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(Shamil @ Apr 5 2006, 12:03)  Цитата(iosifk @ Apr 5 2006, 11:14)  Можно сделать и "круче". Т.е. реверсивный счетчик и схему сравнения с порогом. Выше верхнего порога - 1, ниже нижнего - 0. При таком варианте из входных данных будут фильтроваться одиночные импульы помехи.
В дополнение: Пример реализации такого фильтра: Код // Схема фильтрации сигнала с линии, и выделения фронтов. Спасибо, Верно! И если вывести дополнительные сигналы от состояний "выше-ниже", то сможете оценивать сигнал, попадает ли он как положено в норму, нет ли пропаданий сигнала и тд. Удачи!
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Apr 6 2006, 02:44
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
Цитата(iosifk @ Apr 5 2006, 12:14)  Скажу Вам так - ответов много и все неправильные! Не надо делать столь категоричные оценки своих коллег, претендуя на роль... кого-то свыше... Лично я считаю, что мой ответ также является правильным, поскольку: Цитата(iosifk @ Apr 5 2006, 12:14)  Делается все гораздо проще цифровым методом. поскольку также делается цифровым путём, и можно ещё поспорить, какой из методов лучше. Например, мой метод не имеет задержки включения и выключения, а срабатывает сразу по первому импульсу. Ещё можно подумать, где будет меньше ячеек занято...
|
|
|
|
|
Apr 6 2006, 05:48
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(Krys @ Apr 6 2006, 06:44)  Цитата(iosifk @ Apr 5 2006, 12:14)  Скажу Вам так - ответов много и все неправильные! Не надо делать столь категоричные оценки своих коллег, претендуя на роль... кого-то свыше... Лично я считаю, что мой ответ также является правильным, поскольку: Цитата(iosifk @ Apr 5 2006, 12:14)  Делается все гораздо проще цифровым методом. поскольку также делается цифровым путём, и можно ещё поспорить, какой из методов лучше. Например, мой метод не имеет задержки включения и выключения, а срабатывает сразу по первому импульсу. Ещё можно подумать, где будет меньше ячеек занято... Да срабатывает по первому же фронту ЛЮБОЙ помехи. И не подавляет ее. А для счетчика задержка на 3-5 тактов 10МГц - значения не имеет. А вот лишняя "просечка" в сигнале - это вполне может быть. Для проверки включите UART с тактовой 1:1 и 1:16, погоняйте файлы в сотни килобайт, а потом порассуждаем о том что и как... Я не претендую на всезнайство... Просто уже "нагулялся по граблям", вот и рассказываю как этого избежать. А что касается - где ячеек меньше - так сопоставьте разницу в цене, если она будет, и неделю оплаты Вашего труда, ну, или выкинутые неправильно работающие платы из первой партии приборов. Поэтому и написал "патронов не жалеть". Практика показывает, что это самый дешевый способ разработки. Удачи Вам господа!
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Apr 6 2006, 07:35
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
Цитата(iosifk @ Apr 6 2006, 12:48)  Цитата(Krys @ Apr 6 2006, 06:44)  Например, мой метод не имеет задержки включения и выключения, а срабатывает сразу по первому импульсу. Ещё можно подумать, где будет меньше ячеек занято... Да срабатывает по первому же фронту ЛЮБОЙ помехи. И не подавляет ее. Для проверки включите UART с тактовой 1:1 и 1:16, погоняйте файлы в сотни килобайт Какие помехи? Мы говорим о конкретной задаче, о стыковке оптопары с входом ПЛИС, а не о помехоустойчивой передаче данных по длинным линиям; говорим о конкретном явлении, и явление это не наведение помех из эфира на длинную линию передачи, а явление "дребезга". И для дребезга мой метод подходит на 100% и имеет описанные ранее ОБЪЕКТИВНЫЕ и НЕОСПОРИМЫЕ преимущества перед более универсальным, описанным Вами. Преимущества эти имеют место только в данном конкретном случае - борбы с дребезгом. Но имеют место. Неужели не известна истина, что более универсальные решения не всегда полностью оптимальны для кокнретной задачи?... Цитата(iosifk @ Apr 6 2006, 12:48)  А вот лишняя "просечка" в сигнале - это вполне может быть. Если оптопара находится близко ко входу ПЛИС, то никаких просечек при грамотном исполнении быть не должно. Да, есть шум, но он слабый, и, чтобы он кардинально повлиял на воспринятый входным буфером ПЛИС сигнал так, как будто это сигнал высокой частоты, необходимо "подвести" постоянный уровень до порога переключения входа ПЛИС. А если этот постоянный уровень уже подведён, значит, сигнал с выхода оптопары (читай: сигнал с кнопки при "дребезге") уже "собирается" переходить в другое состояние (по аналогии: контакты кнопки "собираются" переходить в противоположное положение). Цитата(iosifk @ Apr 6 2006, 12:48)  А для счетчика задержка на 3-5 тактов 10МГц - значения не имеет. Совершенно не факт. Формально, можно найти такие задачи, в которых дорога каждая микросекунда, может, где-то требуется принять решение как можно быстрее. Почему бы и не воспользоваться в таком случае данным достоинством моего метода. То, что мой метод имеет меньшую по сравнению с Вашим методом задержку (в условии отсутствия длинных линий между оптопарой и входом ПЛИС, отсутствия помех, но при наличии "дребезга") - это объективный факт, и с ним спорить бесполезно. Цитата(iosifk @ Apr 6 2006, 12:48)  Я не претендую на всезнайство... Просто уже "нагулялся по граблям", вот и рассказываю как этого избежать. ... предварительно с высока своего опыта всех негативно оценив... Цитата(iosifk @ Apr 6 2006, 12:48)  А что касается - где ячеек меньше - так сопоставьте разницу в цене, если она будет, и неделю оплаты Вашего труда, ну, или выкинутые неправильно работающие платы из первой партии приборов. Есть объективный факт, что у моего метода ячеек меньше (если меньше), но Вы спорите не с этим, а с тем, что этот параметр неважен. А между тем, это ещё одно ОБЪЕКТИВНОЕ и НЕОСПОРИМОЕ достоинство (если оно есть - надо проверять) Если сравниваются 2 метода, решающих одну и ту же задачу (конкретную! - подавление "дребезга", а не передача данных по длинным линиям в условиях помех), и у первого из них есть для данного случая 2 достоинства, а у второго - лишь универсальность и мифическая надёжность в условиях обобщённой задачи (а не конкретной!), то, мягко говоря, неверно называть первый метод неправильным.
|
|
|
|
|
Apr 6 2006, 08:13
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
2 Krys Вот что Вы пишете: "Если сравниваются 2 метода, решающих одну и ту же задачу (конкретную! - подавление "дребезга", а не передача данных по длинным линиям в условиях помех), и у первого из них есть для данного случая 2 достоинства, а у второго - лишь универсальность и мифическая надёжность в условиях обобщённой задачи (а не конкретной!), то, мягко говоря, неверно называть первый метод неправильным."
А вот что было сказано: "На выходе ПЛИС наблюдаем дрожание сигнала и различные частоты но не те что нужно, зависит от амплитуды входного сигнала, если подать меандр то все нормально."
И именно поэтому я акцентировал внимание на том, что устранять дребезг надо не только между оптроном и ПЛИС, но еще необходимо учитывать и входной сигнал. То, что Вы пишете об Устранении дребезга - верно для кнопки. Верно, что ячеек это будет занимать меньше. И здесь спорить бесполезно и не нужно. Речь на самом деле о другом. Речь идет о стиле разработок. То, что я предлагаю, возможно, да возможно в конкретном этом случае будет избыточно. Но оно будет работать ВСЕГДА и вне зависимости от того, хороший входной сигнал или плохой. То, что предлагаете Вы - действительно уберет дребезг от оптрона, НО НЕ уберет дребезг из входного сигнала.
Любая разработка - это риск. Ошибки в ТЗ, в схеме, в конструкции, задержки с комплектацией и тд. И все это Вы наверное знаете. Задача разработчика - уменьшить риски. Если Вы заложили избыточность, но сделали проект в срок - Вы можете лишиться только части прибыли из за более дорогих комплектующих. Но если Вы где-то решили "сильно" экономить и закладывать решения, "которые не всегда", то возможно весь проект не заработает. Но только Вы об этом узнаете в тот самый злополучный последний день. И вот представьте, что проект НЕ работает. Фирма - банкрот! Как Вам такая альтернатива? Поэтому всегда можно и нужно для первого изделия заложить избыточность. Проверить, что работает все остальное, а я уверен, что проблема с оптроном не самая сложная. И уже потом, переходя к серии, можно и нужно оптимизировать проект. Но, повторяю, проект при этом УЖЕ будет работать и у Вас будет финансирование для продолжения проекта. Вот об этом я стараюсь написать. Надо уменьшать риск! Надо применять проверенные решения, которые помогут избежать каких - либо проблем. Экономить вентили - это очень неправильно. А что касается моего опыта, то к моему сожалению я уже прошел через описанную здесь ситуацию, когда руководитель проекта мне заявлял: "Здесь у нас инофирма и Ваш советский опыт мне не нужен...". Вот поэтому и предостерегаю... Поэтоу постарайтесь меня понять, и не обижайтесь. Спасибо всем и удачи!
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Apr 6 2006, 08:18
|
Гуру
     
Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804

|
Исходя из своего советского опыта В очередной раз убеждаюсь, "цифровая " фильтрация любого вида - это от лукавого. Потому что все эти схемы работают по фронту внутреннего клока. Если длительность помехи меньше периода этого клока и эта длительность не попадает на фронт этого клока, изменения счетчика не происходит на провоположное (Что была помеха, что нет мы не знаем), а если эта длительность помехи постоянно больше периода клока, то можно просто зависнуть в счете то в плюс, то в минус, не прийти к граничному значению и значит потерять входной сигнал большой длительности. (схема некорректно работает при удержании сигнала начальной установки) А ссылки на UART в данном случае тоже некорректны. (Если под 1:1 или 1:16 подразумевается отношение несущей UART частоты и внутренней системной). Ведь принцип приема по UART основан на детектировании стартового бита. Чем выше системная. тем ближе к середине стартового бита, тем меньше вероятность напороться на ошибку кадрирования. Здесь работает другой критерий надежности. Например как в микроконтроллерах эта мажоритарность. Что интересно, никто и не знает как это делалось например в электронике 60, (Экономили каждый вентиль. Что, хуже работало?) А вывод прост. Чистить надо линию. Следовать всем требованиям и рекомендациям по использованию тех же драйверов 232. В цифре наоборот ужесточать требования по приему. (Например в интервале от начала старта до его середины никаких единиц при отсчете внутренним клоком, иначе игнорировать посылку)
|
|
|
|
|
Apr 6 2006, 08:41
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(sazh @ Apr 6 2006, 12:18)  Исходя из своего советского опыта В очередной раз убеждаюсь, "цифровая " фильтрация любого вида - это от лукавого. Потому что все А ссылки на UART в данном случае тоже некорректны. (Если под 1:1 или 1:16 подразумевается отношение несущей UART частоты и внутренней системной).
А вывод прост. Чистить надо линию. Следовать всем требованиям и рекомендациям по использованию тех же драйверов 232. В цифре наоборот ужесточать требования по приему. (Например в интервале от начала старта до его середины никаких единиц при отсчете внутренним клоком, иначе игнорировать посылку) Пример с UARTом абсолютно корректный. При тактовой 1:1 из входного сигнала захватывается только один бит, соответствующий середине битового интервала входной частоты. При 1:16 захватываются 3 бита и производится мажоритирование. Таким образом производится некоторая фильтрация. Привязка асинхронного сигнала к синхронному - тоже вещь известная. Поскольку не известны реальные режимы работы разрабатываемого прибора, то копья ломать бесполезно. На этом я дискуссию здесь заканчиваю. Удачи!
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Apr 6 2006, 10:09
|
Частый гость
 
Группа: Свой
Сообщений: 160
Регистрация: 23-12-04
Из: Уфа
Пользователь №: 1 631

|
Цитата(sazh @ Apr 6 2006, 14:18)  Исходя из своего советского опыта В очередной раз убеждаюсь, "цифровая " фильтрация любого вида - это от лукавого. Неверный вывод. Цитата(sazh @ Apr 6 2006, 14:18)  Потому что все эти схемы работают по фронту внутреннего клока. Если длительность помехи меньше периода этого клока и эта длительность не попадает на фронт этого клока, изменения счетчика не происходит на провоположное (Что была помеха, что нет мы не знаем), Для того эта схема и сделана, чтобы устранять помехи, спектр которых лежит выше спектра основного сигнала. Цитата(sazh @ Apr 6 2006, 14:18)  а если эта длительность помехи постоянно больше периода клока, то можно просто зависнуть в счете то в плюс, то в минус, не прийти к граничному значению и значит потерять входной сигнал большой длительности. Если длительность импульсов помехи превышает половину длительности битового интервала, то схема естественно работать не будет, т.к. вообще не остается критерия для отличия помехи от сигнала. Эта простенькая схемка для устранения коротких импульсных помех, она эквивалентна RС-фильтру, за которым стоит тригер Шмидта. Цитата(sazh @ Apr 6 2006, 14:18)  (схема некорректно работает при удержании сигнала начальной установки) Это Вы о чем? Если о сигнале nInit, то схема вообще не работает, пока сигнал Init не снимется. Это же сигнал начального сброса, в реальной схеме он вообще не используется, он нужен только для моделирования. Цитата(sazh @ Apr 6 2006, 14:18)  Что интересно, никто и не знает как это делалось например в электронике 60, (Экономили каждый вентиль. Что, хуже работало?) Я знаю как это делалось в "Электронике 60". Сначала, в этой машине вообще не было стыка UART, а вывод шел на печатающее устройство "Консул". Плату стыка ИРПС (UART c токовой петлей) мы делали сами, на обычной логике 155-й серии, там конечно мажоритарить было лень, но тактовую все равно использовали 1:16. Потом стали делать эти платы на 1002ХЛ1(или 1002ХЛ2 не помню), эта микруха уже имела встроенный мажоритар, правда в этом режиме требовала тактовую в четыре раза выше, т.е. 1:64. Насчет того что "хуже работало?": Если с точки зрения пользователя работающего на дисплее, подключенном по стыку ИРПС на скорости 9600, то работало не хуже. А вот когда этот стык использовался на растояние около 800 метров на скорости 19200 для обмена между машинами, то достоверность передачи с мажоритаром была выше.
|
|
|
|
|
Apr 10 2006, 11:17
|
Группа: Новичок
Сообщений: 4
Регистрация: 9-03-06
Из: Novgorod the Great
Пользователь №: 15 082

|
Люди !!! Инженеры !!!! Не ссорьтесь ! каждое мнение имеет право на существование... Меня больше интересовала именно работа с ПЛИС EPM7160: -Ограничения на фронт сигнала ? -И ваша рекомендация по применению триггера Шмитта (Обязательно ли в таких системах ставить его на входе, т.е. формировать "нормальные" фронты или нет ? ) А Оптопара дает фронт 75 нс, при наблюдении на осциллографе фронта более 100 нс, начинались ложные переключения. А входной сигнал частотой 10 КГц проходит по витой паре, l=300м. Фронт сигнала (По ТЗ) не более 100 нс. (100н +75н уже больше 100н) Вот отсюда и был вопрос. С уважением, Руслан.
|
|
|
|
|
Apr 10 2006, 13:34
|
Знающий
   
Группа: Свой
Сообщений: 859
Регистрация: 7-04-05
Из: Санкт-Петербург
Пользователь №: 3 943

|
Если отвечать конкретно по теме: 1. Насколько я помню, ограничение на фронт 40 нс. Это написано либо в даташите, либо в knowledge base на сайте альтеры. 2. Если у Вас есть плавный аналоговый сигнал, то надо ставить тр.Шмидта. Имхо обязательно - я на считаю правильным убирать пилу на выходе цифровым фильтром. 3. Если у Вас в канале есть помехи, амплитуда которых такова, что может перебросить логический уровень - ставьте цифр. фильтр, как и рекомендовали. Советую обратить внимание также на драйвера, которые работают на 300 метров. Я на такую дальность не делал, максимум был несколько десятков метров -ставил драйвера rs485 и оптроны - марки на помню.
--------------------
"Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается." (с) С.Лем
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|