PART14순차 논리회로(Sequential Logic Circuit)
실험 4 :Shift Register
Theory
쉬프트(shift)란 “위치를 바꾸다. 이동한다.”는 뜻이며, 레지스터의 동작은 클록 펄스(clock pulse)의 입력에 의해서 이루어진다.
여기서 쉬프트 레지스터의 동작 상태를 살펴보자. 만약 6비트의 데이터 101101 이 쉬프트 레지스터에 축적되어 있다고 하자. 이 상태를 보인 것이 그림 14-14 (a)이다. 이 상태에서 클록 펄스를 1개 받으면 그림 14-14 (b)와 같이 LSB(least significant bit)의 1은 밖으로 나와서 버려지고 각각의 비트는 1비트씩 왼쪽 숫자를 받는다.
이때, MSB(most significant bit)는 외부 데이터를 받는다. 그림에서는 외부 데이터는 모두 0이므로 1비트 우측 쉬프트가 행하여질 때마다 MSB에는 “0”이 들어온다. 이것은 우측 쉬프트(right shift)의 한 예이다.
그림 14-15(a)는 D플립플롭을 이용해서 구성한 우측 쉬프트 레지스터(right shift register)이다. 여기서 각 단의 D플립플롭에 현재 기억되어 있는 데이터값을 1010 이라 하고, 새로운 외부 데이터 직렬 입력 11010 이 D입력으로 입력될 때, 그리고 클록 펄스(즉, 쉬프트 펄스)의 트레일링 에지(trailing edge)상태마다 오른쪽으로 한 비트씩 데이터가 이동된다고 할 때 그 동작 상태를 그림 14-15(b)에 나타내었다.
쉬프트 레지스터를 이용하면 곱셈과 나눗셈을 할 수 있다. 즉, 왼쪽으로 한 번 쉬프트하면 2로 곱한 결과가 되고, 오른쪽으로 한 번 쉬프트하면 2로 나눈 결과가 된다. 예를 들면 5비트 2진 데이터값이 (10000)2인 경우 오른쪽으로 한 번 쉬프트하면 (1000)2이 되고, 또 한번 오른쪽으로 이동하면 (100)2이 된다. 여기서 2진 데이터값을 10진수로 바꾸어 보면 5비트 (10000)2은 (16)10이 되고 (1000)2은 (8)10, (100)2은 (4)10가 된다. 이는 16에서 1비트 오른쪽으로 이동하면 16 ÷ 2 = 8이 되고, 또 한 번 오른쪽으로 이동하면 8 ÷ 2 = 4가 된다는 것을 알 수 있다. 결국 오른쪽으로 1비트씩 이동하면 2로 나눈 셈이 된다. 또 이것을 왼쪽으로 한 비트씩 이동해 보면 2로 곱해지는 것을 알 수 있게 된다.
실험 과정
1. M-14의 회로-4에서 그림 14-16과 같이 쉬프트 레지스터를 구성한다.(Manual Pulse Output으로부터 4a 단자에 연결한다.)
2. 데이터가 표 14-5와 같이 인가될 때, 클럭이 인가됨에 따라 출력단의 각 출력 L1, L2, L3, L4를 측정하여 해당란에 기록한다. 데이터 입력은 스위치 S1이 ON이면 H, OFF 이면 L를 의미한다. 단, 클럭을 인가하기 전에 CL 스위치를 한 번 눌러 Shift Register 내의 Data를 일단 Clear 시켜 주도록 한다.
tab1실험 14-4.1 직렬 입력/ 병렬 출력 시프트 레지스터 회로 실험 (M14의 Circuit-4회로)
1.결선 방법
1.회로 결선
M14 보드의 Circuit-2에서 2b 단자와 Circuit-4의 4a 단자 간을 황색선으로 연결한다.
Circuit-4의 LED1(A)의 4d 단자와 중앙에 숫자표시기(7-Segment Display)에 있는 (A) 단자 간, LED2(B)의 4e 단자와 (B) 단자간, LED3(C)의 4f 단자와 (C) 단자 간, LED4(D)의 4g 단자와 (D) 단자 간을 황색선으로 연결한다.
2.전원 결선은 내부적으로 결선되어 있다.
3.계측기 결선
전면 패널 Signal Output에 BNC 케이블을 연결하고 적색 리드선을 M14 보드 Circuit-4의 4a(CLK) 단자에 연결한다.(흑색 리드선은 Circuit-3의 3h(GND)에 접속한다)
2.결선도
3.측정 방법
- 1M-14의 회로-4에서 그림 14-16와 같이 직렬입력/병렬출력 시프트 레지스터를 구성한다.
- 2Touch LCD 패널에서 analog output 을 선택하고 Function Generator를 클릭한다.
Amplitude Range에서 amplitude 50% 로 설정한다.
, Amplitude를 를 이용하여 50%FreQuency에서 Hz를 frequency 0.1hz 로 설정한다.
을 선택하여Signal에서
을 선택하고 을 클릭하여 논리 신호 0.1Hz를 Circuit-4로 출력한다. - 3데이터가 표 14-5와 같이 인가될 때, 로직 펄스가 인가됨에 따라 출력단의 각 출력LED1(A), LED2(B), LED3(C), LED4(D)가 점등할 때를 “1”로 하고 소등하였을 때 “0”으로 표기하여 표 14-5에 기록한다. 데이터 입력은 스위치 S1이 ON이면 “1”, OFF이면 “0”를 의미한다.
단 클록(CLK)을 인가하기 전에 CL(Clear)를 한번 눌러 Shift Register 내의 Data를 일단 Clear시켜 주도록 한다
- 4숫자표시기(7-Segment Display)에 표시되는 16진수를 표 14-5에 기록한다.
- 5측정이 끝나면 Touch LCD 패널에서 analog output 에서 을 클릭하여 Circuit-4로 출력되는 로직 펄스를 차단한다.