Накопительный бегущий огонь

Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить
ololoshka
Родился
Сообщения: 1
Зарегистрирован: Чт мар 10, 2016 13:51:40

Накопительный бегущий огонь

Сообщение ololoshka »

Здравствуйте!

Было дано задание: создать бегущий огонек на базе ПЛИС Cyclone IV. Собственно, благодаря мануалам, удалось выполнить задание. Код такой:

Код: Выделить всё

module LED
(
	input CLK,
	output [7:0] LED_Out,
	input RST
);

	reg [8:0] count = 8'b1;
	reg [24:0] ctr = 24'b0;
	always @(posedge CLK )
		begin
		
			if (RST == 0)
			begin
				ctr = 24'b0;
			end
			ctr = ctr + 1;
			
			if(ctr == 0)
			begin
				count[8:0] <= {count[0], count[8:1]};
			end

		end

	assign LED_Out = count [7:0];
endmodule
Вопрос в другом: как сделать бегущий огонь с накоплением? Нужно чтобы также бежал светодиод, доходил до последнего светодиода ленты и оставался гореть. Затем новый огонек. И повторяться это должно до момента, пока все огни не зажгутся. После этого все начинается заново.
Как я понял, нужно оперировать с count, но так и не смог разобраться в том, как реализовать накопление. Прошу помощи.
Спасибо!
Реклама
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: Накопительный бегущий огонь

Сообщение Meteor »

Можно пойти "влоб". Подготовительные операции:
1) Выписываете все возможные состояния столбиком.
00000000
00000001
00000010
....
11111110
11111111
2) Подсчитываете их количество, это число будет числом состояний счетчика.
Собственно синтез
3) Описывается счетчик на полученное число состояний (максимальное значение будет на 1 меньше числа строк)
4) По показаниям счетчика формируется блок сравнения в условиях которого прописывается код включения светодиодов.
5) работа проверяется либо в железе, либо в симуляторе.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Реклама
Ответить

Вернуться в «ПЛИС»