상기 목적을 달성하기 위한 본 발명에 따른 인터페이스 장치는, 호스트 프로세서와 낸드 플래시 메모리간을 인터페이싱하며, 상기 호스트 프로세서로부터 상기 낸드 플래시 메모리의 동작을 제어하기 위한 코맨드, 및 상기 코맨드의 동작 수행에 필요한 동작정보를 수령하여 저장하는 레지스터 화일; 상기 호스트 프로세서로부터 상기 낸드 플래시 메모리에 저장할 호스트 데이터를 수령하여 저장하고, 상기 낸드 플래시 메모리로부터 인출되어 상기 호스트 프로세서로 전송될 플래시 데이터를 저장하는 내부메모리; 상기 낸드 플래시 메모리를 동작시키기 위한 제어신호를 제어하고, 상기 코맨드, 상기 동작정보, 및 상기 호스트 데이터 중 어느 하나가 출력되고, 및 상기 플래시데이터가 입력되는 I/O 신호선을 제어하는 플래시 인터페이스부; 및 상기 레지스터 화일로부터 상기 코맨드 및 상기 동작정보를 인출하여, 상기 코맨드에 따른 동작이 수행되도록 상기 내부메모리와, 상기 플래시 인터페이스부를 제어하는 스테이트머신;을 포함한다.
상기 코맨드는, READ 코맨드, WRITE 코맨드, ERASE 코맨드, INVALID CHECK 코맨드, WRITE INVLIAD 코맨드 중 어느 하나이다. 상기 동작정보는, 상기 낸드 플래시 메모리에서 상기 코맨드에 따른 동작이 수행될 영역의 시작 어드레스를 포함하는 것이 바람직하다.
상기 제어신호는, ALE 신호, CLE 신호, CE 신호, RE 신호, WE 신호;를 포함하며, 상기 내부메모리는, 상기 호스트데이터 및 상기 플래시데이터가 저장되는 버퍼; 및 시스템을 부팅시키기 위한 부팅코드가 저장된 부팅 메모리;를 포함하도록 구성하는 것이 바람직하다. 또한, 상기 내부메모리는, 상기 호스트 데이터 및 상기 플래시 데이터가 입출력되는 경우 오류정정코드를 발생시켜 오류를 검출하는 ECC 체커;를 더 포함하도록 구성하는 것도 가능하다.
상기 레지스터 화일에는, 상기 시작 어드레스가 저장되는 어드레스 레지스터, 상기 코맨드가 저장되는 코맨드 레지스터, 상기 코맨드의 동작상태, 및 상기 코맨드의 동작수행 결과중 적어도 어느 하나의 정보가 저장되는 상태 레지스터가 마련되는 것이 바람직하다.
한편, 본 발명에 따른 호스트 프로세서와, 제어선 및 I/O 신호선을 구비한 낸드 플래시 메모리간의 인터페이스 방법은, 상기 호스트 프로세서로부터 상기 플래시 메모리의 동작을 제어하기 위한 코맨드, 및 상기 코맨드의 동작 수행에 필요한 동작정보를 수령하는 단계; 수령한 상기 코맨드, 및 상기 동작정보를 해독하는 단계; 및 해독한 상기 코맨드에 따른 동작이 수행되도록 상기 제어선, 및 상기 I/O 신호선을 제어하는 단계;를 포함한다. 이때, 상기 제어단계는, 상기 낸드 플래시 메모리에 데이터가 입출력되는 경우 오류정정코드를 발생시켜 오류를 검출하는 단계를 포함한다.
상기 코맨드는, READ 코맨드, WRITE 코맨드, ERASE 코맨드, INVALID CHECK 코맨드, WRITE INVLIAD 코맨드 중 어느 하나이다. 상기 동작정보는, 상기 낸드 플래시 메모리에서의 상기 코맨드에 따른 동작이 수행되는 영역의 시작 어드레스를 포함한다. 상기 제어신호는, ALE 신호, CLE 신호, CE 신호, RE 신호, WE 신호;를 포함하는 것이 바람직하다.
이하에서는 도면을 참조하여 본 발명을 보다 상세하게 설명한다.
도 2는 본 발명에 따른 인터페이스 장치와, 호스트 프로세서 및 낸드 플래시 메모리간의 접속을 나타낸 블럭도이다.
블럭도에 도시한 바와 같이, 인터페이스 장치(20)는 호스트 프로세서(10)와 낸드 플래시 메모리(30)사이에 위치한다.
호스트 프로세서(10)는 복수의 제어선, 복수의 어드레스(ADDR) 신호선, 및 복수의 데이터(DATA) 신호선을 구비하고 있다. 인터페이스 장치(20)는 복수의 제어선, 복수의 데이터(DATA) 신호선, 및 I/O 0 ~ I/O 7 의 8비트로 구성된 I/O (Data Input/Outputs) 신호선을 구비한다. 낸드 플래시 메모리(30)는 복수의 제어선과, I/O 0 ~ I/O 7 의 8비트로 구성된 I/O 신호선을 구비하고 있다.
호스트 프로세서(10)의 CE(Chip Enbale), RE(Read Enable), WE(Write Enable) 제어선은 대응하는 인터페이스 장치(20)의 제어선에 연결되고, 호스트 프로세서(10)의 어드레스 신호선 및 데이터 신호선은 인터페이스 장치(20)의 어드레스 신호선과 데이터 신호선에 각각 접속된다.
인터페이스 장치(20)에서 출력되는 ALE(Address Latch), CLE(Command Latch Enable), CE(Chip Enbale), RE(Read Enable), WE(Write Enable) 제어선은 대응되는 낸드 플래시 메모리(30)의 제어선에 접속된다. 인터페이스 장치(20)의 I/O 신호선은 낸드 플래시 메모리(30)의 I/O 신호선과 접속되며, 낸드 플래시 메모리(30)로부터 출력되는 R/B(Ready/Busy output) 제어선은 인터페이스 장치(20)의 대응하는 제어선에 접속된다.
이러한 접속상태에서, 호스트 프로세서(10)는 낸드 플래시의 동작제어를 위한 코맨드와 코맨드의 동작 수행에 필요한 동작정보를 인터페이스 장치(20)에 전달한다. 코맨드 수행에 필요한 동작정보는, 읽기동작의 경우에는 낸드 플래시 메모리(30)에서 데이터를 인출한 영역의 어드레스, 쓰기동작의 경우에는 낸드 플래시 메모리(30)에서 데이터를 저장할 영역의 어드레스 및 저장할 데이트 등을 포함한다. 호스트 프로세서(10)로부터 코맨드 등을 전달받은 인터페이스 장치(20)는 해당 코맨드에 따른 동작이 수행되도록 낸드 플래시 메모리(30)를 제어한다.
예컨대, 인터페이스 장치(20)가 호스트 프로세서(10)로부터 READ 코맨드를 받은 경우, 인터페이스 장치(20)는 CLE 제어선을 하이(high)로 하고 I/O 신호선을 통해 READ 코맨드를 낸드 플래시 메모리(30)에 전송한다. 코맨드 전송후, 인터페이스 장치(20)는 ALE 신호를 하이로 하고 I/O 신호선을 통해 어드레스를 낸드 플래시 메모리(30)에 전송한다. 코맨드와 어드레스를 전송받은 낸드 플래시 메모리(30)는 내부의 메모리 셀(Memory Cell)로부터 내부 입출력 버퍼로 데이터를 이동한다. 이때 R/B 신호가 로우(low)로 되어 BUSY 상태임을 표시한다. 낸드 플래시 메모리(30)내에서 동작이 완료되면 R/B 신호가 하이로 되고, 내부 입출력 버퍼에 저장된 데이터는 I/O 신호선을 통해 인터페이스 장치(20)에 전달된다. 인터페이스 장치(20)는 전달받은 데이터를 데이터 신호선을 통해서 호스트 프로세서(10)에 전달한다.
인터페이스 장치(20)가 호스트 프로세서(10)로부터 WRITE 코맨드를 받은 경우, 코맨드와 어드레스의 전달은 READ 코맨드를 받은 경우와 동일한 순서로 진행된다. 즉, 인터페이스 장치(20)는 CLE 제어선을 하이(high)로 하고 I/O 신호선을 통해 WRITE 코맨드를 출력하고, ALE 신호를 하이로 하고 I/O 신호선을 통해 어드레스를 출력한다. 어드레스 츨력후에는 데이터를 순차적으로 입력한다.
데이터의 입력 후 다시 코맨드를 전송한다. WRITE 코맨드의 경우, 2번의 코맨드가 입력되는데, 처음 코맨드는 낸드 플래시 메모리(30)내의 내부 버퍼에 데이터를 입력하라는 코맨드이고, 두번째 코맨드는 내부 버퍼로 부터 메모리셀로 데이터가 전송되도록 하는 코맨드이다. READ 코맨드의 경우처럼, 동작이 완료되면 R/B 신호가 하이로 된다. 인터페이스 장치(20)는 I/O 신호선을 확인하여 동작이 제대로 수행되었는지 체크한다. 이 정보는 인터페이스 장치(20)내에 저장되고, 호스트 프로세서 (10)는 이를 참조하여 동작 수행 결과를 알 수 있게 된다.
도 3은 도 2의 인터페이스 장치(20)를 보다 상세하게 나타낸 블럭도이다. 인터페이스 장치(20)는 레지스터 화일(22), 스테이트 머신(24), 내부메모리(26), 및 플래시 인터페이스부(28)를 구비한다.
레지스터 화일(Register File)(22)은 호스트 프로세서(10)로부터 코맨드와, 코맨드의 동작 수행에 필요한 동작정보를 수령하여 저장한다. 레지스터 화일(22) 내에는 코맨드 레지스터(Command Register), 어드레스 레지스터(Address Register)가 마련되어 있다. 호스트 프로세서(10)로부터 전달된 코맨드와, 어드레스는 각각 코맨드 레지스터와 어드레스 레지스터에 저장된다.
레지스터화일(22)내에는 상태 레지스터(Status Register)도 마련되어 있다. 상태 레지스터는 현재 실행중인 코맨드의 동작상태, 코맨드 동작수행후의 결과 등이 저장된다. 호스트 프로세서(10)는 상태 레지스터를 참조하여 코맨드 수행결과를 알 수 있게 된다.
스테이드머신(Finite State Machine)(24)는 호스트 프로세서(10)로부터 전달되어 레지스터 화일(22)에 저장된 코맨드를 인출하여, 해당 코맨드에 따른 동작이 수행되도록 내부 메모리(26)와 플래시 인터페이스부(28) 등 인터페이스 장치(20) 내의 전반적인 동작을 제어한다.
스테이트머신(24)은 인출한 코맨드에 따른 제어를 시작하는 경우, 실행시작신호를 레지스터 화일(22)로 출력하고, 코맨드의 실행에 따른 동작상태도 레지스터화일(22)에 저장한다. 스테이트머신(24)은 해당 코맨드에 대한 동작을 완료한 후, 그 동작결과를 체크하여 레지스터 화일(22)내의 상태 레지스터에 실행결과값을 써서, 호스트 프로세서(10)가 참조할 수 있도록 한다.
내부메모리(Internal Memory)(26)는 부팅(Booting) SRAM과, 버퍼, 및 ECC 체커로 구성된다. 버퍼는 총 4개가 있으며, 자유롭게 읽고 쓰기가 가능하다. 버퍼는 일정한 크기의 페이지로 구획되며, 각 페이지에는 예비영역이 있어서, ECC를 위한 바이트와, Invalid/Valid 블럭 마킹을 위한 바이트가 할당된다.
내부메모리(26)의 버퍼는 호스트 프로세서(10)로 부터 낸드 플래시 메모리(30)에 전송하는 데이터 및 낸드 플래시 메모리(30)로부터 인출되는 데이터를 저장한다. 내부메모리(26)의 ECC 체크는 내부 메모리(26)에 데이터가 저장되는 경우, ECC 등의 오류정정코드를 발생하여, 오류를 검출한다. 오류검출결과는 레지스터 화일(22)에 전송하여 저장된다. 호스트 프로세서(10)는 레지스터화일(22)을 참조하여 오류검출결과를 알 수 있다.
플래시 인터페이스부(Flash Interface)(28)는 스테이트머신(24)의 제어에 따라 낸드 플래시 메모리(30)의 인터페이스 규격에 맞는 ALE, CLE, CE, OE, WE 등 제어신호 및 I/O 신호선을 제어하고, 낸드 플래시 메모리(30)로 부터 R/B 제어신호를 입력받는다. I/O 신호선을 통해서는 코맨드, 코맨드의 동작수행에 필요한 동작정보, 호스트 프로세서(10)로부터 낸드 플래시 메모리(30)에 저장될 데이터 등이 출력된다. 또한, I/O 신호선에는 플래시 메모리(30)에서 인출되는 데이터가 입력되는데, 이 데이터는 내부메모리(26)에 저장된다. 만약, 낸드 플래시 메모리(30)의 인터페이스 규격이 바뀌는 경우에는, 인터페이스 장치(20)내에서 플래시 메모리 인터페이스부(28)만 수정하는 것으로 가능하다.
표 1은 인터페이스 장치(20)의 핀 구성을 나타낸다. 표 1 에서 방향은 신호의 흐름방향을 나타낸다. 즉 I는 인터페이스 장치(20)가 신호를 입력받는 입력핀, O는 인터페이스 장치(20)에서 신호를 출력되는 출력핀, I/O는 인터페이스 장치(20)가 신호를 받거나 신호를 출력하는 입출력핀을 나타낸다.
핀 이름 |
방향 |
설명 |
기타 |
CLOCK |
I |
인터페이스 장치 동작 Clock |
|
RESET |
I |
External Reset |
|
ADDR[15:0] |
I |
호스트 어드레스 |
|
HOST_DATA[31:0] |
I/O |
호스트 데이터 |
|
CS |
I |
Chip Select |
Low Active |
OE |
I |
Output Enable |
WE |
I |
Write Enable |
FLASH_ALE |
O |
Address Latch Enable |
|
FLASH_CLE |
O |
Command Latch Enable |
|
FLASH_CE |
O |
Chip Enable |
|
FLASH_RE |
O |
Read Enable |
|
FLASH_WE |
O |
Write Enable |
|
FLASH_BUSY |
I |
READY/BUSY |
Low Active |
IO_DATA[7:0] |
I/O |
I/O Data |
|
DATA_WIDTH |
I |
Data Width |
|
FLASH_DATA_WIDTH |
I |
Flash Data Width |
|
ASIC_BUSY |
O |
Busy Signal |
|
표 1에서 ADDR[15:0] 핀에는 호스트 프로세서(10)의 어드레스 신호선이 접속되고, HOST_DATA[31:0] 핀에는 호스트 프로세서(10)의 데이터 신호선이 접속된다. CS 핀, OE 핀, WE 핀에는 호스트 프로세서(10)의 CE, OE, WE 제어선이 각각 접속된다.
출력핀인 FLASH_ALE 핀, FLASH_CLE 핀, FLASH_CE 핀, FLASH_RE 핀, FLASH_WE 핀에는 각각 플래시 메모리(30)의 ALE, CLE, CE, RE, WE 제어선이 접속되고, FLASH_BUSY 핀에는 R/B 제어선이 접속된다. 그리고 CLOCK 핀에는 동작을 위한 클럭신호가 입력되고, RESET 핀에는 외부에서 리셋신호가 입력된다.
DATA_WIDTH 핀에는 데이터 폭 구성신호가 입력되며, 입력되는 신호에 따라인터페이스 장치(20)가 처리하는 데이터 폭을 변화시킨다. FLASH-DATA_WIDTH 핀은 16비트나 그 이상의 데이터 폭을 가지는 낸드 플래시 메모리(30)를 위해 예약된 핀이다. 그리고, ASIC_BUSY 핀은 인터페이스 장치(20)가 BUSY 상태인지 여부를 나타내는 신호를 출력하는 핀이다.
표 2와 표 3은 인터페이스 장치(20)내의 메모리 맵을 나타낸다. 표 2는 16 비트 인터페이스의 경우이고, 표 3은 32 비트 인터페이스의 경우이다. 데이터 폭의 변화는 DATA_WIDTH 핀에 입력되는 데이터폭 구성신호에 의해 변화된다. 즉 DATA_WIDTH 핀에 로우 신호가 입력되면, 16 비트 인터페이스가 되고, 하이 신호가 입력되면 32 비트 인터페이스가 되도록 구성할 수 있다.
범위 |
이름 |
내용 |
0x0000 ~ 0x1fff |
Boot ROM |
부트 로더 |
0x8000 ~ 0x810f |
Read Buffer |
Read Buffer 0 |
낸드 플래시로부터 데이터를 읽을때 사용되는 528 바이트 버퍼 |
0x8200 ~ 0x830f |
Read Buffer 1 |
낸드 플래시로부터 데이터를 읽을때 사용되는 528 바이트 버퍼 |
0x8400 ~ 0x850f |
Write Buffer |
Write Buffer 0 |
낸드 플래시에 데이터를 쓸때 사용되는 528 바이트 임시 버퍼 |
0x8600 ~ 0x870f |
Write Buffer 1 |
낸드 플래시에 데이터를 쓸때 사용되는 528 바이트의 임시 버퍼 |
0xc000 ~ 0xc01f |
Register File |
레지스터 화일 |
범위 |
이름 |
내용 |
0x0000 ~ 0x0fff |
Boot ROM |
부트 로더 |
0x8000 ~ 0x8083 |
Read Buffer |
Read Buffer 0 |
낸드 플래시로부터 데이터를 읽을때 사용되는 528 바이트 버퍼 |
0x8200 ~ 0x8183 |
Read Buffer 1 |
낸드 플래시로부터 데이터를 읽을때 사용되는 528 바이트 버퍼 |
0x8400 ~ 0x8283 |
Write Buffer |
Write Buffer 0 |
낸드 플래시에 데이터를 쓸때 사용되는 528 바이트 임시 버퍼 |
0x8600 ~ 0x8383 |
Write Buffer 1 |
낸드 플래시플래시터를 쓸때 사용되는 528 바이트의 임시 버퍼 |
0xc000 ~ 0xc00f |
Register File |
레지스터 화일 |
도 4a 내지 도 4f는 인터페이스 장치(20)에서 동작과정을 나타낸 흐름도이다.
도 4a 에서, 인터페이스 장치(20)의 RESET 핀으로 외부에서 리셋(RESET) 신호가 입력된다(S40). 리셋 신호가 입력되면 레지스터 화일(22)과 스테이트머신(24)의 내부상태가 초기화된다(S42). 초기화 과정이 끝난 후, 인터페이스 장치(20)은 호스트 프로세서로(10)부터 코맨드를 입력 받는다(S44). 인터페이스 장치(20)은 입력되는 코맨드의 종류에 따라 낸드 플래시 메모리(30)의 동작을 제어한다.
도 4b는 READ 코맨드의 경우로서, 먼저 I/O 신호선를 통해서 '00h' 값을 출력한다(S56). READ 코맨드는 낸드 플래시 메모리(30)에 저장된 데이터를 인출하는 코맨드이며, '00h' 값은 낸드 플래시 메모리(30)에서 READ 동작을 수행하도록 정의된 값이다. '00h' 출력후에는, 인터페이스 장치(20)는 낸드 플래시 메모리(30)에서 데이터를 인출하고자 하는 영역의 시작 어드레스를 I/O 신호선을 출력한다(S58). 일반적으로 낸드 플래시 메모리(30)의 크기는 수십 Mbyte 이상이므로 어드레스 비트수가 20개 이상 필요하지만, I/O 신호선은 8 비트이므로, 어드레스는 순차적으로 3회 이상 입력되어야 한다.
어드레스가 입력되면, 인터페이스 장치(20)는 R/B = 1 인지 여부를 검사한다(S59). R/B = 1 이면 낸드 플래시 메모리(30)의 내부 동작이 완료된 것이고, 이에 따라 인터페이스 장치(20)는 낸드 플래시 메모리(30)의 해당 영역으로부터 순차적으로 출력되는 데이트를 읽는다(S60). 낸드 플래시 메모리(30)에서 출력되는 데이터는 내부메모리(26)에 저장된다. 이때, ECC(Error Correction Code)가 발생하며(S62), ECC를 검사하여 오류 여부를 판단한다(S64). 판단 결과 오류가 발생하였으면, 실행결과값(RESULT)을 ECC ERROR 로 하고(S68), 오류가 없으면 실행결과값을 OK 로 한다(S66).
코맨드의 처리가 끝나면, 도 4g에 나타낸 바와 같이, 인터페이스 장치(20)는 실행결과값을 받아 들이고(S138), 상태 레지스터에 실행결과값을 쓴다(S140). 이러한 과정에 의해 READ 코맨드의 수행이 완료된다.
도 4c는 WRITE 코맨드의 경우로서, 낸드 플래시 메모리(30)에 데이터를 저장하는 코맨드이다. 이 코맨드의 경우, 먼저 '80h'를 출력한다(S70). 이후, READ 코맨드의 경우처럼 어드레스를 출력하고(S72). 데이터를 출력한다(S74). 이후 다시 '10h' 를 출력한다(S76). 앞서 설명한 바와 같이, WRITE 코맨드의 경우, 두번의 코맨드가 출력된다. 코맨드 출력후, 상태 레지스터의 값을 읽는다(S78). I/O 신호선의 I/O 6 = 1 이거나, R/B = 1 이면 내부 동작이 완료된 것이고, 그렇지 않으면 내부 동작중이므로 동작이 완료되기를 기다린다(S80). 이러한 신호선의 값들은 상태레지스터에 저장되므로, 저장된 상태레지스터의 값을 참조하여 알 수 있다.
내부동작이 완료되었으면, I/O 신호선의 I/O 0 = 0 인지 판단한다(S82). WRITE 코맨드가 성공적으로 수행되었으면, I/O 0 = 0 이 되고, 수행과정에 오류가 있었으며, I/O 0 = 1 이 출력된다. 이에 의해 코맨드 처리과정에서 오류가 있었는지 알 수 있다. 오류가 발생하였으면, 실행결과값(RESULT)을 WRITE ERROR 로 하고(S86), 오류가 없으면 실행결과값을 OK 로 한다(S84). 이후의 과정은 READ 코맨드의 처리과정과 동일하다(S138, S140).
도 4d는 ERASE 코맨드의 경우로서, 해당 영역에 저장된 데이터를 삭제하는 명령이다. 이 경우, 인터페이스 장치(20)는 먼저 '60h'를 출력한다(S88). 이후, 어드레스를 출력하고(S90), 'D0h' 를 출력한다(S92). 코맨드 출력후, 상태 레지스터의 값을 읽는다(S94). I/O 신호선의 I/O 6 = 1 이거나 R/B = 1 이면 내부 동작이 완료된 것이고, 그렇지 않으면 내부 동작중이므로 동작이 완료되기를 기다린다(S96). 이후, WRITE 코맨드의 처리과정에서 처럼, I/O 0 = 0 인지 판단한다(S98). I/O 0 = 0 이면, 오류없이 코맨드가 수행된 것이므로 실행결과값을 OK 로 한다(S100). 그렇지 않으면, ERASE 코맨드 수행과정중에 오류가 발생한 것이므로, 실행결과값 (RESULT)을 ERASE ERROR 로 한다(S102). 이후의 과정은 READ 코맨드의 처리과정과 동일하다(S138, S140)
도 4e는 코맨드가 INVALID CHECK 인 경우로서, 먼저 '50h'를 출력한다(S104). INVALID CHECK 코맨드는 하나 이상의 비트가 불량이어서 신뢰성을 갖지 못하는 인베리드 블럭(Invalid Block)을 검색하는 코맨드이다. '50h' 출력후, 체크하고자 하는 블럭의 어드레스를 출력하고(S106), R/B = 1 인지 여부를 검사한다(S107). R/B = 1 이면, 데이터를 읽어서(S108), 예비영역(Spare area)의 6번째 바이트가 'FFh'인지 검사한다(S110, S112). 낸드 플래시 메모리(30)는 각 페이지마다 몇개의 바이트가 예비영역으로 설정되어 있는데, 인베리드 블럭에 대한 정보는 이 예비영역의 6번째 바이트에 저장된다. 예비영역의 6번째 바이트의 값이 'FFh' 인 경우에는 해당 블럭에는 불량인 비트가 없는 것으로, 실행결과값을 VALID 로 한다(S114). 그렇지 않은 경우에는, 실행결과값을 INVALID 로 한다(S116). 이후의 과정은 READ 코맨드의 처리과정과 동일하다(S138, S140)
도 4f는 코맨드가 WRITE INVALID 인 경우로서, 먼저 '50h' 를 출력하고, '80h'를 출력한다(S118, S120). WRITE INVALID 코맨드는 인베리드 블럭 정보를 쓰는 코맨드이다. '80h' 출력후에, 예비영역의 6번째 바이트 데이터에 인베리드 블럭 정보에 해당하는 값을 쓰고, '10h'를 출력한다(S124, S126). 이후, 상태 레지스터 값을 읽는다(S128). I/O 신호선의 I/O 6 = 1 이거나 R/B = 1 이면 내부 동작이 완료된 것이고, 그렇지 않으면 내부 동작중이므로 동작이 완료되기를 기다린다(S130). 내부동작이 완료되었으면, I/O 0 = 0 인지 판단한다(S132). I/O 0 = 0 이면 결과값을 OK로 한다(S134). 그렇지 않으면, 결과값을 WRITE ERROR로 한다(S136). 이후의 과정은 READ 코맨드의 처리과정과 동일하다(S138, S140).
도 5a 내지 5c는 호스트 프로세서(10)에서 인터페이스 장치(20)의 구동방법의 예를 나타낸 흐름도이다.
도 5a는 ERASE 코맨드의 경우이다. 이 경우에는, 먼저 ERASE 코맨드를 쓰고(S200), 상태를 읽어서, BUSY 여부를 체크한다(S202, S204). 상태가 BUSY인지여부는 낸드 플래시 메모리(30)에서 출력되는 R/B 제어신호를 인터페이스 장치(20)가 받아들여, 레지스터 화일(22)내에 기록하면, 호스트 프로세서(10)는 이를 참조하여 알 수 있다. 이러한 방법외에, 하드웨어적으로 ASCI_BUSY 핀의 신호를 체크하여, BUSY 상태가 끝나면 호스트 프로세서(10)에 인터럽트를 거는 방법으로 구현하는 것도 가능하다. BUSY 상태인 경우에는 대기한다(S204, S202). BUSY 상태가 끝나면, 계속 코맨드를 출력할 것인지 판단한다(S206). 출력할 코맨드가 있으면, 상기의 과정을 반복하고, 출력할 코맨드가 없으면 종료한다.
도 5b 는 WRITE 코맨드의 경우이다. 이 경우에는 데이트를 쓰고(S210), WRITE 코맨드를 출력한다(S212). 코맨드를 쓰고 나서는 상태를 읽어서, BUSY 여부를 체크한다(S202, S204). BUSY 상태인 경우에는 대기한다(S216, S214). BUSY 상태가 끝나면, 계속 코맨드를 출력할 것인지 판단한다(S218). 출력할 코맨드가 있으면, 상기의 과정을 반복하고, 출력할 코맨드가 없으면 종료한다.
도 5c 는 READ 코맨드의 경우이다. 이 경우에는우 코맨드를 쓰고(S220), 상태를 읽어서, BUSY 여부를 체크한다(S222, S224). BUSY 상태인 경우 대기하고(S224, S222), BUSY 상태가 끝나면, 데이터를 읽는다(S226). 출력할 코맨드가 있으면 상기의 과정을 반복하고, 그렇지 않으면 종료한다
이러한 과정에 의해, 호스트 프로세서(10)는 인터페이스 장치(20)에 코맨드를 전달한다.