МАРСОХОД

Open Source Hardware Project

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

ТЕМА: Переключение светодиодов

Переключение светодиодов 3 года 3 мес. назад #4514

  • KPN
  • KPN аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 10
  • Спасибо получено: 0
Доброго времени суток! как сделать чтобы по нажатии на кнопку загорался другой светодиод, пытаюсь через кейс сделать,почему-то переключаются, но не совсем так как нужно, а должно быть так: сначала не горит не один из светодиодов, жмем на кнопку загорается первый, еще раз жмем загорается второй, первый при этом тухнет, и т.д.
в чём ошибка?
module LED(
	input clk,
	input KEY_0, KEY_1,
	output reg[9:0] LEDS = 10'b0000_0000_00
);

reg [3:0] set = 4'b00_00;

reg left;
reg right;
always@ (posedge clk)
begin
left <= KEY_0;
right <= KEY_1;
if(KEY_0 == 1'b0 && left == 1'b1)
	begin
		set <= set + 1'b1;
	end
	
	else
		if(KEY_1 == 1'b0 && right == 1'b1)
		begin
			set <= set - 1'b1;
		end
end

always@*
begin
case(set)
		
	4'b00_01: LEDS [0] = 1'b1;
	4'b00_10: LEDS [1] = 1'b1;
	4'b00_11: LEDS [2] = 1'b1;
	4'b01_00: LEDS [3] = 1'b1;
	4'b01_01: LEDS [4] = 1'b1;
	4'b01_10: LEDS [5] = 1'b1;
	4'b01_11: LEDS [6] = 1'b1;
	4'b10_00: LEDS [7] = 1'b1;
	4'b10_01: LEDS [8] = 1'b1;
	4'b10_10: LEDS [9] = 1'b1;
	
	default: LEDS <= 10'b0000_0000_00;
	
endcase
end

endmodule

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

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

Переключение светодиодов 3 года 3 мес. назад #4515

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 631
  • Спасибо получено: 51
Ошибки в коде не вижу, может, дребезг контактов ?

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

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

Переключение светодиодов 3 года 3 мес. назад #4516

Попробуйте так...
case(set)
		
	4'b00_01: LEDS <= 10'b0000000001;
	4'b00_10: LEDS <= 10'b0000000010;
	4'b00_11: LEDS <= 10'b0000000100;
                    ....

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

Переключение светодиодов 3 года 3 мес. назад #4517

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 631
  • Спасибо получено: 51
Да, ошибка в исходном коде - описывает защелку, а не декодер. Для декодера можно сбрасывать LEDS:
always@*
begin
LEDS = 10'b0;
case(set)
...

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

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

Переключение светодиодов 3 года 3 мес. назад #4518

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 631
  • Спасибо получено: 51
always@* begin
	LEDS = 0;
	LEDS[set-1] = 1;
end

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

Последнее редактирование: от Leka.
  • Страница:
  • 1
Время создания страницы: 0.137 секунд

facebook  GitHub  YouTube  Twitter
Вы здесь: Начало Forum Наш форум Языки программирования Переключение светодиодов