VHDL-kod
till PLD
-- PLD adresskodning till olika enheter i DITAMA2
-- Grupp 9
library ieee;
use ieee.std_logic_1164.all;
ENTITY ADRESS IS
PORT (
clk: in std_logic;
I: in std_logic_vector(3 downto 0);
U: out std_logic_vector(7 downto 0)
);
ATTRIBUTE pin_numbers OF ADRESS : ENTITY IS
"clk:1 I(0):2 I(1):3 I(2):4 I(3):5 "
& "U(0):23 U(1):22 U(2):21 U(3):20 U(4):19 U(5):18 U(6):17 U(7):16";
END ADRESS;
ARCHITECTURE beteende OF ADRESS IS
BEGIN
process(clk)
BEGIN
IF rising_edge(clk) THEN
IF I = "0000" THEN U<="01011000"; --Ingenting enablat-utgangslage,STANDBY
ELSIF I = "0001" THEN U<="01011001"; --Display RS=0, Enable=1
ELSIF I = "0010" THEN U<="01011010"; --Display RS=1
ELSIF I = "0011" THEN U<="01011011"; --Display RS=1, E=1
ELSIF I = "0100" THEN U<="01001100"; --medd1 REC. /WE-minne, /CS-AD
ELSIF I = "0101" THEN U<="00001100"; --medd1 REC. /CS-minne, /WE-minne, /CS-AD
ELSIF I = "0110" THEN U<="11001100"; --medd2 REC. /WE-minne, /CS-AD
ELSIF I = "0111" THEN U<="10001100"; --medd2 REC. /CS-minne, /WE-minne, /CS-AD
ELSIF I = "1000" THEN U<="01110100"; --medd1 PLAY. /OE-minne, /CS-DA
ELSIF I = "1001" THEN U<="00110100"; --medd1 PLAY. /CS-minne, /OE-minne, /CS-DA
ELSIF I = "1010" THEN U<="11110100"; --medd2 PLAY. /OE-minne, /CS-DA
ELSIF I = "1011" THEN U<="10110100"; --medd2 PLAY. /CS-minne, /OE-minne, /CS-DA
ELSE U<="01011000"; --Ingenting enablat, STANDBY. Om nagonting annat mot
END IF; --formodan skulle dyka in i PLDn
END IF;
END process;
END beteende;