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 Block-instructies

Er zijn manieren om een ​​set instructies te groeperen die syntactisch equivalent zijn aan een enkele instructie en die bekend staan ​​als blokinstructies . Er zijn twee soorten blokinstructies:sequentieel en parallel.

Opeenvolgend

Verklaringen worden verpakt met begin en end trefwoorden en worden opeenvolgend uitgevoerd in de opgegeven volgorde, de een na de ander. Vertragingswaarden worden behandeld ten opzichte van het tijdstip van uitvoering van de vorige instructie. Nadat alle instructies in het blok zijn uitgevoerd, kan de besturing ergens anders worden doorgegeven.

  
  
module design0;
	bit [31:0] data;
  
	// "initial" block starts at time 0
	initial begin
      
		// After 10 time units, data becomes 0xfe 
		#10   data = 8'hfe;
		$display ("[Time=%0t] data=0x%0h", $time, data);
      
		// After 20 time units, data becomes 0x11
		#20   data = 8'h11;
		$display ("[Time=%0t] data=0x%0h", $time, data);
	end
endmodule

  

In het bovenstaande voorbeeld, eerste instructie in de begin-end blok wordt uitgevoerd op 10 tijdseenheden, en de tweede instructie op 30 tijdseenheden vanwege de relatieve aard. Het is 20 tijdseenheden na uitvoering van het vorige statement.

Simulatielogboek
ncsim> run
[Time=10] data=0xfe
[Time=30] data=0x11
ncsim: *W,RNQUIE: Simulation is complete.

Parallel

Een parallel blok kan gelijktijdig instructies uitvoeren en vertragingsbesturing kan worden gebruikt om de opdrachten in de tijd te ordenen. Verklaringen worden parallel gestart door ze in de fork . te plaatsen en join trefwoorden.

  
  
	initial begin
		#10   data = 8'hfe;
		fork
		   #20 data = 8'h11;
		   #10 data = 8'h00;
		join
	end

  

In het bovenstaande voorbeeld fork-join blok wordt gestart na het uitvoeren van de instructie met 10 tijdseenheden. Verklaringen binnen dit blok worden parallel uitgevoerd en de eerste instructie die wordt gestart, is die waarbij de gegevens een waarde van 8'h00 krijgen, aangezien de vertraging daarvoor 10 tijdseenheden is na de lancering van de fork-join. Na nog 10 tijdseenheden wordt de eerste instructie gelanceerd en krijgen de gegevens de waarde 8'h11.

  
  
	initial begin
		#10 data = 8'hfe;
		fork
			#10 data = 8'h11;
			begin
				#20 data = 8'h00;
				#30 data = 8'haa;
			end
		join
	end

  

Er is een begin-end blok in het bovenstaande voorbeeld, en alle instructies binnen het begin-eindblok worden opeenvolgend uitgevoerd, maar het blok zelf wordt parallel met de andere instructies gestart. De gegevens krijgen dus 8'h11 op 20 tijdseenheden, 8'h00 op 30 tijdseenheden en 8'haa op 60 tijdseenheden.

Benoeming van blokken

Zowel sequentiële als parallelle blokken kunnen een naam krijgen door : name_of_block . toe te voegen na de trefwoorden begin en fork . Door dit te doen, kan naar het blok worden verwezen in een disable verklaring.

  
  
	begin : name_seq
		[statements]
	end
	
	fork : name_fork
		[statements]
	join

  

Verilog

  1. Hoe automatisering van gegevensvoorbereiding de tijd tot inzichten versnelt?
  2. Verilog-zelfstudie
  3. Verilog-aaneenschakeling
  4. Verilog - In een notendop
  5. Verilog-opdrachten
  6. Verilog blokkeren en niet-blokkeren
  7. Verilog-besturingsblokken
  8. Verilog-functies
  9. Verilog Scheduling Semantiek
  10. Het is tijd om uw S&OP-, data- en planningssystemen te verbeteren
  11. De beste manier om telematicagegevens te gebruiken