Hardware Reference
In-Depth Information
procedure dec( signal x: inout tUnsigned; min: tUnsigned) is
begin
if x>min then
x <= x- "1" ;
end if ;
end procedure ;
Ein Nachteil bei der Beschreibung von Übergangsfunktionen mit Prozedu-
ren ist, dass für die zu bearbeitenden Datenobjekte der Objekttyp - »varia-
ble« oder »signal« - in der Prozedurvereinbarung festzulegen ist. Es ist nicht
möglich, mit den beiden Prozeduren »dec(...)« und »inc(...)« Variablen zu
bearbeiten. Umgekehrt wäre es bei einer Definition des Übergabeparameters
für den Zählwert als Variable nicht möglich, die Prozedur auf Signale anzu-
wenden. Um wahlweise Variablen- oder Signalwerte bearbeiten zu können, ist
für jeden der beiden Objekttypen eine eigene Prozedur zu programmieren.
In den nachfolgenden Schaltungsbeschreibungen werden die zu bearbeitenden
Register- und Blockspeicherzustände in der Regel Signale sein.
Bei der objektorientierten Beschreibung von Algorithmen kann es vor-
kommen, dass auf einen Schaltungszustand nacheinander mehrere Bearbei-
tungsmethoden anzuwenden sind. Was passiert in diesem Fall? Wenn die zu
bearbeitenden Datenobjekte Variablen sind, verhält sich das Modell wie ein
normales Programm. Jeder Prozeduraufruf sieht das Ergebnis der vorherigen
Prozeduraufrufe und bearbeitet den Zustand weiter. Bei Signalen als Bearbei-
tungsobjekte gibt es einen Unterschied. Signalwerte werden erst mit der nächs-
ten Warteanweisung aktualisiert. Wenn im selben Zeitschritt hintereinander
mehrere Bearbeitungsprozeduren aufgerufen werden, sehen alle Prozeduren
denselben Bearbeitungsstand und überschreiben jeweils die zuvor zugewie-
senen Änderungen. Zur Wahrung der Übersichtlichkeit und Verständlichkeit
ist es deshalb zu empfehlen, die Bearbeitungsmethoden auf unterschiedliche
Zeitschritte zu verteilen, damit zwischen jedem Prozeduraufruf eine Wartean-
weisung die Signalwerte aktualisiert.
3.4.2 Bäume statt Ketten
Eine typische Form eines parametrisierten Schaltungsmodells ist eine asso-
ziative Verknüpfung von n Operanden zu einem Ergebnis (Addition, UND,
ODER, XOR etc.)
y = x n1 x n2 :::x 1 x 0
( - assoziativer Operator). Assoziativ bedeutet, dass die Reihenfolge der
Zusammenfassung keinen Einfluss auf das Ergebnis hat. Eine einfache Schleife
arbeitet Ausdrücke gern von links nach rechts oder in umgekehrter Reihenfolge
ab (Abb. 3.20). Die Synthese rollt die Schleife auf und extrahiert eine Kette
von Teilschaltungen mit der Operatorfunktion. Der Nachteil einer Kette ist,
dass der längste Schaltungspfad und damit die Verzögerung linear mit der
Anzahl der Operanden zunimmt.
Search WWH ::




Custom Search