시프트 레지스터

위키백과 ― 우리 모두의 백과사전.

디지털 회로에서 시프트 레지스터는 선형 방식에 설치된 프로세서 레지스터의 그룹이며 회로가 활성화 되었을때 데이터를 아래로 이동시키는 라인같은 입출력으로 서로 연결되어 있다.

목차

[편집] 시프트 레지스터의 종류

시프트 레지스터는 직렬입력, 병렬출력 (SIPO)와 병렬입력, 직렬출력 (PISO) 형태를 포함하여 직렬과 병렬의 입출력 조합을 가지고 있다. 여기에는 직병렬 입력을 가지고 직병렬 출력을 지닌 형태가 있다. 또한 시프트 레지스터의 방향을 다양하게 할 수 있는 양방향성 시프트 레지스터도 있다. 그리고 레지스터의 직렬 입력과 출력은 원 시프트 레지스터를 만들기 위해 서로 연결할 수도 있다. 하나의 시프트 레지스터는 다중 크기의 시프트 레지스터를 만들 수 있어서, 더 복잡한 연산을 수행할 수 있다.

[편집] 직렬입력, 직렬출력

[편집] 파괴 판독

이것들은 가장 간단한 종류의 시프트 레지스트이다. 데이터열은 "데이터 입력"에 나타나고, 높이 주어진 "데이터 상승"을 각 시간마다 한 단계씩 오른쪽으로 이동한다. 각각 상승되었을때, 가장 왼쪽 (즉 "데이터 입력")에 있는 비트는 첫번째 플립플롭의 출력으로 이동된다. 가장 오른쪽 (즉 "데이터 출력")에 있는 비트는 이동해서 출력되고 손실된다.


0 0 0 0
1 0 0 0
1 1 0 0
0 1 1 0
1 0 1 1
0 1 0 1
0 0 1 0
0 0 0 1
0 0 0 0

데이터는 'Q' 출력의 각각 플립플롭에 저장되서, 이 배열에서, 4개의 단계 "슬롯"이 가능하며, 그러므로 4 비트 레지스터이다. 이동하는 모양의 생각을 만들기 위해서, 레지스터가 0000를 유지하고 있다고 상상해 보자. (그래서 모든 저장슬롯은 비어있다) "데이터 입력"이 레지스터에 1,1,0,1,0,0,0,0 ("데이터 상승" 각 시간에 펄스마다, 순서대로. 이것을 클럭이나 스토브라고 부른다)을 입력하는 대로, 이것이 결과이다. 왼쪽 칸은 가장 왼쪽 플립플롭의 출력에 대응되며, 반복된다.

그래서 전체 레지스터의 직렬 출력은 00001101 (마지막 단계는 세지않음)이다. 당신이 볼 수 있는것 처럼 입력 데이터를 유지한다면, 정확히 입력한데로 결과를 얻을 것이지만, 네개의 "데이터 상승" 주기에 의하여 초기화 된다. 이 배열은 의 하드웨어와 동등하다. 또한, 어떠한 경우에, 전체 레지스터는 리셋핀에 하이를 인가하여 영으로 설정할 수 있다.

이 배열은 "파괴 판독"을 수행한다 - 데이터는 가장 오른쪽 비트의 시프트 출력으로 손실된다.

[편집] 비파괴 판독

비파괴 판독은 아래에 보여지는 설정을 이용하여 얻을 수 있다. 다른 입력선이 추가된다 - 읽기/쓰기 제어. 이것이 1 (즉 쓰기)이면 시프트 레지스터는 일반적으로 동작하며, 모든 클럭 주기마다 입력 데이터는 한번씩 상승하고, 데이터는 레지스터의 마지막은 손실된다. 그러나 R/W 제어신호가 0 (즉 읽기)으로 설정되었으면, 오른쪽 레지스터의 시프트 출력되는 어떤 데이터는 왼쪽의 다음 입력이 되고, 시스템은 유지된다. 그러므로, R/W 제어신호가 0으로 설정된 만큼, 데이터가 시스템으로부터 손실될 수 없다.


