|
Устройство мигания светодиодов (VHDL) |
|
|
|
Jul 13 2017, 11:52
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 13-07-17
Пользователь №: 98 133

|
Устройство моргания 4-мя светодиодами.По сути,программа очень простая.Но у меня в итоге светодиоды "бегают" (т.е. загорелся первый,потом сразу же следующий с частотой 1 Гц).А мне нужно чтобы диод загорелся,потух,а только потом,через 1 с, следующий. Заранее благодарен. вот реализация и временная диаграмма: Код library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all;
entity LED is port( CLK : in std_logic; L_D : out std_logic_vector(3 downto 0)); -- поправил у меня 4 светодиода подключены end LED;
architecture A_LED of LED is signal counter : std_logic_vector(20 downto 0):= (others => '0'); signal LED_temp : std_logic_vector(3 downto 0) := (0 => '1',others =>'0'); -- поправил на 4 светодиода signal res : std_logic := '0'; begin count : process(CLK,res) begin if(res = '1') then counter <= (others => '0'); elsif(rising_edge(CLK)) then counter <= counter +1; end if; end process;
L : process(counter) begin if(counter = 2000000) then res <= '1'; LED_temp <= LED_temp(2 downto 0) & LED_temp(3); -- вращаю выходной вектор по кругу налево, постоянно смещая на 1 разряд else res <= '0'; end if; end process;
L_D <= led_temp; -- выдаю информацию из регистров в порт
end A_LED; На выходе получаю  а надо:
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
|
Jul 14 2017, 09:16
|
Частый гость
 
Группа: Участник
Сообщений: 135
Регистрация: 19-10-13
Пользователь №: 78 795

|
Цитата(Flip-fl0p @ Jul 14 2017, 11:44)  А есть ли особый смысл в этих строчках ? Код else NULL; end if; Нет, просто привычка, чтобы задуматься, а не должно ли что-то по else зануляться, например. Несколько раз обжигался на том, что пропускал такие моменты. Цитата(lyzifer @ Jul 14 2017, 11:57)  дело в том,что я работаю в Vivado и ISE.поэтому,к сожалению, принципиально важно работать на VHDL. Да,это задание можно выполнить и с меньшим кол-ом програмного кода. но спасибо за интерес))) Обе среды же прекрасно Верилог поддерживают. Цитата(AVR @ Jul 14 2017, 11:08)  Не буду назойливым, просто меня шокировал объем кода для такой-то простой задачи... На VHDL тоже можно написать компактнее, а на Верилоге даже длиннее. Суть не в языке описания, а в логике работы. Выше предложили, например, красивый вариант с удвоенным сдвиговым регистром и управлением диодиками каждым вторым битом - его еще компактнее можно сделать. Но у автора цель, как я понимаю, разобраться в логике работы, а не в том, чтобы сэкономить пару килобайт на жестком диске)
|
|
|
|
|
Jul 14 2017, 09:59
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 13-07-17
Пользователь №: 98 133

|
Цитата(Tausinov @ Jul 14 2017, 12:16)  Обе среды же прекрасно Верилог поддерживают.
На VHDL тоже можно написать компактнее, а на Верилоге даже длиннее. Суть не в языке описания, а в логике работы. Выше предложили, например, красивый вариант с удвоенным сдвиговым регистром и управлением диодиками каждым вторым битом - его еще компактнее можно сделать. Но у автора цель, как я понимаю, разобраться в логике работы, а не в том, чтобы сэкономить пару килобайт на жестком диске) Я И НЕ ЗНАЛ. Ну да.прост надо уметь оптимизировать код (чего я явно не умею)
|
|
|
|
|
Jul 14 2017, 10:36
|
Частый гость
 
Группа: Участник
Сообщений: 135
Регистрация: 19-10-13
Пользователь №: 78 795

