KR100462951B1 - Risc 구조를 갖는 8 비트 마이크로콘트롤러 - Google Patents

Risc 구조를 갖는 8 비트 마이크로콘트롤러 Download PDF

Info

Publication number
KR100462951B1
KR100462951B1 KR10-1999-7008411A KR19997008411A KR100462951B1 KR 100462951 B1 KR100462951 B1 KR 100462951B1 KR 19997008411 A KR19997008411 A KR 19997008411A KR 100462951 B1 KR100462951 B1 KR 100462951B1
Authority
KR
South Korea
Prior art keywords
register
instruction
bit
effective
control signal
Prior art date
Application number
KR10-1999-7008411A
Other languages
English (en)
Other versions
KR20000076310A (ko
Inventor
베가드 올란
알프에길 보겐
가우테 미클레부스트
존 디 브라이언트
Original Assignee
아트멜 코포레이숀
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 아트멜 코포레이숀 filed Critical 아트멜 코포레이숀
Publication of KR20000076310A publication Critical patent/KR20000076310A/ko
Application granted granted Critical
Publication of KR100462951B1 publication Critical patent/KR100462951B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7814Specially adapted for real time processing, e.g. comprising hardware timers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Executing Machine-Instructions (AREA)
  • Microcomputers (AREA)

Abstract

본 발명에 따른 8 비트 RISC 기반형 마이크로콘트롤러(도 1 참조)는 8 비트 범용 ALU(22)에 덧붙여 전용 산술 논리 연산 장치(ALU2)를 갖는 8 비트 레지스터 파일(20)을 포함한다. 레지스터 파일은 간접 어드레스 지정을 위한 논리 16 비트 레지스터를 제공하기 위해 레지스터쌍을 조합시키는 수단(16)을 더 포함한다. 전용 ALU는 레지스터쌍에 대해 특정 산술 기능을 제공하고, 이에 따라 이 기능이 없다면, 범용 8 비트 ALU에 부과되는 계산 처리를 완화시켜주는 16 비트 ALU이다. 본 발명의 또 다른 특징은 논리 16 비트 레지스터의 내용(14')과 결합되어 더 큰 어드레스 지정 범위를 제공하는 페이징 레지스터(RAMP X, RAMP Y, RAMP Z)를 포함하는 것이다. 본 발명의 8 비트 마이크로콘트롤러의 또 다른 특징은 단일 명령으로 레지스터 파일 내의 특정 비트 위치에도 직접 판독 및 기록을 행하기 위한 수단(134)이 제공된다는 것이다. 이것에 의해 종래기술의 마이크로콘트롤러에서 필요로 하는 각종 로드, 시프트 및/또는 마스킹 동작을 수행할 필요가 없게 된다.

Description

RISC 구조를 갖는 8 비트 마이크로콘트롤러{EIGHT-BIT MICROCONTROLLER HAVING A RISC ARCHITECTURE}
현재의 서브미크론 CMOS 기술은 복잡한 메모리 및 주변 논리를 구현하기에 충분한 실리콘 영역을 확보하면서, 복잡한 마이크로콘트롤러 구조를 칩 상에 집적시키는 것을 가능하게 한다. 32 비트 및 64 비트의 고성능 RISC(Reduced Instruction Set Computer; 축소 명령 집합 컴퓨터) 기계에서 가장 통상적으로 사용되는 설계 구조 및 방법론은 저가의 8 비트 마이크로콘트롤러 시스템에 효율적으로 사용 및 이용할 수 있다. 이러한 강력하면서도 비용 대비 효과가 좋은 마이크로콘트롤러가 있으면, 시스템의 총 집적도는 계속적으로 증가하게 된다. 또한, 하드웨어 구조에서 보다 효율적인 프로그램을 실행시킬 수 있으며, 더욱 많은 하드웨어 기능을 집적시킬 수 있다.
최근 RISC 구조의 인기가 높아지고 있다. 가장 주목할 만한 것은 애플(Apple) 컴퓨터, IBM 및 모토롤라(Motorola)가 공동 개발한 파워 PC이다. 비록 RISC 프로세서를 정의하는 특성에 대한 합의가 존재하지 않더라도, 상이한 여러가지 RISC 구조간에는 이하와 같은 공통된 특성이 있다.
(1) 대부분의 명령이 1 주기 내에 수행됨.
(2) 별개의 간단한 로드/스토어 명령이 종종 2 주기 내에 수행됨.
(3) 명령 디코딩이 통상적으로 마이크로코딩이 아닌 하드와이어링으로 구성되어, 그 결과 실행 시간이 더욱 고속화됨.
(4) 대부분의 명령이 고정된 포맷을 가지며, 그 때문에 명령 디코딩이 간소하게 이루어짐.
(5) 명령 세트가 작아지고 어드레스 지정 모드가 작아짐.
(6) 데이터 경로가 고도로 파이프라인화되어, 처리 병행성의 정도가 높음.
(7) 보다 저속의 시스템 RAM과의 과도한 데이터 전송을 피하기 위한 대용량의 고속 레지스터 세트(레지스터 파일로서도 알려짐)를 구비함.
여러 반도체 제조업자가 마이크로콘트롤러를 제조하고 있다. 예를 들면, 텍사스 인스트루먼츠(Texas Instruments)사는 8 비트 마이크로콘트롤러인 TMS370Cx1x 시리즈를 제공한다. 이들 마이크로콘트롤러가 RISC 구조를 이용하고 있지는 않지만, 이들은 RAM 또는 범용 레지스터 세트 중 하나로서 사용될 수 있는 RAM(128 바이트 또는 256 바이트)을 제공한다. 모토롤라는 텍사스 인스트루먼츠사의 디바이스(device)와 유사한 2 중 목적용 RAM을 이용하는 8 비트 마이크로콘트롤러인 MC6805 패밀리를 제공한다. 마이크로칩 테크놀로지(Microchip Technology)사는 PIC16C5X 패밀리의 마이크로콘트롤러를 제공한다. 이들 마이크로콘트롤러는 데이터 및 프로그램 명령이 별개의 메모리 및 버스를 갖는 하바드 2 중 버스 구조(Havard dual-bus architecture)를 사용한다. PIC16C5X는 시스템 RAM과 공유되는 레지스터 파일을 이용한다. PIC16C5X는 하나의 명령이 실행되고 있는 동안에 다음 명령이 프로그램 메모리로부터 프리팻치(pre-fetch)되는 1 레벨 명령 파이프라인을 사용한다. RAM은 레지스터로서는 2 배이기 때문에, 내부 레지스터 세트가 현실에는 없다. 또한, 모든 메모리가 정적 RAM으로서 존재하기 때문에, 레지스터 동작에 관련되는 성능이 저하된다.
상기한 바와 같이, 빠른 설계 주기는 마이크로콘트롤러의 설계에 있어서 중요한 고려 사항이다. 마이크로콘트롤러의 설계에 있어서, 소프트웨어가 담당하는 역할의 중요성에 대해서는 의문의 여지가 없다. 따라서, 마이크로콘트롤러 설계의 유용성은 프로그래머와 하드웨어 설계자간의 인터페이스 사양, 즉 마이크로콘트롤러의 명령 세트와 직접적으로 관련된다. 소정의 계산 가능한 기능이 합리적인 양의 프로그램 공간 내에 구현 가능해야 한다는 점에서 명령 세트는 완전해야 한다. 명령 세트는 빈번히 사용되는 기능이 비교적 소수의 명령으로 구현 가능해야 한다는 점에서 효율적이어야 한다.
따라서, 애플리케이션 소프트웨어 개발자에게 완전하면서 효율적인 명령 세트를 제공하는 마이크로콘트롤러 설계를 제공하는 것이 바람직하다.발명의 상세한 설명본 발명은 8 비트 RISC 구조를 갖는 마이크로콘트롤러이다. 8 비트 데이터 버스는 RAM 메모리 스토어, 레지스터 파일, 범용 8 비트 산술 논리 연산 장치(ALU:Arithmetic Logic Unit) 및 상태 레지스터 간의 데이터 경로를 제공한다. 마이크로콘트롤러는 RAM 메모리 스토어와는 별개의 프로그램 메모리 스토어를, 데이터 버스와는 별개의 프로그램 데이터 버스를 제공하는 하버드 구조를 구현한다.레지스터 파일은 복수의 8 비트 레지스터를 포함한다. 레지스터 파일 내의 레지스터 중 몇 개는 논리 16 비트 레지스터를 제공하도록 결합될 수 있다. 논리 16 비트 레지스터는 효율적인 어드레스 계산을 제공하며, 데이터 메모리 및 프로그램 메모리에 대한 간접 어드레스 포인터로서 사용될 수 있다. 데이터 메모리이든지 프로그램 메모리이든지 간에, 16 비트 어드레스 공간은 프로그램 어드레스 공간 및 데이터 어드레스 공간 양쪽 모두를 증가시킴으로써 마이크로콘트롤러의 유연성 및 효용성을 크게 증가시킨다. 본 발명의 바람직한 실시예에 있어서, 레지스터 파일은 3 개의 별개의 논리 16 비트 레지스터로서 액세스(즉, 판독/기록)될 수 있는 3 쌍의 8 비트 레지스터를 제공한다.또한, 16 비트 어드레스 지정의 이점을 강화하기 위해서, 레지스터 파일 전용의 특별한 제2 산술 논리 연산 장치를 사용한다. 제2 ALU는 16 비트 가산기를 포함하고, 논리 16 비트 레지스터에 대해 16 비트 산술 연산을 제공한다. 제2 ALU는 16 비트 결과를 논리 16 비트 레지스터로 다시 저장할 수 있다. 또한, 16 비트 결과는 어드레스로서 기능할 수 있다. 따라서, 디바이스의 동작 속도를 감소시키는 범용 8 비트 ALU의 부하를 증가시킴이 없이 제2 ALU의 존재에 의해 효율적인 16 비트 어드레스 계산을 제공한다.레지스터 파일에 제공되는 논리 16 비트 레지스터의 추가적인 확장은 8 비트 RAM 페이징 레지스터의 사용을 포함한다. RAM 페이징 레지스터의 8 비트는 논리 16 비트 레지스터의 16 비트와 논리적으로 연결되어 논리 24 비트 어드레스를 제공한다. 이 특징은 기초적으로 8 비트 설계인 하부 구조를 갖는 마이크로콘트롤러에 대한 전례없는 어드레스 지정 범위를 제공한다. 특히, 페이징 레지스터는 메모리를 64 K(64 ×1024) 바이트의 256 페이지의 RAM으로서 형성되고, 각 64 K 페이지는 페이징 레지스터에 의해 참조된다. 본 발명의 바람직한 실시예에 있어서, 레지스터 파일에 의해 제공되는 3 개의 논리 16 비트 레지스터 각각에 대해 1 개씩 3 개의 페이징 레지스터가 있다.본 발명의 레지스터 파일은 레지스터 파일을 포함하는 논리의 전파 지연과 동일한 지연을 갖는 레지스터 액세스를 특징으로 한다. 이러한 조합 지연은 1 클록 주기보다 상당히 짧기 때문에, 레지스터 액세스는 1 클록 주기중에 여유있게 행하여진다. 또한, 본 발명은 모든 연산 각각을 단일 클록 중기중에 수행할 수 있는 범용 산술 논리 연산 장치(ALU)를 특징으로 한다. 따라서, 본 발명은 실질적으로 ALU 연산을 단일 클록 주기중에 수행할 수 있다.또한, 본 발명에 따르면, 레지스터 파일 내의 레지스터는 RAM의 어드레스 공간의 일부를 점유한다. 이 특징에 의해, 통상적으로 RAM 액세스와 연관된 종래의 어드레스 지정 모드가 가능하기 때문에, 레지스터가 통상의 기억 장소인 것처럼 레지스터에 액세스할 수 있다. 또한, 이러한 기억 장소는 마이크로콘트롤러에 대해 고속 메모리로서 보일 것이다.비트 스토어에 의해 레지스터 파일의 레지스터 내의 임의의 비트 위치로 또는 임의의 비트 위치로부터 1 비트 데이터의 전송이 가능해진다. 바람직한 실시예에 있어서, 비트 스토어는 상태 레지스터 내에 위치한다. 이 비트 전송 특징에 의해 그 이외의 경우에는 시간이 걸리는 레지스터 시프트 동작을 수행할 필요없이 레지스터 비트 위치를 직접 조작할 수 있다. 많은 마이크로콘트롤러 응용예에 있어서 통상적인 바와 같이, 1 바이트 데이터를 구성하는 각각의 비트는 다른 비트와는 독립된 의의를 갖는다. 종래기술의 마이크로콘트롤러의 명령 세트는 통상적으로 레지스터의 좌측 시프트 및 우측 시프트를 제공하기 위해 시프트 명령을 포함한다. 따라서, 레지스터의 소정의 비트 위치의 비트로의 액세스는 비트를 우측 또는 좌측 중 한 쪽으로 시프트시킴으로써 달성된다. 이것은 원래의 데이터를 보존하고자 한다면, 레지스터의 저장할 필요가 있는 파괴적인 동작이다. 또한, 이 동작은 시간이 걸리고, 구현을 위해서 복수의 프로그램 명령을 필요로 한다. 본 발명의 비트 전송 동작은 임의의 비트 위치에 액세스하기 위한 보다 시간 효율이 좋고 사용하는 공간이 적은 수단을 제공한다.자릿수 올림 비교 명령은 레지스터 파일을 구성하는 8 비트 레지스터의 16 비트 증대를 제공한다(이하, 자릿수 올림을 캐리라고도 함). 명령 세트의 이 특징은 8 비트 환경에서 16 비트량과의 비교를 구현하기 위한 효율적인 방법을 제공하고, 이것에 의해 본 발명의 8 비트 마이크로콘트롤러의 계산 성능이 더욱 보강된다.
본 발명은 마이크로콘트롤러 일반에 관한 것으로서, 특히 더욱 소수의 명령 세트를 실행하는 마이크로콘트롤러에 관한 것이다.
도 1은 본 발명의 마이크로콘트롤러의 개략적인 배치를 도시하는 도면.
도 2는 도 1에 도시된 레지스터 파일의 내부를 도시하는 도면.
도 3은 도 2에 도시된 레지스터 파일 내의 레지스터의 구조성을 도시하는 도면.
도 4는 도 3에 도시된 레지스터 기록 인에이블 회로를 상세히 도시하는 도면.
도 5a 및 도 5b는 도 4에 사용되는 OR 게이트 구조를 도시하는 도면.
도 6은 도 1에 도시된 상태 레지스터의 내부 구조를 도시하는 도면.
도 7은 도 1에 도시된 범용 ALU의 내부 구조를 도시하는 도면.
도 8a 및 도 8b는 도 7의 범용 ALU에 포함된 2 개의 ALU 서브유닛을 도시하는 도면.
도 9는 프로그램 카운터를 도시하는 도면.
도 10은 본 발명에 따른 페이징 레지스터를 사용하는 24 비트 논리 어드레스의 구성을 도시하는 도면.
도 11은 왓치독 타이머 회로를 도시하는 도면.
도 12는 도 10에 도시된 페이징 레지스터를 결합한 도 1의 마이크로콘트롤러를 도시하는 도면.
도 13은 N 개의 입력을 갖는 인에이블링 AND 게이트를 도시하는 도면.
발명을 실시하기 위한 바람직한 실시예도 1을 참조하면, 본 발명의 마이크로콘트롤러(10)는 8 비트 데이터 버스(12) 구조 주위에 설계된다. 이 데이터 버스는 마이크로콘트롤러를 구성하는 여러 소자에 대한 데이터 경로를 제공한다. 온보드 RAM은 범용 데이터 스토어로서 기능한다. 이 온보드와는 별개의 8 비트 레지스터 파일(REGISTER FILE)(20)이 마이크로콘트롤러(10)에 대해 고속의 8 비트 메모리 스토어의 세트를 제공한다.
범용 산술 논리 연산 장치(ALU_1)(22)는 레지스터에 저장되어 있는 데이터에 대한 산술 연산을 제공하기 위해 레지스터 파일에 결합되어 있다. ALU_1의 출력은 8 비트 데이터 버스(12) 및 상태 레지스터(STATUS REGISTER)(24) 양쪽 모두에 결합된다. 상태 레지스터(24)를 구성하는 여러 가지 다양한 상태 비트는 ALU_1의 결과에 따라 세트된다.
후술하는 바와 같이, 상태 레지스터(24)에 포함된 비트는 인터럽트 인에이블 플래그, 비트 전송 플래그, 하프캐리(half-carry) 플래그, 2의 보수 오버플로우 플래그, 음의 플래그, 음의 플래그 및 2의 보수 플래그간의 배타적 OR과 등가의 부호 비트, 제로(0) 플래그 및 캐리 플래그로 구성된다. 상태 레지스터(24)는 상태 비트에 대해 판독/기록 액세스를 가능하게 하도록 8 비트 데이터 버스(12)에 결합되어 있다. 이 8 비트 데이터 버스(12)에 결합되는 추가적인 구성 요소는 서브루틴 호출/복귀 및 인터럽트 처리에 사용되는 스택 포인터(STACK POINTER), 타이머, 인터럽트 회로, 타이밍 및 제어 회로, EEPROM 및 UART를 포함한다. 포트 드라이버(PORT DRIVER)에 의해 구동되는 I/O 데이터 레지스터(DATA REGISTER)는 마이크로콘트롤러에 대해 I/O 경로(19)를 제공한다.
직접 어드레스 버스(16)는 프로그램 실행 중에 RAM 위치 및 레지스터 파일에 대한 직접 액세스를 제공한다. 간접 어드레스 버스(내부 어드레스 버스라고도 칭함)(14)는 간접 어드레스 지정을 제공한다. 간접 어드레스 버스(14)는 8 비트 레지스터 파일(20)로부터 어드레스를 수신하는 수단, 즉 어드레스를 RAM 또는 프로그램 카운터(PROGRAM COUNTER)(28) 중 어느 하나로 전송하도록 레지스터 파일을 간접 어드레스 버스(14)에 결합시키는 버스 인터페이스(14')를 포함한다.
마이크로콘트롤러(10)의 명령 실행 구성 요소는 프로그램 메모리(PROGRAM MEMORY)에 결합된 프로그램 카운터(28)를 포함한다. 바람직한 실시예에 있어서, 프로그램 메모리는 프로그램 가능한 플래시 메모리이다. 프로그램 카운터(28)에 의해 지정된 프로그램 명령은 프로그램 메모리로부터 패치되어 명령 레지스터(INSTRUCTION RESISTER)로 공급된다. 명령 레지스터로부터 프로그램 명령은 여러가지 제어 신호를 발생시키는 명령 디코더(INSTRUCTION DECODER)에 의해 디코딩된다. 그 제어 신호는 제어 라인(CONTROL LINE)에 의해 마이크로콘트롤러(10)의 다른 소자로 전달되어, 디코딩된 프로그램 명령에 따라 동작을 수행한다. 명령 실행 구성 요소를 결합하는 버스는 집합적으로 프로그램 버스라고 지칭된다. 데이터 스토어와는 별개로 프로그램 메모리 스토어를 배열함과 동시에 8 비트 데이터 버스(12)와는 별개로 프로그램 버스를 사용하는 것을 통상적으로 하바드 구조라고 지칭한다.
상기한 바와 같이, 레지스터 파일은 복수의 8 비트 레지스터로 구성된다. 본 발명의 바람직한 실시예에서는 32 개의 8 비트 레지스터가 있다. 그러나, 레지스터 파일 내의 레지스터가 더 많거나 또는 더 적더라도 마이크로콘트롤러가 마찬가지로 양호하게 동작할 것이다. 범용 산술 논리 연산 장치(ALU_1)(22)는 8 비트 연산자이며, 레지스터 파일로부터 선택된 레지스터들 간의 8 비트 산술 연산을 제공한다. ALU_1의 출력은 8 비트 데이터 버스(12)를 통하여 레지스터 파일 내의 레지스터로 피드백될 수 있다. 이하에 더욱 상세히 설명하는 바와 같이, 8 비트 레지스터 중 일부는 쌍을 이루어 결합되어 논리 16 비트 레지스터를 제공할 수 있다. 바람직한 실시예에 있어서, 도 1에 도시된 바와 같이 3 쌍의 8 비트 레지스터는 3 개의 논리 16 비트 레지스터(X, Y, Z)를 제공한다.
도 2를 참조하면, 본 발명의 레지스터 파일은 32 개의 8 비트 레지스터(R0~R31)를 제공하는 레지스터 회로(레지스터 파일이라고도 칭함)(100)를 구비한다. 이 레지스터 파일은 3 개의 출력(A, B, C) 및 3 개의 입력(D_BUS, D_ALU2H, D_ALU2L)을 구비한다. 후술하는 바와 같이, 레지스터 회로(100)는 최후의 6 개의 레지스터(R26~R31)를 3 쌍의 논리 16 비트 레지스터[R27/R26(X), R29/R28(Y), R31/R30(Z)]로서 준비할 수 있다. 2 개의 16 라인 데이터 버스(102, 104)로 구성된 공통 버스 인터페이스는 각각 16 비트 레지스터에 대해 데이터 입력 및 데이터 출력을 제공한다.
데이터 출력 버스(104)는 B 출력 및 A 출력을 포함하며, B 출력을 16 비트값의 상위 바이트를 제공하고, A 출력은 16 비트값의 하위 바이트를 제공한다. 데이터 입력 버스(102)는 레지스터 파일에 대해 D_ALU2L(하위 바이트) 입력 및 D_ALU2H(상위 바이트) 입력으로 분할된다.
레지스터 파일에 의해 제공되는 16 비트 레지스터는 RAM 및 프로그램 공간 어드레스 지정을 위한 간접 어드레스 레지스터 포인터로서 사용된다. 간단히 메모리에 액세스기 위해서, 어드레스 계산을 위해 사후 증가(post-increment) 및 사전 감소(pre-decrement)와 같은 임의의 16 비트 산술 연산이 제공된다. 비록 16 비트 레지스터에 대해 16 비트 산술을 제공하기 위해 ALU_1을 사용하는 것이 가능더라도, ALU_1이 8 비트로 설계되어 있기 때문에 이러한 연산은 매우 비효율적일 것이다.
따라서, 도 2에 도시된 레지스터 파일은 논리 16 비트 레지스터에 관련된 16 비트 계산을 용이하게 하기 위해 레지스터 파일 전용의 제2 산술 논리 연산 장치(ALU_2)를 구비한다. 산술 논리 연산 장치(ALU_2)는 16 비트 설계이며, 간접 어드레스 포인터에 통상적으로 필요한 특정 연산을 제공하도록 주문 제작된다. ALU_2는 레지스터 파일의 데이터 출력 버스(104)에 의해 공급된 제1 입력을 가진다. ALU_2는 셀렉터(110)에 의해 공급되는 제2 입력을 가진다. 셀렉터(110)는 3 개의 선택, 즉 수치 -1, 수치 +1 및 상수 K_IN 중 하나를 선택한다. ALU_2의 출력은 데이터 입력 버스(102)를 통하여 X 레지스터, Y 레지스터 및 Z 레지스터로 피드백되어 레지스터 내용의 갱신을 가능하게 한다. mux(114)는 레지스터 파일의 버스 인터페이스(14')와 결합된다. mux(114)의 제1 입력은 ALU_2의 출력과 결합되고, mux(114)의 제2 입력은 데이터 출력 버스(104)와 결합된다. 이 배열에 의해 mux(114)가 ALU_2 또는 레지스터 회로(100) 중 어느 하나로부터 데이터를 선택적으로 출력할 수 있다.
이하의 제어 신호는 상기한 레지스터 파일의 특징인 동작과 관련된다. 그 제어 신호는 V_SEL, ALU2_OP 및 ADDR_SEL을 포함한다. 이들 신호는 명령 디코더로부터 발생되는 각종 제어 라인에 의해 전송된다. 이들 제어 신호와 관련된 레지스터 파일의 동작은 본 발명의 마이크로콘트롤러의 프로그램 명령을 참조하여 이하에 설명될 것이다.
도 3의 논리도는 도 2에 도시된 레지스터 회로(100)의 내부 구조를 도시한다. 본 발명의 일실시예에 있어서, 32 개의 레지스터(R0~R31)가 제공되며, 각각의 레지스터는 8 비트 출력 라인(121)의 세트 및 8 비트 입력 라인(123)의 세트를 가진다. 실제로 제공되는 레지스터의 수는 본 발명의 본질 부분이 아니다.
각각의 레지스터는 도 3의 각각의 플립플롭 내의 "x8"이란 참조 번호로 나타내는, 8 개의 D 타입 플립플롭의 뱅크로 구성된다. 레지스터의 8 비트 출력 라인(121)은 레지스터를 구성하는 8 개의 플립플롭의 각각의 출력(Q)으로 구성된다. 이와 유사하게, 레지스터의 8 비트 입력 라인(123)은 레지스터를 구성하는 8 개의 플립플롭의 각각의 입력(D)으로 구성된다.
도 3에 도시된 바와 같이, 짝수 번호의 레지스터(R0, R2,…, R30)는 8 비트 4:1 mux(130)의 출력에 결합되는 공통 입력을 가진다. 이와 유사한 방법으로, 홀수 번호의 레지스터(R1, R3,…, R31)는 짝수 번호의 레지스터와 분리되고, 8 비트 4:1 mux(132)의 출력에 결합되는 공통 입력을 가진다. 4:1 mux(130)는 그의 4 개의 8 비트 입력(D_BUS, K_IN, D_BUS[n], D_ALU2L) 중 하나를 선택하여 짝수 번호의 레지스터에 대한 입력으로서 기능한다. 4:1 mux(132)는 그의 4 개의 8 비트 입력 중 하나를 선택하여 홀수 번호의 레지스터에 대한 입력으로서 기능한다. 셀렉터(D_SEL)는 mux(130, 132) 양쪽 모두에 결합되고, mux(130, 132)의 각각의 제1 입력, 제2 입력, 제3 입력 또는 제4 입력 중 하나를 선택한다. mux(130)의 제1 입력(D_BUS)은 8 비트 데이터 버스로부터 취득된다. mux(130)의 제2 입력(K_IN)은 본 발명의 마이크로콘트롤러의 명령 세트의 설명과 관련해서 후술하는 바와 같이 임의의 명령의 오퍼런드(operand)로부터 얻어진 8 비트 상수이다. 4:1 mux(130)의 제4 입력(D_ALU2L)은 ALU_2(도 2 참조)의 16 비트 출력의 하위 바이트이다. 4:1 mux(130)로의 제4 입력(D_BUS[n])은 8 비트 데이터 버스(12)로부터의 비트 라인 중 하나를 지칭한다. 이 비트 라인 n은 4:1 mux(130)로의 제3의 8 비트 입력으로서 8 회 복제된다. 이 D_BUS[n] 입력은 후술하는 BLD 명령과 함께 사용된다.
4:1 mux(130)의 출력은 4:1 mux(132)의 제1 입력, 제2 입력 및 제3 입력으로서 복제된다. 4:1 mux(132)의 제4 입력(D_ALU2H)은 ALU_2의 16 비트 출력의 상위 바이트이다. 따라서, D_SEL이 mux의 제1 입력, 제2 입력 또는 제3 입력을 선택하는 경우, 짝수 번호의 레지스터 및 홀수 번호의 레지스터에는 동일한 입력, 즉 D_BUS, K_IN 또는 D_BUS[n]이 제공된다. D_SEL이 mux의 제4 입력을 선택하는 경우, 짝수 번호의 레지스터의 입력에는 D_ALU2L이 제공되고, 홀수 번호의 레지스터의 입력에는 D_ALU2H가 제공된다. D_ALU2L 입력 및 D_ALU2H 입력의 의의는 X 레지스터, Y 레지스터 및 Z 레지스터에 관한 설명에서 명백해질 것이다.
각각의 레지스터(R0~R31)에 대응하는 8 비트 플립플롭의 뱅크에는 D 리드(lead)에 입력을 제공하고 플립플롭의 클록 라인(CK)을 활성화함으로써 기록된다. 본 발명의 레지스터 구조의 하나의 이점은 레지스터로의 기록의 유연성이다. 동작 모드에 따라서, 16 비트 데이터를 1 워드의 데이터로서 레지스터 쌍에 기록할 수 있거나, 8 비트 데이터를 1 바이트 데이터로서 레지스터에 기록할 수 있거나 또는 레지스터의 특정 1 비트를 1 비트 데이터로서 기록될 수 있다. 이 유연성은 정확한 레지스터 및 비트(들)가 기록되도록 적절한 CK 신호를 활성화시키는 셀렉터 제어 회로(134)에 의해 제공된다. R_SEL 제어 라인 및 WE_R 제어 라인은 협력하여 선택된 레지스터에 대응하는 8 개의 플립플롭에 기록한다. WE_XH 제어 라인, WE_XL 제어 라인, WE_YH 제어 라인, WE_YL 제어 라인, WE_ZH 제어 라인 및 WE_ZL 제어 라인은 16 비트 X 레지스터, Y 레지스터 및 Z 레지스터로의 기록을 인에이블시킨다. R_SEL 제어 라인, BIT_SEL 제어 라인 및 WE_BIT 제어 라인은 협력하여 선택된 레지스터의 선택된 비트에 1 비트를 기록한다.
레지스터 내용은 mux(120, 122, 124)를 통하여 제공되며, 이들 mux의 출력은 각각 도 2에 도시된 A 출력, B 출력 및 C 출력이다. 이들 출력 mux는 각각 8 비트 32:1 mux 32 개의 8 비트 입력 중 하나를 선택한다. 32 개의 레지스터의 각각의 출력은 mux(120, 122, 124)의 각각의 대응하는 입력에 결합된다. 제어 라인(R_OUTA, R_OUTB, R_OUTC)은 mux를 동작시켜서 소망하는 레지스터의 내용을 출력시킨다.
mux(120)의 8 비트 출력은 8:1 mux(136)로 제공되며, BIT_SEL 제어 라인은 8 비트 중 하나를 선택하도록 기능한다. 8:1 mux(136)의 출력은 비트 테스트 회로(138)에 접속되며, 이 비트 테스트 회로(138)는 선택된 비트가 소거되었는지 또는 세트되었는지를 테스트하도록 BTST_CLR 제어 라인 및 BTST_SET 제어 라인에 의해 동작된다. 비트 테스트 회로(138)의 출력은 BR_SKP 제어 라인을 구동한다.
본 발명에 따르면, 마이크로콘트롤러는 상기한 8 비트 레지스터와 더불어 논리 16 비트 레지스터를 제공한다. 이것은 레지스터 파일 내의 레지스터의 쌍을 취하여 이들을 단일 레지스터로서 취급함으로써 달성된다. 이 방법으로 3 개의 16 비트 레지스터(X, Y, Z)가 제공된다. X 레지스터는 레지스터쌍(R27/R26)으로 구성되고, Y 레지스터는 레지스터쌍(R29/R28)으로 구성되며, Z 레지스터는 레지스터쌍(R31/R30)으로 구성된다.
다음에, 도 3의 셀렉터 제어 회로(134)를 더욱 상세하게 도시하는 도 4를 참조한다. 디코더 유닛(140)은 디코딩(R_SEL)에 응답하여 32 개의 출력 중 소정의 하나를 활성화시키는 1:32 디코더이다. 이 디코더의 각각의 출력 라인은 레지스터에 대응한다. 그 출력은 2 개의 인에이블링 AND 게이트(142, 144)로 제공된다. 도 13은 1 비트 인에이블링 입력(A), N 비트 입력(B) 및 N 비트 출력을 갖는 인에이블링 AND 게이트(50)의 구조를 상세히 도시한다. 도 13의 확대 상세도는 이러한 게이트가 N 개의 2 입력 AND 게이트로 구성된다는 것이 도시되어 있다. N 개의 AND 게이트의 각각의 제1 입력은 인에이블링 입력(A)을 수신하고, AND 게이트의 제2 입력은 B 입력의 N 비트 중 하나를 수신한다. 따라서, 인에이블링 입력(A)이 활성화되어 있는 경우에는, 인에블링 AND 게이트(50)에 의해 B 입력이 출력으로 통과한다. 인에이블링 입력(A)이 활성화되어 있지 않은 경우에는, 인에이블링 AND 게이트(50)의 N 개의 출력이 모두 로우(LOW)이다. 도 4를 다시 참조하면, 인에이블링 AND 게이트(144)는 WE_R에 의해 인에이블된다.
계속해서, 인에이블링 AND 게이트(142)의 32 개의 각각의 출력은 합성 OR 게이트(150~181)의 입력에 결합된다. 인에이블링 AND 게이트(144)의 32 개의 각각의 출력은 1:8 mux(M0~M31)에 결합된다. 1:8 mux(M0~M31)의 8 개의 출력은 합성 OR 게이트(150~181)의 타입력에 결합된다. 각각의 합성 OR 게이트는 레지스터(R0~R31)와 연관되어 있다. 도 5a는 합성 OR 게이트(150)의 구조를 도시한다. 이 합성 OR 게이트(150)는 8 개의 별개의 2 입력 OR 게이트(150A~105H)로 구성된다. 1 비트 입력 라인(190)은 인에이블링 AND 게이트(142)의 출력으로부터 기원하고, OR 게이트(150A~150H)의 각각의 제1 입력에 결합된다. 8 비트 입력 라인(191)은 1:8 mux(M0)의 출력으로부터 기원한다. 8 비트 입력 라인(191)은 각각의 OR 게이트의 제2 입력에 결합된다. 도 5a로부터 알 수 있는 바와 같이, OR 게이트는 각각 레지스터(R0)의 플립플롭 중 하나의 플립플롭의 CK 라인(CK0~CK7)에 결합된다. 이 구성은 합성 OR 게이트(150~175)에 적용된다.
도 4를 다시 참조하면, 합성 OR 게이트의 일부, 즉 게이트(176~181)는 제3 입력을 가진다는 것을 주목하자. 이 제3 입력은 X 레지스터, Y 레지스터 및 Z 레지스터의 기록과 관련된 WE_XL 제어 라인, WE_XH 제어 라인, WE_YL 제어 라인, WE_YH 제어 라인, WE_ZL 제어 라인 및 WE_ZH 제어 라인 중 하나로부터 입력된다. 합성 OR 게이트(176)를 상세히 도시한 도 5b에서 알 수 있는 바와 같이, 추가의 1 비트 제어 라인(194)은 OR 게이트(176A~176H)의 각각 제3 입력에 결합된다. 이 구성은 합성 OR 게이트(176~181)에 적용된다.
상기한 바와 같이, R_SEL 제어 라인 및 WE_R 제어 라인은 협동하여 8 비트 데이터를 선택된 레지스터에 기록한다. 이것은 그 데이터를 레지스터에 대응하는 플립플롭에 클록킹함으로써 달성된다. 예를 들면, 데이터를 레지스터(RO)에 기록하는 경우를 고려한다. 5 비트 제어 라인(R_SEL)은 레지스터(RO)를 선택하도록 세트된다. 디코더 유닛(140)는 라인을 디코딩함으로써 인에이블링 AND 게이트(142)를 통하여 OR 게이트(150)의 입력 라인(190)에 결합되는 레지스터(R0)에 대응하는 출력 라인을 활성화한다. 도 5a에 도시된 바와 같이, 입력 라인(190)은 레지스터(RO)의 플립플롭 전체에 동시에 클록킹함으로써, 플립플롭(도 3 참조)의 D 입력에 나타나는 데이터를 입력한다.
R_SEL 제어 라인, WE_BIT 제어 라인 및 BIT_SEL 제어 라인을 설명하기 전에, 상태 레지스터(24)를 설명하기 위해 도 6을 참조한다. 이 상태 레지스터(24)는 8 개의 플립플롭을 포함하고, 플립플롭이 각각 본 발명에서 사용되는 상태 비트 각각에 대응한다. 즉, 인터럽트 인에이블 플래그(I), 비트 전송 플래그(T), 하프캐리 플래그(H), 2의 보수 오버플로우 플래그(V), 음의 플래그(N), 음의 플래그 및 2의 보수 플래그간의 배타적 OR과 등가의 부호 비트(S), 제로(0) 플래그(Z) 및 캐리 플래그(C)이다. I 플립플롭으로의 입력은 F_SET 제어 라인에 직접 결합된다. T 플립플롭으로의 입력은 OR 게이트를 통하여 F_SET 제어 라인 및 AND 게이트(228)의 출력에 결합된다. 나머지 플립플롭으로의 입력은 그들의 각각의 OR 게이트를 통하여 F_SET 제어 라인 및 인에이블링 AND 게이트(230)(도 13 참조)의 8 개의 출력에 결합된다.
8:1 mux(202)는 상태 레지스터 플래그 전체의 출력을 수신하고, F_OUT 제어 라인의 설정에 따라 플래그 중 선택된 하나를 출력한다. 8:1 mux(202)의 출력은 비트 테스트 수단(208)으로 제공되어 BR_SKP 제어 신호를 생성한다. 또한, 8:1 mux(202)의 출력은 AND 게이트(218)로 제공되고, 이 AND 게이트(218)의 출력은 데이터 버스(D_BUS[n])의 비트 n에 결합된다. 또한, H 플래그, S 플래그, V 플래그, N 플래그, Z 플래그 및 C 플래그는 후술하는 범용 ALU(22)로 제공된다.
각각의 플립플롭은 그의 대응할 플립플롭을 단순히 리셋시키는 것만으로 특정 플래그를 소거시키는 것을 효과적으로 가능하게 하는 리셋(R)을 포함한다. 각각의 리셋은 인에이블링 AND 게이트(224)의 8 개의 출력 중 하나에 결합된다. 인에이블링 AND 게이트(224)는 T_SEL 제어 라인에 의해 인에이블된다.
I 플립플롭의 클록 입력은 인에이블링 AND 게이트(226)의 출력에 결합된다. T 플립플롭의 클록 입력은 OR 게이트를 통하여 인에이블링 AND 게이트(226) 및 T_SEL 제어 라인에 결합된다. 나머지 플립플롭은 그들의 각각의 OR 게이트를 통하여 인에이블링 AND 게이트(226) 및 F_SETALU 제어 라인에 결합된다.
mux(210)는 8 비트 버스로부터 입력(D_BUS)을 수신한다. BIT_SEL 제어 라인은 8 비트 중 하나를 AND 게이트(228)로 출력하며, 이 AND 게이트(228)의 출력은 T 플립플롭으로 제공된다. T_SEL 제어 라인은 AND 게이트(228)로의 인에이블링 입력으로서 기능한다.
인에이블링 AND 게이트(230)는 범용 ALU(22)로부터의 입력을 수신하고, F_SETALU 제어 라인에 의해 인에이블된다. 이 구성 요소는 ALU 동작 중에 ALU로부터 수신된 상태 플래그를 갱신하도록 기능한다. 이것은 범용 ALU(22)의 설명과 관련해서 추가로 설명될 것이다.
디코더(204, 206)는 각각 F_SEL 제어 라인을 디코딩하여 그의 8 개의 출력 중 하나를 활성화하며, 그의 8 개의 출력은 각각 인에이블링 AND 게이트(224, 226)로 제공된다. F_CLR 제어 라인은 인에이블링 AND 게이트(224)를 인에이블시킨다. F_SET 제어 라인은 인에이블링 AND 게이트(226)를 인에이블시킨다.
비트 테스트 수단(208)은 OR 게이트(216)로 제공되는 1 쌍의 AND 게이트(212, 214)로 구성된다. AND 게이트(214)는 8:1 mux(202)에 결합되는 반전 입력을 가진다. AND 게이트(214)로의 타입력은 FTST_CLR 제어 라인에 결합된다. AND 게이트(212)로의 입력은 8:1 mux(202)의 출력 및 FTST_SET 제어 라인이다.
또한, 8:1 mux(202)의 출력은 T_OUT 제어 라인에 의해 인에이블되는 AND 게이트(218)에 결합된다. AND 게이트(218)의 출력은 8 비트 데이터 버스의 비트 라인 n에 결합되도록 도시되어 있다.
이하, 본 발명의 8 비트 마이크로콘트롤러의 다른 특징에 대해서 설명한다. 전술한 설명을 상기해 보면, 레지스터의 임의의 비트 위치에 로드 또는 스토어하는 종래 기술에서는 레지스터 시프트 및/또는 레지스터 마스킹 동작을 요구하며, 그 결과 코드의 효율이 낮아지고 코드 크기가 증가한다. 또한, 이것은 파괴 동작이며 원래의 데이터를 보존하려면 레지스터의 내용을 저장하여야 한다.
도 3 내지 도 6에 도시된 R_SEL 제어 라인, WE_BIT 제어 라인 및 BIT_SEL 제어 라인을 고려한다. 이들 제어 라인은 레지스터 회로(100)(도 3 참조)를 동작시켜 선택된 레지스터의 특정 비트 위치에 단일 비트를 기록하는 것을 가능하게 한다. 기록될 비트는 상태 레지스터(24)로부터 얻어지고 D_BUS[n]을 통하여 제공된다. 이것은 8:1 mux(202)의 T 플립플롭의 출력을 선택하도록 F_OUT(도 6 참조)을 설정하고, AND 게이트(218)가 데이터 버스로의 출력을 구동할 수 있도록 T_OUT을 활성화시킴으로써 달성된다. 또한, 4:1 mux(130)의 D_BUS[n] 입력을 선택하는 D_SEL에의해, 4:1 mux(130) 및 4:1 mux(132)의 8 개의 출력 라인의 각각에서 이 비트가 이용 가능하게 된다. 이 때문에, 기록될 비트가 레지스터 전체의 플립플롭 전체의 입력에 제공된다(도 4 참조). 예를 들면, 레지스터(R26)의 비트 위치 2로 기록될 비트의 경우를 고려한다. 레지스터(R26)를 선택하도록 세트되는 R_SEL 제어 라인은 대응하는 출력 라인을 활성화시키도록 디코더 유닛(140)(도 4 참조)에 의해 디코딩된다. WE_BIT 제어 라인은 레지스터(R26)에 대응하는 1:8 mux, 즉 mux(M26)의 입력으로 디코딩된 출력을 통과시킬 수 있도록 활성화된다. 비트 위치 2를 선택하도록 세트되는 BIT_SEL 제어 라인은 1:8 mux(M26)를 포함하는 각각의 mux를 동작시켜서 그의 1 비트 입력을 그의 8 개의 출력 중 제2 출력으로 출력시킨다. 1:8 mux(M26)로부터 계속하여, 그의 8 개의 출력 라인은 도 5b에 도시된 합성 OR 게이트(176)의 입력(193)으로서 기능한다. 입력(193)의 각각의 라인(0~7)은 OR 게이트(176A~176H)를 통하여 특정 플립플롭으로 전달된다. 그러나, 라인들 중 단지 하나의 라인, 이 경우에는 라인[1]만이 활성화되기 때문에, 선택된 레지스터의 플립플롭 중 단지 하나의 플립플롭만이 비트를 수신하도록 클록킹된다.
이하, 도 7에 도시된 본 발명의 범용 ALU(22)를 설명한다. 이 범용 ALU(22)는 각각의 특정 연산을 수행할 수 있는 복수의 연산 서브유닛(OP1~OPn)으로 구성된다. 범용 ALU에 의해 수행되는 통상적인 연산은 각각 별개의 서브유닛에 의해 수행되는 가산, 논리 연산 및 시프트 연산을 포함한다. ALU로의 입력, 즉 A, B, K_IN 및 상태 레지스터(24)로부터의 플래그는 각각의 서브유닛에 제공된다. 이 서브유닛은 이들에 대응할 연산을 동시에 수행하고, 8 비트 결과(22C) 및 6 비트 상태 결과(22D)를 발생시킨다. 이 병렬 구조는 직렬의 구현에 비해 보다 빠른 실행 시간을 제공하며, 소정의 ALU 연산이 단일 클록 주기 내에 발생시킬 수 있다.
다음에, 서브유닛의 결과(22C)는 셀렉터(22A)로 제공된다. 이 셀렉터(22A)는 연산 서브유닛 중 하나의 결과를 8 비트 데이터 버스(12)로 출력하도록 ALU1_OP에 의해 제어된다. 또한, 상태 결과(22D)는 유사한 방법으로 처리되며, 각각 ALU1_OP에 의해 제어되는 셀렉터 (22B)로 제공되기 때문에 상태 레지스터(24)는 선택된 연산에 대응하는 상태 결과를 수신한다.
또한, 범용 ALU(22)는 XOR 게이트(23) 및 9 입력 AND 게이트(24)를 포함한다. XOR은 A 입력 및 B 입력의 8 개의 각각의 사이에 비트 단위로 XOR 연산을 수행한다. XOR 연산의 8 개의 결과는 AND 게이트의 8 개의 반전 입력에 제공된다. A = B인 경우, XOR 연산의 8 개의 결과는 논리 "0"이 될 것이다. 이것에 의해 CPSE 제어 라인이 활성화되는 경우, AND 게이트가 논리 "1"을 출력하고, 이에 따라 BR_SKP 제어 라인을 활성화시킨다.
상기한 바와 같이, 서브유닛(OPn)은 각각 특정 산술 및 논리 연산을 제공하며 A 입력, B 입력 및/또는 K_IN 입력에 연산을 행하고, 결과(22C)를 제공하여 적절한 상태 플래그를 갱신한다. 도 8a는 및 도 8b는 두 개의 통상적인 연산 서브유닛을 도시한다. 도 8a는 A 입력과 K_IN을 통하여 제공되는 즉시 상수(immediate constant)사이의 논리 AND를 구현한다. 도 8b는 A 입력의 논리 좌측 시프트를 구현한다.
이하, 도 9를 참조하여 프로그램 시퀀싱을 설명한다. 명령은 프로그램 메모리(925)로부터 패치되어 명령 레지스터(921)에 로드된다. 명령 디코더(923)는 패치된 명령을 디코딩하고, 명령을 실행하도록 제어 라인에 의해 마이크로콘트롤러의 다른 부분으로 전송되는 제어 신호를 생성하는 논리를 포함한다. 명령 디코더(923)는 서브루틴 명령 및 인터럽트에 응답하여 스택 포인터를 증가 또는 감소시키기 위해 SP_INC 및 SP_DEC를 활성화시킨다.
또한, 이와 동시에, 명령 디코더(923)는 다음 명령을 패치하기 위해 프로그램 카운터(928)를 "증가"시키기 위한 신호를 생성한다. 이들 신호는 =q, -q, +q, +3, +2 및 +1을 포함한다. "=q" 신호는 절대 어드레스 q로의 분기를 지정하는 이들 명령을 위해 사용된다. "+q" 신호 및 "-q" 신호는 q의 양만큼 포워드 및 백워드의 상대적인 분기를 지정하는 이들 명령을 위해 사용된다. 이들 경우의 각각에 있어서, 양(q)이 명령에 포함된다. "+3" 신호 및 "+2" 신호는 스킵 명령을 위해 사용되며, 스킵될 메모리 위치의 수는 스킵되는 명령의 크기에 따른다. "+1" 신호는 단순히 프로그램 카운터를 다음 명령으로 증가시킨다. 또한, 프로그램 카운터는 다음 명령의 어드레스원으로서 X 레지스터, Y 레지스터 또는 Z 레지스터 중 하나를 사용하는 이들 명령에 대해 레지스터 파일(920)로부터 입력을 수신한다. 또한, 프로그램 카운터는 다음 명령의 다른 어드레스원으로서 RAM(927)으로부터의 입력을 수신하며, RAM 내의 위치는 X 레지스터, Y 레지스터 및 Z 레지스터 중 하나 또는 스택 포인터(926)에 의해 지정된다.
통상적으로, 명령 디코더(923)는 "+1" 신호를 발행하고, 현재 명령이 실행되고 있는 동안에 프로그램 카운터(928) 및 프로그램 플래시가 바로 다음 명령을 사전 패치시킨다. 그러나, BR_SKP 제어 라인이 활성화되어 있는 경우, 프로그램 카운터(928) 및 명령 레지스터(921)는 사전 패치된 명령을 폐기하고, 신규의 어드레스를 계산하며, 신규의 명령을 패치하고, 신규의 어드레스는 명령에 따른다. 특정 분기 명령의 설명과 관련해서 보다 상세히 설명한다.
본 발명의 8 비트 마이크로콘트롤러의 또 다른 특징은 도 10에 도시된 바와 같은 강화된 어드레스 지정 능력이다. 도 10에는 레지스터 파일 외부의 3 개의 추가적인 레지스터, 즉 RAM 페이징 레지스터(RAMPX, RAMPY, RAMPZ)가 도시되어 있다. 이 RAM 페이징 레지스터는 종래 기술의 8 비트 마이크로콘트롤러와 비교해서 상당히 증가된 어드레스 지정 영역을 제공하도록 그들의 대응하는 논리 16 비트 레지스터(X, Y, Z)와 관련해서 동작한다. 이 개시된 실시예에 있어서, RAM 페이징 레지스터는 8 비트 레지스터이다. 그러나, 이것은 중요한 사항이 아니며, 상이한 비트 길이를 갖는 레지스터이더라도, 본 발명이 용이하게 기능할 수 있다는 것을 알 수 있다.
도 10을 참조하면, 어드레스가 형성되는 개략적인 방법이 도시되어 있다. RAM 페이징 레지스터는 각각 그의 대응하는 16 비트 레지스터와 연결된다. 예를 들면, RAM 페이징 레지스터(RMAPX)의 8 비트는 X 레지스터의 16 비트와 연결되어 24 비트의 어드레스를 형성한다. 바람직한 실시예에 있어서, RAMPX의 8 비트는 24 비트 논리 어드레스의 상위 비트(X[23 …16])로서 기능하는 반면, X 레지스터의 16 비트는 24 비트 논리 어드레스의 하위 비트(X[15 …0])를 제공한다. 이 배열에 의해 생성된 메모리 모델은 64 K 바이트(64 ×1024) 페이지의 세트이고, 총 256 개의 페이지에 대해 8 비트 RAM 페이징 레지스터에 의해 액세스된다.
이하, 도 12를 참조하여 본 발명의 개시된 실시예 내의 RAM 페이징 레지스터의 일실시예를 설명한다. RAM 페이징 레지스터(RAMP X, RAMP Y, RAMP Z)는 각각 8 비트 데이터 버스(12)에 결합되어 프로그램 실행 중에 8 비트 페이지 참조를 수신한다. 셀렉터(11)(예컨대, 3:1 mux)는 RAM 페이징 레지스터 각각으로부터 8 비트를 수신하고, RAM 페이징 레지스터 중 선택된 하나의 8 비트를 셀렉터(11)의 출력으로 전송한다. 레지스터 파일(20)의 버스 인터페이스(14')의 16 비트는 셀렉터(11)로부터의 8 비트와 연결되어, 간접 어드레스 버스(14)에 의해 전송되는 24 비트 어드레스를 형성한다.
본 발명의 확장된 24 비트 어드레스 지정에 의해 24 비트 어드레스가 RAM의 16 M(16 × 1024 × 1024)를 어드레스 지정할 수 있기 때문에 제공된 RAM(도시되지 않음)을 사용할 수 있다. 마이크로콘트롤러와 외부 RAM(도시되지 않음) 사이의 데이터 엑세스를 위해서 외부 24 비트 어드레스 버스(17) 및 8 비트 데이터 버스(15)가 포함된다. 본 발명에 따르면, 레지스터 파일(20), I/O 데이터 레지스터(I/O 공간), 온보드 RAM 및 외부 RAM이 동일한 데이터 어드레스 공간을 점유한다. 레지스터 파일은 제1의 32개의 어드레스 위치를 점유하고, 다음에 I/O 공간 및 N 개(N은 RAM의 크기임)의 어드레스 공간을 점유하는 온보드 RAM에 할당된다. 나머지 어드레스 공간은 외부 RAM에 의해 제공된다. 따라서, 어드레스 영역 [00~(N-1)]은 온보드 메모리(레지스터 파일, I/O 공간, RAM)의 메모리 위치로 맵핑되는 반면, 나머지 어드레스 영역[N~(16M - 1)]은 외부 RAM의 메모리 위치로 매핑된다. 예를 들면, 온보드 메모리가 총 64 K 바이트인 경우, 온보드 어드레스 영역은 $00 내지 $FFFF("$"는 16 진수 표현을 의미함)인 한편, 외부 RAM의 어드레스 영역은 $10000 내지 $FFFFFF가 된다. 온보드 메모리의 양은 본 발명의 이용성 또는 동작성에 영향을 미침이 없이 변경될 수 있고, 실제 메모리의 양은 이용 가능한 실리콘 영역, 장치의 형태 및 설계 규칙과 같은 설계 기준에 따르는 것에 주목하자.
온보드 메모리 및 외부 RAM이 소정의 어드레스에 대해 정확히 액세스하도록 보장하기 위해서, 내부 어드레스 버스(14) 또는 외부 어드레스 버스(17) 중 어느 하나로 어드레스를 전송하기 위해 제2 셀렉터(13)가 사용된다. 바람직한 실시예에 있어서, 제2 셀렉터(13)는 단일 mux 입력이 그의 2 개의 출력 중 하나로 전송되는 1:2 mux이다. 여기서, 단일 입력은 셀렉터(11)로부터 나오는 24 비트 어드레스 라인이다. 제2 셀렉터(13)의 출력 중 하나는 내부 어드레스 버스(14)에 결합되는 반면, 다른 출력은 외부 어드레스 버스(17)에 결합된다. 온보드 메모리의 어드레스 영역 내의 어드레스 검출시에, 제2 셀렉터(13)는 그의 입력을 내부 어드레스 버스(14)로 전송하게 된다. 24 비트 어드레스 중 단지 하위 16 비트[15...0]만이 내부 어드레스 버스(14)로 전송된다. 역으로, 외부 메모리의 어드레스 영역 내의 어드레스 검출시에, 제2 셀렉터(13)는 그의 입력을 외부 어드레스 버스(17)로 전송한다. 복수의 검출 방법 중 소정의 방법을 이용할 수 있고, 그 모두가 통상의 기술을 가진 설계자의 능력 내에 있다. 예를 들면, 24 비트의 어드레스 중 상위 8 비트[23 …0]를 함께 OR을 행하고, 그 결과를 이용하여 제2 셀렉터(13)를 제어할 수 있다. OR 연산의 결과가 FALSE인 경우에는, 그 어드레스가 온보드 메모리의 어드레스 범위 내에 있는 것을 의미하며, 제2 셀렉터(13)는 그의 입력을 내부 어드레스 버스(14)로 전송해야 한다. OR 연산의 결과가 TRUE인 경우에는,그 어드레스가 완전한 24 비트 어드레스인 것을 의미하며, 제2 셀렉터(13)는 그의 입력을 외부 어드레스 버스(17)로 전송해야 한다.
본 발명의 8 비트 마이크로콘트롤러의 특징과 관련된 하드웨어를 상세히 설명하였다. 이하, 마이크로콘트롤러의 명령 세트에 대해서 설명한다.
아래의 표 1은 명령 세트를 실현하기 위해 마이크로콘트롤러를 제어하는 제어 라인을 요약한 것이다.
표 1: 제어 라인
ADDR_SEL 레지스터 파일 또는 ALU_2 중 하나로부터 16 비트 어드레스를 선택.
ALU1_OP ALU_1에서 수행될 연산을 선택(표 3 참조).
ALU2_OP ALU_2에서 수행될 연산을 선택.
BIT_SEL 비트를 수신하기 위한 비트(0~7)를 선택.
BR_SKP 분기 또는 스킵을 수행하도록 프로그램 카운터를 인에이블시킴.
CPSE A와 B가 동일한 경우 BR_SKP 제어를 활성화시킴.
D_SEL 레지스터에 로드될 데이터의 소스(source)를 선택.
F_CLR 특정 상태 플래그를 소거.
F_OUT 상태 플래그를 출력.
F_SET 특정 상태 플래그를 설정시킴.
F_SETALU ALU_1에서의 연산의 수행에 응답하여 상태 플래그를 설정.
F_SEL 설정 또는 소거될 상태 플래그를 선택.
R_OUTA 레지스터 파일(100)의 A에서 데이터를 출력하도록 레지스터를 선택함.
R_OUTB 레지스터 파일(100)의 B에서 데이터를 출력하도록 레지스터를 선택함.
R_OUTC 레지스터 파일(100)의 C에서 데이터를 출력하도록 레지스터를 선택함.
R_SEL 데이터를 수신하도록 레지스터를 선택.
T_SEL 1 비트를 T 플래그에 저장.
T_OUT 데이터 버스의 비트 n에 T 플래그를 로드함(BLD 명령용).
TST_CLR 선택된 플래그가 소거되었는지 여부를 테스트함.
TST_SET 선택된 플래그가 설정되었는지 여부를 테스트함.
V_SEL ALU_2로의 입력을 위해 값을 선택.
WD_E 왓치독 타이머를 인에이블.
WD_RST 왓치독 타이머의 지연을 리셋.
WD_SEL 왓치독 타이머의 지연을 선택.
WE_BIT 선택된 비트에 대한 기록 인에이블.
WE_R 선택된 레지스터에 대한 기록 인에이블.
WE_XH X 레지스터에 대한 기록 인에이블.
WE_XL X 레지스터에 대한 기록 인에이블.
WE_YH Y 레지스터에 대한 기록 인에이블.
WE_YL Y 레지스터에 대한 기록 인에이블.
WE_ZH Z 레지스터에 대한 기록 인에이블.
WE_ZL Z 레지스터에 대한 기록 인에이블.
표 2는 데이터 라인을 요약한 것이다.
표 2: 데이터 라인
D_BUS 8 비트 데이터 버스(12)로부터의 데이터.
D_ALU2H 전용 ALU_2로부터의 데이터(상위 바이트).
D_ALU2L 전용 ALU_2로부터의 데이터(하위 바이트).
K_IN 명령 오퍼런드로부터 취득되는 상수 데이터값.
표 3은 산술 및 논리 연산을 요약한 것으로서, 특정 연산은 제어 라인 ALU1_OP에 의해 선택된다. 일부 명령은 2 개의 레지스터(A, B)에 대해 동작한다. 다른 명령을 레지스터 및 상수 k(즉, "즉시" 데이터)에 대해 동작한다.
표 3: ALU-1 연산(ALU1_OP: n)
n 연산 설명
1 O ←A + B ADD, 자릿수 올림없는 가산.
2 O ←A + B + Cy ADC, 자릿수 올림 있는 가산.
3 O ←A - B SUB, 자릿수 올림 없는 감산.
4 O ←A - k SUBI, 즉시 감산.
5 O ←A - B - Cy SBC, 자릿수 올림 있는 감산.
6 O ←A - B - Cy SBCI, 자릿수 올림 있는 즉시 감산.
7 O ←A & B AND, 논리 AND.
8 O ←A & k ANDI, 즉시 논리 AND.
9 O ←A v B OR, 논리 OR.
10 O ←A v k ORI, 즉시 논리 OR.
11 O ←A XOR B EOR, 배타적 OR.
12 O ←$FF - A COM, 1의 보수.
13 O ←$00 - A NEG, 2의 보수.
14 O ←A v k SBR, 레지스터에 비트를 설정.
15 O ←A & ($FF - k) CBR, 레지스터 내의 비트를 소거.
16 O ←A + 1 INC, 증가.
17 O ←A - 1 DEC, 감소.
18 O ←A & A TST, 0 또는 음수 여부의 테스트.
19 O ←A XOR A CLR, 레지스터를 소거.
20 O ←$FF SER, 레지스터를 설정.
21 R1, R0 ←A x B MUL, 승산(부호 없음).
22 On+1←AnLSL, 논리 좌측 시프트.
O0←0
Cy ←A7
23 On←An+1LSR, 논리 우측 시프트.
O7←0
Cy ←A0
24 O0←Cy ROL, 자릿수를 올려서 좌측 순환.
On+1←An
Cy ←A7
25 O7←Cy ROR, 자릿수를 올려서 우측 순환.
On←An+1
Cy ←A0
26 On←An+1(n=0...6) ASR, 산술 우측 시프트.
27 O ←A(O0..3←A4..7및 O4...7←A0..3)SWAP, 니블(nibble)을 스왑.
28 A - B CP, 설정 플래그만 비교.
A - B - Cy CPC, 설정 플래그만을 자릿수 올림 비교.
29 A - K CPI, 설정 플래그를 즉시 비교.
30 연산 없음
표 4는 전용 ALU-2의 산술 연산의 요약이다.
표 4: ALU-2 연산(ALU2_OP)
n 연산
1 ALU_2 입력을 가산.
2 ALU_2 입력을 감산.
3 연산 없음.
본 발명의 대부분의 명령은 단일 클록 주기 내에서 실행된다. 각각의 레지스터의 내용은 그들의 대응하는 플립 플롭(도 3 참조)의 출력에서 항상 이용 가능하다. 따라서, 선택된 레지스터의 내용은 mux(120, 122, 124)의 출력에서 거의 즉시 이용 가능하고, 단지 mux를 구성하는 조합 회로의 전파 지연과 동일한 지연만을 필요로 한다. 이 시간 주기는, 일반적으로 "조합 지연(combinatorial delay)"이라고 지칭된다.
다음의 산술 및 논리 명령, 즉 ADD, ADC, SUB, SUBI, SBC, SBCI, AND, ANDI, OR, ORI, EOR, COM, NEG, SBR, CBR, INC, DEC, TST, CLR, SER, LSL, LSR, ROL, ROR, ASR, SWAP, CP, CPC 및 CPI는 하나의 클록 주기 내에서 실행된다. 도 2에서 알 수 있는 바와 같이, A 입력 및 B 입력은 명령이 패치 및 디코딩된 직후에 바로 범용 ALU(22)에 대해 이용 가능해진다. R_OUTA 제어 라인은 레지스터의 내용을 선택하여 범용 ALU(22)의 2 개의 입력 중 하나로 출력한다. R_OUTA는 이와 유사하게, 명령이 제2 레지스터 오퍼런드를 지정하면, 활성화된다. 대안적으로, K_IN 제어 라인은 즉시 데이터를 사용하는 이들 명령에 대해 ALU로의 2 진 입력으로서 기능한다. 한편, ALU(도 7 참조)의 서브유닛(OPn)은 그들의 각각의 연산을 수행하고, ALU로의 입력이 셋업된 후 바로, 또 다른 작은 조합 지연 후에 결과가 이용 가능해진다. 명령에 대응하는 서브유닛의 결과(22C)는 ALU1_OP 제어 라인을 통하여 선택되어 데이터 버스(12) 상에 위치된다. 이와 동시에, D_SEL 제어 라인(도 3 참조)은 4:1 mux(130, 132)를 동작시켜서 데이터 버스 입력(D_BUS)를 선택한다. R_SEL(및 WE_R) 제어 라인은 결과가 저장될 레지스터를 선택하고, 결과는 "조합 지연" 후에 레지스터로 클록킹된다. 또한, 이와 동시에, ALU에 의해 설정되는 상태 플래그는 F_SETALU를 활성화시킴으로써 상태 레지스터(도 6 참조)로 클록킹된다.
승산 명령(MUL)는 2 개의 8 비트 레지스터의 승산을 수행하고, 16 비트 결과를 R0/R1 레지스터쌍에 저장한다. 다른 ALU 명령과는 상이하게, MUL 명령은 2 클록 싸이클을 필요로 하면, 각각의 1 주기가 16 비트곱의 절반을 레지스터쌍 중 한 쪽 레지스터에 저장하기 위해 이용된다.
MOV 명령은 1 클록 싸이클 중에 레지스터들 간의 데이터 전송을 제공한다. MOV 명령은 소스 레지스터 및 목적지 레지스터를 지정한다. 도 2, 도 3 및 도 4를 참조하면, R_OUTC 제어 라인은 mux(124)를 동작시켜서 지정된 소스 레지스터의 내용을 데이터 버스(12)로 구동한다. 이와 동시에, D_SEL 제어 라인은 4:1 mux(130, 132)를 동작시켜서, 레지스터의 입력(D)에 나타나도록 D_BUS를 출력시키고, R_SEL 제어 라인 및 WE_R 제어 라인은 목적지 레지스터를 클록킹하도록 셀렉터 제어 회로(134)를 동작시키며, 그에 따라 D_BUS에 의해 제공되는 내용을 저장한다.
LDI 명령은 지정된 데이터가 레지스터로 로드되는 것을 가능하게 한다. 데이터는 LDI 명령의 기계 연산코드(machine op-code)로 지정되고, 4:1 mux(130)의 K_IN 입력으로서 나타낸다. D_SEL 제어 라인은 K_IN을 출력하도록 4:1 mux(130, 132)를 동작시키는 반면, R_SEL 제어 라인 및 WE_R 제어 라인은 지정된 레지스터를 클록킹하도록 셀렉터 제어 라인(134)을 동작시킨다.
16 비트의 X 레지스터, Y 레지스터 및 Z 레지스터에서의 연산은 X 레지스터, Y 레지스터 및 Z 레지스터에 의해 어드레스 지정된 메모리 위치로부터 지정된 레지스터로 데이터를 전송하는 LD 명령 및 지정된 레지스터로부터 X 레지스터, Y 레지스터 및 Z 레지스터에 의해 어드레스 지정된 메모리 위치로 데이터를 전송하는 ST 명령을 포함한다. LD 명령 및 ST 명령은 실행을 위해 2 클록 주기를 필요로 한다. 도 2 및 도 3을 참조하면, 제1 클록 주기중에 R_OUTA 제어 라인 및 R_OUTB 제어 라인은 소망하는 16 비트 레지스터의 레지스터쌍(X:R27/R26, Y:R29/R28, Z:R31/R30)을 선택한다. ADDR_SEL 제어 라인은 B:A 출력을 간접 어드레스 버스(14) 상에 위치시키도록 mux(114)를 동작시킨다. 또한, ST 명령의 경우에 있어서, R_OUTC 제어 라인은 데이터가 판독될 레지스터를 선택하고, 데이터를 8 비트 데이터 버스(12) 상에 위치시킨다. 제2 클록 주기중에, 메모리는 메모리로부터 데이터를 8 비트 데이터 버스(12) 상에 로드(LD)하거나 또는 데이터를 메모리에 기록(ST)하도록 스트로브(strobe)된다. 또한, LD 명령의 경우에 있어서, R_SEL 제어 라인 및 WE_R 제어 라인은 D_BUS로부터 지정되는 레지스터에 데이터를 기록하도록 선택된다.
LD 명령 및 ST 명령은 각각 특정의 C 언어 특징, 즉 사후 증가(LD+, ST+) 및 사후 감소(LD-, ST-) 연산을 잘 지원한다. 상기한 바와 같이, 도 2에 도시된 전용 ALU_2는 이러한 연산에 필요한 16 비트 산술을 제공한다.
사후 증가: 제1 클록 싸이클에서, LD 명령 및 ST 명령에 대한 상기한 동작에 덧붙여, V_SEL 제어 라인이 +1 입력을 선택하고, ALU2_OP는 16 비트 어드레스가 간접 어드레스 버스(14) 상에 위치된 후, 가산 연산을 수행하도록 전용 ALU_2를 동작시킨다. 가산의 결과(102)는 레지스터 회로(100)의 D_ALU2H 입력 및 D_ALU2L 입력에 접속된다. 도 3의 D_SEL 제어 라인은 D_ALU2H mux 입력 및 D_ALU2L mux 입력을 선택하여, D_ALU2H를 R27, R29 및 R31로, D_ALU2L을 R26, R28 및 R30으로 전송한다. 이 후, 적절한 WE_[XYZ]L 제어 라인 및 WE_[XYZ]H 제어 라인은 데이터를 정확한 레지스터쌍에 기록하도록 활성화된다.
사전 감소: 제1 클록 주기에서, LD 명령 및 ST 명령에 대한 상기한 동작에 덧붙여, V_SEL은 -1 입력을 선택하고, ALU2_OP는 ALU-2가 가산을 수행하게 한다. 그 결과는 (i) 상기한 바와 같이 레지스터 회로로 피드백되고, (ii) 사전 감소 어드레스로서 기능을 행하도록 ADDR_SEL에 의해 선택된다.
LD 명령 및 ST 명령은 각각 테이블 참조 연산을 간소화하기 위한 제3 변수(LDD, STD)를 가진다. LDD 명령 및 STD 명령은 메모리 액세스 전에 16 비트 어드레스 레지스터에 가산되는 변위값을 지정한다. 제1 클록 주기중에, LD 명령 및 ST 명령에 대한 상기한 동작에 덧붙여, V_SEL은 K_IN 입력을 선택하고, ALU2_OP는 ALU_2가 가산을 수행하게 한다. 그 결과는 변위 어드레스로서 기능하는 ADDR_SEL에 의해 선택된다.
LD 명령 및 ST 명령에 대한 계산을 수행하는 것에 덧붙여, 전용 ALU_2는 16 비트 가산 명령 및 감산 명령, 즉 ADIW 명령 및 SBIW 명령을 용이하게 하기 위해 사용된다. 전용 ALU_2는 클록 사이클에서의 X 레지스터, Y 레지스터 및 Z 레지스터의 계산을 가능하게 하지만, 1 클록 주기중에 계산이 불가능하다면, 범용 ALU(22)를 이용하는 것은 불가능하다. ADIW 명령 및 SBIW 명령은 X 레지스터, Y 레지스터 및 Z 레지스터 중 하나 및 이것에 가산될 상수값을 지정한다. 동작에 있어서, R_OUTA 제어 라인 및 R_OUTB 제어 라인은 지정된 레지스터쌍을 전용 ALU_2로의 제1 입력으로서 선택한다. V_OUT은 K_IN(상수값)을 ALU_2로의 제2 입력으로서 선택한다. ALU2_OP는 가산 연산 또는 감산 연산 중 어느 하나를 선택한다. 그 결과(102)는 레지스터 회로(100)의 D_ALU2H 입력 및 D_ALU2L 입력으로 피드백된다. 도 3에 도시된 D_SEL 제어 라인은 mux 입력(D_ALU2H) 및 mux 입력(D_ALU2L)을 선택하여, D_ALU2H를 R27, R29 및 R31로, D_ALU2L을 R26, R28 및 R30으로 전송한다. 이 후, 적절한 WE_[XYZ]L 제어 라인 및 WE_[XYZ]H 제어 라인은 데이터를 소망하는 레지스터쌍에 기록하도록 활성화된다.
마이크로콘트롤러는 각각 1 클록 주기중에 수행되는 상태 레지스터(24)의 여러 플래그를 설정 및 소거하기 위한 명령은 제공한다. 이들 명령은 BSET 및 BCLR과 SEx 및 CLx를 포함하는데, 여기서 x는 I, T, H, S, V, N, Z 또는 C이다. 어셈블리어 레벨에서, SEx 명령 및 CLx 명령은 추가 오퍼런드를 필요로하지 않는 반면, BSET 명령 및 BCLR 명령은 영향을 미칠 플래그를 나타내는 상태 플래그 오퍼런드(s)를 포함한다.
도 6을 참조하면, 제어 신호(F_SEL)는 영향을 미칠 플래그를 선택하도록 디코더(204, 206)를 동작시킨다. 소거 플래그 명령의 경우에 있어서, F_CLR 제어 라인은 인에이블링 신호로서 기능하고, 영향을 받을 플래그에 대응하는 인에이블링 AND 게이트(224)에서 출력을 제공한다. 이 출력은 플립플롭의 리셋(R) 입력에 접속되어 플립플롭을 소거시킨다. 세트 플래그 명령의 경우에 있어서, F_SET 제어 라인은 두 가지 목적으로 기능한다. 첫 번째로는 상태 플래그(F_SEL에 의해 선택됨) 중 하나를 세트시키기 위해 각각의 플리플롭에 대해 입력으로서 기능한다. 두 번째로는 F_SET 제어 라인은 인에이블링 AND 게이트(226)에 대한 인에블링 신호이며, 그의 출력이 입력을 클록킹하기 위해 플립플롭 클록 라인에 결합되는 것이다.
상기한 바와 같이, 본 발명의 마이크로콘트롤러의 하나의 특징은 1 클록 주기의 BST 명령 및 BLD 명령에 의해 제공되는 비트 액세스 능력이다. BST 명령은 상태 레지스터의 T 플래그 내로 복사될 레지스터 내의 레지스터 및 비트 위치를 지정한다. R_OUTC 제어 라인은 내용이 mux(124)에 의해 데이터 버스(12)로 구동되는 레지스터를 선택한다. 이와 동시에, BIT_SEL 제어 라인은 데이터 버스로부터 소망하는 비트를 선택하도록 mux(210)(도 6 참조)를 동작시키고, 이 후 그 소망하는 비트는 T_SEL 제어 라인을 활성화시킴으로써 T 플립플롭으로 로드된다.
BLD 명령은 T 플래그에 저장된 비트를 지정된 레지스터의 지정된 비트 위치로 로드한다. F_OUT 제어 라인은 T 플래그를 선택하도록 8:1 mux(202)를 동작시키는 한편, T_OUT 제어 라인은 출력을 데이터 버스의 비트 n으로 구동한다. 이와 동시에, 도 3을 참조하면, D_SEL 제어 라인은 4:1 mux(130, 132)의 제3 입력을 선택하고, 이에 따라 모든 레지스터에 대한 입력으로서 D_BUSN를 제공한다. R_SEL 제어 라인, BIT_SEL 제어 라인 및 WE_BIT 제어 라인(도 4, 도 5a 및 도 5b 참조)은 소망하는 레지스터/비트 위치의 플립플롭을 클록킹한다.
각각의 변위량을 지정하는 이하의 조건부 분기 명령이 제공된다.
BRBS[C] - 지정된 상태 플래그가 세트[소거]된 경우에 분기.
BREQ[NE] - Z 플래그가 세트[소거]된 경우에 분기.
BRCS[CC] - C 플래그가 세트[소거]된 경우에 분기.
BRLO[SH] - C 플래그가 세트[소거]된 경우에 분기.
BRMI[PL] - N 플래그가 세트[소거]된 경우에 분기.
BRLT[GE] - S 플래그가 세트[소거]된 경우에 분기.
BRHS[HC] - H 플래그가 세트[소거]된 경우에 분기.
BRTS[TC] - T 플래그가 세트[소거]된 경우에 분기.
BRVS[VC] - V 플래그가 세트[소거]된 경우에 분기.
BRIE[ID] - I 플래그가 세트[소거]된 경우에 분기.
상기한 분기 명령에 덧붙여, 지정된 레지스터의 지정된 비트의 테스트 결과에 기초하여 다음 명령을 스킵하기 위한 SBRC 명령 및 SBRS 명령이 제공된다. 이와 유사하게, CPSE 명령은 2 개의 레지스터의 내용을 비교하고, 그 비교 결과에 기초하여 다음 명령을 스킵, 즉 2 개의 레지스터의 내용이 동일하면 스킵한다. 이들 명령은 분기가 수행되었는지 여부에 따라 1 클록 주기 또는 2 클록 주기중에 실행된다.
도 6 및 도 9를 참조하면, BRxx 명령의 패치시에, F_OUT 제어 라인은 8:1 mux(202)로부터 소망하는 상태 플래그를 출력하도록 제어 신호를 전송하고, FTST_SET 또는 FTST_CLR 중 어느 하나는 비트 테스트 수단(208)이 적절한 비트 테스트를 수행하도록 활성화된다. 한편, 프로그램 카운터(28)는 증가되고 있고, 그 다음 명령이 사전 패치된다. 비트 테스트에 실패하면, 사전 패치된 명령이 다음에 실행될 명령으로서 선택된다. 비트 테스트에 통과하면, BR_SKP 제어 라인이 활성화되어, 프로그램 카운터가 분기 명령을 형성하고, 명령 레지스터(25)에 새로운 명령이 로드된다. 새로운 명령의 로드에는 제2 클록 주기가 필요하다.도 3을 참조하면, SBRC 명령 및 SBRS 명령을 참조한 BR_SKP 제어 신호의 생성이 도시된다. 소망하는 레지스터는 R_OUTA 제어 라인을 통하여 mux(120)에 의해 선택되어 8:1 mux(136)의 입력에 결합된다. BIT_SEL 제어 라인은 소망하는 비트를 출력하도록 8:1 mux(136)를 동작시키고, 이 후 그 비트는 BTST_CLR 또는 BTST_SET 제어 라인 중 어느 하나의 활성화에 의해 비트 테스트 수단(138)에서 테스트된다. 이 테스트 결과에 따라 BR_SKP 제어 라인이 활성화된다.BRLT[GE] - S 플래그가 세트[소거]되었을 때 브랜치하라.
도 3 및 도 7을 참조하여 CPSE 명령에 관한 BR_SKP 제어 신호의 생성을 설명한다. 해당 2 개의 레지스터의 내용이 R_OUTA 제어 라인 및 R_OUTB 제어 라인을 통한 mux(120, 122)의 동작에 의해 범용 ALU(22)의 A 입력 및 B 입력에서 이용 가능해진다. XOR 게이트(23) 및 AND 게이트(24)를 통하여 ALU에서 "비교" 연산이 수행된다. 제어 라인(CPSE)은 AND 게이트의 출력을 인에이블시키도록 활성화되고 이에 따라, A = B인 경우, BR_SKP가 활성화된다.
이하의 무조건부 분기 명령이 제공된다. RJMP 명령은 상대 점프(jump) 어드레스를 생성하기 위해 프로그램 카운터에 가산되는 변위값을 지정한다. IJMP 명령은 Z 레지스터의 내용을 점프 어드레스로서 사용한다. JMP 명령은 프로그램 카운터로 로드되는 점프 어드레스를 지정한다. IJMP 명령은 Z 레지스터를 구성하는 레지스터쌍(R31/R30)을 선택하기 위해 R_OUTA 제어 라인 및 R_OUTB 제어 라인에 대한 제어 신호를 생성한다. 도 2로부터 알 수 있는 바와 같이, mux(114)는 Z 레지스터의 내용을 간접 어드레스 버스(14) 상으로 구동하기 위해 ADDR_SEL에 의해 동작하며, 이 후 Z 레지스터의 내용은 프로그램 카운터(28)로 로드된다.
이하의 서브루틴 관련 명령은 설명한다. CALL 명령은 서브루틴의 개시 어드레스를 지정한다. RCALL 명령은 서브루틴의 개시 어드레스를 생성하기 위해 프로그램 카운터에 가산되는 변위값을 지정한다. ICALL 명령은 Z 레지스터의 내용을 서브루틴의 개시 어드레스로서 내용을 사용한다. ICALL 명령의 실행 중에, 레지스터 파일(20)은 IJMP 명령에 대해 상기한 바와 동일한 방식으로 동작된다. 또한, 서브루틴 호출 명령은 복귀 어드레스를 저장하기 위해 스택 포인터 및 스택, 즉 스택 포인터에 의해 어드레스 지정되는 영역을 동작시킨다.
서브루틴 복귀 명령은 단지 프로그램 카운터에 스택 맨위의 내용을 로드시키고, 이에 따라 스택 포인터를 갱신하는 표준 RET 명령을 포함한다. 또한, 인터럽트 처리기로부터의 복귀를 위해 RETI 명령이 제공된다. RETI 명령은 RET와 동일한 방식으로 동작하며, 상태 레지스터에 I 플래그를 세트시키는 부가적인 동작을 수반한다.
PUSH 명령 및 POP 명령은 SP_INC 제어 라인 및 SP_DEC 제어 라인을 활성화시키고 (RAM 내의) 스택에 기록하거나 또는 스택으로부터 판독함으로써 스택 포인터를 동작시킨다.
IN 명령 및 OUT 명령이 레지스터 파일의 레지스터와 같이 일련의 플립플롭으로 구성되는 I/O 포트 데이터 레지스터와 레지스터 사이에서 8 비트 데이터 버스(12)를 통하여 데이터를 전송하기 위해 사용된다. IN 명령은 I/O 포트로부터 레지스터로 데이터를 로드한다. 지정된 포트의 데이터 레지스터의 내용은 8 비트 데이터 버스(12)로 구동된다. D_SEL 제어 라인은 D_BUS를 출력하기 위해 4:1 mux(130, 132)를 동작시킨다. R_SEL 제어 라인 및 WE_R 제어 라인은 셀렉터 제어 회로(134)를 동작시키기 때문에 소망하는 레지스터를 데이터에 클록킹시킨다. 역으로, OUT 명령은 레지스터로부터 I/O 포트로 데이터를 로드한다. R_OUTC를 활성화시킴으로써 지정된 레지스터로부터 데이터 버스 상으로 데이터가 로드된다. 이 후, 선택된 포트의 데이터 레지스터의 플립플롭은 8 비트 데이터 버스(12) 상에 나타나는 데이터에 클록킹되도록 동작된다.
LPM 명령은 프로그램 메모리로부터 레지스터(RO)로 1 바이트의 데이터를 로드한다. 프로그램 메모리의 어드레스는 Z 레지스터에 포함된다. Z 레지스터는 mux(120, 122)에서 출력 레지스터(R31/R30)로 R_OUTA 및 R_OUTB를 활성화시키고, 그 결과로 취득되는 16 비트값(도 2 참조)을 mux(114)를 통하여 간접 어드레스 버스(14) 상으로 구동함으로써 액세스된다. 프로그램 메모리가 액세스되고, 데이터는 데이터 버스 상으로 로드된다. D_SEL 제어 라인(도 3 참조)은 D_BUS 입력을 선택하는 반면, R_SEL 제어 라인 및 WE_R 제어 라인은 셀렉터 제어 회로를 동작시켜 레지스터(RO)에 대응하는 플립플롭에 클록킹시키고, 이에 따라 D_BUS를 레지스터(RO)에 로드한다.
SLEEP 명령은 마이크로콘트롤러를 휴면 모드(sleep mode)로 세트시킨다. 인터럽트에 의해 기동되면, 프로그램 카운터 및 명령 레지스터는 인터럽트 처리기를 실행하기 전에 SLEEP 명령에 이어서 명령을 로드 및 실행하도록 동작된다.
마이크로콘트롤러는 임의의 사용자가 선택 가능한 시간 간격 내에 타이머가 리셋되지 않으면 마이크로콘트롤러를 리셋시키는 왓치독 타이머(300)(도 1 참조)를 포함한다. 도 11은 셀렉터(304)에 결합된 복수의 출력을 갖는 카운터(302)로 구성된 왓치독타이머(300)를 도시한다. 카운터는 1 MHz에서 동작하는 내부 발진기에 의해 클록킹된다. 카운터의 각각의 출력은 소정수의 카운트 후에 활성화된다. 따라서, 카운터(302)는 복수의 지연 시간을 갖는 지연 수단으로서 동작한다. 도 11에 도시된 바와 같이, 카운터의 출력은 16 ms~2048 ms의 범위 내에서 16 ms만큼씩 증가시키는 지연 시간을 제공할 수 있다. 지연 시간은 셀렉터(304)를 통하여 제어 라인 WD_SEL에 의해 선택되며, 그들의 출력이 WD_E 제어 라인에 의해 인에이블되는 인에이블링 AND 게이트(306)에 접속된다. 선택된 지연 시간과 동일한 시간 간격이 경과한 경우, 대응하는 카운터의 출력이 하이(high)가 되고, 이에 따라 MCU RESET 라인을 활성화시킨다. WD_SEL 제어 라인 및 WD_E 제어 라인은 왓치독 레지스터(308)를 구성하는 플립플롭의 출력이다. 데이터는 데이터 버스(12)를 통하여 왓치독 레지스터(308)로 판독된다.
WDR 명령은 왓치독 타이머(300)를 리셋시키는데 사용된다. 명령 디코더(923)는 카운터(302)를 리셋시키는 WD_RST 신호를 발생시킨다. 따라서, 왓치독 타이머가 인에이블된 경우(WD_E가 하이일 때), WDR 명령은 선택된 지연 시간에 대응하는 주파수로 실행되고, 왓치독 타이머가 인에이블되지 않은 경우 마이크로콘트롤러가 리셋된다.

Claims (40)

  1. 마이크로콘트롤러로서,
    명령 세트와;
    상기 명령 세트로부터 선택되는 명령을 저장하는 프로그램 메모리와;
    명령의 실행에 응답하여, 제어 신호를 제공하는 복수의 제어 라인을 갖는 명령 실행 유닛과;
    상기 프로그램 메모리로부터 명령을 취득하여 이 취득한 명령을 상기 명령 실행 유닛에 로드시키기 위한 패치 수단과;
    상기 패치 수단을 상기 명령 실행 유닛에 결합하는 프로그램 버스와;
    상기 프로그램 메모리와는 별개이며, 어드레스 공간을 갖는 데이터 메모리와;
    상기 프로그램 메모리와는 별개이며, 상기 데이터 메모리에 결합된 8 비트 데이터 버스와;
    상기 데이터 버스에 결합되며, 복수의 8 비트 레지스터를 갖고, 상기 복수의 8 비트 레지스터 중 2 개에 단일 논리 16 비트 레지스터로서 액세스하기 위한 조합 수단을 더 가지며, 상기 조합 수단에 결합되어 상기 조합 수단을 통하여 액세스되는 논리 16 비트 레지스터 상에서 산술 기능을 수행하기 위한 전용 ALU를 더 갖는 레지스터 파일과;
    상기 레지스터 파일에 결합되어 상기 2 개의 8 비트 레지스터의 내용을 수신하기 위한 제1 입력 및 제2 입력과, 상수값 데이터를 수신하기 위한 제3 입력과, 1 클록 주기중에 출력을 생성하도록 상기 제1 입력, 상기 제2 입력 및 상기 제3 입력에 대해 선택적으로 동작시키는 수단 및 상기 데이터 버스에 결합된 출력을 갖는 범용 ALU와;
    상기 데이터 버스 및 범용 ALU에 결합되며, 인터럽트 인에이블 플래그, 비트 전송 플래그, 하프 캐리(half-carry) 플래그, 2의 보수 오버플로우 플래그, 음의 플래그. 부호 비트, 제로(0)의 플래그 및 캐리 비트를 포함하는 플래그를 갖고 상기 플래그 중 하나에 액세스하여 테스트하기 위한 비트 테스트 수단을 더 갖는 상태 레지스터와;
    프로그램 실행 중에 상기 데이터 메모리 또는 상기 레지스터 파일중 어느 하나에 직접 액세스하기 위해 상기 명령 실행 유닛을 결합시키는 직접 어드레스 버스와,
    프로그램 실행 중에 상기 데이터 메모리로의 간접 데이터 액세스를 레지스터 파일에 제공하고, 16 비트 어드레스로서 기능하도록 상기 조합 수단으로부터 16 비트값을 수신하기 위한 어드레스 수신 수단을 갖는 간접 어드레스 버스
    를 포함하여, 상기 레지스터 파일의 8 비트 레지스터는 상기 데이터 메모리의 어드레스 공간 내에 정의되는 어드레스를 가짐으로써 레지스터 및 메모리 위치 양쪽 모두에 액세스 가능한 것인 마이크로콘트롤러.
  2. 제1항에 있어서, 페이징 레지스터 및 상기 페이징 레지스터의 내용과 상기 조합 수단에 의해 제공되는 16 비트 데이터 양쪽 모두로부터 어드레스를 형성하기 위한 어드레스 형성 수단을 더 포함하는 것인 마이크로콘트롤러.
  3. 제2항에 있어서, 상기 페이징 레지스터는 8 비트 레지스터이며, 상기 페이징 레지스터는 데이터 버스에 결합되고, 이에 따라 상기 페이징 레지스터로의 값의 로딩은 각각의 64 K 바이트의 256 개의 페이지 중 하나를 지정하는 것인 마이크로콘트롤러.
  4. 제1항에 있어서, 레지스터 및 비트 식별자를 지정하는 기계 연산 코드를 각각 갖는 BST 명령 및 BLD 명령을 더 포함하고, 상기 명령 실행 유닛은,
    상기 BST 명령 및 BLD 명령의 실행에 응답하여, 비트 조작 제어 신호를 생성하는데 효과적인 것이고, 상기 비트 조작 제어 신호는,
    (i) 상기 레지스터 및 상기 비트 식별자에 의해 식별되는 비트 위치에 액세스하도록 상기 레지스터 파일을 동작시키는데, 및
    (ii) 액세스되는 비트 위치의 내용을 상기 상태 레지스터 내의 비트 전송 플래그로 전송하거나 또는 상기 비트 전송 플래그의 내용을 상기 액세스되는 비트 위치로 전송하는 것 중 어느 하나를 행하는데 효과적인 것인 마이크로콘트롤러.
  5. 제4항에 있어서, 목적지 레지스터 및 소스 레지스터쌍을 지정하는 기계 연산 코드를 각각 갖는 제1 복수의 명령을 더 포함하며, 상기 명령 실행 유닛은,
    상기 제1 명령 중 하나의 실행에 응답하여 제1 제어 신호를 생성하는데 효과적이며, 상기 제1 제어 신호는,
    (i) 상기 소스 레지스터쌍의 내용을 간접 어드레스로서 제공하도록 상기 레지스터 파일의 조합 수단을 동작시키는데,
    (ii) 상기 간접 어드레스에 의해 지정되는 메모리 위치의 내용에 액세스하기 위해 상기 데이터 메모리를 동작시키는데, 및
    (iii) 상기 메모리 위치의 내용을 상기 목적지 레지스터에 저장하도록 상기레지스터 파일을 동작시키는 데 효과적이며,
    상기 제1 명령은 로드 데이터 명령(LD, LD+, LD-, LDD)을 포함하는 것인 마이크로콘트롤러.
  6. 제5항에 있어서, 목적지 레지스터쌍 및 소스 레지스터를 지정하는 기계 연산 코드를 각각 갖는 복수의 제2 명령을 더 포함하며, 상기 명령 실행 유닛은,
    상기 제2 명령 중 하나의 실행에 응답하여 제2 제어 신호를 생성하는데 효과적인 것이고, 상기 제2 제어 신호는,
    (i) 상기 소스 레지스터의 내용에 액세스하기 위해 상기 레지스터 파일을 동작시키는데,
    (ii) 상기 목적지 레지스터쌍의 내용을 간접 어드레스로서 제공하도록 상기 레지스터 파일의 조합 수단을 동작시키는데, 및
    (iii) 상기 소스 레지스터의 내용을 상기 간접 어드레스에 의해 지정되는 메모리 위치에 저장하도록 상기 데이터 메모리를 동작시키는데 효과적인 것이며,
    상기 제2 명령은 스토어 데이터 명령(ST, ST+, ST-, STD)을 포함하는 것인 마이크로콘트롤러.
  7. 제6항에 있어서, 상기 명령 실행 유닛은 상기 LD+ 및 상기 ST+ 명령의 실행에 응답하여, 상기 레지스터쌍의 내용을 증가시키도록 상기 레지스터 파일의 전용 ALU를 동작시키는 제어 신호를 생성하는데 효과적인 것인 마이크로콘트롤러.
  8. 제6항에 있어서, 상기 명령 실행 유닛은 상기 LD- 및 상기 ST- 명령의 실행에 응답하여, 상기 레지스터쌍의 내용을 감소시키도록 레지스터 파일의 전용 ALU를 동작시키는 제어 신호를 더 생성하는데 효과적인 것인 마이크로콘트롤러.
  9. 제6항에 있어서, 상기 LDD 명령 및 상기 STD 명령의 기계 연산 코드는 변위값을 더 포함하는 것이며, 상기 명령 실행 유닛은 상기 LDD 명령 및 상기 STD 명령의 실행에 응답하여, 상기 조합 수단에 의해 제공되는 간접 어드레스에 상기 변위값을 가산하도록 상기 레지스터 파일의 전용 ALU를 동작시키는 제어 신호를 생성하는데 효과적인 것인 마이크로콘트롤러.
  10. 제6항에 있어서, 승수 레지스터 및 피승수 레지스터를 지정하는 기계 연산 코드를 갖는 승산 명령을 더 포함하고, 상기 승산 명령은 관련된 상위 바이트 및 하위 바이트의 목적지 레지스터를 갖는 것이고, 상기 명령 실행 유닛은 상기 승산 명령의 실행에 응답하여 승산 제어 신호를 생성하는데 효과적이며, 상기 승산 제어 신호는,
    (i) 상기 승수 레지스터 및 상기 피승수 레지스터에 의해 식별되는 레지스터의 내용을 상기 범용 ALU의 입력으로서 제공하도록 상기 레지스터 파일을 동작시키는데,
    (ii) 상기 승산 연산을 수행하도록 상기 범용 ALU를 동작시키는데, 및
    (iii) 상기 상위 바이트 및 상기 하위 바이트의 목적지 레지스터에 의해 식별되는 레지스터에 상기 승산 연산의 결과를 저장하도록 상기 레지스터 파일을 동작시키는 데 효과적인 것인 마이크로콘트롤러.
  11. 제10항에 있어서, 제1 레지스터 및 제2 레지스터를 지정하는 기계 연산 코드를 각각 갖는 제3 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 제3 명령 중 하나의 실행에 응답하여 제3 제어 신호를 생성하는데 효과적인 것이고, 상기 제3 제어 신호는,
    (i) 상기 제1 레지스터 및 상기 제2 레지스터의 내용을 상기 범용 ALU의 입력으로서 제공하도록 상기 레지스터 파일을 동작시키는데,
    (ii) 상기 연산 코드에서 지정되는 ALU 연산을 수행하도록 상기 범용 ALU를 동작시키는데, 및
    (iii) 상기 ALU 연산의 출력을 상기 제1 레지스터에 저장하도록 상기 레지스터 파일을 동작시키는데 효과적인 것이며,
    상기 제3 명령은 ADD, ADC, SUB, SBC, AND, OR 및 EOR를 포함하는 것인 마이크로콘트롤러.
  12. 제11항에 있어서, 레지스터 및 상수값을 지정하는 기계 연산 코드를 각각 갖는 복수의 제4 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 제4 명령 중 하나의 실행에 응답하여 제4 제어 신호를 생성하는데 효과적인 것이고, 상기 제4 제어 신호는,
    (i) 상기 레지스터의 내용을 상기 범용 ALU에 제1 입력으로서 제공하도록 상기 레지스터 파일을 동작시키는데,
    (ii) 상기 상수값을 상기 범용 ALU에 제4 입력으로서 제공하는데,
    (iii) 상기 기계 연산 코드에 지정되는 ALU 연산을 수행하도록 상기 범용 ALU를 동작시키는데, 및
    (iv) 상기 ALU 연산의 출력을 상기 레지스터에 저장하도록 상기 레지스터 파일을 동작시키는 데 효과적인 것이며,
    상기 제4 명령은 SUBI, SBCI, ANDI, ORI, SBR 및 CBR을 포함하는 것인 마이크로콘트롤러.
  13. 제12항에 있어서, 레지스터를 지정하는 기계 연산 코드를 각각 갖는 복수의 제5 명령을 더 포함하고, 상기 명령 실행 유닛은 상기 제5 명령 중 하나의 실행에 응답하여 제5 제어 신호를 생성하는데 효과적인 것이고, 상기 제5 제어 신호는,
    (i) 상기 레지스터의 내용을 상기 범용 ALU에 입력으로서 제공하도록 상기 레지스터 파일을 동작시키는데,
    (ii) 상기 기계 연산 코드에 지정되는 ALU 연산을 수행하도록 상기 범용 ALU를 동작시키는데, 및
    (iii) 상기 ALU 연산의 출력을 상기 레지스터로 저장하도록 상기 레지스터 파일을 동작시키는데 효과적인 것이며,
    상기 제5 명령은 COM, NEG, INC, DEC, TST, CLR 및 SER을 포함하는 것인 마이크로콘트롤러.
  14. 제13항에 있어서, 상태 비트 및 변위값을 지정하는 기계 연산 코드를 각각 갖는 복수의 제6 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 제6 명령 중 하나의 실행에 응답하여 제6 제어 신호를 생성하는데 효과적인 것이고, 상기 제6 제어 신호는,
    (i) 상기 상태 비트를 테스트하기 위해 상기 비트 테스트 수단을 동작시키는데, 및
    (ii) 상기 테스트되는 상태 비트의 결과에 기초하여, 실행을 위해 로드될 다음 명령이 현재 명령의 위치로부터 상기 변위값과 동일한 양 만큼 변위되는 프로그램 메모리 내의 위치로부터 취득되도록 상기 패치 수단을 선택적으로 동작시키는 데 효과적인 것이고,
    상기 제6 명령은 BREQ, BRNE, BRCS, BRCC, BRSH, BRLO, BRMI, BRPL, BRHS, BRHC, BRTS, BRTC, BRVS, BRVC, BRID, BRIE, BRBC, BRBS, BRGE 및 BRLT를 포함하는 것인 마이크로콘트롤러.
  15. 제14항에 있어서, 레지스터쌍 및 상수값을 지정하는 기계 연산 코드를 각각 갖는 제7 복수의 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 제7 명령 중 하나의 실행에 응답하여 제7 제어 신호를 생성하는데 효과적인 것이고, 상기 제7 제어 신호는,
    (i) 상기 레지스터쌍의 내용을 상기 전용 ALU에 입력으로서 제공하도록 상기 레지스터 파일의 조합 수단을 동작시키는데,
    (ii) 상기 상수값을 상기 전용 ALU에 또 다른 입력으로서 제공하는데,
    (iii) 가산 또는 감산을 수행하도록 상기 ALU를 동작시키는데, 및
    (iv) 상기 연산의 결과를 상기 레지스터쌍으로 저장하도록 상기 레지스터 파일을 동작시키는데 효과적인 것이며,
    상기 제7 명령은 ADIW 및 SBIW를 포함하는 것인 마이크로콘트롤러.
  16. 제15항에 있어서, 레지스터 및 비트 식별자를 지정하는 기계 연산 코드를 각각 갖는 복수의 제8 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 제8 명령 중 하나의 실행에 응답하여 제8 제어 신호를 생성하는데 효과적인 것이고, 상기 제8 제어 신호는,
    (i) 상기 레지스터에 액세스하여 상기 비트 식별자에 의해 지정되는 비트를 테스트하도록 상기 레지스터 파일을 동작시키는데, 및
    (ii) 상기 테스트되는 비트의 결과에 기초하여, 다음 명령을 스킵하도록 상기 패치 수단을 선택적으로 동작시키는데 효과적인 것이며,
    상기 제8 명령은 SBRC 및 SBRS를 포함하는 것인 마이크로콘트롤러.
  17. 제16항에 있어서, 레지스터 및 상수값을 지정하는 기계 연산 코드를 갖는 CPI 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 CPI 명령의 실행에 응답하여 CPI 제어 신호를 생성하는데 효과적인 것이고, 상기 CPI 제어 신호는,
    (i) 상기 레지스터의 내용을 상기 전용 ALU에 제1 입력으로서 제공하도록 상기 레지스터 파일을 동작시키는데,
    (ii) 상기 상수값을 상기 전용 ALU에 제2 입력으로서 제공하는데, 및
    (iii) 상기 제1 입력으로부터 상기 제2 입력을 감산하도록 상기 전용 ALU를 동작시키는데 효과적인 것인 마이크로콘트롤러.
  18. 제17항에 있어서, 제1 레지스터 및 제2 레지스터를 지정하는 기계 연산 코드를 갖는 CPC 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 CPC 명령의 실행에 응답하여 CPC 제어 신호를 생성하는데 효과적인 것이고, 상기 CPC 제어 신호는,
    (i) 상기 제1 레지스터 및 상기 제2 레지스터의 내용을 상기 전용 ALU에 입력으로서 제공하도록 상기 레지스터 파일을 동작시키는데, 및
    (ii)( 여기서, Rf는 제1 레지스터이고, Rs는 제2 레지스터이며, C는 캐리 비트임)를 계산하도록 상기 전용 ALU를 동작시키는데 효과적인 것인 마이크로콘트롤러.
  19. 제18항에 있어서, 제1 레지스터 및 제2 레지스터를 지정하는 기계 연산 코드를 갖는 CP 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 CP 명령의 실행에 응답하여 CP 제어 신호를 생성하는데 효과적인 것이고, 상기 CP 제어 신호는,
    (i) 상기 제1 레지스터 및 상기 제2 레지스터의 내용을 각각 상기 전용 ALU에 제1 입력 및 제2 입력으로서 제공하도록 상기 레지스터 파일을 동작시키는데, 및
    (ii) 상기 제1 입력으로부터 상기 제2 입력을 감산하도록 상기 전용 ALU를 동작시키는데 효과적인 것인 마이크로콘트롤러.
  20. 제19항에 있어서, 제1 레지스터 및 제2 레지스터를 지정하는 기계 연산 코드를 갖는 CPSE 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 CPSE 명령의 실행에 응답하여 CPSE 제어 신호를 생성하는데 효과적인 것이고, 상기 CPSE 제어 신호는,
    (i) 상기 제1 레지스터 및 상기 제2 레지스터에 의해 식별되는 레지스터의 내용을 상기 범용 ALU에 제1 입력 및 제2 입력으로서 제공하도록 상기 레지스터 파일을 동작시키는데,
    (ii) 상기 제1 입력과 상기 제2 입력을 비교하도록 상기 범용 ALU를 동작시키는데, 및
    (iii) 상기 비교 결과에 기초하여, 다음 명령을 스킵하도록 상기 패치 수단을 선택적으로 동작시키는데 효과적인 것인 마이크로콘트롤러.
  21. 제20항에 있어서, 변위값을 지정하는 기계 연산 코드를 각각 갖는 복수의 제9 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 제9 명령 중 하나의 실행에 응답하여 제9 제어 신호를 생성하는데 효과적인 것이고, 상기 제9 제어 신호는 실행을 위해 로드될 다음 명령이 현재 명령의 위치로부터 상기 변위값과 동일한 양 만큼 변위되는 프로그램 메모리 내의 위치로부터 취득되도록 상기 패치 수단을 동작시키는 데 효과적인 것인 마이크로콘트롤러.
  22. 제21항에 있어서, IJMP 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 IJMP 명령의 실행에 응답하여 IJMP 제어 신호를 생성하는데 효과적인 것이고, 상기 IJMP 제어 신호는,
    (i) 2 개의 레지스터의 내용을 단일 변위값으로서 제공하도록 상기 조합 수단을 동작시키는데, 및
    (ii) 실행을 위해 로드될 다음 명령이 현재 명령의 위치로부터 상기 단일 변위값과 동일한 양만큼 변위된 프로그램 메모리 내의 위치로부터 취득되도록 상기 패치 수단을 동작시키는데 효과적인 것인 마이크로콘트롤러.
  23. 제22항에 있어서, 변위값을 지정하는 기계 연산 코드를 각각 갖는 복수의 제10 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 제10 명령 중 하나의 실행에 응답하여 제10 제어 신호를 생성하는데 효과적인 것이고, 상기 제10 제어 신호는,
    (i) 실행될 다음 명령의 프로그램 메모리 내의 위치를 스택으로 푸시(push)하는데, 및
    (ii) 실행을 위해 로드될 다음 명령이 현재 명령의 위치로부터 상기 변위값과 동일한 양만큼 변위된 프로그램 메모리 내의 위치로부터 취득되도록 상기 패치 수단을 동작시키는데 효과적인 것이며,
    상기 제10 명령은 RCALL 및 CALL을 포함하는 것인 마이크로콘트롤러.
  24. 제23항에 있어서, ICALL 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 ICALL 명령의 실행에 응답하여 ICALL 제어 신호를 생성하는데 효과적인 것이고, 상기 ICALL 제어 신호는,
    (i) 2 개의 레지스터의 내용을 단일 변위값으로서 제공하도록 상기 레지스터 파일의 조합 수단을 동작시키는데,
    (ii) 실행될 다음 명령의 프로그램 메모리 내의 위치를 스택으로 푸시하는데, 및
    (iii) 실행을 위해 로드될 다음 명령이 현재 명령의 위치로부터 상기 단일 변위값과 동일한 양만큼 변위되는 프로그램 메모리 내의 위치로부터 취득되도록 상기 패치 수단을 동작시키는데 효과적인 것인 마이크로콘트롤러.
  25. 제24항에 있어서, 변위값을 지정하는 기계 연산 코드를 각각 갖는 복수의 제11 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 제11 명령의 실행에 응답하여 제11 제어 신호를 생성하는데 효과적인 것이고, 상기 제11 제어 신호는,
    (i) 상기 프로그램 메모리 내의 위치를 취득하도록 상기 스택을 팝(pop)시키는데, 및
    (ii) 실행을 위해 로드될 다음 명령이 상기 스택으로부터 취득되는 프로그램 메모리 내의 위치에 기초하도록 상기 패치 수단을 동작시키는데 효과적인 것이며,
    상기 제11 명령은 RET 및 RETI를 포함하는 것인 마이크로콘트롤러.
  26. 제25항에 있어서, 상기 명령 실행 유닛은 상기 RETI 명령의 실행에 응답하여, 전역 인터럽트 플래그를 세트시키도록 상기 상태 레지스터를 동작시키는 제어 신호를 더 생성하는 것인 마이크로콘트롤러.
  27. 제26항에 있어서, 목적지 레지스터 및 데이터 소스를 지정하는 기계 연산 코드를 각각 갖는 복수의 제12 명령을 더 포함하고, 상기 명령 실행 유닛은 상기 제12 명령 중 하나의 실행에 응답하여 제12 제어 신호를 생성하는데 효과적인 것이며, 상기 제12 제어 신호는,
    (i) 상기 데이터 소스가 레지스터인 경우, 레지스터의 내용에 액세스하기 위해 상기 레지스터 파일을 동작시키는데, 및
    (ii) 상기 데이터 소스가 레지스터인 경우에는 액세스되는 레지스터의 내용과 상기 데이터 소스가 상수값인 경우에는 데이터 소스 그 자체 중 어느 하나를 상기 목적지 레지스터에 저장하도록 상기 레지스터 파일을 동작시키는데 효과적인 것이고,
    상기 제12 명령은 MOV 및 LDI를 포함하는 것인 마이크로콘트롤러.
  28. 제27항에 있어서, 레지스터를 지정하는 PUSH 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 PUSH 명령의 실행에 응답하여 PUSH 제어 신호를 생성하는데 효과적인 것이고, 상기 PUSH 제어 신호는,
    (i) 상기 스택 내의 다음 위치를 지시하도록 스택 포인터를 갱신시키는데, 및
    (ii) 상기 레지스터의 내용을 수신하도록 상기 스택을 동작시키는데 효과적인 것인 마이크로콘트롤러.
  29. 제28항에 있어서, 레지스터를 지정하는 POP 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 POP 명령의 실행에 응답하여 POP 제어 신호를 생성하는데 효과적인 것이고, 상기 POP 제어 신호는,
    (i) 상기 스택의 내용을 상기 레지스터에 저장하도록 상기 스택을 동작시키는데, 및
    (ii) 상기 스택 내의 이전의 위치를 지시하도록 상기 스택 포인터를 갱신하는데 효과적인 것인 마이크로콘트롤러.
  30. 제29항에 있어서, 포트 및 레지스터를 지정하는 기계 연산 코드를 각각 갖는 IN 명령 및 OUT 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 IN 명령 및 상기 OUT 명령 중 하나의 실행에 응답하여 포트 제어 신호를 생성하는데 효과적인 것이며, 상기 포트 제어 신호는,
    (i) 상기 레지스터에 액세스하기 위해 상기 레지스터 파일을 동작시키는데, 및
    (ii) 상기 액세스되는 레지스터로부터 내용을 상기 포트로 전송하거나 또는 상기 포트의 내용을 상기 액세스되는 레지스터로 전송하는 것 중 어느 하나에 효과적인 것인 마이크로콘트롤러.
  31. 제30항에 있어서, LPM 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 LPM 명령의 실행에 응답하여 LPM 제어 신호를 생성하는데 효과적인 것이고, 상기 LPM 제어 신호는,
    (i) 2 개의 레지스터의 내용을 프로그램 어드레스로서 제공하도록 상기 레지스터 파일의 조합 수단을 동작시키는데,
    (ii) 상기 프로그램 어드레스에 의해 지정되는 상기 프로그램 메모리의 메모리 위치 내의 데이터에 액세스하는데, 및
    (iii) 상기 액세스되는 데이터를 레지스터 내에 저장하도록 상기 레지스터 파일을 동작시키는데 효과적인 것인 마이크로콘트롤러.
  32. 제31항에 있어서, 제13 복수의 명령을 더 포함하고, 상기 명령 실행 유닛은 상기 제13 명령 중 하나의 실행에 응답하여 제13 제어 신호를 생성하는데 효과적인 것이고, 상기 제13 제어 신호는,
    (i) 상기 상태 레지스터 내의 비트에 액세스하기 위해 상태 레지스터를 동작시키는데, 및
    (ii) 상기 액세스되는 비트를 세트 또는 소거 중 어느 하나를 실행하는데 효과적인 것이고,
    상기 제13 명령은 SEC, CLC, SEN, CLN, SEZ, CLZ, SEI, CLI, SES, CLS, SEV, CLV, SET, CLT, SEH, CLH, BSET 및 BCLR을 포함하는 것인 마이크로콘트롤러.
  33. 제32항에 있어서, 레지스터를 지정하는 LSL 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 LSL 명령의 실행에 응답하여 제1 시프트 제어 신호를 생성하는데 효과적인 것이고, 상기 제1 시프트 제어 신호는,
    (i) 상기 레지스터에 액세스하기 위해 상기 레지스터 파일을 동작시키는데,
    (ii) 상기 액세스되는 레지스터의 최상위 비트를 캐리 비트 내로 시프트시키는데,
    (iii) 상기 비트들을 좌로 1 자리 시프트시키는데, 및
    (iv) 최하위 비트를 소거시키는데 효과적인 것인 마이크로콘트롤러.
  34. 제33항에 있어서, 레지스터를 지정하는 LSR 명령을 더 포함하고, 상기 명령 실행 유닛은 상기 LSR 명령의 실행에 응답하여 제2 시프트 제어 신호를 생성하는데 효과적인 것이고, 상기 제2 시프트 제어 신호는,
    (i) 상기 레지스터에 액세스하기 위해 상기 레지스터 파일을 동작시키는데,
    (ii) 상기 액세스되는 레지스터의 최하위 비트를 캐리 비트 내로 시프트시키는데,
    (iii) 상기 비트들을 우로 1 자리씩 시프트시키는데, 및
    (iv) 최상위 비트를 소거하는데 효과적인 것인 마이크로콘트롤러.
  35. 제34항에 있어서, 레지스터를 지정하는 ROL 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 ROL 명령의 실행에 응답하여 제3 시프트 제어 신호를 생성하는데 효과적인 것이고, 상기 제3 시프트 제어 신호는,
    (i) 상기 레지스터에 액세스하기 위해 상기 레지스터 파일을 동작시키는데,
    (ii) 상기 비트들을 좌로 1 자리 시프트시키는데,
    (iii) 캐리 비트를 상기 최하위 비트 내로 시프트시키는데, 및
    (iv) 최상위 비트를 캐리 비트 내로 시프트시키는데 효과적인 것인 마이크로콘트롤러.
  36. 제35항에 있어서, 레지스터를 지정하는 ROR 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 ROR 명령의 실행에 응답하여 제4 시프트 제어 신호를 발생하는데 효과적인 것이고, 상기 제4 시프트 제어 신호는,
    (i) 상기 레지스터에 액세스하기 위해 상기 레지스터 파일을 동작시키는데,
    (ii) 상기 비트들을 우로 1 자리 시프트시키는데,
    (iii) 캐리 비트를 최상위 비트 내로 시프트시키는데, 및
    (iv) 최하위 비트를 캐리 비트 내로 시프트시키는데 효과적인 것인 마이크로콘트롤러.
  37. 제36항에 있어서, 레지스터를 지정하는 ASR 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 ASR 명령의 실행에 응답하여 제5 시프트 제어 신호를 생성하는데 효과적인 것이고, 상기 제5 시프트 제어 신호는,
    (i) 상기 레지스터에 액세스하기 위해 상기 레지스터 파일을 동작시키는데,
    (ii) 상기 비트들을 우로 1 자리 시프트시키는데, 및
    (iii) 최하위 비트를 캐리 비트 내로 시프트시키는데 효과적인 것인 마이크로콘트롤러.
  38. 제37항에 있어서, 레지스터를 지정하는 SWAP 명령을 더 포함하며, 상기 명령 실행 유닛은 상기 SWAP 명령의 실행에 응답하여 SWAP 제어 신호를 생성하는데 효과적인 것이며, 상기 SWAP 제어 신호는,
    (i) 레지스터에 액세스하기 위해 상기 레지스터 파일을 동작시키는데, 및
    (ii) 상기 액세스되는 레지스터의 상위 니블(nibble)과 하위 니블을 스와핑(swapping)하는데 효과적인 것인 마이크로콘트롤러.
  39. 제38항에 있어서, SLEEP 명령을 더 포함하고, 상기 명령 실행 유닛은 상기 SLEEP 명령의 실행에 응답하여 휴면(SLEEP) 제어 신호를 생성하는데 효과적인 것이고, 상기 휴면 제어 신호는 상기 마이크로콘트롤러를 휴면 모드로 하는데 효과적인 것인 마이크로콘트롤러.
  40. 제39항에 있어서, 왓치독(watchdog) 타이머를 더 포함하며, 상기 왓치독 타이머는 리셋 라인과, MCU 리셋 라인 및 1 시간 주기의 지연 후에 MCU 리셋 라인 상의 신호를 활성화시키기 위한 지연 수단을 포함하고, 상기 MCU 리셋 라인은, 상기 지연 수단에 의한 신호의 활성화시에 마이크로콘트롤러를 리셋시키도록 결합되고, 상기 왓치독 리셋 라인을 지연 주기를 개시하도록 지연 수단에 결합되는 것이며, 상기 마이크로콘트롤러는 WDR 명령을 더 포함하는 것과, 상기 명령 실행 유닛은 상기 WDR 명령의 실행에 응답하여 상기 왓치독 라셋 라인 상의 신호를 활성화시키는데 효과적인 것이며, 이에 따라 지연 주기를 개시하는 것인 마이크로콘트롤러.
KR10-1999-7008411A 1997-03-27 1998-03-13 Risc 구조를 갖는 8 비트 마이크로콘트롤러 KR100462951B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/824,932 US5809327A (en) 1997-03-27 1997-03-27 Eight-bit microcontroller having a risc architecture
US8/824,932 1997-03-27
US08/824,932 1997-03-27

Publications (2)

Publication Number Publication Date
KR20000076310A KR20000076310A (ko) 2000-12-26
KR100462951B1 true KR100462951B1 (ko) 2004-12-23

Family

ID=25242688

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-1999-7008411A KR100462951B1 (ko) 1997-03-27 1998-03-13 Risc 구조를 갖는 8 비트 마이크로콘트롤러

Country Status (12)

Country Link
US (1) US5809327A (ko)
EP (1) EP1012735B1 (ko)
JP (2) JP4386467B2 (ko)
KR (1) KR100462951B1 (ko)
CN (1) CN1121014C (ko)
CA (1) CA2275172C (ko)
DE (1) DE69839487D1 (ko)
HK (1) HK1024546A1 (ko)
MY (1) MY115901A (ko)
NO (1) NO324825B1 (ko)
TW (1) TW367439B (ko)
WO (1) WO1998044427A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100602374B1 (ko) * 2000-08-31 2006-07-14 어보브반도체 주식회사 스택 구조를 사용하여 코드 집적도를 높인 리스크 프로세서

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6055211A (en) * 1997-07-03 2000-04-25 Microchip Technology Incorporated Force page zero paging scheme for microcontrollers using data random access memory
US6243798B1 (en) * 1997-10-28 2001-06-05 Microchip Technology Incorporated Computer system for allowing a two word jump instruction to be executed in the same number of cycles as a single word jump instruction
US6754809B1 (en) * 1999-12-30 2004-06-22 Texas Instruments Incorporated Data processing apparatus with indirect register file access
KR100399068B1 (ko) * 2001-04-25 2003-09-26 주식회사 하이닉스반도체 마이크로 컨트롤러 유닛의 효율적인 테스트 방법
KR20010079326A (ko) * 2001-07-06 2001-08-22 한제섭 리스크 코아의 집적회로
US7506133B2 (en) * 2003-08-20 2009-03-17 Seiko Epson Corporation Method and apparatus for high speed addressing of a memory space from a relatively small address space
EP1643358A1 (en) * 2004-10-01 2006-04-05 Nokia Corporation Pre-loading data
CN100430890C (zh) * 2005-08-31 2008-11-05 上海海尔集成电路有限公司 一种8位risc微控制器
US8533439B2 (en) 2005-11-07 2013-09-10 Atmel Corporation Elastic shared RAM array including contiguous instruction and data portions distinct from each other
DE102007049354A1 (de) * 2007-10-15 2009-04-16 Robert Bosch Gmbh Verfahren zum Testen eines Adressbusses in einem logischen Baustein
TWI425354B (zh) * 2007-10-16 2014-02-01 Mstar Semiconductor Inc 資料存取系統及方法
CN102033733B (zh) * 2011-01-14 2012-12-19 北方工业大学 新型mcu结构
US20130086366A1 (en) * 2011-09-30 2013-04-04 Qualcomm Incorporated Register File with Embedded Shift and Parallel Write Capability
CN103077137A (zh) * 2011-10-25 2013-05-01 北京大豪科技股份有限公司 中断控制方法及中断控制单元
US9201446B2 (en) * 2012-02-01 2015-12-01 Microchip Technology Incorporated Timebase peripheral
CN103166476A (zh) * 2012-12-26 2013-06-19 黄冠雄 一种交流电数控调压控流传输系统
US9477473B2 (en) 2012-12-31 2016-10-25 Cadence Design Systems, Inc. Bit-level register file updates in extensible processor architecture
US9448801B2 (en) * 2012-12-31 2016-09-20 Cadence Design Systems, Inc. Automatic register port selection in extensible processor architecture
CN104809079B (zh) * 2015-04-14 2018-01-16 昆腾微电子股份有限公司 分页寄存器的访问方法和装置
KR102132933B1 (ko) * 2019-09-09 2020-07-10 국방과학연구소 소프트웨어의 제어 흐름 보호장치 및 그 방법
US11251900B2 (en) 2019-12-20 2022-02-15 Silicon Laboratories Inc. System, apparatus and method for automatically determining configuration parameters for wireless devices
CN112929673B (zh) * 2021-01-19 2022-04-01 Tcl华星光电技术有限公司 解码方法、解码设备及可读存储介质
CN113128172B (zh) * 2021-04-23 2023-10-27 中国科学院计算技术研究所 超导寄存器堆装置及其控制方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2545789B2 (ja) * 1986-04-14 1996-10-23 株式会社日立製作所 情報処理装置
JPS62281040A (ja) * 1986-05-30 1987-12-05 Fujitsu Ltd ペ−ジ管理方式
JPS6330946A (ja) * 1986-07-25 1988-02-09 Alps Electric Co Ltd マルチタスクにおけるペ−ジング方式
US5193206A (en) * 1989-12-27 1993-03-09 Motorola, Inc. Reduce instruction set microprocessor
US5333284A (en) * 1990-09-10 1994-07-26 Honeywell, Inc. Repeated ALU in pipelined processor design
US5301340A (en) * 1990-10-31 1994-04-05 International Business Machines Corporation IC chips including ALUs and identical register files whereby a number of ALUs directly and concurrently write results to every register file per cycle
JP3181307B2 (ja) * 1991-04-25 2001-07-03 株式会社東芝 命令処理装置
US5493687A (en) * 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
JPH06266557A (ja) * 1993-03-15 1994-09-22 Fujitsu Ltd データ処理装置及びデータ処理方法
US5692170A (en) * 1995-04-28 1997-11-25 Metaflow Technologies, Inc. Apparatus for detecting and executing traps in a superscalar processor
US5737548A (en) * 1995-11-07 1998-04-07 Yach; Randy L. RISC-based microcontroller with peripheral function added to a split data bus

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100602374B1 (ko) * 2000-08-31 2006-07-14 어보브반도체 주식회사 스택 구조를 사용하여 코드 집적도를 높인 리스크 프로세서

Also Published As

Publication number Publication date
CA2275172A1 (en) 1998-10-08
EP1012735B1 (en) 2008-05-14
CN1121014C (zh) 2003-09-10
CA2275172C (en) 2003-03-18
CN1251185A (zh) 2000-04-19
EP1012735A4 (en) 2006-05-17
HK1024546A1 (en) 2000-10-13
WO1998044427A1 (en) 1998-10-08
NO994169D0 (no) 1999-08-27
KR20000076310A (ko) 2000-12-26
US5809327A (en) 1998-09-15
JP4386467B2 (ja) 2009-12-16
NO994169L (no) 1999-11-29
TW367439B (en) 1999-08-21
JP5199931B2 (ja) 2013-05-15
DE69839487D1 (de) 2008-06-26
JP2001517343A (ja) 2001-10-02
EP1012735A1 (en) 2000-06-28
MY115901A (en) 2003-09-30
JP2009223897A (ja) 2009-10-01
NO324825B1 (no) 2007-12-10

Similar Documents

Publication Publication Date Title
KR100462951B1 (ko) Risc 구조를 갖는 8 비트 마이크로콘트롤러
EP0138419B1 (en) Central processing unit for a digital computer
TWI476597B (zh) 資料處理裝置及半導體積體電路裝置
JP3694531B2 (ja) Riscアーキテクチャを有する8ビットマイクロコントローラ
KR100272937B1 (ko) 마이크로프로세서및멀티프로세서시스템
JP4004915B2 (ja) データ処理装置
US6012138A (en) Dynamically variable length CPU pipeline for efficiently executing two instruction sets
US7853773B1 (en) Program memory space expansion for particular processor instructions
JP4073721B2 (ja) データ処理装置
US5664156A (en) Microcontroller with a reconfigurable program status word
JP3578267B2 (ja) マイクロ命令をもとにプログラマブル命令を実行するハードウェア装置
US7877575B2 (en) Microprocessor
JP4545777B2 (ja) データ処理装置
JP4498338B2 (ja) データ処理装置
JP2696578B2 (ja) データ処理装置
CA1250666A (en) Central processing unit for a digital computer
JPH0456340B2 (ko)
JPH0394337A (ja) マイクロコンピュータ装置

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20111128

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee