논리 회로/디지털 논리 회로
Shift Register
유로 청년
2024. 7. 4. 17:52
1. Shift Register
- 데이터를 연산하거나 전송, 변환하려면 데이터를 왼쪽 혹은 오른쪽으로 Shfit해야 한다.
- 데이터를 Shift할 수 있도록 레지스터를 이용하여 만든 디지털 회로를 "Shift Register"이다.
2. Shift Register의 종류
- Shift Register는 데이터의 입력과 출력 방법에 따라 종류를 나눌 수 있다.
- SISO (Serial In Serial Out)
- PISO (Parallel In Serial Out)
- SIPO (Serial In Parallel Out)
- PIPO (Parallel In Parallel Out)
- 그림 13-1 (a), SISO Shift Register는 데이터가 직력로 입력되어 직렬로 출력된다.
- 그림 13-1 (b), PISO Shift Register는 병렬로 입력되어 직렬로 출력된다.
병렬의 데이터를 입력받은 다음 직렬로 전환하여 1비트씩 출력하는 것이다.
즉, 병렬의 데이터를 입력받은 뒤, 1비트씩 Shift한 뒤, 결과 값을 1비트씩 출력한다. - 그림 13-1 (c), 직렬 데이터를 입력 받은 뒤, Shift한 결과값을 병렬로 전환하여 출력한다.
- 그림 13-1 (d), 병렬로 입력된 데이터를 Shift한 뒤, 결과값을 다시 병렬로 출력한다.
3. SISO Shift Register
- 아래 그림은 D Flip-Flop으로 구현한 SISO Shift Register이다.
- 모든 D Flip-Flop에 CLK 신호가 동기화되어 있기 때문에 동기화된 Shift Register이다.
즉, CLK 신호의 변화에 대해서 첫 번째 D Flip-Flop부터 순차적으로 변화하는 것이 아니라
한 번에 동시에 모든 D Flip-Flop이 CLK 신호의 변화에 대해서 반응하여 결과값을 출력한다.
- SISO Shift Register를 구성하는 D Flip-Flop은 Rising-edge sensitive에서 동작한다는 점을 유념하자.
- 아래 표는 Shift Register에 공급되는 CLK 신호와 Data 값에 따라 각 Flip-Flop의 출력 값, Q값들의 변화를 표로 정리한 것이다.
- 첫 번째 Positive edge 일 경우
- QA 단자는 input data을 읽어서 1 값을 갖는다.
- QB 단자는 QA 단자를 읽어서 0 값을 갖는다.
- QC 단자는 QB 단자를 읽어서 0 값을 갖는다.
- QD 단자는 QC 단자를 읽어서 0 값을 갖는다.
- 따라서 QA, QB, QC, QD 값은 각각 1, 0, 0, 0이 출력된다. - 두 번째 Positive edge 일 경우
- QA 단자는 input data을 읽어서 0 값을 갖는다.
- QB 단자는 QA 단자를 읽어서 1 값을 갖는다.
- QC 단자는 QB 단자를 읽어서 0 값을 갖는다.
- QD 단자는 QC 단자를 읽어서 0 값을 갖는다.
- 따라서 QA, QB, QC, QD 값은 각각 0, 1, 0, 0이 출력된다. - 세 번째 Positive edge 일 경우
- QA 단자는 input data을 읽어서 0 값을 갖는다.
- QB 단자는 QA 단자를 읽어서 0 값을 갖는다.
- QC 단자는 QB 단자를 읽어서 1 값을 갖는다.
- QD 단자는 QC 단자를 읽어서 0 값을 갖는다.
- 따라서 QA, QB, QC, QD 값은 각각 0, 0, 1, 0이 출력된다. - 네 번째 Positive edge 일 경우
- QA 단자는 input data을 읽어서 0 값을 갖는다.
- QB 단자는 QA 단자를 읽어서 0 값을 갖는다.
- QC 단자는 QB 단자를 읽어서 0 값을 갖는다.
- QD 단자는 QC 단자를 읽어서 1 값을 갖는다.
- 따라서 QA, QB, QC, QD 값은 각각 0, 0, 0, 1이 출력된다.