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

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)와 입력 기본 상태를 확인합니다. 미사용 입력, 직렬 입력, 클록 허용 핀을 떠 있게 두지 않습니다.

여덟 개의 DIP 스위치를 병렬 입력으로 쓴다면 각 스위치의 한쪽 단자를 칩의 논리 전원(VCC)에 공통으로 연결하고, 다른 쪽 단자를 서로 다른 입력에 연결합니다. 입력마다 접지(GND)로 향하는 풀다운 저항(pull-down resistor)을 하나씩 두면 스위치가 열렸을 때 입력이 떠 있지 않고 LOW로 정해지며, 닫혔을 때는 VCC에 연결되어 HIGH가 됩니다. 5 V 전원과 입력별 10 kΩ 풀다운을 쓰는 예에서 스위치를 닫으면 해당 저항의 이상 계산 전류는 5 V / 10 kΩ = 0.5 mA입니다. 이 값은 저항 경로의 계산값이며 칩 입력이 0.5 mA를 소비한다는 뜻이 아닙니다. 저항값은 스위치를 닫았을 때 흐르는 전류와, 열었을 때 입력 누설이 있어도 LOW로 판정되는 범위를 사용 부품의 데이터시트로 확인해 정합니다. 스위치 쪽 전원과 칩 전원이 다르면 입력 허용 전압도 별도로 확인합니다.

제조사에 따라 병렬 입력·로드·클록·비반전 직렬 출력의 핀 이름이 다릅니다. 예를 들어 한 데이터시트는 D0–D7·PL·CP·Q7로, 다른 데이터시트는 A–H·SH/LD·CLK·QH로 표기합니다. 실제 사용하는 부품의 핀표를 확인하고 서로 다른 도면의 핀 번호를 섞지 않습니다. 그다음 아래의 ‘각 입력 하나만 HIGH’ 검사로 배선과 비트 위치를 대조합니다.

열린 스위치는 입력별 풀다운 저항을 통해 LOW가 되고 닫힌 스위치는 공통 VCC를 입력에 연결하여 HIGH가 되는 회로 개념도
스위치 하나마다 풀다운 저항을 따로 두는 연결 예입니다. 실제 전원과 저항값은 사용하는 부품의 조건에 맞춰 정합니다.
  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 입력을 읽을 때는 병렬 로드 뒤 첫 클록 전에 첫 비트를 읽습니다 — 설명용 도해 · 클릭하면 확대됩니다.