하드웨어 설계에 관련한 공개 강좌를 게재하는 공간입니다.
운영진에 의해 강좌글은 편집되며, 공익을 위한 게시글은 '하드웨어 강좌'란으로 이동될 수 있습니다.
마이크로컨트롤러는 프로그램에 의해서 순차적으로 동작하는 디지털 회로 모임의 개념을 가진 IC이다. 즉 여러 가지의 기능(이동, 덧셈, 뺄셈, AND, OR 등의 연산)을 가진 디지털 회로가 모여 있는데 그중에서 프로그램에 의해서 선택된 회로만이 선택되어서 동작하게 되어 있다. 따라서 어떠한 특정한 일을 수행하려 한다면, 동작들을 순차적으로 나열하여 진행되는 순서대로 동작하게 하면 되는데 이렇게 순차적인 동작을 문서화한 것을 프로그램이라고 부른다. 이해를 돕기 위해서 2와 3을 더한 결과를 얻어서 출력하는 과정을 예를 들어서 설명해 보자.
① ‘2’를 한 피연산자 메모리 A에 저장한다.
② ‘3’을 다른 피연산자 메모리 B에 저장한다.
③ 메모리 A와 B를 더하는 연산을 수행한다.
④ 연산의 결과를 메모리 C에 저장한다.
⑤ 결과를 출력하려면 LCD같은 출력장치로 결과를 전송한다.
<마이크로컨트롤러의 개념>
위의 그림에서 1번부터 4번까지는 마이크로 컨트롤러 내부에서 일어나는 동작이며, 5는 이후 표시를 위해서 LCD등의 외부장치에 데이터를 전송하는 회로를 동작시켜서 결과를 표시할 수 있도록 하는 동작이다.
이 예에서 보듯이 마이크로컨트롤러는 이러한 동작들에 필요한 충분한 메모리나 다양한 연산장치들을 장착하고 있으므로 사용자가 각각의 필요에 따라서 골라서 쓸 수 있도록 구성된 회로의 개념인 것이다.
마이크로컨트롤러는 사용자가 1~5까지의 동작을 구현할 수 있도록 각 동작에 대한 명령들(어셈블리 명령)을 지원하며, 따라서 사용자는 각각의 동작들을 해당 명령들을 이용하여 구현할 수 있으며, 이를 동작의 순서에 따라서 나열하면 프로그램이 되는 것이다. 그래서 프로그램은 사용자가 마이크로컨트롤러에게 하나하나의 동작에 대해서 미주알고주알 써서 내리는 작업 명령서인 셈이다. 이 개념은 모든 마이크로컨트롤러를 망라(널리 받아들여 모두 포함함)하는 것이며, 최신의 펜티엄 프로세서까지도 해당되는 마이크로프로세서라는 이름이 붙은 IC에는 모두 해당되는 중요한 개념이다. 단 여기서 어셈블리 명령들은 마이크로컨트롤러의 종류마다 다 달라서 호환되지 않으므로, 사용자가 사용하는 마이크로컨트롤러에서 지원하는 어셈블리 명령어로 구성된 프로그램만이 해당 마이크로컨트롤러에서 동작할 수 있다는 점에 주의해야 한다.
아래 그림에서는 CPU core와 주변장치로 구성된 일반적인 마이크로컨트롤러의 내부 구성을 보여주고 있다.
< 마이크로컨트롤러의 내부 구성>
CPU의 동작을 수행하는 부분인 CPU core는 연산을 담당하는 ALU와 데이터를 저장하기 휘한 메모리의 Register, 그리고 이들을 명령에 따라 적절한 연산을 수행시켜 주는 Control Unit으로 구성된다. 그리고 이 외의 타이머나 인터럽트, 입출력장치 및 메모리 등의 주변장치들이 일반적으로 같이 포함되어 한 개의 마이크로컨트롤러를 구성하고 있다.
※ MPU(Micro Processor Unit)
마이크로프로세서는 일반적으로 중앙처리장치(CPU)의 기능을 한다. 중앙처리장치는 아래의 그림과 같이 산술적인 연산과 논리적인 연산을 수행하는 부분(ALU), 데이터를 저장하는 레지스터 세트, 제어부로 이루어진다.
< 중앙처리장치의 주요 부분 >
레지스터들은 명령어들을 수행하는 과정에 필요한 여러 종류의 데이터를 저장하는 역할을 한다. 산술논리부(ALU)는 산술적인 연산과 논리적인 연산을 담당함으로써 프로그램 수행에 필요한 명령어 실행을 돕는다. 제어부분은 레지스터들 간의 데이터 전달을 동제하면서 적절한 시기에 산술논리부(ALU)로 하여금 필요로 하는 기능을 수행하도록 한다.
마이크로 프로세서가 처음 등장한 것은 1970년대 초반이다. 초기의 마이크로프로세서는 4비트의 형태를 취했다. 즉, 데이터의 형태나 연산의 처리가 기본적으로 4비트인 중앙처리장치 기능을 수행하였다. 이후 급격한 속도로 8비트, 16비트 마이크로프로세서가 개발되고, 1980년대에는 32비트 마이크로프로세서가 개발되었다. 최근에는 64비트의 마이크로프로세서가 등장하는 추세이다.
★ PIC(Programmable Interrupt Controller)
1개 명령이 처리할 수 있는 작업은 제한적이지만 대단히 빠른 속도로 작업을 수행할 수 있으며, 코드의 크기를 줄일 수 있습니다. PIC 시리즈는 분기 명령만 2개 사이클이 필요할 뿐, 그 외의 명령들은 1개 사이클에 수행된다.
★ 8051
마이크로컨트롤러 8051은 인텔(Intel)사에서 만든 MCS-51 컨트롤러 중의 하나이다.
MCS-51 패밀리(family)에는 여러 종류가 있다. 그 중에서 80계열에서 가장 기본으로 하는 8비트(bit) 마이크로컨트롤러 중의 한 계열이 8051입니다.
★ AVR
AVR은 Atmel사에서 만든 RISC 타입의 고속 8비트 마이크로컨트롤러이다. PIC보다 처리속도가 빠르고 8051보다 자원이 풍부하다는 특징이 있어 중소 규모의 산업용 제어기 제작에 적합합니다.
★ ARM(Advanced RISC Machine)
고성능 저전력(High Performance, Low Power) 이라는 아주 막강한 능력을 갖고 있습니다. 이 점에서 요즘 같이 휴대전화, MP3플레이어, PDA 등 휴대용 전자제품들이 난무하는
시대에 가장 걸 맞는 MCU가 아닐까 싶다. ^^
★ DSP(Digital Signal Processor)
다양한 신호 처리 및 고속 연산에 유리하도록 특별히 제작한 MCU로 하드웨어 적으로 부동 소수점(floating point)을 연산하거나 MAC(multiplication and accumulation, 덧셈과 곱셈을 한 사이클에 수행) 연산 기능, 빠른 외부 메모리 인터페이스 등이 특징입니다.
특히 영상 처리나 제어기의 동작에 있어 행렬 연산이 많이 필요한데, 행렬 연산의 주된 과정은 각 행렬의 요소끼리 곱셈을 한 후 이를 더하는 과정입니다. 따라서 곱셈과 덧셈을 한 사이클에 수행할 수 있는 MAC 연산 기능이야말로 빠른 연산을 보장하는 DSP의 특징을 두드러지게 나타내 주는 기능입니다.
※ 하바드 구조
프로그램 메모리와 데이터 메모리가 분리된 형태를 의미한다. 하바드 구조는 PIC, AVR이나 DSP와 같은 마이크로 컨트롤러에 사용되며, 프로그램 메모리와 데이터 메모리가 완전히 분리된다. 즉 , 프로그램 메모리와 데이터 메모리에서 주소 버스 및 데이터 버스가 완전히 분리된 것이다. 특히, 프로그램 메모리와 데이터 메모리의 주소 크기, 데이터 크기 등이 완전히 서로 다르다고 할 수 있습니다.
* 빠숑님에 의해 작성되었습니다.
좋은 자료 감사합니다~