Tilldela uttalanden används för att driva värden på nätet. Och den används också i Dataflödesmodellering .
Signaler av typen tråd eller en datatyp kräver kontinuerlig tilldelning av ett värde. Så länge +5V-batteriet är applicerat på ena änden av kabeln, kommer den komponent som är ansluten till den andra änden av kabeln att få den erforderliga spänningen.
do and while loop i java
Detta koncept realiseras genom tilldelningssatsen där vilken tråd eller annan liknande tråd (datatyper) som helst kan drivas kontinuerligt med ett värde. Värdet kan antingen vara en konstant eller ett uttryck som består av en grupp av signaler.
Syntax
Tilldelningssyntaxen börjar med nyckelordet assign, följt av signalnamnet, som antingen kan vara en signal eller en kombination av olika signalnät.
inte
De drivstyrka och dröjsmål är valfria och används oftast för dataflödesmodellering än att syntetisera till riktig hårdvara.
Signalen på höger sida utvärderas och tilldelas nätet eller uttrycket av nät på vänster sida.
assign = [drive_strength] [delay]
Fördröjningsvärden är användbara för att specificera fördröjningar för grindar och används för att modellera timingbeteende i verklig hårdvara. Värdet bestämmer när nätet ska tilldelas det utvärderade värdet.
Regler
Vissa regler måste följas under användningen av en tilldelningssats:
- LHS ska alltid vara en skalär, vektor eller en kombination av skalär och vektornät men aldrig ett skalärt eller vektorregister.
- RHS kan innehålla skalära eller vektorregister och funktionsanrop.
- Närhelst någon operand på RHS ändras i värde kommer LHS att uppdateras med det nya värdet.
- Tilldela uttalanden kallas även fortlöpande uppdrag.
Tilldela reg Variabler
Vi kan inte köra eller tilldela reg typ variabler med en assign-sats eftersom en reg-variabel kan lagra data och inte drivs kontinuerligt.
c++ int till sträng
Reg-signaler kan endast drivas i procedurblock som alltid och initial.
Implicit kontinuerlig tilldelning
När en assign-sats används för att tilldela det givna nätet något värde, kallas det an explicit uppdrag
Om ett uppdrag som ska göras under nätet deklareras kallas det en implicit uppdrag.
wire [1:0] a; assign a = x & y; // Explicit assignment wire [1:0] a = x & y; // Implicit assignment
Combinational Logic Design
Betrakta följande digitala krets gjord av kombinationsgrindar och motsvarande Verilog koda.
Kombinationslogik kräver att ingångarna kontinuerligt drivs för att bibehålla utdata, till skillnad från sekventiella element som flip-flops där värdet fångas och lagras vid kanten av en klocka.
En tilldelad sats uppfyller syftet eftersom utgången o uppdateras när någon av ingångarna på höger sida ändras.
lista java till array
// 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
Hårdvaruschema
Efter designbearbetning och syntes, beter sig en kombinationskrets på samma sätt som modelleras av tilldelningssatsen.
Signalen o blir 1 närhelst kombinationsuttrycket på RHS blir sant.
På samma sätt blir o 0 när RHS är falskt. Utgång o är X från 0ns till 10ns eftersom ingångarna är X under samma tid.