산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> verilog

Verilog 기능

종종 우리는 RTL 내에서 반복적이고 여러 번 호출되는 특정 코드 조각을 찾습니다. 대부분 시뮬레이션 시간을 소비하지 않으며 다른 데이터 값으로 수행해야 하는 복잡한 계산이 포함될 수 있습니다. 이러한 경우 function을 선언할 수 있습니다. 함수 내부에 반복적인 코드를 배치하고 결과를 반환하도록 합니다. 이제 함수 호출만 하면 되므로 이렇게 하면 RTL의 줄 수가 크게 줄어듭니다. 계산을 수행해야 하는 데이터를 전달합니다. 사실 이것은 C의 함수와 매우 유사합니다.

함수의 목적은 표현식에 사용할 값을 반환하는 것입니다. 함수 정의는 항상 function 키워드로 시작합니다. 그 뒤에 괄호로 묶인 반환 유형, 이름 및 포트 목록이 옵니다. Verilog는 endfunction를 찾으면 함수 정의가 끝난다는 것을 알고 있습니다. 예어. 함수에는 적어도 하나의 입력이 선언되어 있어야 하며 반환 유형은 void입니다. 함수가 아무 것도 반환하지 않는 경우.

구문

  
  
	function [automatic] [return_type] name ([port_list]);
		[statements]
	endfunction

  

키워드 automatic 함수를 재진입으로 만듭니다. 작업 내에서 선언된 항목은 작업의 서로 다른 호출 간에 공유되지 않고 동적으로 할당됩니다. 이것은 재귀 함수에 유용하고 동일한 함수가 분기될 때 N개의 프로세스에 의해 동시에 실행될 때 유용합니다.

함수 선언

함수에 대한 입력을 선언하는 두 가지 방법이 있습니다.

  
  
	function [7:0] sum;
		input [7:0] a, b;
		begin
			sum = a + b;
		end
	endfunction
	
	function [7:0] sum (input [7:0] a, b);
		begin
			sum = a + b;
		end
	endfunction

  

함수에서 값 반환

함수 정의는 암시적으로 함수와 동일한 이름의 내부 변수를 생성합니다. 따라서 함수 범위 내에서 동일한 이름의 다른 변수를 선언하는 것은 불법입니다. 함수 결과를 내부 변수에 대입하여 반환값을 초기화합니다.

  
  
	sum = a + b;

  

함수 호출

함수 호출 표현식이 있는 피연산자이며 아래와 같은 구문을 갖습니다.

  
  
	reg [7:0] result;
	reg [7:0] a, b;
	
	initial begin
		a = 4;
		b = 5;
		#10 result = sum (a, b);
	end

  

기능 규칙

재귀 함수

자신을 호출하는 함수를 재귀 함수라고 합니다. 아래 표시된 예에서 재귀 함수는 주어진 숫자의 계승을 계산하기 위해 작성되었습니다.

  
  
module tb;
  initial begin
    integer result = factorial(4);
    $display("factorial(4) = %0d", result);
  end
  
	function automatic integer factorial(integer i);
      integer result = i;
      
      // This function is called within the body of this 
      // function with a different argument
      if (i) begin
      	result = i * factorial(i-1);
        $display("i=%0d result=%0d", i, result);
      end else
        result = 1;
        
      return result;
	endfunction
endmodule

  
시뮬레이션 로그
xcelium> run
i=1 result=1
i=2 result=2
i=3 result=6
i=4 result=24
factorial(4) = 24
xmsim: *W,RNQUIE: Simulation is complete


verilog

  1. Stratasys Insight의 10가지 인기 기능
  2. 프로그램 예제가 있는 C++ 함수
  3. 예제가 있는 Python Lambda 함수
  4. Verilog 튜토리얼
  5. Verilog 연결
  6. Verilog 할당
  7. Verilog 차단 및 비 차단
  8. Verilog 수학 함수
  9. C - 기능
  10. MATLAB - 함수