Stap 1: Single LED Controller
Voor deze stap, zullen we een kleine controller voor elke individuele LED maken.
We zullen de fundamentele D - Flip Flop met een synchrone inschakelen en een asynchrone reset gebruiken.
Aangezien onze LED de mooie RGB LED is, is het verstandiger een bus 2 bits gebruiken om te bepalen welke kleur wordt ingeschakeld. Om dit te doen, moeten we 2 D Flip Flops--één voor elke kleur van de LED.
Elk van de flip-flops zal delen een klok, de inbreng van de knop, en een reset-knop. Elk van de D-slippers krijgt echter een D-waarde bepaald door de controller van de multi-LEDs.
De druk op de knop zal klink in de D-waarde van elke flip flop en uitgangen het. De uitvoer zal een bus van de 2 bit gevormd door de afzonderlijke Q output van elk flip flop en een ander 2 bit bus gevormd door de inverse van de Q van elke flip flop.
De 2 bit bus die bestaat uit de inverse output van Q zal rechtstreeks worden aangesloten op het uitgangssignaal van de LED. Ondertussen gaat de 2 bit bus die bestaat uit de Q-output naar de multi-LEDs controller om te bepalen welke speler krijgt te gaan volgende.
We zullen gebruiken 9 van deze slippers voor elke knop.
entity Single_LED_Controller is port (Clock : in std_logic; Button : in std_logic; Reset : in std_logic; Player1 : in std_logic; Player2 : in std_logic; LED_Output : out std_logic_vector(1 downto 0); Handle_Input : out std_logic_vector(1 downto 0)); end Single_LED_Controller; architecture controller of Single_LED_Controller is component D_FlipFlop is port (Enable: in std_logic; D : in std_logic; Reset : in std_logic; Clock : in std_logic; Q : out std_logic); end component; signal temp1, temp2 : std_logic; begin D_FF_Main_1 : D_FlipFlop port map(Button, Player1, Reset, Clock, temp1); D_FF_Main_2 : D_FlipFlop port map(Button, Player2, Reset, Clock, temp2); LED_Output(0) <= not(temp1); LED_Output(1) <= not(temp2); Handle_Input(0) <= temp1; Handle_Input(1) <= temp2; end controller;