Behavior Modeling

난1렙이요·2024년 9월 27일

컴퓨터 회로

목록 보기
8/15

Value and Signal

value는 변수로, 소프트웨어적인 개념에서 값을 할당하는 부분이다. 그렇기에 직접적으로 값이 반영되며, 똑같은 시간, 즉시(instantaneosly) 값이 바뀐다.

signal은 물리적인 wire의 개념이다. 그렇기에 변수와는 다르게 신호가 들어가는 delay라는 과정이 들어간다. 내가 직접 delay를 넣어 주려면 [after delay-value]를 이용해서 넣어준다.

시그널은 영향을 받는 값이 있으며, 그 값을 Sensitivity List라고 부른다. 이는 Sensitivity List에 변화 갱길 때 마다 연산의 값이 시그널에 출력된다는 의미이다.


만약 after delay-value를 넣어주지 않는다면 기본적으로 delay가 들어간다. 이를 default delay(delta delay)라고 부른다.

Process Statement

  • process문의 내부는 순차적으로 처리를 하기 때문에, 복잡한 알고리즘을 구현할 때 편리하다.
  • process는 Sensitivity List에 적혀있는 신호에 변화가 생겼을 때 begin과 end process 사이의 문장을 실행한다.
  • 이 때 Sensitivity List는 하나의 조건(if)이라고 생각하면 편하다. - - 만약 Sensitivity List가 하나도 없으면, 항상 작동하게 된다.

대기

Wait statement

wait on signal[,signal] : Sensitivity List에 변화가 생기 때 까지 기다린다
wait until boolean_expression : boolean_expression이 true가 될 때 까지 기다린다.
wait for time_expression : time_expression동안 기다린다.

조건문

If Statement

다른 프로그래밍 언어의 if-else문과 동일한 형태를 취하고 있음.

Case Statement

다른 프로그래밍 언어의 case문과 동일한 형태를 취하고 있음.

반복문

For Statement

다른 프로그래밍 언어의 for문과 비슷하나, range가 다름. Range는 downto와 to의 형태를 가질 수 있으며, index_variable에 range를 할당한 순서대로 들어감.

While Statement

종료/실행문

종료/실행문은 반복문과 함께 사용하며, 예외처리를 할 때 주로 사용한다.

Exit Statement

when의 조건을 만족하면 지금 돌고있는 loop에서 탈출한다.

Next Statement

when의 조건을 만족하면 지금 돌고있는 iteration을 탈출하고 다음 iteration을 실행한다.

profile
다크 모드의 노예

0개의 댓글