시프트 레지스터: 루프 반복 사이에 값 전달하기
- 업데이트 날짜:2025-08-27
- 2분 (읽기 시간)
다음 반복으로 이전 반복의 값을 루프를 통해 전달하고자 할 때 시프트 레지스터를 사용합니다. 다음과 같이 시프트 레지스터는 루프 경계의 양 옆에 서로 반대인 터미널 쌍으로 나타납니다.
루프 오른쪽의 터미널에는 윗방향 화살표가 있고 반복이 끝날 때마다 데이터를 저장합니다. LabVIEW는 시프트 레지스터의 오른쪽 터미널에 저장된 데이터를 왼쪽 터미널로 전송합니다. 그 후에는 루프가 왼쪽 터미널에서 받은 데이터를 다음 반복의 초기값으로 사용합니다. 이 과정은 루프의 모든 반복이 실행될 때까지 계속됩니다. 루프가 실행된 후에 루프의 오른쪽의 터미널은 시프트 레지스터에 저장된 마지막 값을 반환합니다.
시프트 레지스터는 모든 데이터 타입을 전달할 수 있으며, 시프트 레지스터에 연결된 첫 번째 객체와 일치하도록 자동으로 데이터의 타입을 변환시킵니다. 각 시프트 레지스터의 터미널에 연결하는 데이터는 동일 타입이어야 합니다. 에러 클러스터가 병렬 For 루프의 시프트 레지스터에 연결되면 시프트 레지스터가 에러 레지스터로 변환됩니다.
한 루프에 여러 개의 시프트 레지스터를 놓을 수 있습니다. 루프 속에서 여러 개의 실행이 이전 루프 값을 사용해야 될 경우, 다음 블록다이어그램과 같이 여러 시프트 레지스터를 사용하여 구조 내 각기 다른 프로세스의 데이터 값을 저장합니다.
이전 블록다이어그램에서 오른쪽 위 시프트 레지스터 터미널은 첫번째 반복에서 2, 0와 2의 합을 추가적인 작업의 두번째 반복을 위해 왼쪽 위 터미널에 초기값으로 전달합니다. 오른쪽 아래 터미널은 첫번째 반복에서 1과 2의 곱인 2를 곱셈 작업의 두번째 반복을 위해 왼쪽 아래 터미널에 초기값으로 전달합니다.
두번째 반복은 2와 2를 더하고 세번째 반복을 위해 왼쪽 위 터미널에 결과인 4를 전달합니다. 또한 두번째 반복도 2와 2를 곱하고 세번째 반복을 위해 왼쪽 아래 터미널에 결과인 8을 전달합니다.
열번 반복 후 오른쪽 위 터미널은 더하기 작업의 마지막 결과를 위쪽 인디케이터에 전달하고 오른쪽 아래 터미널은 곱하기 작업의 마지막 결과를 아래쪽 인디케이터에 전달합니다.