logo

Declarație de atribuire Verilog

Declarațiile de atribuire sunt folosite pentru a genera valori pe net. Și este folosit și în Modelarea fluxului de date .

Semnalele de tip fir sau de tip de date necesită atribuirea continuă a unei valori. Atâta timp cât bateria de +5V este aplicată la un capăt al firului, componenta conectată la celălalt capăt al firului va primi tensiunea necesară.

Acest concept este realizat prin declarația de atribuire în care orice fir sau alt fir similar (tipuri de date) poate fi condus continuu cu o valoare. Valoarea poate fi fie o constantă, fie o expresie care cuprinde un grup de semnale.

Sintaxă

Sintaxa de atribuire începe cu cuvântul cheie assign, urmat de numele semnalului, care poate fi fie un semnal, fie o combinație de diferite rețele de semnal.

The puterea de antrenare și întârziere sunt opționale și mai ales utilizate pentru modelarea fluxului de date decât pentru sintetizarea în hardware real.

Semnalul din partea dreaptă este evaluat și atribuit rețelei sau expresiei plaselor din partea stângă.

 assign = [drive_strength] [delay] 

Valorile de întârziere sunt utile pentru specificarea întârzierilor pentru porți și sunt utilizate pentru a modela comportamentul de sincronizare în hardware real. Valoarea dictează momentul în care netul ar trebui să fie alocat cu valoarea evaluată.

Reguli

Unele reguli trebuie urmate în timpul utilizării unei instrucțiuni de atribuire:

  • LHS ar trebui să fie întotdeauna un scalar, vector sau o combinație de rețele scalare și vectoriale, dar niciodată un registru scalar sau vectorial.
  • RHS poate conține registre scalare sau vectoriale și apeluri de funcții.
  • Ori de câte ori orice operand de pe RHS își schimbă valoarea, LHS va fi actualizat cu noua valoare.
  • Declarațiile de atribuire sunt numite și atribuiri continue.

Atribuiți variabile reg

Nu putem conduce sau atribui reg tastați variabile cu o instrucțiune de atribuire, deoarece o variabilă reg este capabilă să stocheze date și nu este condusă continuu.

Semnalele de reg pot fi conduse numai în blocuri procedurale, cum ar fi întotdeauna și inițial.

Atribuire continuă implicită

Când o instrucțiune de atribuire este utilizată pentru a atribui o rețea dată cu o anumită valoare, se numește an explicit misiune

Dacă este declarată o misiune de făcut în timpul rețelei, aceasta se numește an implicit misiune.

 wire [1:0] a; assign a = x & y; // Explicit assignment wire [1:0] a = x & y; // Implicit assignment 

Proiectare logică combinațională

Luați în considerare următorul circuit digital realizat din porți combinaționale și corespunzătoare Verilog cod.

Declarație de atribuire Verilog

Logica combinațională necesită ca intrările să fie conduse în mod continuu pentru a menține ieșirea, spre deosebire de elementele secvențiale, cum ar fi flip-flops, unde valoarea este capturată și stocată la marginea unui ceas.

diferența dintre dragoste și placere

O instrucțiune alocată satisface scopul deoarece ieșirea o este actualizată ori de câte ori oricare dintre intrările din partea dreaptă se schimbă.

 // This module takes four inputs and performs a Boolean // operation and assigns output to o. // logic is realized using assign statement. module combo (input a, b, c, d, output o); assign o = ~((a & b) | c ^ d); endmodule 

Schema hardware

După elaborarea și sinteza proiectării, un circuit combinațional se comportă în același mod ca modelat de instrucțiunea de atribuire.

Declarație de atribuire Verilog

Semnalul o devine 1 ori de câte ori expresia combinațională de pe RHS devine adevărată.

În mod similar, o devine 0 când RHS este fals. Ieșirea o este X de la 0ns la 10ns deoarece intrările sunt X în același timp.