Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

ТЕМА:

Вопросы по языку Verilog 10 года 7 мес. назад #5456

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
Ложного срабатывания нет, есть только неопределенность момента переключения - может быть, а может и не быть задержки переключения на 1 период опроса.

Метод из первого листинга устойчивее против коротких импульсных помех (от механического удара, например), если длительность помехи много короче периода опроса. А в методе с "мертвым временем" всегда будет ложное переключение туда-обратно, независимо от параметров задержек.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Вопросы по языку Verilog 10 года 7 мес. назад #5458

Leka пишет: Ложного срабатывания нет, есть только неопределенность момента переключения - может быть, а может и не быть задержки переключения на 1 период опроса.


Точно. Поэтому я в осциллографе, вернее в частотомере, показывающем длительность площадок от этого отказался.

Leka пишет: Метод из первого листинга устойчивее против коротких импульсных помех (от механического удара, например), если длительность помехи много короче периода опроса. А в методе с "мертвым временем" всегда будет ложное переключение туда-обратно, независимо от параметров задержек.


Получается поиск компромиссов. А какой недостаток все-таки у имитации гистерезиса? Т.е. у метода с подсчетом длительности площадок. Или даже его можно заменить на более наглядный (хотя по сути тоже самое):

Делаем переменную размером несколько бит, чтобы могла принимать некий диапазон значений

если входной сигнал 1 и переменная не достигла верхнего предела, то увеличиваем ее на 1
если входной сигнал 0, а переменная больше 0, то уменьшаем ее на 1

выходной сигнал переключаем при пересечении значением этой переменной некоторых несовпадающих границ, одна при почти максимальном значении включает 1, другое почти нулевое значение включает 0

P.S. это наверное фильтр какой-то в паре с компараторами и RS триггером, грамотно говоря?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Chaosorg.

Вопросы по языку Verilog 10 года 7 мес. назад #5461

  • Leka
  • 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.

Вопросы по языку Verilog 10 года 7 мес. назад #5463

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54

Chaosorg пишет: метод... с подсчетом длительности площадок...

Сходу не сказать, насколько оправдано, и какие характеристики получатся.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Вопросы по языку Verilog 10 года 5 мес. назад #5861

  • R2R
  • R2R аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 7
  • Спасибо получено: 0
Доброго времени суток!
Недавно начал изучать verilog и возник такой вопрос: во многих обучающих материалах в примерах программ встречаю оператор "<=". Как я понял, это оператор присваивания, аналогичный "=". Однако "<=" также обозначает "меньше или равно". Так почему же "<=" используют чаще, чем "=" и как понять, когда это будет оператор сравнения, а когда - присваивания?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Вопросы по языку Verilog 10 года 5 мес. назад #5862

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54

R2R пишет: почему же "<=" используют чаще, чем "=" ?

По той-же причине, что и: "кошка, раз усевшаяся на горячую плиту, больше не будет садиться на горячую плиту. И на холодную тоже."
С блокирующим присваиванием "=" связано много граблей.
Про отличия между "=" и "<=" тут, например: marsohod.org/11-blog/85-veriloglesson5

и как понять, когда это будет оператор сравнения, а когда - присваивания?

Если "<=" синтаксически можно заменить на "=", то это оператор присваивания, иначе - сравнения.
Спасибо сказали: R2R

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Вопросы по языку Verilog 10 года 5 мес. назад #5890

  • R2R
  • R2R аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 7
  • Спасибо получено: 0
Есть ли какие-нибудь ограничения на длительность фронта или частоты сигнала при использовании posedge/negedge? В приведенном ниже коде генерируется 10 кГц ШИМ сигнал с меняющимся коэффициентом заполнения, подается на вывод LCD_RW (LCD_RS и LCD_RW соединены), далее по положительному фронту меняется уровень сигнала на LCD_EN. На практике же на LCD_EN вместо 5 кГц меандра получаются короткие пики.

ВНИМАНИЕ: Спойлер!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Вопросы по языку Verilog 10 года 5 мес. назад #5892

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
На частоты ограничений нет.
Отсутствие отражений гарантировано? Если просто длинным проводом замкнуть, из-за отражений м/б дополнительные ложные срабатывания, тогда либо провод укорачивать, либо последовательно резистор у источника (для таких частот можно ~~1кОм).

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Вопросы по языку Verilog 10 года 5 мес. назад #5893

  • R2R
  • R2R аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 7
  • Спасибо получено: 0
Провод там короткий - около 5 см, но дело не в нем. Я ради интереса менял код так, чтобы вместо 10 кГц ШИМа генерировался 25 МГц меандр - в этом случае все работало.
always @ (posedge CLK) LCD_RS <= ~ LCD_RS;
always @ (posedge LCD_RW) LCD_EN <= ~ LCD_EN;

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от R2R.

Вопросы по языку Verilog 10 года 5 мес. назад #5894

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
У меня сравнительно недавно был случай, когда промахнулся с подключениями пинов - один из входных пинов оказался никуда не подключенным, и проявилось это как раз на НЧ сигналах. На ВЧ все передавалось через паразитные емкости, а на НЧ уже начинали влиять токи утечки, подтягивая пин к одному из уровней.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.137 секунд
Работает на Kunena форум