Les declaracions d'assignació s'utilitzen per generar valors a la xarxa. I també s'utilitza en Modelització de flux de dades .
Els senyals de tipus cable o un tipus de dades requereixen l'assignació contínua d'un valor. Mentre la bateria de +5V s'apliqui a un extrem del cable, el component connectat a l'altre extrem del cable obtindrà la tensió necessària.
Aquest concepte es realitza mitjançant la declaració d'assignació on qualsevol cable o un altre cable similar (tipus de dades) es pot conduir contínuament amb un valor. El valor pot ser una constant o una expressió formada per un grup de senyals.
Sintaxi
La sintaxi d'assignació comença amb la paraula clau assignar, seguida del nom del senyal, que pot ser un senyal o una combinació de diferents xarxes de senyal.
El força d'impuls i retard són opcionals i s'utilitzen principalment per al modelatge de flux de dades que per a la síntesi en maquinari real.
El senyal del costat dret s'avalua i s'assigna a la xarxa o expressió de xarxes del costat esquerre.
assign = [drive_strength] [delay]
Els valors de retard són útils per especificar retards per a les portes i s'utilitzen per modelar el comportament del temps en maquinari real. El valor dicta quan s'ha d'assignar la xarxa amb el valor avaluat.
Normes
S'han de seguir algunes regles durant l'ús d'una instrucció d'assignació:
- LHS sempre hauria de ser un escalar, un vector o una combinació de xarxes escalars i vectorials, però mai un registre escalar o vectorial.
- RHS pot contenir registres escalars o vectorials i trucades a funcions.
- Sempre que qualsevol operand del RHS canviï de valor, LHS s'actualitzarà amb el nou valor.
- Les declaracions d'assignació també s'anomenen assignacions contínues.
Assigna variables de reg
No podem conduir ni assignar reg escriviu variables amb una instrucció d'assignació perquè una variable reg és capaç d'emmagatzemar dades i no es controla contínuament.
Els senyals de reg només es poden impulsar en blocs de procediment com sempre i inicial.
Assignació contínua implícita
Quan s'utilitza una instrucció d'assignació per assignar la xarxa donada amb algun valor, s'anomena an explícit assignació
Si es declara una missió a fer durant la xarxa, s'anomena an implícit encàrrec.
wire [1:0] a; assign a = x & y; // Explicit assignment wire [1:0] a = x & y; // Implicit assignment
Disseny lògic combinacional
Considereu el següent circuit digital fet de portes combinacionals i el corresponent Verilog codi.
La lògica combinacional requereix que les entrades s'accionin contínuament per mantenir la sortida, a diferència dels elements seqüencials com les xancletes on el valor es captura i s'emmagatzema a la vora d'un rellotge.
Una instrucció assignada compleix el propòsit perquè la sortida o s'actualitza cada vegada que canvia alguna de les entrades del costat dret.
// 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
Esquema de maquinari
Després de l'elaboració i la síntesi del disseny, un circuit combinacional es comporta de la mateixa manera que el modelat per la instrucció assign.
El senyal o es converteix en 1 sempre que l'expressió combinacional del RHS esdevé certa.
De la mateixa manera, o passa a 0 quan RHS és fals. La sortida o és X de 0ns a 10ns perquè les entrades són X durant el mateix temps.