Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Verilog

Операторы блоков Verilog

Существуют способы сгруппировать набор операторов вместе, которые синтаксически эквивалентны одному оператору и известны как блочные операторы. . Есть два типа блочных операторов:последовательные и параллельные.

Последовательно

Операторы обертываются с использованием begin и end ключевые слова и будут выполняться последовательно в заданном порядке, один за другим. Значения задержки обрабатываются относительно времени выполнения предыдущего оператора. После того, как все операторы внутри блока выполнены, управление может быть передано в другое место.

  
  
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

  

В приведенном выше примере первый оператор в begin-end блок будет выполняться за 10 единиц времени, а второй оператор за 30 единиц времени из-за относительного характера. Это 20 единиц времени после выполнения предыдущего оператора.

Журнал моделирования
ncsim> run
[Time=10] data=0xfe
[Time=30] data=0x11
ncsim: *W,RNQUIE: Simulation is complete.

Параллельно

параллель блок может выполнять операторы одновременно, а управление задержкой может использоваться для обеспечения упорядочения назначений по времени. Операторы запускаются параллельно, заключая их в fork и join ключевые слова.

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

  

В приведенном выше примере fork-join блок будет запущен после выполнения оператора в 10 единиц времени. Операторы в этом блоке будут выполняться параллельно, и первым будет запущен оператор, в котором данным присваивается значение 8'h00, поскольку задержка для этого составляет 10 единиц времени после запуска fork-join. Еще через 10 единиц времени будет запущен первый оператор, и данные получат значение 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

  

Есть begin-end блок в приведенном выше примере, и все операторы в пределах блока begin-end будут выполняться последовательно, но сам блок будет запущен параллельно с другими операторами. Таким образом, данные получат 8:11 в 20 единицах времени, 8:00 в 30 единицах времени и 8'haa в 60 единицах времени.

Именование блоков

Как последовательные, так и параллельные блоки могут быть названы путем добавления : name_of_block после ключевых слов begin и fork . Таким образом, на блок можно ссылаться в disable заявление.

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

  

Verilog

  1. Как автоматизация подготовки данных ускоряет получение аналитических сведений?
  2. Учебник Verilog
  3. Конкатенация Verilog
  4. Verilog - в ореховой скорлупе
  5. Верилог Задания
  6. Блокировка и неблокировка Verilog
  7. Блоки управления Verilog
  8. Верилог-функции
  9. Семантика планирования Verilog
  10. Пора улучшать ваши S&OP, системы данных и планирования