-
goldfish75
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 19
-
Спасибо получено: 0
-
-
|
создание бегущего огонька на светодиодах Марсохода 2
этот код не работает
module led_blink(
input wire clock,
output reg [3:0] led = 4'b1
);
reg [28:0]clock_count = 0;
always @(posedge clock)
begin
if(clock_count == 0)
begin
led[3:1] <= led[2:0];
led[0] <= led[3];
clock_count <= 100000000;
end
else
clock_count <= clock_count - 1'b1;
end
endmodule
похоже что компилятор оптимизирует и выбрасывает всё. Логических элементов - 0. Подскажите пожалуйста где ошибка
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
nfader
-
-
Не в сети
-
Осваиваюсь на форуме
-
-
Сообщений: 37
-
Спасибо получено: 14
-
-
|
@goldfish75
А кто зажжет светодиод в начале? ;)
led[0] <= led[3] | ( led[3:0] == 0 );
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от nfader.
|
-
goldfish75
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 19
-
Спасибо получено: 0
-
-
|
Не помогло :(
может не туда вставил строку? Вставил после always
Я думал так: придёт clock, проверится условие (в начале clock_count = 0), передвинется содержимое led (оно в начале = 1) и я в любом случае увижу что один из диодов светится так-как в начале output reg [3:0] led = 4'b1
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
nfader
-
-
Не в сети
-
Осваиваюсь на форуме
-
-
Сообщений: 37
-
Спасибо получено: 14
-
-
|
goldfish75 пишет: Не помогло :(
..и я в любом случае увижу что один из диодов светится так-как в начале output reg [3:0] led = 4'b1
Это справедливо только для симуляции и не окажет влияния на начальное состояние схемы. Начальное состояние по умолчанию будет 0 для данного проекта и ПЛИС.
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от nfader.
|
-
goldfish75
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 19
-
Спасибо получено: 0
-
-
|
спасибо, заработало :)
тоесть led[0] <= led[3] | ( led[3:0] == 0 );
это короткая запись if(led[3:0] == 0)
led[0] <= 1'b1;
else
led[0] <= led[3];
мы всегда будем делать лишнюю проверку и тратить на неё логические элементы
можно как то по другому задать начальное значение регистру led?
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
nfader
-
-
Не в сети
-
Осваиваюсь на форуме
-
-
Сообщений: 37
-
Спасибо получено: 14
-
-
|
goldfish75 пишет: ...можно как то по другому задать начальное значение регистру led?
Асинхронные очистка/установка по внешнему сигналу сброса.
Можно также задать начальное состояние регистров в Assignment editor, но это уже шаманство альтеровское :)
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от nfader.
|
-
goldfish75
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 19
-
Спасибо получено: 0
-
-
|
Подскажите где узнать тайминги для видеорежима 320х240?
Поиском нашел какие то данные но они разнятся друг от друга, похоже что у разных производителей маленьких LCD они разные, а мне нужно для обычного монитора с VGA входом.
И ещё один вопрос: как инициализировать массив в Verilog? Хочу создать lookup таблицу содержащую значения цветов RGB
reg [15:0] color [0:7]; создание таблицы из 8 элементов
color[0] = 16'b0000011111100000; здесь компилятор ругается Error (10170): Verilog HDL syntax error at hvsync.v(50) near text "="; expecting ".", or an identifier
не пойму что не так
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
umarsohod
-
-
Не в сети
-
Администратор
-
-
Сообщений: 816
-
Спасибо получено: 168
-
-
|
goldfish75 пишет: Подскажите где узнать тайминги для видеорежима 320х240?
У "VGA" нет такого режма. Берите 640х480 и увеличивайте размер точки в четыре раза (в два по горизонтали и в два по вертикали).
|
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
Время создания страницы: 0.145 секунд