Was ist der Unterschied zwischen struktureller und verhaltensbezogener Datenflussmodellierung in Verilog?


Beste Antwort

Bei der strukturellen Datenflussmodellierung werden digitale Entwurfsfunktionen mithilfe von Komponenten wie einem Wechselrichter definiert , ein MUX, ein Addierer, ein Decodierer, grundlegende digitale Logikgatter usw. Es ist wie das Verbinden und Anordnen verschiedener Teile von Schaltungen, die verfügbar sind, um die Funktionen zu implementieren, nach denen Sie suchen.

Implementierung eines Halbaddierers unter Verwendung von Struktur Datenflussmodellierung: Eingabe A, B; Ausgangssumme, tragen; xor (.in1 (A), .in2 (B), .out (Summe)); und (.in1 (A), .in2 (B), .out (Übertrag));

Modellierung des Verhaltensdatenflusses wird verwendet, um das Verhalten digitaler Schaltungen zu beschreiben. Designer beschreibt die Funktionalität des Designs durch Schreiben eines Code-Algorithmus. Es wird verwendet, um den Datenfluss mithilfe verschiedener boolescher Ausdrücke wie & (und), | (oder), ~ (invertieren), ^ (xor) ,? (Bedingt) usw. zu erklären. Zwei Unterkategorien dieser Typmodellierung Schema ist kontinuierlicher Datenfluss und prozeduraler Datenfluss.

1. Kontinuierlicher Datenfluss Bei dieser Art der Datenflussmodellierung erfolgt die Zuordnung von Daten zu Ausgängen kontinuierlich. Dies wird mithilfe von „ Assign “ -Anweisungen in Verilog implementiert, wie im Beispiel gezeigt.

Eingabe A, B; Ausgangssumme, tragen; wire sum, Übertrag; zuweisen Summe = A ^ B; Carry zuweisen = A & B;

Es handelt sich um eine kontinuierliche Zuweisung, und daher wirkt sich jede Änderung der Eingabe sofort auf die Ausgabe aus, da keine Steueraktionen, d. h. die Empfindlichkeitsliste, fehlen. Hier muss die Ausgangsvariable als Typ „ wire “ definiert werden, da sie kontinuierlich von der auf RHS definierten digitalen Logik angesteuert wird.

2. Prozeduraler Datenfluss Hier werden die Datenzuweisungen nicht kontinuierlich ausgeführt, sondern bei bestimmten Ereignissen, die in der Sensitivitätsliste angegeben sind. Diese Art von Modellierungsschema wird unter Verwendung von Prozedurblöcken wie „ immer “ oder „ initial implementiert „wie im Beispiel gezeigt.

Eingabe A, B; Ausgangssumme, tragen; reg sum, Übertrag; immer @ (A) begin sum A + B; tragen A & B; end

Die RHS aller Ausdrücke wird kontinuierlich berechnet, ihre Zuordnung zu LHS erfolgt jedoch nur bei einer Änderung von Eingang A, nicht jedoch von B. In diesem Fall müssen die Ausgangsvariablen als “ reg “ ein, da der vorherige Wert beibehalten wird, bis nach einer Änderung der angegebenen Empfindlichkeitsliste eine neue Zuweisung erfolgt.

Ich hoffe, dies wird Ihre Zweifel beseitigen.

Antwort

Datenfluss und Verhalten schließen sich nicht gegenseitig aus. Auch Datenfluss und Funktion oder Datenfluss und Struktur sind nicht. Klassisch betrachtet beschreibt „Datenfluss“ eine Architektur, bei der eine Wertänderung eines Datenelements (einer Variablen) automatisch die Neuberechnung aller anderen davon abhängigen Daten auslöst.

Viele falsch (IMHO) klassifizieren jede Architektur, in der Der Datenfluss wird verwaltet, anstatt das Flussmanagement als „Datenfluss“ zu steuern. Der Begriff wird jedoch auf diese Weise mit ausreichender Regelmäßigkeit verwendet, um eine alternative Definition zu ermöglichen.

Wenn wir das „Verhaltens“ -Design betrachten, können wir ihn als Designansatz klassifizieren, bei dem Module auf einer hohen Abstraktionsebene modelliert werden Der Designer definiert das gewünschte Verhalten des Moduls und die Synthesewerkzeuge zerlegen dieses Verhalten entweder in RTL- oder Strukturmodelle. In der Verhaltensmodellierung wird die Funktion algorithmisch definiert, wobei Timing und Knotenbelastung weitgehend ignoriert werden. Es ist klar, dass Verhaltensweisen so modelliert werden können, dass der klassische Datenfluss berücksichtigt wird.

Weniger abstrakt ist die Modellierung von „RTL“ oder Register Transfer Logic. Hier sagen viele Praktiker, dass der Datenfluss beginnt. Die meisten heutigen Synthesewerkzeuge zerlegen Verhaltenscode in RTL. Ein gutes Beispiel sind die C- (oder C ++) in RTL-Werkzeuge wie ImpulseC, Cynthesizer usw.).

Am wenigsten abstrakt ist die „strukturelle“ Modellierung, bei der Das Design wird fast ausschließlich als Komponenteninstanziierung mit Verbindungsregistern und Drähten angegeben.

Klar wie Schlamm, oder?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.