DUJINLABS.COM

전자회로 실무 / 디지털·펌웨어

74HC165 입력은 병렬 로드 뒤 첫 클록(clock) 전에 첫 비트(bit)를 읽습니다

여러 디지털(digital) 입력을 적은 신호선으로 읽을 때는 74HC165에 입력 상태를 한꺼번에 저장한 뒤 순서대로 꺼낼 수 있습니다. 그런데 첫 클록(clock)을 너무 일찍 보내면 첫 비트(bit)를 놓칩니다. 읽은 값이 한 자리씩 밀리지 않도록 병렬 로드와 첫 읽기, 이후 클록의 순서를 확인하겠습니다.

먼저 알아둘 용어

74HC165·병렬 로드·직렬 출력 — 74HC165는 여러 입력을 동시에 저장한 뒤 한 선으로 차례로 내보내는 시프트 레지스터(shift register)입니다. 병렬 로드는 동시에 저장하는 동작, 직렬 출력은 저장 비트를 순서대로 읽는 단자입니다.

전파 시간·클록(clock) 허용 — 전파 시간은 입력·제어가 바뀐 뒤 출력이 안정되기까지의 지연입니다. 클록 허용 핀(pin)은 이동 동작에 영향을 주므로 읽는 동안 정한 상태로 유지합니다.

DIP(Dual In-Line Package) 스위치(switch)·반전 출력 — DIP 스위치는 여러 작은 스위치가 한 패키지(package)에 있는 입력 부품입니다. 반전 출력은 저장값과 반대 논리를 내보내므로 비반전 출력과 비트 해석을 구분해야 합니다.

시간이 흐르면서 파형이 진행되는 모습을 보여 줍니다. 흐린 선은 전체 파형이며 진한 선은 현재까지의 구간입니다. 재생 속도와 움직임의 크기는 설명을 위한 것입니다.
정지 그림 확대
시간이 흐르면서 파형이 진행되는 모습을 보여 줍니다. 흐린 선은 전체 파형이며 진한 선은 현재까지의 구간입니다. 재생 속도와 움직임의 크기는 설명을 위한 것입니다. · 그림을 클릭하면 확대됩니다.

작동 원리

병렬 로드가 LOW이면 입력이 비동기로 레지스터에 들어갑니다. 로드를 HIGH로 돌리면 마지막 병렬 입력의 값이 이미 직렬 출력에 있습니다. 이 상태에서 먼저 클록을 올려 버리면 다음 비트로 이동해 처음 값을 놓칠 수 있습니다. 읽기와 이동의 순서를 분리해야 합니다.

적용 순서

  1. 전원·GND(Ground)와 입력 기본 상태를 확인합니다. 미사용 입력, 직렬 입력, 클록 허용 핀을 떠 있게 두지 않습니다.
  1. 클록을 정해진 정지 상태로 두고 병렬 로드 신호를 LOW로 내려 각 입력의 상태를 저장합니다. 규정된 로드 시간 후 HIGH로 올리고 출력 전파 시간을 기다립니다.
  1. 첫 비트를 읽은 뒤 클록을 LOW→HIGH→LOW 순서로 전환합니다. 출력이 안정될 시간을 두고 다음 비트를 읽는 순서를 반복합니다. 비반전 출력을 사용할 때의 절차는 다음과 같이 표현할 수 있습니다.
클록을 LOW로 둡니다.
병렬 로드를 LOW로 두고 필요한 로드 시간을 기다립니다.
병렬 로드를 HIGH로 올린 뒤 출력 전파 시간을 기다립니다.
8번 반복합니다.
    현재 직렬 출력 비트를 저장합니다.
    아직 다음 비트가 필요하면:
        클록을 HIGH로 올리고 필요한 펄스 시간을 지킵니다.
        클록을 LOW로 내리고 출력 정착 시간을 지킵니다.

구체적인 지연 값은 사용 부품의 전압·온도·타이밍(timing) 요구로 정합니다. 마지막 비트 뒤의 불필요한 이동을 생략해도 읽을 8개 비트는 이미 확보됩니다. 각 입력이 읽어 온 숫자의 몇 번째 비트에 해당하는지 실제 배선과 대조합니다.

  1. 각 입력 하나만 HIGH인 패턴으로 비트 순서를 검증합니다. 반전 출력과 비반전 출력을 혼동하지 않습니다.

적용 조건과 한계

구체적 타이밍은 사용 제조사·전압·온도에 따라 다릅니다. 클록 허용 핀 변경도 내부 클록 동작에 영향을 줄 수 있으므로 읽는 중 고정합니다. 로드 순간에 바뀌는 버튼(button)은 디바운스(debounce)나 반복 샘플 비교가 필요합니다.

확인과 기록

각 입력 하나만 HIGH로 바꾸는 테스트 패턴으로 누락·순서 뒤집힘·반전을 확인합니다. 예를 들어 서로 다른 입력을 차례로 켜서 결과가 00000001, 00000010처럼 한 비트씩 이동하는지 실제 매핑(mapping)과 대조합니다. 모든 입력이 0인 0x00과 모두 1인 0xFF만 시험하면 첫 비트 손실을 놓칠 수 있습니다. 0x 표기는 16진수입니다.

작업 순서를 다시 확인합니다

74HC165 입력은 병렬 로드 뒤 첫 클록 전에 첫 비트를 읽습니다 — 설명용 도해
74HC165 입력은 병렬 로드 뒤 첫 클록 전에 첫 비트를 읽습니다 — 설명용 도해 · 클릭하면 확대됩니다.