Tilordne uttalelser brukes til å drive verdier på nettet. Og den brukes også i Dataflytmodellering .
tcp ip-modell
Signaler av type wire eller en datatype krever kontinuerlig tilordning av en verdi. Så lenge +5V-batteriet er påført den ene enden av ledningen, vil komponenten som er koblet til den andre enden av ledningen få den nødvendige spenningen.
Dette konseptet er realisert av assign-setningen der enhver ledning eller annen lignende ledning (datatyper) kan drives kontinuerlig med en verdi. Verdien kan enten være en konstant eller et uttrykk som består av en gruppe signaler.
Syntaks
Tildelingssyntaksen starter med nøkkelordet assign, etterfulgt av signalnavnet, som enten kan være et signal eller en kombinasjon av forskjellige signalnett.
De drivstyrke og forsinkelse er valgfrie og brukes mest for dataflytmodellering enn å syntetisere til ekte maskinvare.
Signalet på høyre side blir evaluert og tilordnet nettet eller uttrykket av garn på venstre side.
assign = [drive_strength] [delay]
Forsinkelsesverdier er nyttige for å spesifisere forsinkelser for porter og brukes til å modellere tidsoppførsel i ekte maskinvare. Verdien dikterer når nettet skal tilordnes den evaluerte verdien.
Regler
Noen regler må følges under bruk av en tilordningserklæring:
- LHS skal alltid være en skalar, vektor eller en kombinasjon av skalar- og vektornett, men aldri et skalar- eller vektorregister.
- RHS kan inneholde skalar- eller vektorregistre og funksjonskall.
- Hver gang en operand på RHS endres i verdi, vil LHS bli oppdatert med den nye verdien.
- Tilordne uttalelser kalles også fortløpende oppgaver.
Tilordne reg Variabler
Vi kan ikke kjøre eller tildele reg type variabler med en assign-setning fordi en reg-variabel er i stand til å lagre data og ikke drives kontinuerlig.
Reg-signaler kan bare drives i prosedyreblokker som alltid og initial.
Implisitt kontinuerlig tildeling
Når en assign-setning brukes til å tildele det gitte nettot en verdi, kalles det en eksplisitt oppdrag
Hvis et oppdrag som skal utføres under nettet er deklarert, kalles det en implisitt oppdrag.
wire [1:0] a; assign a = x & y; // Explicit assignment wire [1:0] a = x & y; // Implicit assignment
Kombinasjonell logikkdesign
Tenk på følgende digitale krets laget av kombinasjonsporter og tilsvarende Verilog kode.
Kombinasjonslogikk krever at inngangene kontinuerlig drives for å opprettholde utgangen, i motsetning til sekvensielle elementer som flip-flops hvor verdien fanges og lagres på kanten av en klokke.
csma og csma cd
En tildelt setning tilfredsstiller formålet fordi utgangen o oppdateres hver gang noen av inngangene på høyre side endres.
// 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
Skjematisk maskinvare
Etter designbearbeiding og syntese, oppfører en kombinasjonskrets seg på samme måte som modellert av assign-setningen.
Signalet o blir 1 når kombinasjonsuttrykket på RHS blir sant.
På samme måte blir o 0 når RHS er falsk. Utgang o er X fra 0ns til 10ns fordi innganger er X på samme tid.