Qual è la differenza tra la modellazione del flusso di dati strutturale e comportamentale in Verilog?


La migliore risposta

Nella modellazione del flusso di dati strutturali, le funzioni di progettazione digitale sono definite utilizzando componenti come un invertitore , un MUX, un sommatore, un decodificatore, porte logiche digitali di base, ecc. È come collegare e disporre diverse parti di circuiti disponibili per implementare le funzioni che stai cercando.

Implementazione del mezzo sommatore utilizzando strutturale modellazione del flusso di dati: input A, B; somma di output, riporto; xor (.in1 (A), .in2 (B), .out (somma)); e (.in1 (A), .in2 (B), .out (carry));

La modellazione del flusso di dati comportamentali viene utilizzata per descrivere il comportamento dei circuiti digitali. Designer descrive la funzionalità del design scrivendo un tipo di algoritmo di codice. Viene utilizzato per spiegare il flusso di dati utilizzando varie espressioni booleane come & (e), | (o), ~ (invertito), ^ (xor),? (Condizionale) ecc … due sottocategorie di questo tipo di modellazione schema è un flusso di dati continuo e un flusso di dati procedurale.

1. Flusso di dati continuo In questo tipo di modellazione del flusso di dati, lassegnazione dei dati agli output è continua. Questo verrà implementato utilizzando le istruzioni “ assign ” in Verilog come mostrato nellesempio.

input A, B; somma di output, riporto; bonifico sum, carry; assegnare somma = A ^ B; assign carry = A & B;

È unassegnazione continua e quindi qualsiasi cambiamento nellinput avrà effetto immediato sulloutput a causa dellassenza di azioni di controllo, ad esempio lista di sensibilità. Qui, la variabile di output deve essere definita come tipo “ wire ” perché sono continuamente guidate dalla logica digitale definita su RHS.

2. Flusso di dati procedurale Qui le assegnazioni dei dati non vengono eseguite in modo continuo, ma avviene su eventi specifici specificati nella lista di sensibilità. Questo tipo di schema di modellazione viene implementato utilizzando blocchi procedurali come “ sempre ” o “ iniziale “come mostrato nellesempio.

input A, B; somma di output, riporto; reg sum, carry; sempre @ (A) inizio somma A + B; trasportare A & B; end

LRHS di tutte le espressioni viene calcolato continuamente ma la sua assegnazione a LHS avviene solo su qualsiasi cambiamento nellingresso A ma non B. In questo caso, le variabili di output devono essere definite come “ reg ” perché continuano a mantenere il valore precedente fino a quando non si verifica una nuova assegnazione dopo qualsiasi modifica nellelenco di sensibilità specificato.

Spero che questo risolva i tuoi dubbi.

Risposta

Flusso di dati e comportamento non si escludono a vicenda. Né Flusso di dati e funzionale, o Flusso di dati e strutturale. Visto in modo classico, “flusso di dati” descrive unarchitettura in cui una modifica del valore di un elemento di dati (variabile) innesca automaticamente il ricalcolo di tutti gli altri dati dipendenti da esso.

Molti classificano in modo errato (IMHO) qualsiasi architettura in cui il flusso di dati è gestito piuttosto che controllare la gestione del flusso per essere “flusso di dati”; ma il termine viene usato in questo modo con sufficiente regolarità da lasciare che sia una definizione alternativa.

Guardando al design “comportamentale” possiamo classificarlo come un approccio di progettazione in cui i moduli sono modellati ad un alto livello di astrazione dove il progettista definisce il comportamento desiderato del modulo e gli strumenti di sintesi scompongono tale comportamento in modelli RTL o strutturali. Nella modellazione comportamentale la funzione è definita algoritmicamente con la temporizzazione e il caricamento del nodo ampiamente ignorati. Chiaramente, i comportamenti possono essere modellati in modo tale da accogliere il flusso di dati classico.

Meno astratto è il modello “RTL” o Register Transfer Logic. È qui che molti professionisti affermano che inizia il flusso di dati. La maggior parte degli strumenti di sintesi odierni scompongono il codice comportamentale in RTL. Un buon esempio sono gli strumenti da C (o C ++) a RTL come ImpulseC, Cynthesizer, ecc.).

Meno astratto è la modellazione “strutturale” in cui il design è dichiarato quasi esclusivamente come istanze di componenti con registri e fili di collegamento.

Chiaro come il fango, giusto?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *