Izjave o dodelitvi se uporabljajo za vodenje vrednosti v omrežju. In se uporablja tudi v Modeliranje podatkovnega toka .
Signali tipa wire ali podatkovnega tipa zahtevajo neprekinjeno dodeljevanje vrednosti. Dokler je baterija +5 V priključena na en konec žice, bo komponenta, priključena na drugi konec žice, dobila potrebno napetost.
Ta koncept je uresničen s stavkom dodelitve, kjer je mogoče katero koli žico ali drugo podobno žico (podatkovne vrste) nenehno poganjati z vrednostjo. Vrednost je lahko konstanta ali izraz, sestavljen iz skupine signalov.
Sintaksa
Sintaksa dodelitve se začne s ključno besedo assign, ki ji sledi ime signala, ki je lahko signal ali kombinacija različnih signalnih mrež.
The moč pogona in zamuda so neobvezne in se večinoma uporabljajo za modeliranje pretoka podatkov kot za sintezo v pravo strojno opremo.
Signal na desni strani se ovrednoti in dodeli mreži ali izrazu mrež na levi strani.
assign = [drive_strength] [delay]
Vrednosti zakasnitve so uporabne za določanje zakasnitev za vrata in se uporabljajo za modeliranje časovnega obnašanja v resnični strojni opremi. Vrednost narekuje, kdaj je treba mreži dodeliti ovrednoteno vrednost.
Pravila
Med uporabo stavka dodelitve je treba upoštevati nekaj pravil:
- LHS mora biti vedno skalarni, vektorski ali kombinacija skalarnih in vektorskih mrež, nikoli pa skalarni ali vektorski register.
- RHS lahko vsebuje skalarne ali vektorske registre in klice funkcij.
- Kadarkoli katerikoli operand na RHS spremeni vrednost, bo LHS posodobljen z novo vrednostjo.
- Stavki dodelitve se imenujejo tudi neprekinjene dodelitve.
Dodeli reg spremenljivke
Ne moremo voziti ali dodeliti reg vnesite spremenljivke s stavkom assign, ker je spremenljivka reg sposobna shranjevati podatke in se ne poganja neprekinjeno.
Reg signale je mogoče poganjati le v proceduralnih blokih, kot sta vedno in začetni.
Implicitna kontinuirana dodelitev
Ko se stavek dodelitve uporabi za dodelitev dane mreže z neko vrednostjo, se imenuje an eksplicitno dodelitev
Če je deklarirana dodelitev, ki jo je treba opraviti med mrežo, se imenuje an implicitno dodelitev.
wire [1:0] a; assign a = x & y; // Explicit assignment wire [1:0] a = x & y; // Implicit assignment
Kombinacijsko logično oblikovanje
Razmislite o naslednjem digitalnem vezju, izdelanem iz kombinacijskih vrat in ustreznih Verilog Koda.
Kombinacijska logika zahteva, da se vhodi nenehno poganjajo, da se ohrani izhod, za razliko od zaporednih elementov, kot so natikači, kjer se vrednost zajame in shrani na robu ure.
Dodeljeni stavek zadosti namenu, ker se izhod o posodobi vsakič, ko se spremeni kateri koli od vnosov na desni strani.
// 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
Shema strojne opreme
Po izdelavi načrta in sintezi se kombinacijsko vezje obnaša enako, kot je modelirano s stavkom assign.
Signal o postane 1, kadar koli kombinacijski izraz na RHS postane resničen.
Podobno postane o 0, ko je RHS napačen. Izhod o je X od 0ns do 10ns, ker so vhodi X v istem času.