-
Leka
-
-
Не в сети
-
Живу я здесь
-
-
Сообщений: 635
-
Спасибо получено: 54
-
-
|
Ложного срабатывания нет, есть только неопределенность момента переключения - может быть, а может и не быть задержки переключения на 1 период опроса.
Метод из первого листинга устойчивее против коротких импульсных помех (от механического удара, например), если длительность помехи много короче периода опроса. А в методе с "мертвым временем" всегда будет ложное переключение туда-обратно, независимо от параметров задержек.
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от Leka.
|
-
Chaosorg
-
-
Не в сети
-
Завсегдатай
-
-
Сообщений: 312
-
Спасибо получено: 18
-
-
-
|
Leka пишет: Ложного срабатывания нет, есть только неопределенность момента переключения - может быть, а может и не быть задержки переключения на 1 период опроса.
Точно. Поэтому я в осциллографе, вернее в частотомере, показывающем длительность площадок от этого отказался.
Leka пишет: Метод из первого листинга устойчивее против коротких импульсных помех (от механического удара, например), если длительность помехи много короче периода опроса. А в методе с "мертвым временем" всегда будет ложное переключение туда-обратно, независимо от параметров задержек.
Получается поиск компромиссов. А какой недостаток все-таки у имитации гистерезиса? Т.е. у метода с подсчетом длительности площадок. Или даже его можно заменить на более наглядный (хотя по сути тоже самое):
Делаем переменную размером несколько бит, чтобы могла принимать некий диапазон значений
если входной сигнал 1 и переменная не достигла верхнего предела, то увеличиваем ее на 1
если входной сигнал 0, а переменная больше 0, то уменьшаем ее на 1
выходной сигнал переключаем при пересечении значением этой переменной некоторых несовпадающих границ, одна при почти максимальном значении включает 1, другое почти нулевое значение включает 0
P.S. это наверное фильтр какой-то в паре с компараторами и RS триггером, грамотно говоря?
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Leka
-
-
Не в сети
-
Живу я здесь
-
-
Сообщений: 635
-
Спасибо получено: 54
-
-
|
Так без ложных задержек: module encoder_delay (CLK, A_in, B_in, A_out, B_out);
input CLK; // Вход тактовой частоты 100 МГц
input A_in, B_in; // Входы каналов квадратурного энкодера
output reg A_out, B_out; // Выходы каналов обработчика энкодера
localparam Fclk = 100000; // тактовая частота 100000 KГц
localparam ms = 1; // задержка 1 мс
localparam Time = Fclk * ms; // считаем делитель
reg [19:0] q; // Регистр счётчика задержки
always @(posedge CLK) begin
if( q != 0 )
q <= q - 1;
else if( (A_out != A_in) | (B_out != B_in) )
q <= Time;
if( q == 1 ) begin
A_out <= A_in; // просто копируем значение из входа на выход
B_out <= B_in;
end
end
endmodule
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от Leka.
|
-
Leka
-
-
Не в сети
-
Живу я здесь
-
-
Сообщений: 635
-
Спасибо получено: 54
-
-
|
Chaosorg пишет: метод... с подсчетом длительности площадок...
Сходу не сказать, насколько оправдано, и какие характеристики получатся.
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
R2R
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 7
-
Спасибо получено: 0
-
-
|
Доброго времени суток!
Недавно начал изучать verilog и возник такой вопрос: во многих обучающих материалах в примерах программ встречаю оператор "<=". Как я понял, это оператор присваивания, аналогичный "=". Однако "<=" также обозначает "меньше или равно". Так почему же "<=" используют чаще, чем "=" и как понять, когда это будет оператор сравнения, а когда - присваивания?
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Leka
-
-
Не в сети
-
Живу я здесь
-
-
Сообщений: 635
-
Спасибо получено: 54
-
-
|
R2R пишет: почему же "<=" используют чаще, чем "=" ?
По той-же причине, что и: "кошка, раз усевшаяся на горячую плиту, больше не будет садиться на горячую плиту. И на холодную тоже."
С блокирующим присваиванием "=" связано много граблей.
Про отличия между "=" и "<=" тут, например: marsohod.org/11-blog/85-veriloglesson5
и как понять, когда это будет оператор сравнения, а когда - присваивания?
Если "<=" синтаксически можно заменить на "=", то это оператор присваивания, иначе - сравнения.
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
R2R
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 7
-
Спасибо получено: 0
-
-
|
Есть ли какие-нибудь ограничения на длительность фронта или частоты сигнала при использовании posedge/negedge? В приведенном ниже коде генерируется 10 кГц ШИМ сигнал с меняющимся коэффициентом заполнения, подается на вывод LCD_RW (LCD_RS и LCD_RW соединены), далее по положительному фронту меняется уровень сигнала на LCD_EN. На практике же на LCD_EN вместо 5 кГц меандра получаются короткие пики.
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Leka
-
-
Не в сети
-
Живу я здесь
-
-
Сообщений: 635
-
Спасибо получено: 54
-
-
|
На частоты ограничений нет.
Отсутствие отражений гарантировано? Если просто длинным проводом замкнуть, из-за отражений м/б дополнительные ложные срабатывания, тогда либо провод укорачивать, либо последовательно резистор у источника (для таких частот можно ~~1кОм).
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
R2R
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 7
-
Спасибо получено: 0
-
-
|
Провод там короткий - около 5 см, но дело не в нем. Я ради интереса менял код так, чтобы вместо 10 кГц ШИМа генерировался 25 МГц меандр - в этом случае все работало. always @ (posedge CLK) LCD_RS <= ~ LCD_RS;
always @ (posedge LCD_RW) LCD_EN <= ~ LCD_EN;
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от R2R.
|
-
Leka
-
-
Не в сети
-
Живу я здесь
-
-
Сообщений: 635
-
Спасибо получено: 54
-
-
|
У меня сравнительно недавно был случай, когда промахнулся с подключениями пинов - один из входных пинов оказался никуда не подключенным, и проявилось это как раз на НЧ сигналах. На ВЧ все передавалось через паразитные емкости, а на НЧ уже начинали влиять токи утечки, подтягивая пин к одному из уровней.
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
Время создания страницы: 0.137 секунд