Najlepsza odpowiedź
W strukturalnym modelowaniu przepływu danych funkcje projektowania cyfrowego definiuje się za pomocą komponentów takich jak inwerter , MUX, adder, dekoder, podstawowe cyfrowe bramki logiczne itp. To jest jak łączenie i układanie różnych części obwodów dostępnych w celu zaimplementowania funkcji, której szukasz.
Realizacja półsumatora przy użyciu strukturalnego modelowanie przepływu danych: wejście A, B; suma wyjściowa, przeniesienie; xor (.in1 (A), .in2 (B), .out (suma)); i (.in1 (A), .in2 (B), .out (przeniesienie));
Behawioralne modelowanie przepływu danych służy do opisu zachowania obwodów cyfrowych. Projektant opisuje funkcjonalność projektowania pisząc kod typu algorytm. Służy do wyjaśniania przepływu danych za pomocą różnych wyrażeń logicznych, takich jak & (i), | (lub), ~ (odwróć), ^ (xor),? (Warunkowe) itd … dwie podkategorie tego typu modelowanie Schemat to ciągły przepływ danych i przepływ danych proceduralnych.
1. Ciągły przepływ danych W tego typu modelowaniu przepływu danych przypisywanie danych do wyjść jest ciągłe. Zostanie to zaimplementowane za pomocą instrukcji „ assign ” w Verilogu, jak pokazano na przykładzie.
input A, B; suma wyjściowa, przeniesienie; przelew suma, przeniesienie; przypisz sumę = A ^ B; przypisać carry = A i B;
Jest to przypisanie ciągłe, a zatem każda zmiana wejścia będzie miała natychmiastowy skutek z powodu braku działań kontrolnych, tj. listy wrażliwości. Tutaj zmienna wyjściowa musi być zdefiniowana jako typ „ wire „, ponieważ są one w sposób ciągły sterowane logiką cyfrową zdefiniowaną na RHS.
2. Proceduralny przepływ danych W tym przypadku przypisania danych nie są przeprowadzane w sposób ciągły, ale mają miejsce przy określonych zdarzeniach określonych na liście wrażliwości. Ten typ schematu modelowania jest realizowany przy użyciu bloków proceduralnych, takich jak „ zawsze ” lub „ początkowe ”jak pokazano na przykładzie.
wejście A, B; suma wyjściowa, przeniesienie; reg sum, carry; zawsze @ (A) początek sumy A + B; nosić A i B; koniec
RHS wszystkich wyrażeń jest obliczany w sposób ciągły, ale jego przypisanie do LHS ma miejsce tylko przy każdej zmianie wejścia A, ale nie B. W tym przypadku zmienne wyjściowe muszą być zdefiniowane jako „ reg „, ponieważ zachowują poprzednią wartość do momentu pojawienia się nowego przypisania po jakiejkolwiek zmianie określonej listy wrażliwości.
Mam nadzieję, że to rozwiąże Twoje wątpliwości.
Odpowiedź
Przepływ danych i zachowanie nie wykluczają się wzajemnie. Ani przepływ danych i jego funkcjonalność, ani przepływ danych i struktura. Klasycznie postrzegany „przepływ danych” opisuje architekturę, w której zmiana wartości elementu danych (zmiennej) automatycznie wyzwala ponowne obliczenie wszystkich innych danych od niego zależnych.
Wiele nieprawidłowo (IMHO) klasyfikuje dowolną architekturę, w której przepływ danych jest zarządzany, a nie zarządzanie przepływem kontroli jako „przepływ danych”; ale termin ten jest używany w ten sposób z wystarczającą regularnością, aby mógł być alternatywną definicją.
Patrząc na projekt „behawioralny”, możemy go zaklasyfikować jako podejście projektowe, w którym moduły są modelowane na wysokim poziomie abstrakcji, gdzie projektant definiuje pożądane zachowanie modułu, a narzędzia syntezy rozkładają to zachowanie na model RTL lub Structural. W modelowaniu behawioralnym funkcja jest definiowana algorytmicznie, a synchronizacja i obciążenie węzłów są w dużej mierze ignorowane. Oczywiście zachowania można modelować w taki sposób, aby dostosować się do klasycznego przepływu danych.
Mniej abstrakcyjny jest model „RTL” lub Register Transfer Logic. W tym miejscu wielu praktyków twierdzi, że zaczyna się przepływ danych. Większość dzisiejszych narzędzi syntezy rozkłada kod behawioralny na RTL. Dobrym przykładem są narzędzia z języka C (lub C ++) do RTL, takie jak ImpulseC, Cynthesizer itp.).
Najmniej abstrakcją jest modelowanie strukturalne, w którym projekt jest określany prawie wyłącznie jako instancje komponentów z łączącymi rejestrami i przewodami.
Jasne jak błoto, prawda?