38 / 63 · 개념
시프트 레지스터의 상태 방정식
비트 이동을 벡터의 상태 전이로 나타내고 저장 길이와 출력 지연의 관계를 살펴봅니다.
내용은 무료로 볼 수 있습니다. 수강 신청하면 학습 기록을 저장할 수 있어요.
여러 플립플롭이 같은 이전 상태를 읽습니다
N비트 시프트 레지스터레지스터 여러 비트의 상태를 저장하는 회로입니다. 이 과정의 동기식 레지스터는 클록 에지에서 정해진 입력을 저장합니다. 자세히 보기에서 새 입력 d를 bit 0에 넣으면 다음 상태는 아래와 같습니다.
중괄호는 RTL의 연결 연산연결 연산 비트열을 옆으로 이어 붙이는 연산입니다. 결과 폭은 피연산자 폭의 합이며 숫자의 덧셈과는 다릅니다. 자세히 보기을 나타냅니다. 각 비트는 같은 이전 상태를 읽으므로 한 에지에 d가 레지스터 전체를 통과하지 않습니다. enable이 0이면 벡터 전체를 유지하고, reset이면 지정된 초기 벡터로 바꿉니다.
각 열은 한 상승 에지상승 에지 클록이 0에서 1로 바뀌는 순간입니다. CLK=1인 구간 전체를 뜻하는 레벨과 구별합니다. 자세히 보기에서 관찰한 값을 보여 줍니다. 입력은 에지 직전의 값이고, 이름에 after가 붙은 상태는 갱신 직후의 값입니다. 열은 샘플링 순서대로 놓았으며, 실제 전파 지연전파 지연 입력이 바뀐 뒤 출력이 올바른 값으로 안정되기까지 걸리는 시간입니다. 논리식의 등가성과 시간 특성은 별개입니다. 자세히 보기을 나타내지는 않습니다. 초기 q=000에서 din=1을 한 번 넣고 0을 세 번 넣습니다. 켜진 비트가 q0→q1→q2 순서로 이동한 뒤 사라집니다.
파형 데이터 보기
| 신호 | 파형 | 버스 값 |
|---|---|---|
| din | 10.. | |
| q2 after | 0.10 | |
| q1 after | 010. | |
| q0 after | 10.. | |
| q after | 2345 | 001 → 010 → 100 → 000 |
din=1로 한 번 진행한 뒤 din=0으로 바꾸고 세 번 더 진행하세요. 001→010→100→000을 확인할 수 있습니다. 입력을 바꾸는 순간에는 현재 q가 바뀌지 않으며, 다음 에지의 예상값만 달라집니다.
동기 reset이 enable보다 우선합니다. enable=0이면 현재 값을 유지합니다. q=000; q_next = (2q + din) mod 8
연결식을 수치식으로 바꾸어 확인하기
unsignedunsigned 비트열을 음수가 없는 정수로 해석하는 규칙입니다. n비트의 범위는 0부터 2^n−1이며, 같은 비트열의 signed 해석과 다를 수 있습니다. 자세히 보기 벡터로 해석하면 같은 전이는 다음과 같습니다.
N=3, Q=5(101), d=1이면 , 이므로 다음 값은 011입니다. 이 수치식은 연결식과 다른 형태의 참조 모델이 되어 구현 검증에 유용합니다.
무엇을 저장하고 있는가
오래된 비트가 가장 높은 인덱스로 이동하고, 새 비트가 가장 낮은 인덱스에 들어옵니다. 유효한 입력을 충분히 받은 뒤에는 '현재 입력과 이전 N-1개 입력'을 보관합니다. 패턴 감지, 간단한 지연선, 직렬-병렬 변환에 같은 구조를 활용할 수 있습니다.
저장 길이를 늘린다고 한 사이클에 처리할 수 있는 비트 수가 늘어나는 것은 아닙니다. 이 구조는 한 유효 에지에 한 비트를 수락합니다. 병렬로 입력하거나 여러 비트를 한 번에 이동하거나 ready/valid핸드셰이크 송신 측의 valid와 수신 측의 ready가 같은 에지에서 모두 1일 때 데이터를 전달하는 규칙입니다. 기다리는 동안 데이터를 유지하는 규칙도 포함합니다. 자세히 보기로 동작을 멈추려면, 각각에 맞는 데이터 경로와 제어 조건이 필요합니다.
직접 생각해 보기
N=4, 현재 Q=1101, 입력 d=0입니다. 연결식과 수치식으로 다음 Q를 각각 계산하세요.
해설 보기
연결식은 {101,0}=1010입니다. 수치식은 으로 같은 결과입니다. 이전 값의 최상위 비트 1은 저장 범위를 벗어나 사라집니다.