728x90
Blocking
Blocking 무언가를 막다라는 뜻을 가지고 있다. Blocking assignment는 simulation의 흐름을 막으면서 일을 하고 non-blocking은 막지 않으면서 일을 하고 있다.
Blocking은 (=) 원패스이고 오른쪽 변수들이 업데이트 되는 순간에 왼쪽에 있는 변수들도 업데이트되는 것을 볼 수 있다. 예를 들어 a[3]=in;에서 in의 값이 바뀌는 순간에 a[3]도 1로 바뀌는 것을 알 수 있다. Blocking 문은 위에서부터 아래로 순서대로 실행되므로, 하나의 대입문의 실행이 완료되지 않으면 밑에 있는 대입문들은 처리되지 않는다. 대기상태를 가진다고 볼 수 있다. Execution flow within the procedure is blocked until the assignment is completed.
Non-Blocking
Non=blocking(<=)은 two pass를 사용 RHS 업데이트되는 값을 가지고 다음 업데이트를 하게 된다. Non-blocking문의 실행은 동시에 처리되므로 위, 아래 순서는 전혀 상관 없다. Excution flow within the procedure is not blocked.
플립플롭과 같은 저장회로를 구현할 때는 ‘<=’non-blocking을 사용.
AND, OR과 같은 조합회로를 구현할 때는 ‘=’ blocking을 사용.
728x90
'디지털 논리회로' 카테고리의 다른 글
디지털 논리회로 / Moore FSM과 Mealy FSM의 장단점 (2) | 2021.05.03 |
---|---|
디지털 논리회로 / carry와 overflow의 차이 (0) | 2021.05.03 |
디지털 논리회로 / carry look-ahead adder(CLA), 32-bits CLA와 32-bits RCA의 크기 속도 비교 (0) | 2021.05.03 |
디지털 논리회로 / halfadder, fulladder (0) | 2021.05.03 |
디지털 논리회로 / 부호가 없는 수, 2의 보수, 병렬 이진 가감산기 (0) | 2021.05.03 |
댓글