검색결과 리스트
글
NAND FLASH_읽기,쓰기
타이밍 다이어그램 그냥 분석 ㅇㅇ
크게 CLE로 동작되는 커맨드 사이클, ALE로 동작되는 어드레스 사이클, 데이터 사이클(WE, RE)로 나뉘어진다
1. WE 신호의 상승엣지 구간시간에 낸드 플레시 읽기 1st(00h) 커맨드가 시작...... CLE가 On 되어있을때는 WE의 라이징 엣지에 버스에 걸리는 Data를 command latch로 전달해준다.
2. CLE가 low가 되고 ALE가 high 되면서 어드레스를 Column 그리고 LOW 의 순으로 팍팍 넣어준다. WE가 라이징 에지일때 낸드플래시에 Column 과 Row 어드레스가 차례대로 기록될것이다.
3. 마지막으로 커맨드 버스 사이클 CLE 가 high가 되고! 읽기 두번째 command인 30h가 똭 들어간다.
4. 읽는다.... 이때는 데이터가 대기 버퍼 큐에 준비가 되는 시간으로 보면 된다. 이때 마이크로 프로세서는 낸드 플래시의 R/B 신호를 GPIO 포트 단자로 계속 감시한다...
5. Busy 가 끝나면서 마이크로 프로세서는 RE의 Rising Edge에 맞추어서 팍팍 읽어주면 된다.....
간단하징?
1st 커맨드 사이클(CLE) => 어드레스 사이클(ALE) =>2nd 커맨드사이클(CLE) => 대기(BUSY) => 데이터 사이클 (Address) 순서이다.
이번엔 쓰기입니다
1. READ 와 똑같이 CLE로 전체 사이클을 시작하고, 기록 커맨드로 80h를 때린다.
2. CLE 가 Low 가 되고 ALE 가 high가 되면서 Column address와 Low address를 차례로 기록한다.
3. ALE 를 Low로 해주고 바로 쓸 데이터를 WE의 rising edge에 맞추어서 올려서 보내준다.
4. 쓰기의 두번째 command 인 10h를 때려주면, 그전에 쓰기 큐에 넣어났던 데이터들이 타겟 어드레스에 쭉 써지겠지. 물론 이때도 BUSY 상태가 된다. 읽기동작에 비해서 긴 WAIT가 필요하다. 이걸 tPROG 라고 하네
5. 그리고 마이크로프로세서가 Busy상태가 종료한것을 알아차리면 Read Status(70h)로 프로그램이 정상적으로 수행되었는지 확인한다. 읽어낸 상태바이트가 0이면 성공 1이면 실패를 의미한다.
1st 커맨드 사이클(CLE) => 어드레스 사이클(ALE) => 데이터 사이클 => 2nd 커맨드 사이클(CLE) => 대기(BUSY) => 3rd 커맨드사이클(CLE) => 상태비트 체크
이번엔 지우기....
근데 똑같아여
1. CLE로 전체 사이클을 시작하고 ERASE의 의미로 60h를 때려준다.
2. 그 다음은 ALE 사이클이다. 이번에는 Column address 없이 Row address 만 적어준다. 그 이유는 블럭단위로 erase가 일어나기 때문이다.
3. 커맨드 버스 사이클이 CLE 진행되어 지우기 2nd 커맨드가 기록된다.
4. 기둘기둘,.....(tBERS)
5. R/B신호를 GPIO 포트 단자로 감시하다가 종료되는걸 캐치
6. 상태비트 체크!
이런 순서대로 한다.
'Learning stuff' 카테고리의 다른 글
AMBA_Bus_transfer_1 (0) | 2013.02.26 |
---|---|
NAND FLASH_FTL (0) | 2013.02.25 |
NAND FLASH_특징 (0) | 2013.02.23 |
Flash Memory 쪽의 기본 (0) | 2013.02.23 |
H.264/AVC Prediction_3 (0) | 2013.02.15 |