Assign-instructies worden gebruikt om waarden op het net te genereren. En daar wordt het ook in gebruikt Modellering van gegevensstromen .
Signalen van het type draad of een datatype vereisen de continue toewijzing van een waarde. Zolang de +5V batterij op het ene uiteinde van de draad is aangesloten, krijgt het onderdeel dat op het andere uiteinde van de draad is aangesloten de vereiste spanning.
Java-stapel
Dit concept wordt gerealiseerd door de toewijzingsinstructie waarbij elke draad of andere soortgelijke draad (datatypes) continu met een waarde kan worden aangestuurd. De waarde kan een constante zijn of een uitdrukking die bestaat uit een groep signalen.
Syntaxis
De toewijzingssyntaxis begint met het trefwoord toewijzen, gevolgd door de signaalnaam, die een signaal of een combinatie van verschillende signaalnetten kan zijn.
Hoe iPhone-emoji's op Android te krijgen
De aandrijfkracht En vertraging zijn optioneel en worden meestal gebruikt voor het modelleren van gegevensstromen dan voor het synthetiseren in echte hardware.
Het signaal aan de rechterkant wordt geëvalueerd en toegewezen aan het net of de uitdrukking van netten aan de linkerkant.
assign = [drive_strength] [delay]
Vertragingswaarden zijn nuttig voor het specificeren van vertragingen voor poorten en worden gebruikt om het timinggedrag in echte hardware te modelleren. De waarde bepaalt wanneer het net de geëvalueerde waarde moet krijgen.
Reglement
Er moeten enkele regels worden gevolgd tijdens het gebruik van een toewijzingsinstructie:
- LHS moet altijd een scalair, vector- of een combinatie van scalaire en vectornetten zijn, maar nooit een scalair of vectorregister.
- RHS kan scalaire of vectorregisters en functieaanroepen bevatten.
- Telkens wanneer een operand op de RHS in waarde verandert, wordt LHS bijgewerkt met de nieuwe waarde.
- Assign-instructies worden ook continue toewijzingen genoemd.
Reg-variabelen toewijzen
We kunnen niet rijden of toewijzen reg type variabelen met een toewijzingsinstructie omdat een reg-variabele gegevens kan opslaan en niet continu wordt aangestuurd.
prioriteits-rij
Reg-signalen kunnen alleen worden aangestuurd in procedurele blokken zoals altijd en initieel.
Impliciete continue toewijzing
Wanneer een toewijzingsinstructie wordt gebruikt om een bepaalde waarde aan het gegeven net toe te kennen, wordt dit een genoemd expliciet opdracht
Als er een opdracht wordt aangegeven die tijdens het net moet worden uitgevoerd, wordt dit een genoemd impliciet opdracht.
wire [1:0] a; assign a = x & y; // Explicit assignment wire [1:0] a = x & y; // Implicit assignment
Combinatielogica-ontwerp
Beschouw het volgende digitale circuit gemaakt van combinatiepoorten en de bijbehorende Verilog code.
Combinatielogica vereist dat de ingangen continu worden aangestuurd om de uitgang te behouden, in tegenstelling tot sequentiële elementen zoals flip-flops waarbij de waarde wordt vastgelegd en opgeslagen aan de rand van een klok.
Een toegewezen instructie voldoet aan het doel omdat de uitvoer o wordt bijgewerkt wanneer een van de invoer aan de rechterkant verandert.
ssis
// 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
Hardwareschema
Na ontwerpuitwerking en synthese gedraagt een combinatorisch circuit zich op dezelfde manier als gemodelleerd door de toewijzingsinstructie.
Het signaal o wordt 1 wanneer de combinatie-uitdrukking op de RHS waar wordt.
Op dezelfde manier wordt o 0 als RHS onwaar is. Uitgang o is X van 0ns tot 10ns omdat de ingangen tegelijkertijd X zijn.