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

 
 
> Антидребезг контакта., Как сделать?
Iptash
сообщение Jul 22 2011, 17:59
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936



Здравствуйте все.
Есть входной сигнал с плохим фронтом, поэтому происходит дребезг. Написал антидребезговый блок, так в принципе работает не плохо,
но иногда при включении стопорится, потому что видимо dreb и ndreb не обнуляются и соответственно сигнал zap
который я дальше использую не работает. Алгоритм такой. Приходит внешний сигнал IN, включается счетчик dreb и
пока не досчитает до 1000 zap будет вкл. тем самым исключая ложное срабатывание zap .
Но код какой то кривой и задний фронт вроде не коректно отрабатывает. Подскажите пожалуйста как это лучше сделать или может подправите?
Код
always @ (posedge clock1) begin
  if(IN) begin // внешний сигнал
    if(dreb == 0) begin
     zap <= 1'b1; // сигнал после фильтрации, используется дальше
     ndreb <= 0;
    end
    
  end
  
   if(zap)
    dreb <= dreb + 1'b1;
  
   if(dreb > 1000) begin
    zap <= 1'b0;  
   end
  
   if(!IN) begin
    if(ndreb == 0) begin
     nzap <= 1'b1;
     dreb <= 0;
    end
    
    end
   if(nzap)
    ndreb <= ndreb + 1'b1;
   if(ndreb > 1000) begin
    nzap <= 1'b0;      
   end
end
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 18th June 2025 - 06:01
Рейтинг@Mail.ru


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