이 움직임에서, 마지막 4개의 출력 비트는 가장 오른쪽에서 보여준다. R/W 제어신호가 0으로 설정되었을때, 데이터는 출력되고 레지스터의 입력으로 불러들이지만, R/W가 1이면, 데이터는 시프트 출력되고 손실된다.

[편집] 직렬입력, 병렬출력

이 설정은 직렬 형태에서 병렬 형태로 변환이 가능하다. 데이터는 위의 직렬입력 직렬출력 (SISO) 부분에서 설명한것 처럼, 직렬로 입력된다. 한번 데이터가 입력되면, 각 출력을 동시에 읽거나 시프트 출력과 대체할 수 있다.

4 비트 직렬입력 병렬출력 시프트 레지스터
4 비트 직렬입력 병렬출력 시프트 레지스터


[편집] 병렬입력, 직렬출력

이 설정은 병렬 형태로 D1에서 D4까지 선에 데이터를 입력한다. 데이터를 레지스터에 기록하기 위해서, 쓰기/시프트 제어신호는 반드시 0으로 고정되어야 한다. 데이터를 시프트하기 위해서, W/S 제어신호는 1 이고 레지스터는 클럭이 입력된다. 직렬입력 직렬출력 시프트 레지스터처럼 배열과, 데이터 입력처럼 D1은 이제 동작한다. 그러나, 클럭 주기의 횟수가 데이터열의 길이보다 크지 않으면, 데이터 출력, Q는, 순서대로 병렬 데이터를 읽을 것이다.

4 비트 병렬입력 직렬출력 시프트 레지스터
4 비트 병렬입력 직렬출력 시프트 레지스터

아래의 움직이는 그림은 시프트 레지스터의 내부상태를 포함하여, 쓰기/시프트 순서를 보여준다.


[편집] 병렬입력, 병렬출력

시프트 레지스터의 이 종류는 병렬입력 (D0 - D3)로부터 데이터를 취하고 레지스터가 클럭이 입력될때 대응되는 출력 (Q0 - Q3)로 시프트한다. 새로운 정보가 준비될때 까지, 시스템의 나머지 부분의 입력처럼 남아있는 오래된 정보는, "역사"의 종류처럼 사용될 수 있으며, 그래서, 레지스터는 클럭입력되고, 새로운 데이터는 "통과 된다".

4 비트 병렬입력 병렬출력 시프트 레지스터
4 비트 병렬입력 병렬출력 시프트 레지스터


주의: 입력 D0 - D3는 Q1 - Q4로 부정확하게 표시되었고 최고열을 의미한다.

[편집] 사용

시프트 레지스터의 가장 일반적인 사용중 하나는 직렬과 병렬 인터페이스를 변경하는 것이다. 이것은 병렬 비트의 그룹으로 동작하는 많은 회로에 유용하지만, 직렬 인터페이스는 구성을 간단하게 한다. 시프트 레지스터는 간단한 지연 회로처럼 사용될 수 있다. 몇가지 양방향 시프트 레지스터는 스택의 하드웨어 구현을 위해서 병렬로 열결할 수도 있다.

시프트 레지스터는 파형 확장기로 사용할 수도 있다. 단안정 멀티바이트레이터와 비교해서 타이밍은 부품 특성값에 의존되지 않는다. 그러나 외부 클럭이 요구되고 타이밍 정확성은 클럭의 입상에 의하여 제한된다. 예시 - 로냐 트위스터, 다섯개의 74164 시프트 레지스터는 이 방법으로 타이밍 논리의 코어를 생성한다. (회로도).

[편집] 역사

첫번째로 알려진 시프트 레지스터의 예시중 하나는 1940년대의 암호해독 장비인, 콜로서스 컴퓨터에서 발견되었다. 그것은 진공관으로 만들어진 다섯개의 상태 소자이다.

[편집] 바깥 고리

[편집] 같이 보기