KR100323236B1 - Ecc데이터를 내부적으로 생성할 수 있는 원칩마이크로컴퓨터 - Google Patents

Ecc데이터를 내부적으로 생성할 수 있는 원칩마이크로컴퓨터 Download PDF

Info

Publication number
KR100323236B1
KR100323236B1 KR1019990012535A KR19990012535A KR100323236B1 KR 100323236 B1 KR100323236 B1 KR 100323236B1 KR 1019990012535 A KR1019990012535 A KR 1019990012535A KR 19990012535 A KR19990012535 A KR 19990012535A KR 100323236 B1 KR100323236 B1 KR 100323236B1
Authority
KR
South Korea
Prior art keywords
data
user data
eeprom
ecc
address
Prior art date
Application number
KR1019990012535A
Other languages
English (en)
Other versions
KR19990083088A (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 KR19990083088A publication Critical patent/KR19990083088A/ko
Application granted granted Critical
Publication of KR100323236B1 publication Critical patent/KR100323236B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Microcomputers (AREA)
  • Detection And Correction Of Errors (AREA)
  • Read Only Memory (AREA)

Abstract

자동차에 사용되는 원칩마이크로컴퓨터에 있어서, 에러정정코드데이터가 대응하는 사용자데이터에 부가되며, 에러정정코드데이터가 부가된 사용자데이터는 곧 EEPROM에 저장되어 사용자데이터에 담긴 1비트에러를 정정한다. 원칩마이크로컴퓨터는, 외부적으로 공급되는 사용자데이터 및 이 사용자데이터에 대응하는 ECC데이터를 그 자신에 임시적으로 저장하기 위한 전기적으로 소거가 가능한 메모리; 프로그램을 사전에 그 자신에 저장하기 위한 프로그램저장메모리; 및 프로그램저장메모리로부터 프로그램을 독출하여 외부적으로 공급된 사용자데이터에 기초하여 ECC데이터를 생성하고, 외부적으로 공급된 사용자데이터에 대응하는 ECC데이터들을 이용하여 외부적으로 공급된 사용자데이터에 담긴 에러들을 순차적으로 정정하기 위한 CPU에 의해 구성된다.

Description

ECC데이터를 내부적으로 생성할 수 있는 원칩마이크로컴퓨터{One-Chip Microcomputer Capable of Internally Producing Error Correction Code Data}
본 발명은 사용자데이터에 부가되는 ECC데이터를 내부적으로 생성할 수 있는 원칩마이크로컴퓨터에 관한 것이다. 보다 상세하게는, 본 발명은 사용자의 작업부하를 줄일 수 있으며, 또한, ECC데이터에 기초되는 EEPROM의 기록시간을 증가시키지 않으면서도 메모리용량을 감소시킬 수 있는 원칩마이크로컴퓨터에 관한 것이다.
EEPROM(electrically erasable programmable read-only memory)은, 데이터를 소거할 수 있으며 그리고/또는 기록할 수 있는 메모리이다(플레쉬EEPROM을 포함). 그리고, EEPROM은 통상 원칩마이크로컴퓨터(one-chip microcomputer)들에 채용되며 프로그램을 저장할 수 있다. EEPROM에 저장되는 데이터의 신뢰도를 증가시키기 위해 다음과 같은 에러정정방법이 효율적으로 사용된다. 즉, ECC데이터가 사용자데이터에 부가된 다음, ECC데이터가 부가된 사용자데이터가 저장된다. 에러정정은 독출된 사용자데이터에 대해 ECC데이터를 사용하는 것에 의해 수행된다. 종래의 경우, 이러한 ECC데이터의 부가동작은, 전용 소프트웨어를 사용하여 사용자데이터로부터 ECC데이터를 생성하면서 생성된 ECC데이터를 사용자데이터와 관련지어 EEPROM에 저장하는 식으로 수행되었다.
예를 들면, 자동차엔진을 제어하는데 사용되는 원칩마이크로컴퓨터는, 예컨데, 제어프로그램에 기초하는 연료분사제어 및 엔진회전수제어와 같은, 중요한 제어동작을 실행한다. 이 제어프로그램을 사전에 저장해놓기 위한 ROM의 저장내용물이 변경되는 경우에는, 이 원칩마이크로컴퓨터는 비정상적인 처리동작을 실행하며, 그 결과, 위험한 상황에 놓이게 된다. 이 때문에, 사용자가 사용데이터(프로그램 등)를 ROM에 저장하는 경우, ECC데이터가 ROM에 추가로 저장된다. 원칩마이크로컴퓨터가 사용자데이터를 독출할 때, 1비트에러가 발생하는 경우에는 원칩마이크로컴퓨터는 1비트에러를 정정하며, 2비트에러가 발생하는 경우에는 원칩마이크로컴퓨터는 '비정상'상태를 표시한다.
더욱이, 사전에 ROM에 저장된 사용자데이터(컴퓨터프로그램)에서 버그(bug)가 발견되는 경우, 자동차제조업자들은 결함이 있는 원칩마이크로컴퓨터들을 적절히 세팅된 원칩마이크로컴퓨터들로 교체하기 위해 판매된 자동차들을 회수(recall)해야만 한다. 이 버그의 경우에 있어서, 만일, ROM이 마스크ROM과 같은 다시 기록이 가능한 ROM(rewritable ROM)에 의해 구성되는 경우에는, 자동차제조업자들은 결함 있는 원칩마이크로컴퓨터를 탑재한 엔진제어어셈블리를 교체해야 한다. 이러한 다시 기록이 가능한 ROM의 경우에 있어서는, 엔진제어어셈블리의 비용뿐 만 아니라, 교체비용까지 필수적으로 요구된다. 그 결과, 자동차제조업체들은 많은 비용손실을 감수해야만 한다. 이러한 상황 하에서, 원칩마이크로컴퓨터의 ROM이 EEPROM에 의해 구성된다면, 자동차제조업자들은 단지 원칩마이크로컴퓨터의 커넥터를 통해 EEPROM에 기저장된 프로그램을 재기록하기만 하면 되므로, 버그문제를 해결하는 총비용은 낮아질 수 있다.
도 20a 및 도 20b는, EEPROM에서 실행되는 ECC데이터를 생성 및 부가하는 종래의 방법을 설명하기 위한 도면이다. 이하, 도 20a 및 도 20b를 참조하여 종래의 ECC데이터생성/부가방법을 설명한다.
먼저, 사용자는 ECC데이터를 생성하기 위하여 소정의 프로그램을 형성한다(도 20a의 단계 101). 00000H부터 0FFFFH까지 정의된 데이터가 사용자데이터(102)로서 입력되는 것으로 가정한다. 사용자는 형성된 프로그램에 따라 전용소프터웨어(exclusively- used software)를 채용하여 사용자데이터(102)에 기초하는 ECC데이터를 생성한다(도 20a의 단계 103). 그 결과, 10000H부터 14FFFH까지 정의된 데이터가 ECC데이터(104)로서 생성된다. 그 다음, ECC데이터(104)는 00000H부터 14FFFH까지 정의된 데이터가 기록데이터(105)로서 생성되도록 사용자데이터(102)에 부가되며, 이들 생성된 기록데이터는 마이크로컴퓨터(미도시) 내에 설치된 EEPROM에 기록된다(도 20a의 단계 106). 이 경우, 기록데이터(105)는 전용데이터기록기에 의해 기록되거나 온보드기록방식(on-board writing manner)에 의해 기록된다.
도 20b는 EEPROM의 어드레스맵(address map)을 도시한다. 이 어드레스맵에 있어서, 00000H부터 0FFFFH까지의 어드레스들은 사용자데이터에 할당되며, 또한, 10000H부터 14FFFH까지의 어드레스들은 ECC데이터에 할당된다. ECC데이터의 크기로는 16비트데이터의 경우 5비트가 요구된다. 결과적으로, 도 20b에서 보여지는 바와 같은 데이터영역이 요구된다.
그러나, 상술한 종래의 ECC데이터생성/부가방법에 있어서는, ECC데이터 및 사용자데이터가 별도로 생성되기 때문에, 사용자데이터를 기초로 하여 ECC데이터를 생성하는 전용소프트웨어가 필요하다는 문제점을 갖는다.
또한, ECC데이터가 사용자데이터의 다음 어드레스들에 맵핑되기 때문에, 00000H부터 0FFFFH까지 정의된 데이터에 추가하여 10000H부터 14FFFH까지 정의된 데이터가 ECC데이터로서 기록된다. 그 결과, 데이터기록시간이 거의 30% 가까이 증가되는 또 다른 문제점을 갖는다.
더욱이, ECC데이터의 채용으로 인해 기록데이터의 전체 데이터양이 거의 30% 가까이 증가되기 때문에, 전체 시스템의 외부메모리의 총메모리용량이 약 30%만큼 증가된다는 문제점을 더 갖는다.
한편, 종래에는, 채용되는 논리회로에 의해 구성되는 ECC데이터생성회로를 원칩마이크로컴퓨터 내에 설치하는 하나의 기술적 아이디어가 제시되었었다. 최근에는, 원칩마이크로컴퓨터 내에 채용된 데이터버스들의 비트폭들이 점점 증가되고 있다. 즉, 종래의 데이터버스들의 자체비트폭은 8비트였으나, 현재 데이터버스들의 자체 비트폭은 32비트 또는 64비트이다. 이러한 넓은 비트폭 추세 하에서는, ECC데이터생성회로가 논리회로들에 의해 구성되는 경우, 전체 회로스케일이 데이터버스의 비트폭이 증가하는 것과 관련하여 지수함수적(exponential manner)으로 증가될 것이다. 그러므로, 반도체칩에 대한 ECC데이터생성회로에 의해 점유되는 면적 역시 필수불가결하게 증가될 것이다.
원칩마이크로컴퓨터에 사용되는 프로그램을 저장하기 위해 EEPROM이 채용되는 경우, ECC데이터생성회로는 이 컴퓨터프로그램이 저장될 때에만 사용되며, 컴퓨터프로그램이 실행될 때에는 사용되지 않는다. 그렇지만, 큰 회로스캐일을 갖는 ECC데이터생성회로가 원칩마이크로컴퓨터 내에 설치된다는, 이러한 기술적아이디어는 원칩마이크로컴퓨터의 비용 효율적인 성능특성을 저하시킬 것이다.
상술한 문제점들을 고려하여, 본 발명의 목적은 ECC데이터를 내부적으로 생성할 수 있는 원칩마이크로컴퓨터를 제공하는데 있다.
본 발명의 다른 목적은 사용자에게 주어지는 작업부담을 감소시킬 수 있고, 게다가 EEPROM의 ECC데이터기록시간을 증가시키지 않으면서도 필요한 메모리의 용량을 감소시킬 수 있는 원칩마이크로컴퓨터를 제공하는데 있다.
본 발명의 제 1양태에 따른 마이크로컴퓨터는,
외부적으로 공급된 사용자데이터 및 상기 사용자데이터에 대응하는 ECC데이터를 임시적으로 저장하기 위한 전기적 소거가 가능한 메모리;
프로그램을 사전에 저장하기 위한 프로그램저장메모리; 및
외부적으로 공급되는 사용자데이터에 기초하여 ECC데이터를 발생하도록 상기 프로그램저장메모리로부터 상기 프로그램을 독출하며 상기 외부적으로 공급된 사용자데이터에 대응하는 상기 생성된 ECC데이터를 이용하여 상기 외부적으로 공급된 사용자데이터에 담긴 에러들을 순차적으로 정정하기 위한 CPU;를 구비하는 마이크로컴퓨터이다.
전술한 바에 있어서, 외부적으로 공급된 사용자데이터가 1비트에러를 포함하는 경우, CPU는 전기적으로 소거가 가능한 메모리로부터 독출된 ECC데이터를 기초로 하여 1비트에러를 정정한다. 이에 반하여, 외부적으로 공급된 사용자데이터가 2비트 이상의 에러들을 포함하는 경우에는, CPU는 비정상환경임을 표시한다.
또한, 전기적으로 소거가 가능한 메모리는 플레쉬메모리이면 바람직하다.
본 발명의 제 2양태에 따른 원칩마이크로컴퓨터는,
외부적으로 공급되는 사용자데이터를 자신의 사용자데이터저장영역에 임시적으로 저장하며, 상기 사용자데이터에 대응하는 ECC데이터를 자신의 ECC데이터저장영역에 임시적으로 저장하기 위한 EEPROM;
프로그램을 사전에 저장하기 위한 ROM; 및
상기 외부적으로 공급된 사용자데이터에 기초하여 ECC데이터를 생성하도록 상기 ROM으로부터 상기 프로그램을 독출하며, 상기 생성된 ECC데이터를 이용하여 상기 외부적으로 공급된 사용자데이터에 담긴 에러들을 순차적으로 정정하기 위한 CPU;를 구비하는 원칩마이크로컴퓨터이다.
이 제 2양태에 있어서, 상기 CPU는, 기선택된 양의 상기 사용자데이터가 외부데이터소스로부터 들어오는 동안에는, 상기 기선택된 양의 사용자데이터로부터 순차적으로 ECC데이터를 생성하며; 사용자데이터 및 상기 사용자데이터에 대응하는 ECC데이터를 각각 상기 EEPROM의 사용자데이터저장영역과 상기 EEPROM의 ECC데이터저장영역의 동일한 어드레스들에 기록하며; 상기 에러정정을 순차적으로 수행하도록, 상기 사용자데이터저장영역 및 상기 ECC데이터저장영역의 동일한 주소들로부터 사용자데이터 및 ECC데이터 둘 다를 독출하는 것이 바람직하다.
또한, 상기 CPU는, 상기 기선택된 양의 사용자데이터가 외부데이터소스로부터 순차적으로 들어오는 동안에는, 상기 기선택된 양의 사용자데이터로부터 ECC데이터를 하나의 처리주기가 종료될 때까지 순차적으로 생성하며; 상기 사용자데이터및 하나의 처리주기가 종료된 후에 생성된 ECC데이터를 상기 EEPROM의 사용자데이터저장영역 및 상기 사용자데이터저장영역의 어드레스로부터 1만큼 감소된 어드레스를 갖는 상기 EEPROM의 ECC데이터저장영역에 기록하며; 상기 에러정정을 순차적으로 수행하도록, EEPROM의 동일한 주소들에 저장된 사용자데이터 및 ECC데이터 둘 다를 독출하는 것이 바람직하다.
더욱이, 상기 CPU는, 기선택된 양의 사용자데이터가 외부데이터소스로부터 순차적으로 들어오는 동안에는, 상기 기선택된 양의 사용자데이터로부터 ECC데이터를 하나의 처리주기가 종료될 때까지 생성하며; 상기 사용자데이터 및 하나의 처리주기가 종료된 후에 생성된 ECC데이터를 각각 상기 EEPROM의 사용자데이터저장영역 및 ECC데이터저장영역의 동일한 어드레스에 기록하며; 상기 에러정정을 순차적으로 수행하도록, 상기 EEPROM의 사용자데이터영역에 저장된 사용자데이터 및 상기 사용자데이터저장영역의 어드레스로부터 1만큼 증가된 어드레스를 갖는 상기 EEPROM의 ECC데이터저장영역에 저장된 ECC데이터를 독출하는 것이 바람직히다.
더욱이, 상기 CPU는, 기선택된 양의 사용자데이터가 외부데이터소스로부터 순차적으로 들어오는 동안에는, 상기 기선택된 양의 사용자데이터로부터 ECC데이터를 생성하며; 다음 사용자데이터가 들어올 때까지 상기 ECC데이터의 생성이 이루어지지 않는 경우에는, 유효하지 않은 데이터를 출력하며; 상기 사용자데이터 및 상기 사용자데이터에 대응하는 유효한 ECC데이터를 각각 상기 EEPROM의 사용자데이터저장영역 및 상기 EEPROM의 ECC데이터저장영역의 동일한 주소들에 기록하며, 에러정정을 실행하도록, EEPROM의 사용자데이터/ECC데이터저장영역의 동일한 주소들에저장된 사용자데이터 및 ECC데이터를 독출하는 것이 바람직하다.
또한, 본 발명의 제 3양태에 따른 원칩마이크로컴퓨터는,
사용자데이터 및 상기 사용자데이터에 대응하는 ECC데이터를 각각 사용자데이터저장영역 및 ECC데이터저장영역에 임시적으로 저장하기 위한 EEPROM;
사용자데이터에 기초하여 ECC데이터를 발생하는 데에 사용되는 프로그램을 사전에 저장하기 위한 저장수단;
상기 사용자데이터 및 상기 ECC데이터를 상기 EEPROM에 기록하는 동작을 제어하기 위한 기록제어수단; 및
상기 프로그램에 따라 EEPROM에 저장된 사용자데이터로부터 ECC데이터를 생성하며, 상기 생성된 ECC데이터 및 원래의 사용자데이터를 상기 기록제어수단의 제어 하에 상기 EEPROM의 ECC데이터저장영역 및 상기 EEPROM의 사용자데이터저장영역에 저장하기 위한 CPU를 구비하며,
상기 CPU는, 상기 사용자데이터저장영역에 저장된 사용자데이터 및 상기 ECC데이터저장영역에 저장된 ECC데이터를 독출하며, 상기 독출된 사용자데이터 및 상기 독출된 ECC데이터에 기초하여 상기 사용자데이터에 담긴 에러를 정정하는 원칩마이크로컴퓨터이다.
이 제 3양태에 있어서,
상기 CPU는 기선택된 양의 사용자데이터가 외부데이터소스로부터 순차적으로 저장되는 내부레지스터를 구비하며;
상기 EEPROM은 상기 기선택된 양의 사용자데이터가 전송되는 사용자데이터레지스터 및 ECC데이터레지스터를 더 구비하며;
상기 CPU는, 상기 내부레지서터에 저장된 기선택된 양의 사용자데이터로부터 ECC데이터를 생성하며, 상기 생성된 ECC데이터를 상기 EEPROM에 구비된 상기 ECC데이터레지스터로 전송하며, 상기 사용자데이터레지스터의 사용자데이터 및 상기 ECC데이터레지스터의 ECC데이터를 EEPROM의 사용자데이터저장영역 및 EEPROM의 ECC데이터저장영역의 동일한 주소들에 기록하며, 상기 EEPROM의 동일한 주소들에 저장된 사용자데이터 및 ECC데이터를 독출하여 에러정정을 수행하는 방식이 바람직하다.
더욱이, 상기 제어수단은 기선택된 양의 사용자데이터가 외부소스로부터 저장되는 사용자데이터스택레지스터 및 ECC데이터스택레지스터를 더 구비하며;
상기 CPU는 기선택된 양의 사용자데이터가 외부데이터소스로부터 저장되는 내부레지스터를 더 구비하며;
첫 번째 처리주기에 있어서, 상기 CPU는, 제 1어드레스에 저장된 사용자데이터를 상기 기록제어수단에 구비된 상기 사용자데이터레지스터로 전송하며, 상기 사용자데이터레지스터로 전송되는 사용자데이터를 상기 EEPROM에 구비된 사용자데이터저장영역에 저장하며;
다음 처리주기 및 계속되는 처리주기들에 있어서, 상기 CPU는, 바로 앞의 처리주기에서 저장된 기설정된 양의 사용자데이터로부터 ECC데이터를 생성하며; 상기 생성된 ECC데이터를 상기 기록제어수단에 구비된 상기 ECC데이터스택레지스터로 전송하며; 사용자데이터를 상기 EEPROM에 구비된 상기 사용자데이터스택레지스터로 전송하며 또한 ECC데이터를 ECC데이터레지스터로 전송하며; 상기 EEPROM의 ECC데이터저장영역에 대해 1만큼 기록 어드레스를 감소시키며; 상기 사용자데이터레지스터에 저장된 사용자데이터 및 상기 ECC데이터레지스터에 저장된 ECC데이터를 각각 상기 EEPROM의 사용자데이터저장영역 및 ECC데이터저장영역에 기록하며; CPU 자신의 상기 정의된 처리동작을 반복하여 실행하며;
마지막 처리주기에 있어서, 상기 CPU는, 바로 앞의 처리주기에서 저장된 기설정된 양의 사용자데이터로부터 ECC데이터를 생성하며; 상기 생성된 ECC데이터를 상기 기록제어수단에 구비된 상기 ECC데이터스택레지스터로 전송하며; 생성된 ECC데이터를 상기 EEPROM에 구비된 ECC데이터레지스터로 전송하며; 상기 EEPROM의 ECC데이터저장영역에 대해 1만큼 기록 어드레스를 감소시키며; 상기 EEPROM의 상기 ECC데이터저정영역에 저장된 ECC데이터를 기록하며;
상기 CPU는, EEPROM의 동일한 주소들에 저장된 사용자데이터 및 ECC데이터 둘 다를 독출하여 순차적으로 에러정정을 실행하는 방식이 바람직하다.
더욱이, 상기 기록제어수단은 기선택된 양의 사용자데이터가 외부데이터소스로부터 저장되는 사용자데이터스택레지스터 및 ECC데이터스택레지스터를 더 구비하며;
상기 CPU는 기선택된 양의 사용자데이터가 외부데이터소스로부터 저장되는 내부레지스터를 더 구비하며;
첫 번째 처리주기에 있어서, 상기 CPU는 제 1어드레스에 저장된 사용자데이터를 상기 기록제어수단에 구비된 상기 사용자데이터레지스터로 전송하며, 상기 사용자데이터레지스터로 전송된 사용자데이터를 상기 EEPROM에 구비된 사용자데이터저장영역에 저장하며;
다음 처리주기 및 계속되는 처리주기들에 있어서, 상기 CPU는, 바로 앞의 처리주기에서 저장된 기설정된 양의 사용자데이터로부터 ECC데이터를 생성하며; 상기 생성된 ECC데이터를 상기 기록제어수단에 구비된 상기 ECC데이터스택레지스터로 전송하며; 생성된 ECC데이터를 상기 EEPROM에 구비된 ECC데이터레지스터로 전송하며; 상기 EEPROM의 상기 ECC데이터저장영역에 저장된 ECC데이터 및 상기 독출된 사용자데이터의 어드레스로부터 1만큼 감소된 어드레스에 저장된 ECC데이터 둘 다를 기록하여 에러정정을 순차적으로 실행하는 것이 바람직하다.
상술한 원칩마이크로컴퓨터에 의해, 사용자데이터는 외부적으로 입력되며 CPU는 내부프로그램에 따라 들어온 기선택된 양의 사용자데이터로부터 순차적으로 ECC데이터를 생성하며, 그 다음, 사용자데이터 및 ECC데이터가 EEPROM의 사용자데이터저장영역 및 ECC데이터저장영역에 저장된다. 그 결과로, ECC데이터가 원칩마이크로컴퓨터의 외부에서 생성되는 경우와 비교하여, 사용자에게 주워지는 작업부하가 크게 감소될 수 있다. 더욱이, ECC데이터를 생성하도록, 생성된 ECC데이터를 임시적으로 저장하는 외부메모리가 더 이상 필요하지 않기 때문에 전체시스템비용이 낮아질 수 있다. 추가하여, 사용자데이터 및 ECC데이터가 EEPROM에 동시에 기록되기 때문에, ECC데이터를 외부메모리로부터 이 EEPROM에 기록하는 경우에 요구되는 데이터기록시간과 비교하여, EEPROM에 대한 데이터기록시간이 감소될 수 있다.
도 1은 본 발명의 실시예에 따른 원칩마이크로컴퓨터의 회로를 개략적으로 나타낸 블록도,
도 2는 도 1의 원칩마이크로컴퓨터에 채용된 EEPROM제어회로를 개략적으로 나타낸 블록도,
도 3은 도 1의 원칩마이크로컴퓨터에 채용된 데이터래치선택/제어회로를 개략적으로 나타낸 블록도,
도 4는 도 1의 원칩마이크로컴퓨터에 채용된 기록신호발생회로를 개략적으로 나타낸 블록도,
도 5는 기록신호발생회로의 동작타이밍도,
도 6은 도 1에서 나타낸 원칩마이크로컴퓨터의 제 1동작처리순서를 설명하기 위한 흐름도,
도 7은 도 1에서 나타낸 원칩마이크로컴퓨터의 제 1동작처리순서를 설명하기 위한 흐름도,
도 8은 제 1동작에 있어서 기록동작 동안의 타이밍도,
도 9는 도 1에서 나타낸 원칩마이크로컴퓨터의 제 2동작처리순서를 설명하기위한 흐름도,
도 10은 도 1에서 나타낸 원칩마이크로컴퓨터의 제 2동작처리순서를 설명하기 위한 흐름도,
도 11은 ECC어드레스가 기록동작 동안에 쉬프트되는 경우의 타이밍도,
도 12는 ECC어드레스가 기록동작 동안에 쉬프트되는 경우의 EEPROM어드레스발생회로를 개략적으로 나타낸 블록도,
도 13은 도 1에서 나타낸 원칩마이크로컴퓨터의 제 3동작처리순서를 설명하기 위한 흐름도,
도 14는 도 1에서 나타낸 원칩마이크로컴퓨터의 제 3동작처리순서를 설명하기 위한 흐름도,
도 15는 ECC어드레스가 독출동작 동안에 쉬프트되는 경우의 타이밍도,
도 16은 ECC어드레스가 독출동작 동안에 쉬프트되는 경우의 EEPROM어드레스발생회로를 개략적으로 나타낸 블록도,
도 17은 도 1에서 나타낸 원칩마이크로컴퓨터의 제 4동작을 설명하기 위한 흐름도,
도 18은 도 1에서 나타낸 원칩마이크로컴퓨터의 제 4동작을 설명하기 위한 흐름도,
도 19는 제 4동작이 기록동작 동안에 수행되는 경우의 타이밍도이며,
도 20a 및 도 20b는 EEPROM에서 실행되는 종래의 ECC데이터생성/부가방법을 설명하기 위한 도면이다.
※ 도면의 주요부분에 대한 부호의 설명
1: 입력/출력포트 2: CPU
3: 어드레스버스 4: 데이터버스
5: 펌ROM 6: RAM
7: EEPROM제어회로 8: EEPROM
9: 에러정정회로 10: 데이터선택회로
11: 어드레스버스 12: 데이터버스
13: 데이터래치선택/제어회로 14: 데이터래치
15: 데이터래치 16: 데이터래치
17: 기록신호발생회로 18: EEPROM어드레스발생제어회로
21: 내부레지스터그룹 71: 사용자데이터스택레지스터
72: ECC데이터스택레지스터 81: 사용자데이터레지스터
82: ECC데이터레지스터 83: 사용자데이터영역
84: ECC데이터영역 131: 어드레스버스
132: NOR게이트회로 133: 인버터
134: NOR게이트회로 171: 어드레스버스
172: 데이터버스 173: 어드레스디코더
174: 플립플롭 175: 플립플롭
176: 인버터 177: AND게이트회로
181: 어드레스버스 182: 감소회로
183: 어드레스버스 184: 감소회로
이하, 첨부된 도면들을 참조하여 본 발명의 바람직한 실시예들에 대해 상세하게 설명한다.
본 발명의 실시예에 따른 원칩마이크로컴퓨터를 설명하기 전에, 이 원칩마이크로컴퓨터에 관련된 도면들의 내용이 상세하게 설명될 것이다.
도 1은 본 발명의 실시예에 따른 원칩마이크로컴퓨터의 회로를 개략적으로 나타낸 회로블록도이다. 도 2는 도 1의 원칩마이크로컴퓨터에 채용된 EEPROM제어회로를 개략적으로 나타낸 회로블록도이다. 도 3은 도 1의 원칩마이크로컴퓨터에 채용된 데이터래치선택/제어회로를 개략적으로 나타낸 회로블록도이다. 도 4는 도 1의 원칩마이크로컴퓨터에 채용된 기록신호발생회로를 개략적으로 나타낸 회로블록도이다. 도 5는 기록신호발생회로의 동작타이밍도이다. 도 6 및 도 7은 도 1에서 나타낸 원칩마이크로컴퓨터의 제 1동작처리순서를 설명하기 위한 흐름도이다. 도 8은 제 1동작예에 있어서 기록동작 동안의 타이밍도이다. 도 9 및 도 10은 도 1에서 나타낸 원칩마이크로컴퓨터의 제 2동작처리순서를 설명하기 위한 흐름도들이다. 도 11은 ECC어드레스가 기록동작 동안에 쉬프트(shift)되는 경우의 타이밍도이다. 도 12는 ECC어드레스가 기록동작 동안에 쉬프트되는 경우의 EEPROM어드레스발생회로를 개략적으로 나타낸 회로블록도이다. 도 13 및 도 14는 도 1에서 나타낸 원칩마이크로컴퓨터의 제 3동작처리순서를 설명하기 위한 흐름도이다. 도 15는 ECC어드레스가 독출동작 동안에 쉬프트되는 경우의 타이밍도이다. 도 16은 ECC어드레스가 독출동작 동안에 쉬프트되는 경우의 EEPROM어드레스발생회로를 개략적으로 나타낸 회로블록도이다. 도 17 및 도 18은 도 1에서 나타낸 원칩마이크로컴퓨터의 제 4동작을 설명하기 위한 흐름도이다. 도 19는 제 4동작이 기록동작 동안에 수행되는 경우의 타이밍도이다.
원칩마이크로컴퓨터의 전체적인 구성
도 1에서 나타낸 바와 같이, 본 발명의 이 실시예의 원칩마이크로컴퓨터는 주로 입력/출력포트(input/output port: 1), CPU(central processing unit: 2), 어드레스버스(address bus: 3), 데이터버스(data bus: 4), 펌ROM(firm read-only memory: 5), RAM(random access memory: 6), EEPROM(8), EEPROM제어회로(7), 에러정정회로(9) 및 데이터선택회로(10)를 구비한다.
입출력포트(1)는 이 원칩마이크로컴퓨터와 외부 장치 간의 데이터 입력/출력을 위한 복수의 터미널포트들로 구성된다. CPU(2)는, 프로그램으로부터 발행된 명령의 해석(interpretation) 및 명령의 실행(execution)을 제어함으로써 이 실시예에 따른 원칩마이크로컴퓨터의 전체적인 동작을 제어한다. 어드레스버스(3)는 이 원칩마이크로컴퓨터 내의 여러 회로부들 간에 어드레스신호를 전송하는데 사용된다. 펌ROM(5)은 이 원칩마이크로컴퓨터를 동작하는데 요구되는 펌웨어(firmware), 즉, 마이크로프로그램을 그 자신에 저장한다. 이 실시예에 있어서, 펌ROM(5)은 ECC데이터생성프로그램을 그 자신에 저장한다. RAM(6)은, 주로 CPU(2)의 작업영역으로 사용되는 램덤억세스메모리(random access memory)이다.
EEPROM제어회로(7)는 EEPROM(8)의 독출/기록동작들을 제어하기 위한 제어회로이다. 이 EEPROM제어회로(7)는 후에 설명될 내용물을 포함하며, 데이터를 스택킹(stacking)하도록 사용자데이터스택레지스터(user data stack register: 71) 및 ECC데이터스택레지스터(ECC data stack register: 72)를 구비한다. EEPROM(8)은, 정보를 전기적으로 기록 및 소거하기 위한 고정저장구성요소(fixing storage element)에 대응한다. 이 EEPROM(8)은, 데이터를 그 자신에 기록하기 위해, 사용자데이터레지스터(user data register: 81) 및 ECC데이터레지스터(ECC data register: 82) 둘 다를 포함하며, 또 데이터를 그 자신에 기록하기 위해 사용자데이터영역(83) 및 ECC데이터영역(84)을 포함한다. 이러한 EEPROM(8)으로 노멀EEPROM(normal EEPROM)이나 플래쉬EEPROM(flash EEPROM)이 사용될 수 있음이 주목된다.
에러정정회로(9)는 데이터에 부가된 ECC데이터(error correction code data)에 기초하여 데이터에러를 검출함으로써 이 데이터에 담긴 에러를 정정한다. 데이터선택회로(10)는 에러정정회로(9)로부터 출력된 32비트데이터를 상위16비트데이터 및 하위16비트데이터로 세분한 다음, 이들 16비트데이터들을 교대로 데이터버스(4)로 전송한다.
EEPROM제어회로(7)의 내부구성
도 2에서 나타낸 바와 같이, 상술된 EEPROM제어회로(7)는 어드레스버스(11), 데이터버스(12), 데이터래치선택/제어회로(13), 어드레스 'n'을 위한 데이터래치(14), 어드레스 'n+2'를 위한 데이터래치(15), ECC데이터를 위한 데이터래치(16), 기록신호발생회로(17) 및 EEPROM어드레스발생회로(18)에 의해 구성된다. 이 예에 있어서, 이하, 외부에서 공급된 사용자데이터의 어드레스 'n'을 기준하여 설명한다. 어드레스버스(11)는 상술된 어드레스버스(3)의 한 부분을 구성하며, 어드레스신호를 전송한다. 데이터버스(12)는 상술된 데이터버스(4)의 한 부분을 구성하며, 데이터신호를 전송한다. 데이터래치선택/제어회로(13)는 어드레스버스(11)의 정보에 따라 제어신호들(DL1, DL2, DL3)을 생성한다. 이 제어신호들(DL1, DL2 및 DL3)은, 데이터버스(12) 상에 출현하는 데이터를, 어드레스 'n'을 위한 데이터래치(14), 어드레스 'n+2'를 위한 데이터래치(15) 및 ECC데이터를 위한 데이터래치(16)에 의해 선택적으로 래치하는데 사용된다. 이 데이터래치선택/제어회로(13)의 내구구성은 후술될 것이다. 어드레스 'n'을 위한 데이터래치(14)는, 제어신호 DL1이 활성화되는 경우에는 어드레스 'n' 및 어드레스 'n+1' 둘 다의 2바이트(16비트)데이터를 데이터버스(12) 상에서 래치(latch)하며, 어드레스의 비트 1이 '0'으로 되는 경우에는 래치된 데이터를 EEPROM(8)의 메모리로 출력한다.
어드레스 'n+2'를 위한 데이터래치(15)는, 제어신호 DL2가 활성화되는 경우에는 어드레스 'n+2' 및 어드레스 'n+3' 둘 다의 2바이트(16비트)데이터를 데이터버스(12) 상에서 래치(latch)하며, 어드레스의 비트 1이 '1'로 되는 경우에는 래치된 데이터를 EEPROM(8)의 메모리로 출력한다. ECC를 위한 데이터래치(16)는, 제어신호 DL3이 활성화되는 경우에는 데이터버스(12) 상의 하위6비트데이터를 래치(latch)하며, ECC어드레스가 출력되는 경우에는 래치된 데이터를 EEPROM(8)의 메모리셀(memory cell)로 출력한다.
기록신호발생회로(17)는 어드레스버스(11)의 정보 및 데이터버스(12)의 정보 둘 다에 기초하여 기록세트신호(write set signal) 및 기록리셋신호(write reset signal) 둘 다를 발생한다. 이 기록세트신호는 EEPROM(8)에 대한 기록동작의 개시를 제어하는데 사용된다. 기록리셋신호는 EEPROM(8)에 대한 기록동작의 종료를 제어하는데 사용된다. 이 기록신호발생회로(17)의 내부구성은 후술될 것이다. EEPROM어드레스발생회로(18)는 어드레스버스(11)의 정보에 기초하여 EEPROM(8)에 대한 어드레스를 발생한다. 이 EEPROM어드레스발생회로(18)는, 이 EEPROM(8)의 데이터영역(사용자메모리)을 위해, 어드레스버스(11)의 비트들 2 내지 15를 어드레스디코더(address decoder: 미도시)를 통해 이 EEPROM(8)의 데이터영역의 어드레스들인 0 내지 13으로서 인가한다. 또한, EEPROM(8)은, EEPROM(8)의 ECC데이터영역을 위해, 어드레스버스(11)의 비트들 2 내지 15를 다른 어드레스디코더(address decoder: 미도시) 및 감소회로(decrement circuit: 미도시)를 통해 EEPROM(8)의 ECC데이터영역의 어드레스들 0 내지 13으로서 인가한다. 이러한 어드레스변환이 수행되는 이유는 다음과 같다. 즉, 어드레스신호가 '바이트(byte: 8비트)' 단위로 주어지만, 2비트의 최소유효비트(least significant bit: LSB)들이 EEPROM(8)의 32비트 입력/출력데이터에 대응하는 어드레스로서 필요하지 않기 때문이다. 데이터가 16비트폭을 가지기 때문에, 어드레스 'n'을 위한 래치(14)는 어드레스 'n'의 데이터 및 어드레스 'n+1'의 데이터 둘 다를 래치하며, 어드레스 'n+2'를 위한 래치(15)는 외부어드레스 'n'에 대해 어드레스 'n+2'의 데이터 및 어드레스 'n+3'의 데이터 둘 다를 래치한다.
데이터래치선택/제어회로(13)의 내부구성
도 3에서 나타낸 바와 같이, 상술된 데이터래치선택/제어회로(13)는 어드레스버스(131), NOR게이트회로(132), 인버터(133) 및 다른 NOR게이트회로(134)를 채용하는 것에 의해 구성된다.
어드레스버스(131)는 어드레스버스(11)의 일부를 구성하며, 어드레스신호를 전송한다. NOR게이트회로(132)는, EEPROM(8)의 데이터영역을 표시하는 어드레스버스(131)의 비트 1과 ECC데이터영역을 표시하는 어드레스버스(131)의 비트 16, 둘 다가 비활성화된 경우, 어드레스 'n'을 위한 데이터래치(14)에 대해 제어신호 DL1을 출력한다. 인버터(133) 및 NOR게이트회로(134)는, EEPROM(8)의 데이터영역을 표시하는 어드레스버스(131)의 비트 1이 활성화되고 ECC데이터영역을 표시하는 어드레스버스(131)의 비트 16이 비활성화되는 경우, 어드레스 (n+2)를 위한 데이터래치(15)에 대해 제어신호 DL2를 출력한다. 한편, 어드레스버스(131)의 비트 16이 활성화되는 경우에는, 인버터(133) 및 NOR게이트회로(134)는 ECC를 위한 데이터래치(16)에 대해 제어신호 DL3를 출력한다.
기록신호발생회로(17)의 내부 구성/동작
도 4에서 나타낸 바와 같이, 기록신호발생회로(17)는 어드레스버스(171), 데이터버스(172), 어드레스디코더(173), 플립-플롭(flip-flop: 174), 다른 플립-플롭(175), 인버터(176) 및 AND게이트회로(177)를 포함하는 것에 의해 구성된다.
이 기록신호발생회로(17)의 동작들을 도 5의 타이밍도에 나타내었다. 어드레스버스(171)는 어드레스버스(11)의 일부를 구성하며, 어드레스신호를 전송한다. 데이터버스(172)는 데이터버스(12)의 일부를 구성하며, 데이터신호를 전송한다. 어드레스디코더(173)는, CPU(2)로부터 출력되는 어드레스버스(171) 상의 어드레스가 사전에 세팅된 특정한 어드레스와 일치하는 경우, 어드레스일치신호(address coincidence signal)를 출력하며, 기록신호의 발생을 EEPROM(8)에 지시한다. 어드레스일치신호가 어드레스디코더(173)로부터 출력되는 경우, 플립-플롭(174) 및 플립-플롭(175) 둘 다는, 데이터버스(172)의 데이터비트 0 및 데이터비트 1 각각을 래치한다. 그 결과, 데이터비트 1 및 데이터비트 0이 출력되는 것에 응답하여 기록리셋신호가 출력될 때에는 기록세트신호가 출력되지 않는다는 조건 하에서, 기록세트신호가 AND게이트회로(177)로부터 출력된다.
EEPOROM(8)에 있어서, 사용자데이터 및 ECC데이터는, 기록펄스가 기록세트신호에 의해 상승되는 것과 기록펄스가 기록리셋신호에 의해 하강되는 것에 의해 활성화되는 동안의 기간 내에 기록된다.
EEPROM(8)에 있어서의 제 1동작
이하, 도 6, 도 7 및 도 8을 참조하여, EEPROM(8)에서 실행되는 제 1동작이 설명된다. 제 1동작은, EEPROM(8)의 기록동작이 저속으로 수행되기 때문에 ECC데이터가 기록펄스의 폭 내에서 생성될 수 있는 경우에 실행되는 처리방법을 나타낸다.
사용자데이터의 제 1어드레스 및 사용자데이터의 마지막어드레스, 둘 다가 사용자데이터를 저장하기 위해 외부화일(자세하게 도시되지 않음)에서 사전에 지정된다고 가정한다. 사용자데이터가 외부화일의 제 1어드레스로부터 입력/출력포트(1)로 입력된다(단계 S1). 그 다음, 이 사용자데이터는 데이터버스(4)를 통해 CPU(2)의 내부레지스터그룹(21)에 저장된다(단계 S2). 이상과 같은 단계들 S1 내지 S2가 반복하여 실행되는 것에 의해 4바이트데이터가 저장되면(단계 S3), 그 후에, 이 사용자데이터가 내부레지스터그룹(21)로부터 데이터버스(4)를 통해 EEPROM제어회로(7) 내에 구비된 사용자데이터스택레지스터(user data stack register: 71)로 전송된다(단계 S4). 또한, 이 사용자데이터는 EEPROM(8) 내에 구비된 사용자데이터레지스터(81)로 전송된다(단계 S5).
한편, CPU(2)는, ECC발생프로그램을 실행하기 위해 펌ROM(5)에 저장된 ECC발생프로그램을 독출하며 저장된 4바이트데이터에 기초하여 ECC데이터를 생성하고(단계 S6), 데이터버스(4)를 통해 ECC데이터를 EEPROM제어회로(7) 내에 구비된 ECC데이터스택레지스터(72)로 전송한다(단계 S7). 또, CPU(2)는 이 ECC데이터를 EEPROM(8) 내에 구비된 ECC데이터레지스터(82)로 전송한다(단계 S8).
다음, 4바이트데이터에 포함된 모든 데이터가 완전하게 기록될 때까지 아래에 언급되는 기록처리동작이 반복하여 수행된다(단계 S10). 이 기록처리동작에 있어서, 사용자데이터레지스터(81)의 사용자데이터 및 ECC데이터레지스터(82)의 ECC데이터는 기록세트신호를 EEPROM제어회로(7)로부터 EEPROM(8)으로 공급하는 것에 의해 EEPROM(8)의 사용자데이터영역(83) 및 EEPROM(8)의 ECC데이터영역(84)에 기록된다(단계 S9). 기록동작이 달성되는 경우, 기록리셋신호가 EEPROM(8)으로 공급된다(단계 S11).
4바이트데이터를 위한 처리동작이 달성되는 경우, 사용자데이터의 어드레스는 4만큼 증가되며(단계 S13), 그 다음, 단계 S5 및 S8에서 정의된 처리동작들이 다시 반복된다. 그 다음, 마지막어드레스가 출현하는 경우(단계 S12), 이 처리동작이 달성된다.
이러한 경우에 처리된 각 데이터의 기록타이밍을 도 8의 타이밍도에 나타내었다. 바꾸어 말하면, 우선, 4바이트데이터가 포트(1)로부터 데이터 '0' 내지 데이터 '3'까지의 기록데이터로서 들어오기 때문에, 이 기록데이터는 연속적으로 데이터버스(4)로 출력된다. 이 기록데이터가 기설정된 타이밍에서 EEPROM(8) 내에 구비된 사용자데이터레지스터(81)로 전송되며, 더욱이, CPU(2)에서 데이터 '0'부터 데이터 '3'까지 ECC데이터의 발생이 달성된 후에 이 ECC데이터가 EEPROM(8) 내에 구비된 ECC데이터레지스터(82)로 전송되는 경우, 기록펄스가 발생되며, 이 기록펄스는 곧 EEPROM(8)에 기록된다.
EEPROM(8) 내에 저장된 데이터가 독출되는 경우, 사용자데이터 및 ECC데이터 둘 다는 동일한 어드레스에서 독출되기 때문에, 대응하는 사용자데이터부분과 대응하는 ECC데이터부분 둘 다가 이 EEPROM(8)으로부터 독출될 수 있다. 그 결과, 에러정정회로(9)에 의해 에러정정이 수행될 수 있다.
EEPROM(8)에서의 제 2동작
이어서, 도 9, 도 10, 도 11 및 도 12를 참조하여, EEPROM(8)에서 실행되는 제 2동작을 설명한다. 즉, 이 제 2동작은, EEPROM(8)의 기록동작이 고속으로 수행되기 때문에 ECC데이터가 기록펄스의 폭 내에서 생성될 수 없으며 또한 ECC어드레스가 기록동작동안에 쉬프트되는 경우에 실행되는 처리방법을 나타낸다.
사용자데이터의 제 1어드레스 및 이 사용자데이터의 마지막 어드레스, 둘다가 사용자데이터를 저장하기 위해 외부화일에서 사전에 지정된다고 가정한다.
사용자데이터는 외부화일의 제 1어드레스로부터 입력/출력포트(1)로 입력되며(단계 P1), 또한 이 사용자데이터는 데이터버스(4)를 통해 EEPROM제어회로(7) 내에 구비된 사용자데이터스택레지스터(71)로 전송되며(단계 P2), 그 다음, 이 사용자데이터는 CPU(2)의 내부레지스터그룹(21)에 저장된다(단계 P3). 이상과 같은 단계들 P1 내지 P3이 반복하여 실행되는 것에 의해 4바이트데이터가 저장되면(단계 P4), 그 후에, 이 4바이트데이터가 제 1어드레스에 대응하는 경우에는(단계 P5), 사용자데이터는 EEPROM제어회로(7) 내에 구비된 사용자데이터스택레지스터(71)로부터 EEPROM(8) 내에 구비된 사용자데이터레지스터(81)로 전송된다(단계 P6). 사용자데이터를 EEPROM(8)에 기록하기 위해 기록세트신호가 EEPROM제어회로(7)로부터 EEPROM(8)으로 출력되고(단계 P7) 그 다음 기록동작이 달성되는 경우(단계 P8), 기록리셋신호가 EEPROM제어회로(7)로부터 EEPROM(8)으로 출력된다(단계 P9). 그 다음, 어드레스가 4만큼 증가된(단계 P10) 후, 처리동작은 다시 단계 P1으로 회귀된다. 외부화일로부터 4바이트데이터가 입력된 후의 처리동작은 반복하여 수행된다. 상술한 4바이트데이터의 저장동작이 완료될 때, 이 어드레스가 제 1어드레스에 대응하지 않으며(단계 P5), 마지막어드레스에도 대응하지 않는 경우(단계 11), CPU(2)는 아래에 언급된 동작들을 실행한다. 이 CPU(2)는, 이전의 처리사이클에 저장되었던 4바이트데이터로부터 ECC데이터를 생성하며(단계 P12); 이 ECC데이터를 데이터버스(4)를 통해 EEPROM제어회로(7) 내에 구비된 ECC데이터스택레지스터(72)로 전송하며(단계 P13); 그리고, 이 사용자데이터를 사용자데이터스택레지스터(71)로부터 EEPROM(8) 내에 구비된 사용자데이터레지스터(81)로 전송한다. 또한, CPU(2)는, ECC데이터를 ECC데이터스택레지스터(72)로부터 ECC데이터레지스터(82)로 전송하며(단계 P14); EEPROM(8)의 ECC데이터영역의 어드레스를 '-1'만큼 쉬프트하며(단계 P15); 기록세트신호를 EEPROM(8)로 출력하며(단계 P16); 사용자데이터레지스터(81)로부터의 사용자데이터를 EEPROM(8)의 사용자데이터영역(83)에 기록하며; 그리고, 또 ECC데이터레지스터(82)로부터의 ECC데이터를 ECC데이터영역(84)에 기록한다. 다음, 기록동작이 달성되면(단계 P17), 이 CPU(2)는 기록리셋신호를 EEPROM(8)으로 출력한다(단계 P18). 이 처리동작은 CPU(2)가 4만큼 어드레스를 쉬프트하는 단계(단계 P10)인 이전의 단계 P10으로 회귀된다. 그 다음, 이 처리동작은, 외부화일로부터 4바이트데이터가 들어오는 것에 의해 상술된 일련의 처리동작이 반복하여 수행되는, 단계 P1로 다시 회귀된다.
남은 어드레스가 단계 P11에서 마지막어드레스인 경우, CPU(2)는, 저장된 4바이트데이터로부터 ECC데이터를 생성하며(단계 P19); ECC데이터를 데이터버스(4)를 통해 EEPROM제어회로(7) 내에 구비된 ECC데이터스택레지스터(72)로 전송하며(단계 P20); 그리고 또, ECC데이터를 ECC데이터레지스터(82)로 전송하며(단계 P21); EEPROM(8)의 ECC데이터영역(84)의 어드레스를 '-1'만큼 쉬프트하며(단계 P22); 기록세트신호를 EEPROM(8)으로 출력하며; 그리고 또 ECC데이터를 기록한다. 다음, 기록동작이 종료되면(단계 P24), 처리동작이 달성된다.
도 11은 ECC어드레스가 기록동작 동안에 쉬프트되는 경우에 각 데이터의 다양한 기록타이밍을 나타낸다. 바꾸어 말하면, 사용자데이터는 포트(1)로부터 EEPROM(8) 내에 구비된 사용자데이터레지스터(81)에, 페이지어드레스(page address) 0, 1, 2,..., n,..., 마지막 어드레스의 어드레스순서대로 4바이트페이지 단위로 순차적으로 전송된다. 1사이클지연을 갖는 사용자데이터에 기초하여 생성된 대응하는 ECC데이터는, 1어드레스만큼 연속적으로 쉬프트되며, 그 다음, 어드레스-쉬프트된 ECC데이터는 EEPROM(8)의 ECC데이터레지스터(82)로 전송된다. 기록펄스에 응답하여, 이들 어드레스-쉬프트된 ECC데이터는 EEPROM(8)의 사용자데이터영역(83)에 기록되며, 또 ECC데이터영역(84)에 기록된다.
에러정정처리동작이 실행되도록 EEPROM(8)에 저장된 데이터가 독출되는 경우, 사용자데이터에 대응하는 사용자데이터부분과 ECC데이터에 대응하는 ECC데이터부분이 동시에 독출될 수 있도록, 사용자데이터 및 ECC데이터 둘 다는 이 EEPROM(8)의 동일한 어드레스로부터 독출된다.
EEPROM어드레스발생회로(18)의 내부구성
도 12에서 도시된 바와 같이, ECC어드레스가 기록동작 동안에 쉬프트되는 경우에 EEPROM제어회로(7)에 채용되는 EEPROM어드레스발생회로(18)는 어드레스버스(181) 및 감소회로(182)를 채용하는 것에 의해 구성된다.
어드레스버스(181)은 어드레스버스(11)의 일부를 구성하며, 어드레스신호를 전송한다. 감소회로(182)는 어드레스버스(181)의 어드레스를 1만큼 감소시키며 감소된 어드레스를 출력한다.
32비트 사용자데이터 및 6비트 ECC데이터 둘 다가 동시에 EEPROM(8)에 기록되기 때문에, 어드레스버스(181)의 비트들 2 내지 15는 EEPROM(8)의 어드레스 0 내지 13에 EEPROM(8)의 사용자데이터영역(83)을 위한 기록어드레스들로서 인가되며, 어드레스버스(181)의 비트들 2 내지 15는 감소회로(182)에 의해 1만큼 감소된 후, 감소된 비트들이 EEPROM(8)의 어드레스 0 내지 13에 EEPROM(8)의 ECC데이터영역(84)을 위한 기록어드레스들로서 인가된다. 이러한 변환이 수행되는 이유는 다음과 같다: 어드레스신호가 1바이트(8비트) 단위로 제공되지만, EEPROM(8)의 32비트 입력/출력데이터에 대응하는 어드레스로서는 2비트의 최소유효비트가 필요하지 않기 때문이다.
EEPROM(8)에 있어서의 제 3동작
이어서, 도 13, 도 14, 도 15 및 도 16을 참조하여, EEPROM(8)에서 실행되는 제 3동작이 설명될 것이다. 즉, 제 3동작은, EEPROM(8)의 기록동작이 고속으로 수행되기 때문에 ECC데이터가 기록펄스의 폭 내에서 생성될 수 없으며 또한 ECC어드레스가 독출동작 동안에 쉬프트되는 경우에 실행되는 처리방법을 나타낸다.
사용자데이터의 제 1어드레스 및 사용자데이터의 마지막어드레스는 사용자데이터를 저장하기 위해 외부화일에서 사전에 지정된다고 가정한다. 사용자데이터는 외부화일의 제 1어드레스로부터 입력/출력포트(1)로 입력되며(단계 R1), 사용자데이터는 데이터버스(4)를 통해 EEPROM제어회로(7) 내에 구비된 사용자데이터스택레지스터(71)로 전송되고, 입력된 데이터는 데이터버스(4)를 통해 CPU(2)의 내부레지스터그룹(21)에 저장된다(단계 R4). 이러한 처리동작들 R1 내지 R4를 반복하여 실행하는 것에 의해 4바이트데이터가 저장되고 난 후(단계 R4), 이 4바이트데이터가 제 1어드레스에 대응하는 경우(단계 R5), 이 사용자데이터는 사용자데이터스택레지스터(71)로부터 EEPROM(8) 내의 사용자데이터레지스터(81)로 전송된다(단계 R6). 사용자데이터를 EEPROM(8)에 기록하기 위해 기록세트신호가 EEPROM제어회로(7)로부터 EEPROM(8)로 출력된(단계 R7) 다음, 기록동작이 달성되는 경우(단계 R8), 기록리셋신호는 EEPROM제어회로(7)로부터 EEPROM(8)로 출력된다(단계 R9). 그 다음, 이 어드레스는 4만큼 증가되며(단계 R10), 그 다음, 처리동작이 다시 단계 R1으로 회귀된다. 4바이트데이터가 외부화일로부터 입력된 다음의 처리동작은 반복하여 수행된다.
상술된 4바이트데이터의 저장동작이 종료되는 경우, 어드레스가 제 1어드레스에 대응하지 않으며(단계 R5), 마지막어드레스에도 대응하지 않으면(단계 R11), CPU(2)는 아래에 언급되는 동작들을 실행한다. 이 CPU(2)는 저장된 4바이트 데이터로부터 ECC데이터를 생성하며(단계 R12); ECC데이터를 데이터버스(4)를 통해 EEPROM제어회로(7) 내에 제공되는 ECC데이터스택레지스터(72)로 전송하며(단계 R13); ECC데이터를 사용자데이터스택레지스터(71)로부터 EEPROM(8) 내에 제공되는 사용자데이터레지스터(81)로 전송한다. 더욱이, CPU(2)는 ECC데이터를 ECC데이터스택레지스터(72)로부터 ECC데이터레지스터(82)로 전송하며(단계 R14); 기록세트신호를 EEPROM(8)으로 출력하며(단계 R15); 사용자데이터를 사용자데이터레지스터(81)로부터 EEPROM(8)의 사용자데이터영역(83)에 기록하며; ECC데이터를 ECC데이터레지스터(82)로부터 ECC데이터영역(84)에 기록한다. 그 다음, 기록동작이 달성되면(단계 R16), 이 CPU(2)는 기록리셋신호를 EEPROM(8)으로 출력한다(단계 R17). 이 처리동작은, CPU(2)가 어드레스를 +4만큼 쉬프트하는 이전의 단계(단계 R10)로 회귀된다. 그 다음, 이 처리동작은, 외부화일로부터 4바이트 데이터가 들어오는 것에 의해 상술한 일련의 처리동작이 반복하여 수행되는 단계 R1으로 다시 회귀된다.
단계 R11에서 남은 어드레스가 마지막어드레스인 경우, CPU(2)는, 저장된 4바이트 데이터로부터 ECC데이터를 생성하며(단계 R18); ECC데이터를 데이터버스(4)를 통해 EEPROM제어회로(7) 내에 제공되는 ECC데이터스택레지스터(72)로 전송하며(단계 R19); 또한, ECC데이터를 ECC데이터스택레지스터(72)로부터 EEPROM(8) 내의 ECC데이터레지스터(82)로 전송하며(단계 R20); 또한, 이 ECC데이터의 기록동작을 실행하도록, 기록세트신호를 EEPROM(8)으로 출력한다(단계 R21). 이 ECC데이터기록동작이 달성되면(단계 R22), 이 처리동작은 달성된다.
도 15는 ECC어드레스가 독출동작 동안에 쉬프트되는 경우의 각 데이터의 다양한 기록타이밍을 나타낸다. 바꾸어 말하면, 사용자데이터는 포트(1)로부터 EEPROM(8)에 제공된 사용자데이터레지스터(81)로, 페이지어드레스 0, 1, 2,..., n,..., 마지막어드레스의 어드레스 순서로 4바이트 페이지 단위로 순차적으로 전송된다. 1주기지연을 갖는 사용자데이터에 기초하여 생성된 대응하는 ECC데이터는 연속적으로 EEPROM의 ECC데이터레지스터(82)로 전송된다. 기록펄스에 응답하여, 이들 어드레스-쉬프트된 ECC데이터가 EEPROM(8)의 동일한 어드레스들에서, EEPROM(8)의 사용자데이터영역(83)에 기록되며 또한, EEPROM(8)의 ECC데이터영역(84)에도 기록된다. 그 결과, 이 경우에는, 페이지어드레스 'n'에서 사용자데이터에 대응하는 ECC데이터가 어드레스 (n+1)에서의 ECC데이터영역(84)에 기록된다.
에러정정처리동작을 실행하도록 EEPROM(8)에 저장된 데이터가 독출되는 경우, EEPROM(8) 내에 제공되는 사용자데이터영역(83)의 어드레스 'n'에서의 사용자데이터 및 ECC데이터영역(84)의 어드레스 (n+1)에서의 ECC데이터 둘 다가 독출된다. 그 결과, 대응하는 데이터부분 및 대응하는 ECC데이터부분이 동시에 독출될 수 있다.
EEPROM어드레스발생회로(18a)의 내부구성
도 16에서 도시된 바와 같이, ECC어드레스가 독출동작 동안에 쉬프트되는 경우에 EEPROM제어회로(7)에 채용된 EEPROM어드레스발생회로(18a)는 어드레스버스(183) 및 감소회로(184)를 채용하는 것에 의해 구성된다.
어드레스버스(183)은 어드레스버스(11)의 일부를 구성하며, 어드레스신호를 전송한다. 감소회로(184)는 어드레스버스(183)의 어드레스를 1만큼 감소시켜 감소된 어드레스를 출력한다.
32비트 사용자데이터 및 6비트 ECC데이터 둘 다가 동시에 EEPROM(8)으로부터 독출되기 때문에, 어드레스버스(183)의 비트들 2내지 15는 EEPROM(8)의 사용자데이터영역(83)을 위한 독출어드레스들로서 EEPROM(8)의 어드레스들 0 내지 13에 인가되며, 어드레스버스(183)의 비트들 2내지 15가 감소회로(184)에 의해 1만큼 감소된 후, 감소된 비트들이 EEPROM(8)의 어드레스 0 내지 13에 EEPROM(8)의 ECC데이터영역(84)을 위한 독출어드레스들로서 인가된다. 이러한 변환이 수행되는 이유는 다음과 같다: 즉, 어드레스신호가 1바이트(8비트) 단위로 제공되는 반면, EEPROM(8)의 32비트 입력/출력데이터에 대응하는 어드레스로서 2비트의 최소유효비트는 필요하지 않기 때문이다.
EEPROM(8)에서의 제 4동작
이하, 도 17, 도 18 및 도 19를 참조하여, EEPROM(8)에서 수행되는 제 4동작이 설명될 것이다. 즉, 말하자면, 이 제 4동작은, EEPROM(8)의 기록동작이 고속으로 수행되기 때문에 ECC데이터가 기록펄스의 폭 내에서 생성될 수 없을 때 기록어드레스증가기능이 EEPROM(8)의 ECC데이터영역 측에 제공되는 경우에 실행되는 처리방법이다. 이 기록어드레스증가기능은, 펌ROM(5) 내에 저장된 프로그램에 기초하는 CPU(2)의 처리동작을 실행하여 기록어드레스를 증가시킨다.
외부화일(미도시) 내에 저장된 사용자데이터의 제 1어드레스 및 사용자데이터의 마지막 어드레스가 사전에 지정된다. 사용자데이터가 제 1어드레스로부터 입력/출력포트(1)로 들어오며(단계 Q1); 이 사용자데이터가 데이터버스(4)를 통해 EEPROM제어회로(7) 내에 제공되는 사용자데이터스택레지스터(71)로 전송되며(단계 Q2); 또, 입력/출력포트(1)로부터 전송된 사용자데이터가 데이터버스(4)를 통해 CPU(2)의 내부레지스터그룹(21)에 전송되는(단계 Q3) 처리동작이 반복적으로 수행되어 4바이트 데이터가 저장된 후, 4바이트데이터는 사용자데이터스택레지스터(71)로부터 EEPROM(8) 내에 제공되는 사용자데이터레지스터(81)로 전송된다(단계 Q5).
한편, 단계 Q5에서 4바이트데이터가 EEPROM(8) 내에 제공되는 사용자데이터레지스터(81)로 전송되는 경우에는, 4바이트데이터가 내부레지스터그룹(21)으로부터 데이터버스(4)를 통해 사용자데이터스택레지스터(71)에 대응하는 어드레스에서의 RAM(6)의 저장영역에 저장된다(단계 Q17). 그 다음, 4바이트데이터가 사용자데이터스택어드레스에 의해 지정된 RAM(6)의 저장영역으로부터 데이터버스(4)를 통해 독출된다(단계 Q18). 따라서, CPU(2)는, 4바이트데이터로부터 ECC데이터를 생성하는 처리동작을 반복하여 실행하며(단계 Q19); 생성된 ECC데이터를 데이터버스(4)를 통해 대응하는 어드레스의 ECC데이터스택레지스터(72)로 전송하며(단계 Q20); 또, 이 ECC데이터를 EEPROM(8) 내에 제공되는 ECC데이터레지스터(82)로 전송하여(단계 Q21), 스택어드레스가 감소되도록 한다(단계 Q22).
다음, CPU(2)는 어드레스를 4만큼 증가시키면서 다음의 처리동작을 반복하여 수행한다(단계 Q17). 즉, 이 처리동작에서, 이 CPU(2)는 EEPROM제어회로(7)로부터 EEPROM(8)의 사용자데이터영역(83)의 어드레스 및 ECC데이터영역(84)의 어드레스 둘 다를 출력하며(단계 Q6); 또, 기록동작을 실행하도록 기록세트신호를 EEPROM(8)으로 출력한다(단계 Q7). 이 기록동작이 달성되는 경우(단계 Q8), 이 CPU(2)는, 기록동작을 종료하도록 기록리셋신호를 출력한다(단계 Q9).
사용자데이터가 마지막어드레스가 되는 경우(단계 Q10), CPU(2)는 ECC데이터를 ECC데이터스택레지스터(72)로부터 EEPROM(8) 내에 제공되는 ECC데이터레지스터(82)로 전송한다. ECC데이터전송동작이 종료되는 경우(단계 Q12), CPU(2)는 EEPROM(8)의 ECC데이터영역(84)에 대해 기록동작을 실행하도록 기록세트신호를 출력한다(단계 Q13). 기록동작이 완료되는 경우(단계 Q14), CPU(2)는 기록리셋신호를 출력한다(단계 Q15). 상술한 처리동작은 사용자데이터가 ECC데이터영역(84)의 마지막어드레스가 될 때까지 수행되며(단계 Q16). 그 다음 처리동작이 달성된다.
도 19는 EEPROM(8)에서 제 4동작이 수행될 때의 다양한 데이터에 대한 기록타이밍도를 도시한다. 이 기록타이밍도에서 보여지는 바와 같이, 사용자데이터는 입력/출력포트(1)로부터 EEPROM(8) 내에 제공되는 사용자데이터레지스터(81)로, 페이지어드레스 0, 1, 2,..., n,..., 마지막 페이지어드레스의 순으로 4바이트페이지 단위로 순차적으로 전송된다. 그리고 또, 이들 전송된 사용자데이터에 기초하여 생성된 ECC데이터는 이 EEPROM(8) 내에 제공되는 ECC데이터레지스터(82)로 순차적으로 전송된다. 사용자데이터가 기록펄스에 응답하여 이 EEPROM(8)의 사용자데이터영역(83)에 직접 기록되는 동안, ECC데이터가 다른 방식으로 기록된다. 즉, ECC어드레스 '0'을 위해 처음 생성된 ECC데이터는 기록되지 않는다(주로, 기록동작 (1) 및 (2)). 이는, 이들 ECC데이터가 ECC데이터생성에 있어서의 지연들에 의해 발생되는 디폴트값들이기 때문이다. 처음 생성된 ECC데이터에 뒤따르는 ECC데이터는, 기록펄스들에 응답하여 기선택된 어드레스들에서 정의된 EEPROM(8)의 ECC데이터영역(84)에 기록된다.
제 4동작에 있어서, 만일, CPU(2)에 의한 ECC데이터의 생성이 다음 ECC데이터를 기록하는데 사용되는 어드레스가 증가될 때까지 수행될 수 없다면, 이 CPU(2)는 디폴트값을 출력한다. 이 경우에 있어서, EEPROM제어회로(7)는, ECC데이터를 EEPROM(8) 내에 제공되는 ECC데이터영역(84)에 기록하는 것을 실행하지 않는다. 디폴트값으로서, 예를 들면, '1'인 모든 디지트(digit)들이 첫 번째 ECC데이터가 생성될 때까지 사용되며, 이어서, 선행하는 ECC데이터가 디폴트값으로서 직접 출력된다.
에러정정처리동작을 실행하도록 EEPROM(8)으로부터 데이터가 독출되는 경우, 대응하는 사용자데이터부분 및 대응하는 ECC데이터부분이 독출될 수 있도록 사용자데이터 및 ECC데이터 둘 다가 EEPROM(8)의 동일한 어드레스들에서 독출된다.
전술한 바와 같이, 바람직한 실시예들의 원칩마이크로컴퓨터에 따르면, ECC데이터가 생성되는 경우, ECC데이터생성처리동작은 외부소프트웨어를 실행하는 것에 의해 수행되지 않으며, 원칩마이크로컴퓨터 내에 내부적으로 제공되는 소프트웨어를 실행하는 것에 의해 수행된다. 그 결과, ECC데이터는 외부화일로부터 원칩마이크로컴퓨터로 기록되는 것을 요구하지 않으며, 외부적으로 기록된 데이터의 전체 양이 감소된다. 결과적으로, 기록데이터가 전송되는 동안에 발생되는 에러들을 줄일 수 있으며, 이들 기록데이터의 신뢰도가 증가될 수 있다.
더욱이, EEPROM에 외부적으로 기록되는 데이터의 전체 양이 감소되기 때문에, 데이터기록시간이 단축될 수 있으며, 원칩마이크로컴퓨터의 생산성도 개선될 수 있다.
또한, 종래의 원칩마이크로컴퓨터의 경우와 비교하여, ECC데이터를 제외한 데이터를 EEPROM에 기록하도록 채용된 외부장치에 탑재되는 실질적으로 외부에 설치되는 메모리들이 감소된다. 그 결과, 이 외부장치를 위한 전체비용이 감소될 수 있다.
도면들을 참조하여 본 발명의 다양한 실시예들이 설명되었지만, 본 발명은 이 실시예들에 의해 제한되는 것은 아니며, 본 발명의 기술적인 범위 및 사상으로부터 벗어나지 않으면서 변형, 변경 및 대체될 수 있다. 예를 들면, 본 발명의 아이디어는 원칩마이크로컴퓨터에 제한되지 않으며, EEPROM들을 채용한 다른 컴퓨터들에 적용될 수도 있으며, 프로그램을 외부적으로 저장할 수도 있다.
앞에서 상세하게 기술한 바와 같이, 본 발명에 따른 원칩마이크로컴퓨터는, ECC데이터가 부가된 컴퓨터데이터로 이루어진 컴퓨터프로그램이 EEPROM 내에 저장되는 한편, 에러정정은 이 EEPROM으로부터 컴퓨터프로그램이 독출될 때 수행되어 ECC데이터는 원칩마이크로컴퓨터 내에서 생성될 수 있다. 그 결과로, ECC데이터가 원칩마이크로컴퓨터의 외부에서 생성되는 경우의 사용자작업부하와 비교하여, 사용자에게 주어지는 작업부하가 크게 감소될 수 있다.
더욱이, 생성된 ECC데이터를 임시적으로 저장하기 위한 외부메모리가 ECC데이터를 생성하기 위해서는 더 이상 필요치 않기 때문에, 전체시스템비용이 낮아질 수 있다.
추가하여, 사용자데이터 및 ECC데이터가 동시에 EEPROM에 기록되기 때문에, ECC데이터가 외부메모리로부터 EEPROM에 기록되는 경우의 기록시간과 비교하여, EEPROM에 대한 데이터기록시간이 감소될 수 있다.
본 발명의 원칩마이크로컴퓨터는, ECC데이터를 생성하기 위해 오직 펌ROM이 새롭게 추가될 뿐이라는 점에서, 논리회로로 구성되는 ECC데이터발생회로에 의해 ECC데이터가 생성되는 종래의 원칩마이크로와 차이가 있다. 그 결과로, 원칩마이크로컴퓨터의 전체 칩의 크기가 회로스케일을 크게 증가하는 일 없이 증가될 필요가 없다. 또한, 본 발명에 따른, ECC데이터생성을 위한 처리동작은 오직 컴퓨터프로그램이 EEPROM 내에 저장되는 동안에만 실행되며, ECC데이터생성처리동작을 실행하는데 사용되는 펌ROM은 통상의 컴퓨터프로그램이 실행되는 동안에는 동작되지 않는다. 더욱이, 컴퓨터프로그램이 실행되는 경우에는, 논리회로들로 구성되는 에러정정회로를 이용하여 에러검출/정정처리동작들이 수행된다. 그 결과, 통상의 프로그램처리속도가 저하되지 않는다.
또한, 통상, 데이터가 EEPROM에 기록되는 경우에는, RAM에서 요구되는 것과 비교하여, 데이터기록시간이 필수적으로 수백 내지 수천이 된다. 이와 대조적으로, 본 발명에 따르면, 외부장치로부터 수신되는 사용자데이터가 복수의 바이트들 단위로 서로 조합된 후, 조합된 데이터가 EEPROM에 기록된다. 또한, 복수의 바이트 단위로 조합된 사용자데이터는 ECC데이터와 연계된 후, 이 결과와 데이터가 EEPROM에 기록된다. 결과적으로, 사용자데이터가 고속으로 수신될 수 있으며, 또한, ECC데이터가 병렬방식으로 기록시간을 이용하면서 연산될 수 있다.
그러므로, 본 발명이 상기 실시예들에 의해 제한되지 않으며, 본 발명의 범위 및 사상으로부터 벗어나지 않으면서 변경 및 변형될 수 있음은 분명하다.
마지막으로, 본원은 서기 1998년 4월 9일자로 출원된 일본국특허출원번호 평10-097287호를 우선권주장한다.

Claims (4)

  1. 사용자데이터와 이 사용자데이터에 대응하는 ECC데이터를 기록하여 저장하는 EEPROM, 중앙연산처리장치(이하 'CPU'라 함), CPU가 상기 사용자데이터로부터 상기 ECC데이터를 생성하게 하는 프로그램을 저장하는 메모리수단, 및 상기 사용자데이터와 상기 ECC데이터를 상기 EEPROM에 저장하기 위한 제어를 행하는 제어수단을 포함하고,
    상기 제어수단 내에 있는 사용자데이터스택레지스터에, 외부로부터의 상기 사용자데이터를 저장하는 제1단계와, 상기 사용자데이터를 상기 CPU내에 있는 내부레지스터에 저장하는 제2단계를 실행하며,
    상기 EEPROM에 대한 상기 사용자데이터의 기록처리에서는 가장 최초의 어드레스의 사용자데이터를 상기 제어수단내의 사용자데이터스택레지스터로부터 상기 EEPROM 내에 있는 사용자데이터레지스터로 전송하는 제3단계와, 상기 사용자데이터레지스터에 전송된 사용자데이터를 상기 제어수단으로부터 출력하는 기록어드레스에 따라 상기 EEPROM의 사용자데이터영역에 기록하는 제4단계를 실행하며,
    상기 CPU는 상기 제4단계의 실행 중에, 상기 메모리수단으로부터 ECC데이터를 생성하기 위한 프로그램을 순차적으로 독출하여, 상기 내부레지스터에 저장된 사용자데이터에 기초하여 ECC데이터를 생성하는 제5단계를 실행하며,
    다음의 기록어드레스에 대응하는 사용자데이터를 상기 제1단계 및 제2단계와 동일한 방식으로 상기 제어수단내의 사용자데이터스택레지스터에 저장하고 아울러, 상기 제5단계에서 생성된 ECC데이터를 상기 제어수단 내에 있는 ECC데이터스택레지스터에 저장하는 제6단계를 실행하며,
    다음에 상기 제어수단 내에 있는 사용자데이터레지스터 및 ECC데이터스택레지스터에 저장된 데이터를 상기 EEPROM 내에 있는 사용자데이터레지스터 및 ECC데이터레지스터로 전송하는 제7단계를 실행하며,
    다음에 상기 제어수단으로부터 출력하는 기록어드레스를, ECC데이터영역에서는, 사용자데이터영역에서의 기록어드레스로부터 1을 빼어 상기 EEPROM의 기록어드레스로 하는 제8단계를 실행하며,
    상기 제어수단으로부터 출력하는 기록어드레스와 기록제어신호에 따라, 상기 EEPROM의 사용자데이터영역과 ECC데이터영역에 기록하는 제9단계 실행하며,
    또, 상기 제1단계로부터 상기 제9단계를, 상기 EEPROM의 모든 사용자데이터영역에 기록 종료할 때까지 실행하며,
    다음에 상기 EEPROM의 마지막 어드레스의 사용자데이터에 대응하는 상기 EEPROM내의 ECC데이터를, 상기 제5단계로부터 상기 제9단계를 실행하여 기록하는 것으로 기록처리를 실행하고,
    독출처리에 있어서는, 상기 제어수단으로부터 상기 EEPROM으로 출력하는 어드레스에 따라, 상기 EEPROM으로부터 동일한 어드레스의 사용자데이터와 ECC데이터를 독출하여, 오류정정수단으로 전송하고, 오류정정을 행하여 독출하도록 구성된 것을 특징으로 하는 원칩마이크로컴퓨터.
  2. 사용자데이터와 이 사용자데이터에 대응하는 ECC데이터를 기록하여 저장하는 EEPROM, CPU, 이 CPU가 상기 사용자데이터로부터 상기 ECC데이터를 생성하기 위한 프로그램을 저장하는 메모리수단, 및 상기 사용자데이터와 상기 ECC데이터를 상기 EEPROM에 기록하기 위한 제어를 행하는 제어수단을 포함하고,
    상기 제어수단 내에 있는 사용자데이터스택레지스터에, 외부로부터의 상기 사용자데이터를 저장하는 제1단계와, 상기 사용자데이터를 상기 CPU 내에 있는 내부레지스터에 저장하는 제2단계를 실행하며,
    상기 EEPROM에 대한 상기 사용자데이터의 기록처리에서는 가장 최초 어드레스의 사용자데이터를 상기 제어수단내의 사용자데이터스택레지스터로부터 상기 EEPROM내에 있는 사용자데이터레지스터로 전송하는 제3단계와, 상기 사용자데이터레지스터로 전송한 사용자데이터를 상기 제어수단으로부터 출력하는 기록어드레스와 기록제어신호에 따라 상기 EEPROM의 사용자데이터영역에 기록하는 제4단계를 실행하며,
    상기 CPU는 상기 제4단계의 실행 중에, 상기 메모리수단으로부터 ECC데이터를 생성하기 위한 프로그램을 순차 독출하고, 상기 내부레지스터에 저장된 사용자데이터에 근거하여 ECC데이터를 생성하는 제5단계를 실행하며,
    다음의 기록어드레스에 대응한 사용자데이터를 상기 제1단계 및 제2단계와 동일한 방식으로 상기 제어수단내의 사용자데이터스택레지스터에 저장하고 아울러, 상기 제5단계에서 생성한 ECC데이터를 상기 제어수단내에 있는 ECC데이터스택레지스터에 저장하는 제6단계를 실행하며,
    다음에 상기 제어수단내에 있는 사용자데이터레지스터 및 ECC데이터스택레지스터에 저장된 데이터를 상기 EEPROM 내에 있는 사용자데이터레지스터 및 ECC데이터레지스터에 전송하는 제7단계를 실행하고,
    다음에, 상기 제어수단으로부터 출력하는 기록어드레스와 기록제어신호에 따라 상기 EEPROM의 사용자데이터영역과 ECC데이터영역에 기록하는 제8단계를 실행하며,
    또 상기 제1단계로부터 제8단계를 상기 EEPROM의 모든 사용자데이터영역에 기록 종료할 때까지 실행하며,
    다음에 상기 EEPROM의 마지막 어드레스의 사용자데이터에 대응한 상기 EEPROM 내의 ECC데이터를, 상기 최후의 어드레스의 사용자데이터의 어드레스에 1을 더한 어드레스의 ECC데이터영역에 기록하는 것으로 기록처리를 실행하고,
    독출처리에서는, 상기 제어수단내에서, 상기 EEPROM의 ECC데이터영역의 어드레스에 대하여 사용자데이터영역의 어드레스에 1을 더하는 연산을 하여 어드레스를 생성하고, 상기 EEPROM에 출력하여, 상기 EEPROM의 사용자 데이터영역과 ECC데이터영역에서 각각 사용자데이터와 ECC데이터를 독출하여, 오류정정수단에 전송하여, 오류정정을 행하여 독출하도록 구성된 것을 특징으로 하는 원칩마이크로컴퓨터.
  3. 사용자데이터와 그 사용자데이터에 대응하는 ECC데이터를 기록하여 저장하는 EEPROM, 중앙연산처리장치(이하 'CPU'라 함), 이 CPU가 상기 사용자데이터로부터 상기 ECC데이터를 생성하기 위한 프로그램을 저장하는 메모리수단과, 상기 사용자데이터와 상기 ECC데이터를 상기 EEPROM에 기록하기 위한 제어를 행하는 제어수단을 구비하고,
    상기 CPU 내에 있는 내부 레지스터에, 외부로부터의 상기 사용자데이터를 저장하는 제1단계와, 상기 사용자데이터를 상기 CPU 내에 있는 내부 레지스터로부터 독출하여 상기 제어수단 내에 있는 사용자데이터스택레지스터에 저장하는 제2단계를 실행하며,
    상기 CPU는 상기 메모리수단으로부터 ECC데이터를 생성하기 위한 프로그램을 순차 독출하여, 상기 내부레지스터에 저장한 사용자데이터에 근거하여 ECC데이터를 생성하는 제3단계를 실행하며,
    다음에, 상기 제어수단 내에 있는 ECC데이터스택레지스터에, 상기 제3단계에서 생성한 ECC데이터를 저장하는 제4단계를 실행하며,
    상기 제어수단내의 사용자데이터스택레지스터와 ECC데이터스택레지스터로부터 각각 사용자데이터와 ECC데이터를 독출하여, 상기 EEPROM 내에 있는 사용자데이터레지스터와 ECC데이터레지스터에 전송하는 제5단계를 실행하며,
    상기 제어수단으로부터 출력하는 기록어드레스와 기록제어신호에 따라, 상기 EEPROM 내의 사용자데이터영역과 ECC데이터영역에 기록하는 제6단계를 실행하고,
    또, 상기 제1단계로부터 제6단계를 반복 실행하여, 상기 EEPROM의 모든 사용자데이터영역과 ECC데이터영역에 기록을 행하여, 기록처리를 실행하고,
    독출처리에서는, 상기 제어수단으로부터 상기 EEPROM으로 출력하는 어드레스에 따라, 상기 EEPROM으로부터 동일한 어드레스의 사용자데이터와 ECC데이터를 독출하고 오류정정수단에 전송하여, 오류정정을 하여 독출하도록 구성된 것을 특징으로 하는 원칩마이크로컴퓨터.
  4. 사용자데이터와 이 사용자데이터에 대응하는 ECC데이터를 기록하여 저장하는 EEPROM, CPU, 이 CPU가 상기 사용자데이터로부터 상기 ECC데이터를 생성하기 위한 프로그램을 저장하는 메모리수단, 및 상기 사용자데이터와 상기 ECC데이터를 상기 EEPROM에 기록하기 위한 제어를 하는 제어수단을 포함하고,
    상기 제어수단 내에 있는 사용자데이터스택레지스터에, 외부로부터의 상기 사용자데이터를 저장하는 제1단계와, 상기 사용자데이터를 상기 CPU 내에 있는 내부레지스터에 저장하는 제2단계를 실행하며,
    상기 EEPROM에 대한 상기 사용자데이터의 기록처리로서는 가장 최초의 어드레스의 사용자데이터를 상기 제어수단내의 사용자데이터스택레지스터로부터 상기 EEPROM 내에 있는 사용자데이터레지스터에 전송하는 제3단계와, 상기 사용자데이터레지스터에 전송한 사용자데이터를 상기 제어수단으로부터 출력하는 기록어드레스에 따라 상기 EEPROM의 사용자데이터영역에 기록하는 제4단계를 실행하며,
    상기 CPU는 상기 제4단계의 실행 중에, 상기 메모리수단으로부터 ECC데이터를 생성하기 위한 프로그램을 순차 독출하고, 상기 내부 레지스터에 저장한 사용자데이터에 근거하여 ECC데이터를 생성하는 제5단계를 실행하며,
    다음의 기록어드레스에 대응하는 사용자데이터를 상기 제1단계 및 제2단계와 동일한 방식으로 상기 제어수단내의 사용자데이터스택레지스터에 저장함고 아울러, 상기 제5단계가 완료된 경우에는 상기 CPU는 생성한 ECC데이터를 상기 제어수단내에 있는 ECC데이터스택레지스터에 저장하고, 상기 제5단계가 완료되지 않은 경우에는 상기 CPU는 미리 정해진 고정치를 상기 제어수단내에 있는 ECC데이터스택레지스터에 저장하는 제6단계를 실행하며,
    다음에 상기 제어수단내에 있는 사용자데이터레지스터 및 ECC데이터스택레지스터에 저장한 데이터를 상기 EEPROM 내에 있는 사용자데이터레지스터 및 ECC데이터레지스터에 전송하는 제7단계를 실행하며,
    상기 제어수단으로부터 출력하는 사용자데이터영역과 ECC데이터영역 각각에 대한 기록어드레스와 기록제어신호에 따라, 상기 EEPROM의 사용자데이터영역과 ECC데이터영역에 기록하는 제8단계를 실행하고,
    또, 상기 제1단계로부터 제8단계를 상기 EEPROM의 모든 사용자데이터영역에 기록 종료할 때까지 실행하고,
    또, 상기 제1단계로부터 제8단계를 상기 EEPROM의 모든 사용자데이터영역에 기록 종료할 때까지 실행하며, 다음에 상기 제5단계로부터 제8단계를 반복 실행하여, 상기 EEPROM의 모든 ECC데이터영역에 대해 기록처리를 실행하고,
    독출처리에서는, 상기 제어수단으로부터 상기 EEPROM으로 출력하는 어드레스에 따라, 상기 EEPROM에서부터 동일한 어드레스의 사용자데이터와 ECC데이터를 독출하고 오류정정수단에 전송하여, 오류정정을 하여 독출하도록 구성된 것을 특징으로 하는 원칩마이크로컴퓨터.
KR1019990012535A 1998-04-09 1999-04-09 Ecc데이터를 내부적으로 생성할 수 있는 원칩마이크로컴퓨터 KR100323236B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP09728798A JP3230485B2 (ja) 1998-04-09 1998-04-09 1チップマイクロコンピュータ
JP10-097287 1998-04-09

Publications (2)

Publication Number Publication Date
KR19990083088A KR19990083088A (ko) 1999-11-25
KR100323236B1 true KR100323236B1 (ko) 2002-02-19

Family

ID=14188303

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990012535A KR100323236B1 (ko) 1998-04-09 1999-04-09 Ecc데이터를 내부적으로 생성할 수 있는 원칩마이크로컴퓨터

Country Status (4)

Country Link
US (1) US6604214B1 (ko)
JP (1) JP3230485B2 (ko)
KR (1) KR100323236B1 (ko)
DE (1) DE19916120A1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6941505B2 (en) 2000-09-12 2005-09-06 Hitachi, Ltd. Data processing system and data processing method
US7380131B1 (en) 2001-01-19 2008-05-27 Xilinx, Inc. Copy protection without non-volatile memory
US7191339B1 (en) * 2001-09-10 2007-03-13 Xilinx, Inc. System and method for using a PLD identification code
KR100645058B1 (ko) * 2004-11-03 2006-11-10 삼성전자주식회사 데이터 신뢰성을 향상시킬 수 있는 메모리 관리 기법
US7464241B2 (en) * 2004-11-22 2008-12-09 Intel Corporation Memory transaction burst operation and memory components supporting temporally multiplexed error correction coding
US20060218467A1 (en) * 2005-03-24 2006-09-28 Sibigtroth James M Memory having a portion that can be switched between use as data and use as error correction code (ECC)
US7716497B1 (en) 2005-06-14 2010-05-11 Xilinx, Inc. Bitstream protection without key storage
TWI385666B (zh) 2007-05-25 2013-02-11 Realtek Semiconductor Corp 適用於快閃記憶體之資料結構、及其資料寫入方法及資料讀取方法
US8924819B2 (en) * 2009-01-23 2014-12-30 Macronix International Co., Ltd. Memory device and operation method thereof
TWI404067B (zh) * 2009-02-27 2013-08-01 Macronix Int Co Ltd 記憶體裝置及其操作方法
KR101139187B1 (ko) * 2009-12-28 2012-04-26 (주)인디링스 버퍼 없이 에러를 검출하고 정정하는 컨트롤러 및 그 컨트롤러의 동작 방법
US8427193B1 (en) 2010-12-07 2013-04-23 Xilinx, Inc. Intellectual property core protection for integrated circuits
US8386990B1 (en) 2010-12-07 2013-02-26 Xilinx, Inc. Unique identifier derived from an intrinsic characteristic of an integrated circuit
US8418006B1 (en) 2010-12-07 2013-04-09 Xilinx, Inc. Protecting a design for an integrated circuit using a unique identifier
US9684559B1 (en) * 2014-04-25 2017-06-20 Altera Corporation Methods and apparatus for storing error correction information on a memory controller circuit
KR20170143084A (ko) 2016-06-17 2017-12-29 에스케이하이닉스 주식회사 반도체장치 및 반도체시스템
TWI680375B (zh) * 2018-08-23 2019-12-21 慧榮科技股份有限公司 具有分散式信箱架構的多處理器系統及其處理器錯誤檢查方法
KR20200092036A (ko) * 2019-01-24 2020-08-03 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01201736A (ja) 1988-02-08 1989-08-14 Mitsubishi Electric Corp マイクロコンピュータ
DE3833300A1 (de) 1988-09-30 1990-04-05 Claude Marchand Chromatographiesaeulen-abschlusseinrichtung
US5293388A (en) * 1990-11-13 1994-03-08 Hewlett-Packard Company Compression/decompress with ECC data flow architecture
JPH0729395A (ja) 1993-06-25 1995-01-31 Mitsubishi Electric Corp Eeprom装置
JPH1089217A (ja) * 1996-09-17 1998-04-07 Honda Motor Co Ltd 車両用盗難防止装置
US6026014A (en) * 1996-12-20 2000-02-15 Hitachi, Ltd. Nonvolatile semiconductor memory and read method
TW407234B (en) * 1997-03-31 2000-10-01 Hitachi Ltd Semiconductor memory device, non-volatile semiconductor memory device and data reading method thereof
US6145069A (en) * 1999-01-29 2000-11-07 Interactive Silicon, Inc. Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices

Also Published As

Publication number Publication date
JP3230485B2 (ja) 2001-11-19
DE19916120A1 (de) 1999-10-28
KR19990083088A (ko) 1999-11-25
JPH11296392A (ja) 1999-10-29
US6604214B1 (en) 2003-08-05

Similar Documents

Publication Publication Date Title
KR100323236B1 (ko) Ecc데이터를 내부적으로 생성할 수 있는 원칩마이크로컴퓨터
US6941505B2 (en) Data processing system and data processing method
KR100331139B1 (ko) 에러 위치지정 코드를 사용하여 멀티레벨 셀 메모리를 정정하는방법 및 장치
JP4417629B2 (ja) ビット変更を可能にする、フラッシュメモリにおける使用のための、改良されたエラー修正方式
JP2004095029A (ja) 不揮発性メモリおよびその書き込み処理方法
EP2201462A1 (en) Serial interface nand
JPS5855528B2 (ja) アドレス発生装置
EP0803813B1 (en) Data backup apparatus of a semiconductor memory
US7596036B2 (en) Memory control circuit, microcomputer, and data rewriting method
JP2007104708A (ja) データ処理方法
US20090063758A1 (en) Program and read method and program apparatus of nand flash memory
JPH08203292A (ja) 不揮発性メモリ
US5126972A (en) Arrangement and method of ascertaining memory addresses which have been accessed during program execution
JP3544951B2 (ja) 1チップマイクロコンピュータ
KR100634432B1 (ko) 카피백 프로그램 동작 중에 에러를 검출하는 낸드 플래시메모리 장치 및 에러 검출 방법
JP3777047B2 (ja) フラッシュメモリ装置の消去方法
JPS6142304B2 (ko)
JP3177975B2 (ja) 1チップマイクロコンピュータ
JPH08129510A (ja) メモリデータ訂正装置
US6507884B1 (en) Microcomputer with multiple memories for storing data
JP2978645B2 (ja) 半導体集積回路
JPH04233052A (ja) 二重化メモリ装置
JP3711691B2 (ja) マイクロコントローラ
CN113674794A (zh) 半导体存储装置以及错误检测纠正相关信息的读出方法
JPH01297746A (ja) メモリ診断方式

Legal Events

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

Payment date: 20060110

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee