Algorithmensynthese

  • Überblick digitale Synthese
  • Algorithmensynthese
  • Beispiel für einen Algorithmus
  • Abhängigkeitsgraph
  • Schleifen
  • Bedingte Verzweigungen
  • Schritte der Algorithmensynthese
  • Takt und kombinatorische Verzögerung
  • Scheduling – Erstellung eines Taktschemas
  • Scheduling Variante 1
  • Scheduling Variante 2
  • Scheduling Variante 3
  • Entwurfsraumexploration
  • Signalflussgraph
  • Varianten im Entwurfsraum
  • Pareto-Front
  • Ressourcenreservierung und Ressourcenzuordnung
  • Datenpfad mit Multiplexern
  • Datenpfad mit bidirektionalem Bus
  • Steuerpfad
  • Nachoptimierungsmöglichkeiten
  • Retiming
Startseite
Beispiel für einen Algorithmus Ziel: schrittweise Lösung der Differentialgleichung d2u dt2 + 2 du dt t + 10u = 0 DGL VHDL entity DGL isport( t_in, u_in, s_in, dt_in, T_in : IN REAL; u_out : OUT REAL; start : in std_logic); end DGL; architecture behv of DGL isBEGINdgl_1: process( start)VARIABLE t, u, s, dx, T, t1, s1, u1 : REAL; BEGIN t:= t_in; u:=u_in; s:=s_in; dt:=dt_in; T:=T_in; LOOP t1 := t+dt; u1 := u+(s*dt); s1 := s -(2*t*(s*dt))-(10*u*dt); t:=t1; u:=u1; s:= s1; EXIT WHEN t1>T; END LOOP; u_out <= u; end dlg_1;end behv;    

Beim Betrieb eines Vorgängermodells der Ampelsteuerung hat sich herausgestellt, dass aufgrund parasitäter Kapazitäten und Induktivitäten in den Signalleitungen Schwingungen auftreten, die durch eine nichtlineare Differentialgleichung zweiter Ordnung beschrieben werden können:

d2u dt2 + 2 du dt t + 10u = 0 .

Die Spannung u soll deshalb während des Betriebes vorausgesagt werden können. Dazu soll ein entsprechender Algorithmus, der die Differentialgleichung in einem Zeitintervall T schrittweise numerisch löst, aus Performance-Gründen in einem spezifischen IC hardwaremäßig implementiert werden. Der dazu gehörige Algorithmus ist im Bild dargestellt. Nach Eingabe der Anfangswerte für t, u, s (=du/dt), der Schrittweite dt sowie des Intervalls T berechnet dieser den Spannungswert u am Ende des Intervalls gemäß folgender Rechnung:

t = t + dt

s = ( du / dt )

u = u + du = u + s*dt

s = s + ds = s + d( du / dt ) = s + ( d2u / dt )

mit "( d2u / dt ) = -2t*du - 10u/dt" folgt

s = s - 2t*s*dt - 10*u*dt