Hardware Reference
In-Depth Information
unbedingt eine objektorientierte Programmiersprache mit speziellen Beschrei-
bungsmitteln für Klassen, Methoden und Vererbung. Notfalls genügt eine nor-
male imperative Programmiersprache, wie sie in VHDL enthalten ist.
Im digitalen Schaltungsentwurf kommt dieses Prinzip bei der Beschreibung
komplexer Operationsabläufe zum Einsatz. Es werden Datenobjekte und Ope-
rationen, die auf diese Datenobjekte anzuwenden sind, definiert. Anschließend
wird die Zielfunktion durch eine geeignete Operationsfolge nachgebildet. Bei
der Festlegung der Datenobjekte und der auf sie anzuwendenden Operatio-
nen kommt genau die Denkwelt der objektorientierten Programmierung zum
Tragen. Was für Daten sind darzustellen und mit welchen Methoden sind
diese zu bearbeiten? Die Datenobjekte werden in der Schaltung dann spä-
ter zu Registern und die Operationen zu Register-Transfer-Funktionen. Jede
Register-Transfer-Funktion lässt sich auch als Prozedur beschreiben. Insbe-
sondere Übergangsfunktionen, die aus Registerzuständen Folgezustände bil-
den, lassen sich anschaulicher mit einer Prozedur beschreiben, der die zu be-
arbeitenden Registerzustände als les- und veränderbare Signale übergeben
werden, als mit einer Funktion, bei der die Registerzustände zum einen Ein-
gabeparameter und zum anderen Teile des Rückgabewertes sind (Abb. 3.19).
functionfz(x:tX;
f z (...) tZ tZ
x
z:tZ)returntZ;
a)
tX
procedurepz(x:tX;
signalz:inouttZ);
x
p z (...)
tZ
p z (...)
b)
oder
tX
x
tX
Registerf¨urdas
Zustandssignalz
tZ tZ
Abb. 3.19. Beschreibung einer Übergangsfunktionen
a) durch eine VHDL-
Funktion b) durch eine Bearbeitungsprozedur
Beispiele seien die Zählprozeduren für einen Sättigungszähler. Ein Sätti-
gungszähler ist ein Zähler, der seinen Wert nicht über einen vorgegebenen
Maximalwert erhöht und nicht unter einen vorgegebenen Minimalwert ver-
ringert. Das zu bearbeitende Objekt - der Zählwert - sei eine vorzeichenfreie
Zahl vom Typ »tUnsigned«. Die Bearbeitungsmethoden für den Zählwert sind
Erhöhung um »1«, solange der Maximalwert nicht erreicht ist
procedure inc( signal x: inout tUnsigned; max: tUnsigned) is
begin
if x<max then
x <= x+ "1" ;
end if ;
end procedure ;
und Verringerung um »1«, solange der Minimalwert nicht erreicht ist:
 
Search WWH ::




Custom Search