Easyelectronics.ru

Электроника для всех
Текущее время: 22 авг 2019, 21:02

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Устройство мигания светодиодов (VHDL)
СообщениеДобавлено: 13 июл 2017, 16:01 
Только пришел

Зарегистрирован: 12 июл 2017, 22:53
Сообщения: 9
Устройство моргания 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); -- новый красивый вариант от PetrovichKR
-- старый топорный вариант led_temp <= to_stdlogicvector(to_bitvector(led_temp) rol 1); -- здесь пришлось сконвертировать std_logic в bit_vector,
--так как функция rol работает только с этим типом и unsigned
-- вращаю выходной вектор по кругу налево, постоянно смещая на 1 разряд
else
res <= '0';
end if;
end process;

L_D <= led_temp; -- выдаю информацию из регистров в порт

end A_LED;


Вложения:
Комментарий к файлу: вот что сейчас получается
111111.jpg
111111.jpg [ 71.12 Кб | Просмотров: 946 ]
Комментарий к файлу: а вот что у меня должно быть на выходе
12.jpg
12.jpg [ 57.93 Кб | Просмотров: 946 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Устройство мигания светодиодов (VHDL)
СообщениеДобавлено: 13 июл 2017, 22:14 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 23 мар 2011, 18:59
Сообщения: 58
Откуда: Томск
Самый простой способ, который пришел в голову. На сдвиговом регистре, с параллельной загрузкой. Выходы берутся через 1 триггер.

Код:
architecture Behavioral of shifter is
  signal SHIFT_REG   : std_logic_vector(7 downto 0);
begin

  process(rst,clk)
   begin
     if(rst = '1') then
        SHIFT_REG = "00000001"
    else if rising_edge(clk) then
   
       if(SHIFT_REG(7) = '1') then   
         SHIFT_REG <= "10000000"
      else
          SHIFT_REG <= SHIFT_REG(6 downto 0) & '0';
      end if;       
           
    end if;   
  end process; 

out(0)<= SHIFT_REG(1);
out(1)<= SHIFT_REG(3);
out(2)<= SHIFT_REG(5);
out(3)<= SHIFT_REG(7);

end Behavioral;

_________________
nick17.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Устройство мигания светодиодов (VHDL)
СообщениеДобавлено: 13 июл 2017, 23:08 
Только пришел

Зарегистрирован: 12 июл 2017, 22:53
Сообщения: 9
ок


Последний раз редактировалось LYZIFER 13 июл 2017, 23:10, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Устройство мигания светодиодов (VHDL)
СообщениеДобавлено: 13 июл 2017, 23:10 
Только пришел

Зарегистрирован: 12 июл 2017, 22:53
Сообщения: 9
nick17 писал(а):
Самый простой способ, который пришел в голову. На сдвиговом регистре, с параллельной загрузкой. Выходы берутся через 1 триггер.

Спасибо. Завтра проверю))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Устройство мигания светодиодов (VHDL)
СообщениеДобавлено: 14 июл 2017, 00:08 
Старожил
Аватара пользователя

Зарегистрирован: 28 мар 2012, 10:33
Сообщения: 1185
Откуда: Сочи
Два сигнала. Один сигнал показывает, включен ли какой-либо светодиод или все выключены.
Другой сигнал состоит из 2х линий и определяет номер включенного светодиода, когда первый сигнал имеет высокий уровень.
Или из четырех линий и прямо выходит на светодиод.
И тот и другой вариант одинаково просто реализуется.

Преимущество такого варианта в том, что форма первого сигнала может быть произвольная и независимо определять времена включения и паузы для каждого светодиода.
Номер светодиода можно генерировать по ходу формирования этого первого сигнала.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB