개요


 요즘은 디지털 시대라고 한다. 그런데 디지털이 왜 좋은지는 알고 쓰는 말일까. 현재에도 오디오나 전류를 제어하는데에 아날로그가 많이 쓰이고 있다. 하지만 디지털을 많이 쓰는 이유는 명확해서이다. 디지털에서는 두가지의 상태만 갖는다. 0과 1 , ON과 OFF 또는 HIGH 와 LOW 로 표시한다. 아날로그는 연속적이므로 데이터가 무한하다. 그에 비해 두 가지 상태로만 표현되는 디지털이 얼마나 명확하고 단순한가. 


 두가지 상태로 어떻게 데이터를 표현하는지 간단히 알아보자. 신호선 2개가 있다고 쳐보자. (0,0), (0,1), (1,0), (1,1) 2^2 = 4 가지를 표현할 수 있다. 이런식으로 신호선을 늘려가면 2^5 = 32가지, 2^8 = 256가지, 2^10 = 1024 가지... 신호선이 늘어남에 따라 표현 가능한 개수는 기하급수적으로 늘어난다. 디지털의 사전적 의미는 숫자이다. 이런식으로 단순한 두 가지 상태로 어마어마한 양의 데이터를 나타낼 수 있다.


 마이크로프로세서는 이러한 디지털 신호를 고속으로 처리하는 일을 한다. 단순하게 '마이크로프로세서의 능력은 고속으로 수의 연산을 처리하는 것' 이라고 생각하면 되겠다.




데이터의 단위


비트 (Bit). Bit 자체가 하나의 단어인줄 알았는데 알고보니 약자였다. 이진수라는 뜻(Binary Digits)으로 0 또는 1 을 갖는다.


바이트 (Byte). 8 비트를 바이트라 부른다. 데이터의 크기를 표시할 때 가장 기본적인 단위이다. 컴퓨터 메모리의 기본단위이기도 하다. 1 바이트로 2^8 = 256 개의 수를 표시할 수 있다. (데이터의 기본단위가 아니라 데이터 크기의 기본단위이다.)


Kbyte. 일반적으로 Kilo 는 10^3 = 1000 배를 나타내나, 컴퓨터에서 Kilo 는 2^10 = 1024 배를 가리킨다. 따라서 1Kbyte = 1024 byte 이다.


Mega 와 Giga 모두 마찬가지로 컴퓨터에서 각각 2^20, 2^30 을 나타낸다.




데이터의 표시


 

7 bit

6 bit 

 bit

 bit

 bit

 bit

 bit

 bit

7 bit : 최상위 비트(MSB, Most Significant Bit)

0 bit : 최하위 비트(LSB, Least Significant Bit)


비트 또는 바이트를 셀 때 최하위 비트에서부터 최상위 비트 순으로 읽어준다.




간단한 컴퓨터의 구조



 중앙처리장치(Central Processing Unit, CPU)란 마이크로 프로세서라고도 하며 위에서 말했듯이 연산을 하는 장치이다. CPU 자체로는 많은 용량이 없어서 제한된 레지스터만 갖는다. 그래서 많은 양의 데이터를 저장할 메모리를 가지고 있지 않을뿐만 아니라, 입출력을 위한 장치도 가지고 있지 않다. 따라서 마이크로컴퓨터를 구성하기 위해서는 마이크로프로세서 외부에 메모리와 입출력 장치를 장착해야 한다.




CPU 와 메모리의 데이터 교환


 메모리란 프로그램과 데이터를 저장하는 공간이다. 프로그램이라 하면 CPU 가 수행해야할 명령어들의 집합이다. 메모리는 RAM 과 ROM 으로 나뉜다. RAM 과 ROM 에 관련된 설명은 요기서 볼것.


 메모리에 데이터를 저장할 때 메모리에 데이터가 저장될 주소를 지정해야 한다. 메모리에서 CPU 로 데이터를 읽어들일 때도 마찬가지로 데이터가 CPU 에 저장될 주소를 지정해야 한다. 위에 그림을 보면 주소 버스(다수의 신호선을 말함)는 단방향이고 데이터 버스는 양방향으로 '입출력장치'와 '메모리'가 연결되어 있다. 이때 데이터를 주고 받을 때 CPU 가 주소를 지정해 주어서 교통정리를 한다. 교통정리를 하는 방법은 해당 주소를 가진 장치만 데이터 버스를 이용하도록 회로구성. 이것을 '주소 디코더(Address Decoder)' 라고 한다. 쉽게 말해서 주소 디코더는 데이터를 이동시키는 일련의 과정이다.


 CPU 는 Program Counter (PC) 라는 레지스터가 존재하여 수행해야 할 명령어가 위치한 메모리를 가르킨다. 프로그램은 메모리에 존재하지만 모든 프로그램을 메모리에 저장할 수 없으므로 하드디스크에 저장하기도 한다. 그리고 메모리에 로딩한 후 CPU 는 PC 레지스터가 가르키는 프로그램 명령어를 읽어서 명령을 수행한다. 이때 이러한 일련의 과정 (아이콘 더블클릭 -> 해당 프로그램을 하드디스크에서 읽어드림 -> 메모리에 로딩 -> PC 레지스터를 프로그램의 초기화 위치로 이동시켜서 프로그램 실행) 윈도우즈가 수행한다. 이러한 윈도우즈같은 프로그램을 운영체제(OS) 라고 한다.




제어용 마이크로컴퓨터


 제어용 마이크로컴퓨터인 경우 하나의 전용 프로그램이 수행된다. 따라서 프로그램을 메모리에 미리 저장해 놓는다. 이때 전원이 꺼지더라도 프로그램이 없어지지 않도록 메모리는 ROM 을 사용한다.

 

 그러나 프로그램을 개발할 때는 프로그램이 계속 변경되므로 이 방법을 사용할 수 없다. 이 경우 프로그램 개발은 개인용 컴퓨터에서 하고 이를 마이크로컴퓨터의 메모리에 다운로드한 다음 수행한다. 그러나 ROM 으로 FLASH 메모리를 사용하기 전에는 ROM 에 프로그램을 저장하는 것은 ROM Writer를 사용하여야 하는 매우 번거로운 작업이었다. 그래서 개발 중에는 프로그램을 RAM 에 저장하고 개발이 끝나면 ROM Writer 로 완성된 프로그램을 ROM 에 굽는 방법을 사용하였다. 그러나 FLASH 메모리를 ROM 으로 사용하면서 PC 에서 손쉽게 프로그램을 FLASH 에 다운로드를 할 수 있게 되었따. ATmega128 은 In System Programming(ISP) 기술을 사용하여 프로그램을 ATmega128 의 FLASH 메모리에 직접 프로그램을 다운로드하고 즉시 프로그램을 수행할 수 있다.


 

 

 



(출처 : AVR ATmega128 마이크로 컨트롤러 활용. 이인석 저)

'MCU > AVR' 카테고리의 다른 글

Datasheet 레지스터 보는 방법  (0) 2013.12.03
[AVR] 인터럽트  (0) 2013.12.03
ATmega128 과 블루투스 연결하기  (4) 2013.10.23
[AVR] EEPROM 이란  (0) 2013.10.23
[AVR] 2. 초음파센서(SRF05)로 거리측정하기  (4) 2013.10.23
Posted by 나무길 :