Chiusakpung's Electronics Blog

블로그 이미지
Computer programming ...
by 치우삭풍
  • Total hit
  • Today hit
  • Yesterday hit

'Parameter'에 해당되는 글 1건

  1. 2009.05.31
    [3] parameter, defparam
c 프로그램에서는 다음과 같이 Call by value를 통해 함수로 인자(paramter)를 넘겨줄 수 있습니다.

int factorial(int n = 0) {
  if (n == 0 || n == 1) return 1;
  else return n * factorial(n - 1);
}

int main() {
    int n = 10;
    factorial(n);

    n = 5;
    factorial(n);

    return 0;
}

위 프로그램을 베릴로그로 작성할 경우 다음과 같이 바꿔주면 되는데...
1) factorial이라는 모듈(함수)의 호출인자 n을 parameter라는 명령어로 정의해줍니다.
2) main이라는 모듈(함수)에서 factorial을 호출하기 위해 defparam라는 명령어로 factorial1.n = 5, factorial2.n = 10으로 
정의합니다.
3) 끝으로, factorial 모듈을 호출할 경우 factorial factorial1.n ();
으로 값을 넘겨줍니다.

1~3을 정리하면, 왼쪽의 c 문법이 오른쪽의 verilog 문법으로 바뀌는 것이지요


int factorial(int n = 0)     ->     module factorial; paramter n = 0;
factorial(10)                  ->     defparam param.n = 10;    factorial param.n ();
int n = 5;                      ->      defparam ex.n = 5;
factorial(n);                  ->      factorial ex ();

(예제)

module counter;

parameter Max = 0;

integer R;

 

initial

        for (R=l; R <= Max; R = R + 1)

               $display ("R= %d", R)

endmodule

 

module main_module;

defparam  COUNTER1.Max = 5,

          COUNTER2.Max = 10;

 

counter COUNTER1 ();

counter COUNTER2 ();

endmodule

덧붙여 설명하면 parameter는 함수의 호출인자들의 꾸러미라고 볼 수 있습니다. defparam은 호출전에 그 꾸러미의 내용이 무엇인지 값들을 할당해 주는 것이고요.

즉, 마지막에 counter COUNTER1 (); 과 같이 호출을 하게 되면, counter모듈은 그 뒤의 COUNTER1라는 꾸러미를 풀어서 그 안의 parameter 값들을 조사합니다. COUNTER1에 Max라는 이름이 5라는 값으로 배정되어 있네요. 따라서 counter는 Max = 5로 초기화한 뒤 원래의 계수 알고리즘을 수행합니다.

cf) parameter와 defparam의 EBNF는 다음과 같습니다.

parameter_declaratLon         ::= parameter <range> <list_of_assignments>;

range                         ::= | [<expression> : <expression>]

list_of_assignments           ::= <parameter_assignment>

                              | <parameter_assignment> , <list_of_assignments>

parameter_assignment          ::= <lvalue> = <expression>

AND

ARTICLE CATEGORY

전체 (126)
EECS (56)
Physics (5)
Misc. (60)

RECENT ARTICLE

RECENT COMMENT

RECENT TRACKBACK

CALENDAR

«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

ARCHIVE