Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Verilog

Verilog initieel blok

Een set Verilog-instructies wordt meestal achter elkaar uitgevoerd in een simulatie. Deze verklaringen zijn geplaatst in een procedurele blok. Er zijn hoofdzakelijk twee soorten procedurele blokken in Verilog - initieel en altijd

Syntaxis

  
  
	initial 
		[single statement]

	initial begin
		[multiple statements]
	end

  

Waarvoor wordt het initiële blok gebruikt?

Een initial blok kan niet worden gesynthetiseerd en kan daarom niet worden omgezet in een hardwareschema met digitale elementen. Vandaar dat initiële blokken niet veel nut hebben dan om in simulaties te worden gebruikt. Deze blokken worden voornamelijk gebruikt om variabelen te initialiseren en ontwerppoorten met specifieke waarden aan te sturen.

Wanneer begint en eindigt een eerste blok?

Een initial blok wordt gestart aan het begin van een simulatie op tijd 0 eenheid. Dit blok wordt gedurende de gehele simulatie slechts één keer uitgevoerd. Uitvoering van een initial blok eindigt zodra alle instructies in het blok zijn uitgevoerd.

De afbeelding hierboven heeft een module genaamd gedragen die twee interne signalen heeft, a en b genoemd. De initial blok heeft slechts één instructie en daarom is het niet nodig om de instructie binnen begin . te plaatsen en end . Deze instructie kent de waarde 2'b10 toe aan a wanneer het initiële blok wordt gestart op tijdstip 0 eenheden.

Wat gebeurt er als er een vertragingselement is?

De onderstaande code heeft een extra instructie die een waarde toekent aan het signaal b. Dit gebeurt echter pas na 10 tijdseenheden vanaf de uitvoering van de vorige instructie. Dit betekent dat a eerst de gegeven waarde krijgt en vervolgens na 10 tijdseenheden b wordt toegewezen aan 0.

Hoeveel initiële blokken zijn toegestaan ​​in een module?

Er zijn geen limieten voor het aantal initial blokken die binnen een module kunnen worden gedefinieerd.

De onderstaande code heeft drie initial blokken die allemaal tegelijkertijd worden gestart en parallel lopen. Afhankelijk van de verklaringen en de vertragingen binnen elk eerste blok, kan de tijd die nodig is om het blok te voltooien echter variëren.

In dit voorbeeld heeft het eerste blok een vertraging van 20 eenheden, terwijl het tweede een totale vertraging heeft van 50 eenheden (10 + 40) en het laatste blok een vertraging heeft van 60 eenheden. Vandaar dat de simulatie 60 tijdseenheden in beslag neemt, aangezien er nog minstens één initieel blok loopt tot 60 tijdseenheden.

$finish is een Verilog-systeemtaak die de simulator vertelt om de huidige simulatie te beëindigen.

Als het laatste blok een vertraging van 30 tijdseenheden had, zoals hieronder weergegeven, zou de simulatie zijn geëindigd bij 30 tijdseenheden, waardoor alle andere initial werden uitgeschakeld. blokken die op dat moment actief zijn.

  
  
	initial begin
		#30 $finish;
	end

  

Bekijk het onderstaande flash-voorbeeld om te zien hoe een initial blok wordt uitgevoerd in een simulatie.

Klik hier voor een slideshow met simulatievoorbeeld !


Verilog

  1. Verilog-zelfstudie
  2. Verilog-aaneenschakeling
  3. Verilog - In een notendop
  4. Verilog-opdrachten
  5. Verilog blokkeren en niet-blokkeren
  6. Verilog-functies
  7. Verilog-taak
  8. Verilog-klokgenerator
  9. Verilog wiskundige functies
  10. Verilog Tijdnotatie
  11. Verilog Tijdschaalbereik