시프트 레지스터
Shift register시프트 레지스터는 하나의 플립 플랍의 출력이 다음 플립 플랍의 입력에 연결되는 캐스케이드 형태의 디지털 회로입니다.이들은 단일 클럭 신호를 공유하기 때문에 시스템에 저장된 데이터가 한 위치에서 다음 위치로 이동합니다.마지막 플립 플랍을 첫 번째 플립 플랍에 다시 연결함으로써 데이터는 시프터 내에서 장시간 순환할 수 있으며, 이 형태에서는 컴퓨터 메모리의 한 형태로 사용되었습니다.이 역할에서는 초기 지연 라인 메모리 시스템과 매우 유사하며 1960년대 후반과 1970년대 초반에 메모리 형식을 대체하기 위해 널리 사용되었습니다.
대부분의 경우, "비트 어레이"로 알려진 더 큰 메모리 풀을 구축하기 위해 여러 개의 병렬 시프트 레지스터가 사용됩니다.데이터는 어레이에 저장되고 병렬로 읽혀집니다(종종 컴퓨터 워드로 사용), 각 비트는 시프트 레지스터에 시리얼로 저장됩니다.비트 어레이 설계에는 고유의 트레이드오프가 있습니다.한 줄에 플립 플랍을 더 많이 배치하면 하나의 시프터가 더 많은 비트를 저장할 수 있지만 데이터를 다시 읽기 전에 모든 시프터를 통해 데이터를 푸시하려면 더 많은 클럭 사이클이 필요합니다.
시프트 레지스터에는 병렬 및 직렬 입력 및 출력이 모두 포함될 수 있습니다.이것은, 「시리얼 입력, 병행 출력」(SIPO) 또는 「패럴렐 입력, 시리얼 출력」(PISO)으로 설정되어 있는 경우가 많습니다.직렬 및 병렬 입력이 모두 포함된 유형과 직렬 및 병렬 출력이 포함된 유형도 있습니다.L → R 또는 R → L의 양방향으로 시프트할 수 있는 "쌍방향" 시프트 레지스터도 있습니다.시프트 레지스터의 직렬 입력 및 마지막 출력을 연결하여 "원형 시프트 레지스터"를 생성할 수도 있습니다.PIPO 레지스터(병렬 입력, 병렬 출력)는 매우 빠릅니다. 단일 클럭 펄스 내에서 출력이 제공됩니다.
시리얼 인 시리얼 아웃(SISO)
파괴적 판독치
0 | 0 | 0 | 0 | 0 |
---|---|---|---|---|
1 | 1 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 0 |
3 | 1 | 0 | 1 | 0 |
4 | 1 | 1 | 0 | 1 |
5 | 0 | 1 | 1 | 0 |
6 | 0 | 0 | 1 | 1 |
7 | 0 | 0 | 0 | 1 |
8 | 0 | 0 | 0 | 0 |
이것들은 가장 간단한 종류의 시프트 레지스터입니다.데이터 문자열은 "data in"으로 표시되며 "data advance"가 높아질 때마다 한 단계씩 오른쪽으로 이동합니다.각 진행 시 맨 왼쪽에 있는 비트(즉, "데이터 입력")가 첫 번째 플립 플랍 출력으로 전환됩니다.오른쪽 끝에 있는 비트(즉, "데이터 출력")가 어긋나 손실됩니다.
데이터는 "Q" 출력의 각 플립 플랍 후에 저장되므로 이 배열에서는 4개의 스토리지 "슬롯"을 사용할 수 있으므로 4비트 레지스터입니다.이동 패턴을 이해하기 위해 레지스터에 0000이 있다고 가정해 보십시오(모든 스토리지 슬롯이 비어 있습니다)."데이터 입력"이 레지스터에 1,0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0(이 순서로 매회 "데이터 어드밴스"로 펄스를 표시함, 즉 크로킹 또는 스트로빙이라고 함)을 표시하면 다음과 같은 결과가 됩니다.오른쪽 열은 가장 오른쪽 플립 플랍의 출력 핀에 해당합니다.
따라서 레지스터 전체의 시리얼 출력은 00010110 입니다.데이터가 계속 입력되면 정확히 입력(10110000)된 값을 얻을 수 있지만 4개의 "데이터 어드밴스" 사이클만큼 오프셋됩니다.이 배열은 큐와 동등한 하드웨어입니다.또, 리셋(R) 핀을 하이로 하는 것으로써, 언제라도 레지스터 전체를 제로로 설정할 수 있다.
이 배열은 파괴적인 판독을 수행합니다. 즉, 각 데이터는 오른쪽 끝 비트에서 이동하면 손실됩니다.
시리얼 입력 병렬 출력(SIPO)
이 구성을 사용하면 직렬 형식에서 병렬 형식으로 변환할 수 있습니다.데이터 입력은 위의 SISO 섹션에서 설명한 바와 같이 시리얼입니다.데이터가 클럭 인되면 각 출력에서 동시에 읽히거나 시프트 아웃할 수 있습니다.
이 구성에서는 각 플립 플랍이 에지 트리거됩니다.모든 플립 플랍은 지정된 클럭 주파수로 작동합니다.각 입력 비트는 N클럭 사이클 후에 N번째 출력으로 내려가 병렬 출력으로 이어집니다.
시리얼 로드 프로세스 중에 병렬 출력이 변경되어서는 안 되는 경우에는 래치된 출력 또는 버퍼된 출력을 사용하는 것이 좋습니다.래치된 시프트 레지스터(예를 들어 74595)에서는 시리얼 데이터가 먼저 내부 버퍼 레지스터에 로드된 후 로드 신호를 수신하면 버퍼 레지스터 상태가 출력 레지스터 세트에 복사됩니다.일반적으로 직렬 입력/병렬 출력 시프트 레지스터의 실제 적용은 단일 와이어의 직렬 형식에서 여러 와이어의 병렬 형식으로 데이터를 변환하는 것입니다.
병렬 입력 시리얼 출력(PISO)
이 설정에서는 D1 ~D4 회선에 병렬 포맷으로 데이터 입력이 이루어지며 D1이 최상위 비트입니다.레지스터에 데이터를 쓰려면 쓰기/시프트 제어 라인이 낮게 유지되어야 합니다.데이터를 이동하기 위해 W/S 제어선이 HIGH로 표시되고 레지스터가 클럭됩니다.배열은 이제 D1을 데이터 입력으로 하여 PISO 시프트 레지스터로 작동합니다.단, 클럭 사이클 수가 데이터 스트링의 길이를 넘지 않는 한 데이터 출력 Q는 순서대로 병렬 데이터를 읽어냅니다.
아래 애니메이션은 변속 레지스터의 내부 상태를 포함하여 쓰기/시프트 시퀀스를 보여줍니다.
사용하다
시프트 레지스터의 가장 일반적인 용도 중 하나는 시리얼인터페이스와 패럴렐인터페이스간의 변환입니다.이것은 많은 회선이 병렬로 비트그룹에서 동작하지만 시리얼인터페이스는 구축이 간단하기 때문에 편리합니다.시프트 레지스터는 단순 지연 회로로 사용할 수 있습니다.스택의 하드웨어 구현을 위해 여러 개의 양방향 시프트 레지스터를 병렬로 연결할 수도 있습니다.
SIPO 레지스터는 일반적으로 사용 가능한 것보다 더 많은 범용 입출력 핀이 필요할 때 마이크로프로세서의 출력에 부착됩니다.이를 통해 여러 바이너리 장치를 두 개 또는 세 개의 핀만 사용하여 제어할 수 있지만 병렬 출력보다 더 느립니다.문제의 디바이스는 시프트 레지스터의 병렬 출력에 접속되어 있으며, 1개의 시리얼 접속을 사용하여 마이크로프로세서로부터 모든 디바이스의 원하는 상태를 송신할 수 있습니다.마찬가지로 PISO 구성은 일반적으로 사용 가능한 것보다 더 많은 바이너리 입력을 마이크로프로세서에 추가하기 위해 사용됩니다. 즉, 각 바이너리 입력(버튼이나 더 복잡한 회로 등)은 시프트 레지스터의 병렬 입력에 연결되고 데이터는 원래 필요한 것보다 몇 줄 적은 회선을 사용하여 마이크로프로세서에 직렬로 전송됩니다.
시프트 레지스터는 펄스 익스텐더로도 사용할 수 있습니다.단안정 멀티바이버레이터와 비교하여 타이밍은 컴포넌트 값에 의존하지 않지만 외부 클럭이 필요하며 타이밍 정확도는 이 클럭의 세밀도에 따라 제한됩니다.예: Ronja Twister에서는 5개의 74164 시프트 레지스터가 이러한 방식으로 타이밍 로직의 핵심을 생성합니다(절약).
초기 컴퓨터에서는 데이터 처리를 처리하기 위해 시프트 레지스터가 사용되었습니다: 2개의 시프트 레지스터에 추가되는 2개의 숫자가 저장되고, 그 결과는 시프트 레지스터 중 하나의 입력에 피드백됩니다(어큐뮬레이터). 바이너리 덧셈은 오직 결과만을 초래할 수 있기 때문입니다.같은 사이즈의 응답 또는 1비트 긴 응답입니다.
많은 컴퓨터 언어에는 레지스터의 데이터를 "오른쪽으로 이동" 및 "왼쪽으로 이동"하는 명령이 포함되어 있으며, 실제로 2로 나누거나 각 위치에 대해 2를 곱합니다.
매우 큰 시리얼 입력 시리얼 출력 시프트 레지스터(크기 수천 비트)는 1970년대 초에 제조된 일부 디바이스의 초기 지연 회선 메모리와 유사한 방식으로 사용되었습니다.그러한 기억은 때때로 순환기억이라고 불렸다.예를 들어 Datapoint 3300 단말기는 54(9팩의 6트랙으로 배열된) 200비트 시프트 레지스터를 사용하여 6비트 대문자의 72열 25행 디스플레이를 저장하여 1800자를 저장했습니다.시프트 레지스터 설계에서는 디스플레이 출력을 일시 정지하여 [1]한 줄의 문자를 건너뛰는 것만으로 터미널 디스플레이를 스크롤할 수 있습니다.
역사
시프트 레지스터의 첫 번째 알려진 예 중 하나는 1944년에 만들어진 암호 해독 기계인 Mark 2 Colosus이다.그것은 진공관과 티라트론으로 [2]만들어진 6단계 장치였다.시프트 레지스터는 1940년대 후반 고등연구소의 John von Neumann과 다른 사람들에 의해 만들어진 IAS 기계에도 사용되었다.
「 」를 참조해 주세요.
- 지연 라인 메모리
- 선형 피드백 시프트 레지스터(LFSR)
- 링 카운터
- SerDes(시리얼라이저/디시리얼라이저)
- 시리얼 페리페럴인터페이스 버스
- 시프트 레지스터 룩업 테이블(SRL)
- 순환 버퍼
레퍼런스
- ^ bitsavers.org, DataPoint 3300 Maintenance Manual, 1976년 12월
- ^ Flowers, Thomas H. (1983), "The Design of Colossus", Annals of the History of Computing, 5 (3): 246, doi:10.1109/MAHC.1983.10079