FPGA De0-Nano Массивы

23.11.2015
В прошлой заметке, посвященной разбору кода VHDL, в последнем примере мы гасили светодиоды отдельными директивами. Оказалось это можно более эффективно делать с помощью массивов. Рассмотрим следующий пример:
 
library ieee;
use ieee.std_logic_1164.all;
 
entity myCode is
port(
key0, key1 : in std_logic ;
LED: out bit_vector(7 downto 0)
);
end entity;
 
architecture myArc of  myCode is 
begin
p0 : process (key0,key1)
begin
case key0 is
when '1' => LED(3 downto 0) <= "0000";
when '0' => LED(3 downto 0) <= "1111";
end case;
case key1 is
when '1' => LED(7 downto 4) <= "0000";
when '0' => LED(7 downto 4) <= "1111";
end case;
end process;
end myArc;
 
Этот код включает первые 4 светодиода на плате DE0-Nano при нажатии на кнопку KEY0, а остальные 4 светодиода загораются при нажатии на кнопку KEY1. При отжимании кнопок - светодиоды гаснут. Все 8 светодиодов платы были обозначены через один массив LED. Чтобы работать с конструкцией Case нам понадобилось создать процесс p0 и внутри него делать проверку состояний кнопок. Нумерация элементов массива задается через скобки -  LED(3 downto 0), а запись - через оператор присваивания двоичного числа, заключенного в двойные кавычки. Этот код можно еще немного упростить, обозначив KEY0 и KEY1 также через массив:
library ieee;
use ieee.std_logic_1164.all;
 
entity myCode is
port(
KEY: in bit_vector(1 downto 0) ;
LED: out bit_vector(7 downto 0)
);
end entity;
 
architecture myArc of  myCode is 
begin
p0 : process (KEY)
begin
case KEY is
when "00" => LED <= "11111111";
when "01" => LED <= "11110000";
when "10" => LED <= "00001111";
when "11" => LED <= "00000000";
end case;
end process;
end myArc;
Пока все это время мы работали в статике, однако самое интересное будет дальше, где мы познакомимся со счетчиками.
 
Нажав на соответствующий значок, Вы можете добавить эту заметку к себе на страничку в социальной сети
 

Если же вы хотите первыми узнавать о выходе моих новых статей, то можете заполнить следующую форму, вписав туда адрес своего электронного ящика:

 

 

© 2016 Дневник хорошего человека
Рейтинг@Mail.ru