De beschrijving van de processor die gemaakt wordt, begint al groter te worden. Van zodra er meerdere componenten zijn en deze in verschillende andere componenten geïnstantieerd worden, kunnen de tekstbestanden snel groot worden. In software wordt dit opgelost door libraries of soortgelijke equivalenten te gebruiken. VHDL komt hieraan tegemoet met packages. De structuur van een package is anders dan die van een entity, zoals tot hiertoe gebruikt.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
-- use IEEE.NUMERIC_STD.ALL;
package PKG_disch is
end package;
package body PKG_disch is
end package body;
Hiernaast is de structuur van een VHDL-package weergegeven. Allereerst wordt er begonnen met het includen van de IEEE library en STD_LOGIC. Deze regels zijn nodig omdat er binnen de package (wellicht) gebruik van gemaakt wordt.
Vervolgens zijn er 2 blokken de package en de package body.
Package
In de package kunnen zaken beschreven worden die beschikbaar zijn:
- Component declaraties
- Constanten
- Types
- Functie/procedure declaraties
Package body
In de package body kan beschreven worden hoe zaken werken.
- Hier schrijf je de implementatie van functies/procedures
Om een package te gebruiken, volstaat het om de volgende twee lijnen toe te voegen aan het VHDL bestand, boven de entity.
library work;
use work.PKG_disch.ALL;
Het gebruik van een package geeft enkele voordelen:
- declutteren van code. Doordat declaraties niet meer herhaald moeten worden, wordt er meer overzicht gecreëerd
- structuur verbetering door een ietwat meer doorgedreven scheiding van logica en implementatie
- consistentie verhoging doordat definities en parameterisatie centraal staan.
Het is niet omdat de package de IEEE library en de STD_LOGIC_1164 package body gebruikt, dat de component die deze package gebruikt dat kan weglaten.
Let op dat de packages gecompiled zijn voordat ze gebruikt worden!!