Założenia są takie licznik modulo 10 zaprogramowany w języku VHDL, jednym guzikiem zlicza do góry impulsy a drugim w dół, niby proste a jednak
Kod: Zaznacz cały
library IEEE;
use IEEE.std_logic_1164.all, IEEE.numeric_std.all;
ENTITY counter is
generic (n:natural :=4);
port(
button1: in std_logic;
button2: in std_logic;
clear: in std_logic;
C : out std_logic;
OUT1 : out std_logic_vector(n-1 downto 0)
);
END counter;
ARCHITECTURE beh of counter is
begin
p0:process (button1, clear) is
variable licz: unsigned (n-1 downto 0);
begin
if clear = '1' then
licz:= (others=>'0');
elsif button1='1' then
licz:=licz+1;
elsif licz=10 then
licz:=(others=>'0');
C<='1';
else C<='0';
end if;
if button2='1' then
licz:=licz-1;
if licz=0 then
licz:=(others=>'1');
C<='1';
else C<='0';
end if;
end if;
OUT1<=std_logic_vector(licz);
end process p0;
end architecture beh;
Dziękuje i Pozdrawiam