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

|
Добрый день ! Подскажите в чем может быть дело ? ПЛИС MAX EPM 7160STC 100-6 используется в качестве делителя частоы, внутри счетчик на ЛПМ функции. Тактовая частота 10 Мгц. Входная частота 10 кГц. Входной сигнал синус проходит через оптопару потом идет в виде меандра в ПЛИС На выходе ПЛИС наблюдаем дрожание сигнала и различные частоты но не те что нужно, зависит от амплитуды входного сигнала, если подать меандр то все нормально. Какие существуют ограничения на фронты входных сигналов ? Как можно выйти из ситуации без использования триггера шмита?
|
|
|
|
|
 |
Ответов
|
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
|
|
|
|
Сообщений в этой теме
vikrus Фронты входного сигнала в EPM7160STC-6 Mar 30 2006, 08:28 Mad Makc Как мне кажется, выша проблема в том,что вы фронт ... Mar 30 2006, 14:44 Gate Ставьте оптопару с цифровым выходом - дрожания не ... Mar 30 2006, 14:55 vikrus а подскажите тогда тип оптопары ?
сейчас стоит HCP... Apr 4 2006, 12:56 AlHakim посмотри HCPL2231 - выход тр. Шм, может быть подой... Apr 4 2006, 17:34 Alex11 Поскольку там оптрон - транзистор с открытым колле... Apr 4 2006, 21:18 Iouri можно еще попробовать сделать тригер шмита внутри ... Apr 5 2006, 00:06 Krys нафига вам "внешний" триггер Шмидта?
Это... Apr 5 2006, 02:30  iosifk Цитата(Shamil @ Apr 5 2006, 12:03) Цитата... Apr 5 2006, 08:28 Krys Цитата(iosifk @ Apr 5 2006, 12:14) Скажу ... Apr 6 2006, 02:44  iosifk Цитата(Krys @ Apr 6 2006, 06:44) Цитата(i... Apr 6 2006, 05:48   Krys Цитата(iosifk @ Apr 6 2006, 12:48) Цитата... Apr 6 2006, 07:35    iosifk 2 Krys Вот что Вы пишете:
"Если сравниваются ... Apr 6 2006, 08:13 sazh Исходя из своего советского опыта
В очередной раз ... Apr 6 2006, 08:18 iosifk Цитата(sazh @ Apr 6 2006, 12:18) Исходя и... Apr 6 2006, 08:41 Shamil Цитата(sazh @ Apr 6 2006, 14:18) Исходя и... Apr 6 2006, 10:09 sazh Все правильно. Чем дальше обсуждаем, тем больше ог... Apr 6 2006, 11:07 vikrus Люди !!! Инженеры !!!... Apr 10 2006, 11:17 Gate Если отвечать конкретно по теме:
1. Насколько я по... Apr 10 2006, 13:34
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|