본문 바로가기

학습컨텐츠/하드웨어

입력 Device의 원리 (1) - 키보드의 작동 원리

이 글은 카이스트 2006년 가을학기 사이버 과학영재교육센터(http://talent.kaist.ac.kr/)에서 학습컨텐츠로 사용되었던 것입니다.


들어가며


컴퓨터에서 Input device는 사용자가 만들거나 입력한 data가 처음 시작되는 곳입니다. 인터넷에서 볼 수 있는 대부분의 텍스트들은 어디선가에서 어느 누군가의 키보드를 통해 처음 만들어진 자료입니다.


그림 1 키보드, 마우스 등의 입력장치(Input Device)는 사용자가 Data를 만들어내는 수단이자 도구이다.


우리가 컴퓨터를 켜면 매일 손을 얹어 글씨를 입력하고 명령을 내리는 키보드와 마우스, 얼마나 많은 키보드와 마우스가 만들어지고, 키보드와 마우스가 어떻게 태어나는지를 상상해본 적 있나요? 이런 궁금증을 살펴보기 위해 이번부터는 정보과학 분야에서 하드웨어의 원리 및 응용 부문에 속하는 input device 분야를 다루고자 합니다. 여러 관점에서 키보드(keyboard)에 대한 이야기를 한번 낱낱이 파헤쳐봅시다.


그림 2 우리가 사용하는 키보드는 Windows 95의 등장 이후로 106개의 키를 갖는 형태로 일반화 되었다. 확장 형태의 키보드는 다른 어플리케이션을 직접 제어할 수 있도록 더 많은 키를 가지고 있다. (예- 바로가기 키)


키보드는 일반적으로 두 손으로 사용할 수 있는 문자 입력장치로써, 문자 키패드(keypad), 숫자 키패드(오른 쪽), 특수키, 기능키 등으로 구성된다.




키보드의 기계적 원리


우리가 손으로 어떤 키를 누르든지 상관없이 키보드는 순차적으로 입력 값을 전송하는 회로를 갖고 있다. 또한, 한번 누른 키는 물리적으로 계속 눌려 있는 형태(toggle)가 아니라 다시 제자리로 돌아오는 역할(reset)을 포함하고 있다. 또한, 키를 계속 누르고 있으면(눌림 상태) 잠시 후부터 해당 키의 입력이 연속적으로 여러 번 이루어진다. 그렇게 때문에 가령 '9'키를 계속 누르고 있어도 '9'키를 한 번이 아닌 여러 번 누른 것과 같은 99999999‥의 입력을 만들어낼 수 있다.

이를 통해 키보드 내부의 물리적 구조에 대하여 기본적인 추론을 할 수 있다.


표 1 연속 입력의 특성에 따른 키보드의 예상되는 구조 및 원리

 [구조적 특성]

키보드 속에는 키를 한 번 눌렀을 때 키가 눌렸음을 인식하는 접점 형태의 스위치가 들어 있다.

키보드 속에는 키를 계속 누르고 있을 때 키의 눌림 상태를 파악하는 역할의 입력 구조가 들어 있다.

Caps Lock, Num Lock, Scroll Lock의 키는 키보드 우측 상단의 LED를 켜고 끄는 스위치가 붙어 있다.

Caps Lock, Num Lock, Scroll Lock의 키는 눌림 상태에서 연속 입력이 이루어지지 않는다.

[물리적 원리]

키보드 내부에는 키를 눌렀을 때 다시 튀어나오게 할 수 있는 탄성체가 각 키 속에 들어 있다.



'눌림 상태'에서 키보드는 키의 입력을 연속적으로 받아들일 수 있다. Microsoft Windows XP를 OS로 사용하는 환경에서 직접 S사의 키보드로 실험을 해본 결과, 키를 계속 누르고 있을 때에는 초당 약 30회에 가까운 횟수로 키가 입력됨을 알 수 있었다. 이런 '눌림' 현상이 모든 키에 적용되는 것은 아니다. Windows XP의 일반적인 소프트웨어 환경 및 응용 프로그램에서는 Caps Lock이나 Num Lock, Scroll Lock 키에서는 키를 누르고 있을 때 입력이 지속적으로 전달되는 '눌림' 현상이 나타나지 않는다. Shift키의 경우에는 고정 키의 사용 여부를 묻는 setting 창이 나오기도 한다. 눌림 상태에서의 키보드의 입력 반응은 키보드 자체의 하드웨어 기능뿐 아니라, 소프트웨어에서 이를 처리하는 방법과 관련이 있다.


위와 같은 추론은, 키보드의 구성 원리와 특성을 알아보기 위해 키보드를 직접 분해하기 전에 설정할 수 있는 가설이 된다. 키보드의 '눌림' 상태에서 키의 입력을 살펴보면, '9'키를 지정해서 누르고 있을 때, 9 문자의 첫 번째 입력 이후에 잠시의 시간 동안 멈추었다가(delay) 다시 연속적으로 99999999‥이 입력됨을 관찰할 수 있다. 이 delay가 생김을 바탕으로 키보드의 입력 반응 시간을 알아내기 위한 간단한 실험을 제안할 수 있다.

먼저, 키보드와 워드프로세서, 초 시계(stop watch)를 준비한다.


표 2 인간↔컴퓨터(human to machine)의 정보전달 과정에서 LED 신호 설계가 필요한 이유

1. 텍스트 입력이 가능한 소프트웨어(메모장 등)를 켜고, 스톱워치의 버튼을 '9'키 위에 올려 놓는다.

2. 스톱워치의 버튼과 '9'키를 동시에 누르면서 스톱워치로 s1=5초에 근접하게 기다렸다 뗀다.

3. 키 입력 횟수n1와 정확한 시간 s1을 기록하고(excel사용 권장), 컴퓨터를 reboot 한다.

5. 이번에는 s1=5초 대신 s2=8, s3=20초에 비슷하게 맞추어 1-4의 실험을 반복한다.

- 오차를 줄이기 위해 중간에 재부팅을 해서, CPU사용률을 낮춘 상태에서 실험하는 것이 좋다.

- 초 시계의 start버튼은 키보드 같은 접점스위치로 바꾸어 다는 것이 정확한 측정에 도움이 된다.

+ 더 심화된 실험을 해 보고 싶다면 마이크로 컨트롤러에 성능이 좋은 접점온도계를 대보자.



키보드에서 특정 문자키를 처음 눌렀을 때 키보드가 입력을 인지하고 신호를 보내는 시간을 T1이라 하고, 키보드가 눌러져 있을 때 입력이 여러 번 일어나는 과정에서의 입력 간격을 T2라고 해보자. 중학교 2학년의 수학 교과에서 배운 이원일차 방정식에 따라 T1과 T2의 수치를 각각 다른 두 번의 실험을 통해 쉽게 구할 수 있다.


n1, n2: 각각 두 번의 실험에서 문자가 입력된 횟수

s1, s2: 키를 누르고 있었던 시간

T1: 키보드의 입력 인지시간

T2: 눌림 상태에서의 연속 입력 간격


T1 + (n1-1)*T2 = s1         (1)

T1 + (n2-1)*T2 = s2         (2)


이를 통해 문자의 입력 횟수 n1, n2에 따라 키를 누르고 있었던 시간 s1, s2를 측정하여 대입하면 키보드의 입력 인지시간(T1)과 눌림 상태의 입력 간격(T2)을 구할 수 있다. 이보다 더 간결한 방법으로 실험을 설계할 수 없을까?


'10초 동안 같은 키를 연속으로 여러 번 누르는'입력 방법1과

'같은 10초 동안 키를 누르고 있는 입력 방법2 중에서 어떤 방법이 더 많은 입력 횟수를 갖는가?



위와 같은 실험을 통해서 알아보고자 하는 키보드의 구조는 키가 '눌림 상태'일 때 이를 연속 입력으로 바꾸어 주는 어떤 장치가 키보드 내에 있는지에 대한 내용이다. 분해를 해보면, 키보드는 각 키들과 연결된 ①회로, 이 회로에서 나오는 신호를 모아서 보내주는 ②마이크로 컨트롤러, 토글 키(Num Lock, Caps Lock, Scroll Lock)의 작동 여부를 알려주는 ③LED와 이들이 모여 있는 ④기판 등으로 이루어져 있다.


사용자 삽입 이미지

그림 3 키보드는 여러 층으로 구성되어 있으며, 내부의 회로도 각각의 층(Layer)이 있다.




키보드의 연결 포트


키보드에는 전류가 흐를 수 있는 회로가 자판의 바닥 위에 깔려 있어, 키를 누름에 따라 접점의 금속끼리 연결되어 전류가 흐르거나, 전하가 감지됨에 따라 키의 눌림을 인식한다. 그렇기 때문에 키보드의 신호가 마이크로 컨트롤러로 흘러 들어가면서 입력 신호가 전달되고, 다양한 전류가 흐를 수 있도록 하는 전송부분을 필요로 한다.

최근 5년 동안 널리 쓰여진 키보드들은 PS/2 입력단자 또는 USB 입력 단자에 연결하여 작동되는 방식을 갖고 있다. (예전엔 serial방식 등도 있었다.) 각각의 단자들은 그림2와 같이 전원 전송부분과 데이터 전송부분으로 나뉘어져 있다.





그림 4 입력장치에 사용되는 PS/2 단자(左)와 PS/2 단자의 구조(右).
키보드를 연결하는 PS/2 포트는 보통 연보라 색 코드로 만들어져 메인보드에 직접 연결된다.



그림5 입력장치에 사용되는 USB 단자(左)와 USB 단지의 구조(中), 그리고 USB-PS/2 젠더(右)
USB 포트를 사용하면 Plug and Play기능이 좋아 부팅 후에도 키보드를 연결해서 쓰기 편함


우리는 키보드를 통해 문자나 기능(function key)을 입력할 때, 컴퓨터에 연결된 키보드 자체 만으로는 어떤 키를 눌렀는지 알 수 없고, 이를 알기 위해 별도의 출력 장치(ex: 모니터)를 필요로 한다. 이러한 출력 장치로는 Output device라고 통칭한다. 흔히 키보드, 마우스 등의 입력장치(Input device)와 모니터, 프린터 등의 출력장치(Output device)를 통틀어서 I/O device라고 일컫는다.

Input device들은 입출력 인터페이스(I/O interface)를 통해 CPU와 정보를 주고받는다. 키보드의 신호를 CPU에게 보내주는 과정에서 데이터 신호, 명령 신호, 상태 신호가 I/O BUS로 한데 모아져 버퍼(buffer)에 기록되었다가 CPU로 보내진다.




키보드의 전기적 원리 – 마이크로 컨트롤러


키를 눌렀을 때 눌린 키의 바로 아래에서는 회로에 전류가 흐른다. 각 회로들은 어지럽게 이어져 있어, 이 연결은 키보드 오른쪽 상단의(LED가 있는 부분의) 기판으로 모아진다. 기판에는 마이크로 컨트롤러(컨트롤 칩의 역할을 하는 마이크로 프로세서)라는 이름의 칩이 들어 있으며 회로에서 이어져 나오는 연결들은 각각으로 나뉘어져 칩의 단자를 통해 입력된다.


그림6 한 칩의 핀 구성 다이어그램 마젠타색 예비입력단자
카키 녹색 상위 레이어(8개) 연보라색 하위 레이어(16개),


상단 그림의 마이크로 컨트롤러 칩은 40개의 단자를 가지고 있다. 제조 회사나 제조 공정에 따라 세부 번호는 다를 수 있지만, 한 가지 중요한 공통점이 있다. 이 컨트롤러를 통해 특정 문자가 입력되기 위해서는 서로 다른 두 개의 특정 단자가 회로를 통해 연결되어야 한다.

예를 들어, 위 컨트롤러에서 입력 단자는 상위 레이어(8개)의 회로가 6 번부터 13 번까지이고, 하위 레이어(16개)의 회로가 16~23 번과 29~36 번까지 이다. 키보드를 컴퓨터에 연결한 상태에서 이들 중 8번과 34번을 연결하면 '9'문자가 입력된다. 쉽게 테스트 하기 위해 호치키스(stapler)알을 가지고 두 개를 연결해 놓으면 99999999‥문자열이 연속적으로 입력되고 있음을 확인할 수 있다. 모든 키 입력은 "두 단자의 연결"을 통해서 이루어 진다. 가령, 상단의 단자가 8개, 하단의 단자가 16가 있는 경우에는 8x16=128 종류의 키를 설계하여, 그 값을 입력할 수 있다.




키보드의 입력 과정에 대한 고찰


키보드를 이용하여 컴퓨터에 단어를 입력하고 이를 모니터에 출력하는 경우를 다음과 같은 프로세스로 나누어서 볼 수 있다.


단어 입력을 위해 키를 누름

 키보드의 마이크로 컨트롤러가 무슨 키를 눌렀는지 파악

마이크로 컨트롤러에서 키 입력을 스캔 코드(확장키 코드)로 변환 및 기록

메인보드의 PS/2나 USB등 포트를 통해 BIOS로 인터럽트 신호를 전송

버퍼(buffer)에 기록 후 전달 (처리 속도가 빨라짐)

처리

출력 (모니터)



이를 다음과 같이 사람(human)이 단어를 보고 인식하여 말(출력)하는 경우를 다음과 같은 프로세스와 비교될 수 있다.



단어를 구성하는 글자를 읽음

망막의 시세포에서 글자를 이루는 형태의 이미지를 파악

뇌의 각회에서 시각 정보를 통합 및 뇌 시각 신호로 변환

뇌의 각 부분으로 신호 전달

단기 기억 장치(short term memory)에 기억

처리

 출력 (speaking)



컴퓨터가 계속 진화하듯이 입력 장치도 지속적으로 발전해 나가고 있다. 키보드는 가장 대표적인 입력장치로써 많은 자료 입력 과정에 사용되었지만, 마우스의 사용성이 키보드를 앞지르듯이 앞으로는 또 새로운 입력 Device가 키보드의 자리를 노리고, 키보드는 박물관에 가서야 찾아볼 수 있는 전시품이 될 지도 모른다.

다음 단계에서는 키보드 회로의 원리에 대해서 알아보자.





각회(angular gyrus) = 마이크로 컨트롤러

                    

그림 9 뇌 구조도 à 각회의 위치     그림 10 두뇌의 영역        그림 11 읽은 단어를 말하는 과정



http://en.wikipedia.org/wiki/Angular_gyrus

각회는 대뇌 위쪽 뒷부분에 있는 두정엽(Parietal Lobe)의 한 부분이다; 언어와 인식에 관련된 여러 프로세스들과 관련이 있다. 다니엘 겟츠윈드(Daniel H. Geschwind, UCLA)에 따르면, 각회는 쓰여져 있는 단어를 내적 독백으로 바꾸는 부분이다.

사람이 글자를 읽고 각회를 통해 인식하고 입으로 말하기까지와 유사한 프로세스를 컴퓨터에서 키보드로 입력하여 출력까지 진행되는 영역이 바로 마이크로 컨트롤러에서 I/O BUS, CPU를 거쳐 출력장치(LCD 등)까지 이다.

그림 12 Daniel Geschwind



[1] S3C9004/P9004/C9014/P9014 Product Overview, Samsung Electronics

[2] Input-Output Organization, 전산기 조직 강의자료, KAIST 전산학 전공

[3] Elektroda, USB A, 2006년 9월 11일 접속.
     URL: http://www.elektroda.net/dla_kompa/usb.gif

[4] Wikipedia, Angular gyrus, 2006년 9월 11일 접속.
     URL:
http://en.wikipedia.org/wiki/Angular_gyrus

[5] K.Purves 외 3인. 이광웅 외 8명 옮김. 생명, 생물의 과학(6th edition). William W.H.Freeman and Company, 교보문고. 2004