|
Цитата(lyzifer @ Jul 14 2017, 12:59)  Я И НЕ ЗНАЛ. Ну да.прост надо уметь оптимизировать код (чего я явно не умею) Оптимизация все-таки подразумевает уменьшение не кол-ва кода, а кол-ва ресурсов, в которые выльется в итоге этот самый код, само собой с учетом требуемых частот. А код, имхо, в первую очередь должен быть понятным и удобочитаемым. На том же Си, например, можно сделать смену значений в двух переменных так: Код a ^= b ^= a ^= b; Но кто-то со стороны, пробегая ваш код глазами, вряд ли сразу поймет, что тут происходит.
|
|
|
|
Сообщений в этой теме
lyzifer Устройство мигания светодиодов (VHDL) Jul 13 2017, 11:52 iosifk Цитата(lyzifer @ Jul 13 2017, 14:52) Устр... Jul 13 2017, 11:58 lyzifer Цитата(iosifk @ Jul 13 2017, 14:58) Это з... Jul 13 2017, 12:02 Tausinov Ввести дополнительный сигнал
signal phase : std_lo... Jul 13 2017, 13:51 lyzifer Цитата(Tausinov @ Jul 13 2017, 16:51) Вве... Jul 13 2017, 14:32  Tausinov Цитата(lyzifer @ Jul 13 2017, 17:32) Блин... Jul 13 2017, 15:18   lyzifer Цитата(Tausinov @ Jul 13 2017, 18:18)
Вс... Jul 13 2017, 15:32 Tausinov Дизайн:
Кодlibrary ieee;
use ieee.std_logic_1164... Jul 13 2017, 15:58 lyzifer Цитата(Tausinov @ Jul 13 2017, 18:58)
о... Jul 13 2017, 18:23  Maverick lyzifer, это не программа, а описание цифровой схе... Jul 13 2017, 18:37 Stewart Little Цитата(lyzifer @ Jul 13 2017, 14:52) А мн... Jul 13 2017, 16:17 Tausinov Цитата(Stewart Little @ Jul 13 2017, 19:1... Jul 13 2017, 16:26  lyzifer Цитата(Tausinov @ Jul 13 2017, 19:26)
ЕЕ... Jul 14 2017, 07:41   AVR Цитата(lyzifer @ Jul 14 2017, 10:41) ЕЕЕЕ... Jul 14 2017, 08:08    lyzifer Цитата(AVR @ Jul 14 2017, 11:08) Будет ли... Jul 14 2017, 08:57 AVR Вопрос автору темы: обязательно ли VHDL? Видя это ... Jul 14 2017, 06:24    lyzifer Цитата(Tausinov @ Jul 14 2017, 13:36)
Ва... Jul 17 2017, 12:08     Tausinov Что-то странное вы пытаетесь сделать, если честно.... Jul 17 2017, 12:42      lyzifer Цитата(Tausinov @ Jul 17 2017, 15:42) Что... Jul 17 2017, 12:45      lyzifer Цитата(Tausinov @ Jul 17 2017, 15:42) Все... Jul 17 2017, 14:20   iosifk Цитата(lyzifer @ Jul 14 2017, 12:59) Я И ... Jul 14 2017, 10:40    Огурцов Цитата(iosifk @ Jul 14 2017, 10:40) цель ... Jul 15 2017, 04:20     iosifk Цитата(Огурцов @ Jul 15 2017, 07:20) цель... Jul 15 2017, 14:11  sonycman Цитата(Tausinov @ Jul 14 2017, 13:16) На ... Jul 14 2017, 10:45   AVR Цитата(sonycman @ Jul 14 2017, 13:45) Не ... Jul 14 2017, 10:47    Maverick Цитата(AVR @ Jul 14 2017, 13:47) Я просто... Jul 16 2017, 12:04   yoggy Цитата(sonycman @ Jul 14 2017, 13:45) ...... Jul 15 2017, 02:45 Tausinov Как-то так, например.
Тестбенч :
Кодlibrary ieee;
... Jul 17 2017, 14:59 lyzifer Цитата(Tausinov @ Jul 17 2017, 17:59)
Бл... Jul 18 2017, 13:52  iosifk Цитата(lyzifer @ Jul 18 2017, 16:52) Блин... Jul 18 2017, 13:59   lyzifer Цитата(iosifk @ Jul 18 2017, 16:59) Два р... Jul 18 2017, 14:04 Tausinov Один из диодов в начале горит, т.к. регистр инициа... Jul 18 2017, 15:53 lyzifer Цитата(Tausinov @ Jul 18 2017, 18:53) Оди... Jul 18 2017, 18:50 AVR Я не выдержал, моё решение (сам модуль примерно 25... Jul 18 2017, 19:56 lyzifer Цитата(AVR @ Jul 18 2017, 22:56) Я не выд... Jul 19 2017, 07:08 Tausinov Так осталось просто тоже самое переписать на VHDL.... Jul 19 2017, 08:39 lyzifer Цитата(Tausinov @ Jul 19 2017, 11:39) Так... Jul 19 2017, 08:45 Tausinov Кодlibrary ieee;
use ieee.std_logic_1164.all;
... Jul 19 2017, 09:31
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|