|
Устройство мигания светодиодов (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 13 2017, 15:58
|
Частый гость
 
Группа: Участник
Сообщений: 135
Регистрация: 19-10-13
Пользователь №: 78 795

|
Дизайн: Код library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all;
entity test_led is generic ( p_TD : time := 1 ns; p_CNT_LIM : integer := 32768 - 1 ); port ( clk : in std_logic; led : out std_logic_vector(3 downto 0) ); end test_led;
architecture rtl of test_led is signal div_cnt_u : unsigned(31 downto 0) := (others => '0');
signal phase : std_logic := '1'; signal led_reg : std_logic_vector(3 downto 0) := (0 => '1', others => '0'); begin
counter_control_p : process(clk) begin if (rising_edge(clk)) then if (div_cnt_u < p_CNT_LIM) then div_cnt_u <= div_cnt_u + 1 after p_TD; else div_cnt_u <= (others => '0'); end if; else NULL; end if; end process;
phase_control_p : process(clk) begin if (rising_edge(clk)) then if (div_cnt_u = p_CNT_LIM) then phase <= not(phase) after p_TD; else NULL; end if; else NULL; end if; end process; --phase_control_p
led_reg_control_p : process(clk) begin if (rising_edge(clk)) then if (div_cnt_u = p_CNT_LIM) then if (phase = '1') then led_reg <= led_reg(2 downto 0) & led_reg(3) after p_TD; else NULL; end if; else NULL; end if; else NULL; end if; end process; --led_reg_control_p
out_form_logic_p : process(phase) begin if (phase = '0') then led <= (others => '0'); else led <= led_reg; end if; end process; --out_form_logic_p
end rtl; Тестбенч: Код library ieee; use ieee.std_logic_1164.all;
entity test_led_tb is generic ( p_TD : time := 1 ns; p_CLK_T : time := 4 ns ); end test_led_tb;
architecture behav of test_led_tb is signal clk : std_logic := '0'; signal led : std_logic_vector(3 downto 0);
component test_led is generic ( p_TD : time := 1 ns; p_CNT_LIM : integer := 32768 - 1 ); port ( clk : in std_logic; led : out std_logic_vector(3 downto 0) ); end component; begin clk_gen_p : process begin clk <= not(clk); wait for p_CLK_T / 2; end process;
UUT : test_led generic map ( p_TD => p_TD ) port map ( clk => clk, led => led ); end behav;
|
|
|
|
|
Jul 13 2017, 18:23
|
Участник

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

|
Цитата(Tausinov @ Jul 13 2017, 18:58)  оу))не ожидал,что вы мне ещё напишите))большое спасибо за интерес к моей проблеме))жаль,что только завтра утром смогу проверить работоспособность проги.
Сообщение отредактировал lyzifer - Jul 13 2017, 18:23
|
|
|
|
Сообщений в этой теме
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  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 Flip-fl0p А есть ли особый смысл в этих строчках ?
Код else ... Jul 14 2017, 08:44 Tausinov Цитата(Flip-fl0p @ Jul 14 2017, 11:4... Jul 14 2017, 09:16  lyzifer Цитата(Tausinov @ Jul 14 2017, 12:16) Обе... Jul 14 2017, 09:59   Tausinov Цитата(lyzifer @ Jul 14 2017, 12:59) Я И ... Jul 14 2017, 10:36    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
|
|
|