NAND FLASH_읽기,쓰기

Learning stuff 2013. 2. 24. 00:03

타이밍 다이어그램 그냥 분석 ㅇㅇ

크게 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

NAND FLASH_특징

Learning stuff 2013. 2. 23. 22:55

현재 NAND FLASH로 만든게.... SSD로 팔리고 있지...... 낸드는 다 좋다. 무게도 가볍고, 저전력에다가, 부피도 작고, 빠르고, 안정성 면에서도 기존 하드디스크 보다 좋다. 하지만 치명적인 약점이 두개가 있다. 바로 신뢰성 측명 즉 DATA ENDURANCE나 Wear out 이 쉽게된다는 점이다.


NAND FLASH의 이해


낸드는 셀당 1비트의 저장공간을 가지는 SLC(Single Level Cell)형과 셀당 2비트의 저장공간을 가지는 MLC(Multi Level Cell) 형으로 나뉜다.

MLC 는 아무래도 전자를 SLC 보다 더 fine 하게 집어넣었고 읽을때도 fine 하게 읽어야 하기 때문에 당연하게 데이터 유지(신뢰성) 및 메모리 사이클링 성능이 감소되는 단점이 있다.

이러한 이유로 MLC는 반드시 ECC(Error Collecting Code)회로를 필요로 한다.

SLC는 다시 두가지로 나뉘는데, 하나가 small block 이고 나머지 하나가 large block이다. 이는 각각 페이지의 크기가 (512+16)바이트 와 (2048+64)바이트로 차이를 보인다. 별로 안중요하다....

간단히 Flash memory 의 구조에 대해서 설명하자면 다음과 같다.

이 그림은 예시일 뿐이다. 한 PAGE는 (1K + 32) Word이고 이 PAGE들 64개가 모여서 1 BLOCK이 됩니다. 그리고 이 BLOCK 64개가 모여서 한 DEVICE 를 이룬다. 

여기서 읽기와 쓰기의 그리고 지우기의 단위가 다르다. 낸드는 페이지 단위로 RANDOM READ 와 WRITE 를 하고, Block 단위로 ERASE를 해 준다. 여기서 근본적인 플레쉬의 문제와 결부되어 심각한 Performance degradation해주는게..... 플래시는 Overwrite 가 안된다. 그렇다면 어떻게 데이터를 수정하지...? 할수 없지요 지우고 다시 쓰는수 밖에... 근데 이때 한 데이터를 Overwrite를 하기 위해서는 나머지 아무런 그냥 peaceful 하게 잘 지내고있던 64개 부분을 지웠다가 다시 써야하는 현상이 발생한다. ERASE 단위가 Block 단위기 때문에 생기는 엄청난 낭비이다.

그래서 이점을 쫌 보완해주기 위해서 쓰는 기법이 FTL 계층인데, 간단하게 말하자면 물리 섹터를 논리섹터 번호와 매핑 시켜주는 매핑 테이블을 만들어준다. 그리고 어떤 데이터를 수정하려고 할때 이것을 그냥 Overwrite 하는게 아니라, 나중에 overwrite를 해주고 새롭게 update 된 값은 다른곳에 따로 저장을 해 둔다. 그리고 그 논리섹터 번호에 매핑되는 물리섹터 번호를 바꾸어 주면된다.


그리고 다음 그림은 블락 다이어그램이다.

여기서 중요한것은 동그랗게 표시해놓은 Command 부분이다. 각 부분에 대한 설명은 다음과 같다.









'Learning stuff' 카테고리의 다른 글

NAND FLASH_FTL  (0) 2013.02.25
NAND FLASH_읽기,쓰기  (0) 2013.02.24
Flash Memory 쪽의 기본  (0) 2013.02.23
H.264/AVC Prediction_3  (0) 2013.02.15
H.264/AVC Prediction_2  (0) 2013.02.15

Flash Memory 쪽의 기본

Learning stuff 2013. 2. 23. 18:05

아 잠온다....

피곤해 ㅠ

ㅋㅋㅋㅋㅋㅋㅋㅋ

NAND flash는 전통적인 disk에 비해 높은 random access speed와 low power, random read 시간이 짧다는 점에서 각광받고 있음 ㅇㅇ

NAND flash에 대한 연구는 기본적으로

1. Internal research : flash 자체를 연구를 해서 write 속도를 늘리는 데에 초점

2. external research : 주로 flash 를 memory와 disk 사이의 I/O-latency gap cache, 그렇기 때문에 caching algorithm 이 high penalty of write나 flash 의 life time 을 늘리는데 많이 관여를 하게 돠ㅣㄴ다


이것은 NAND Flash의 다음과 같은 특성때문인데....

1. Overuse 로 인해서 memory가 wear_out 이 된다. 그걸 막아주는게 wear-leveling 이다.

2. Disparity in latency : read 하는데 몇십 마이크로 세컨이 걸리는 반면 write 하는데 몇백 마이크로 세컨이 걸린다. read에 비해 write가 10에서 40배 더 걸린다. 이로 인해 발생하는 Performance degradation 해결!

3. Occupied block 에 write를 할 경우 먼저 다 copy를 한 다음 erase를 하고 modified 된 정보를 write 해 준다.

'Learning stuff' 카테고리의 다른 글

NAND FLASH_읽기,쓰기  (0) 2013.02.24
NAND FLASH_특징  (0) 2013.02.23
H.264/AVC Prediction_3  (0) 2013.02.15
H.264/AVC Prediction_2  (0) 2013.02.15
H.264/AVC Prediction_1  (0) 2013.02.15

H.264/AVC Prediction_3

Learning stuff 2013. 2. 15. 22:54

아까 하던 Prediction 계소옥

 

●Inter-prediction의 전체적인 순서

◆interpolate the picture(s) in the DPB(Decoded Picture Buffer) to generate 1/4-sample position in the luma component and 1/8-sample positions in the chroma components.

◆Choose an inter prediction mode : reference picture, block size, prediction type

◆Choose motion vector

◆Predict the motion vectors from already transmitted motion vectors : motion vector difference 생성

◆Code (the macroblock type, choice of prediction reference, motion vector difference, residual)

 

●Interpolating and divide reference pictures

◆움직임 보상 예측을 할 때 정수화소 이하의 화소정밀도 신호(1/4, 1/8-pixel resoultion)는 참조픽처의 화소값들간의 보간을 통해 생성한다.

◆inter-prediction 의 단위는 저번에도 말했다 싶이 Macroblock 이고 이것은 상황에 따라 submacro-block 으로 나뉘어 질 수 있음. 물론 이 과정은 서로 비교해보고 더 이득을 보겠다 싶은걸로 가져감

 

●Motion vector prediction

◆ 시작하기에 앞서 motion vector 가 필요한 이유에 대해서 생각해보아여. 당연한 것이지만 헤깔림..... 특히 B-frame 같은 경우 무엇을 어떻게 참조하길래 2개나 참조하는것일까? 3개는 안될까? 이런거... 여튼 다음그림

 

◆Motion vectors for neighboring partitions are often highly correlated and so each motion vector is predicted from vectors of nearby.

◆먼저 same block size 의 경우는 다음과 같이

◆16*8 일 경우 upper block 은 B에서 lower block 은 A에서

◆8*16 일 경우 left block은 A에서 right block은 C에서

 

◆B block 에서 motion vector prediction 하는 방법

▲Bipredicted motion vector prediction

-두 reference frame이 각각 past 와 future 인 경우

two vectors are predicted from neighboring motion vectors that have the same temporal direction (transmission 되는것은 prediction한것과의 차이값 각각 2개)

 

 

-두 reference frame이 둘다 past 거나 둘다 future 인 경우( 잘 모르겠음... )

one vector(from list 0) is predicted from neighboring motion vectors and the other vector(list1) is predicted from the differentail vector (transmission 되는것은 prediction 한것과(list0) 차이값 한개와 그 prediction 한거와 실제 값의 차이)

▲Direct mode motion vector prediction

- No motion vector is transmitted for B slice macro block.

- 시간 직접 예측 모드에서는 앵커픽처에서 부호화대상블록과 같은 위치에 있는 블록의 움직임 벡터를 스케일링하여 2개의 움직임 벡터를 구한다..... 말로 들으니까 뭔말인지 한개도 모르겠지?

-시간 직접예측 (temporal direct mode)는 위와 같은 방법으로 구하기 때문에 일정한 속도를 가지는 물체를 나타내는 영상에 좋다.

- 공간 직접 예측 모드에서는, list0 and list1 vectors of neighboring previously coded macroblocks or partitions in the same slice are used to caculate the list 0 and list 1 vectors of current MB or partition.

 

●Motion compensated prediction

◆One reference : 그냥 한다.......

◆Two references : biprediction

보통 두개의 motion vector 로 가져온 값의 평균값을 취한다.

◆Weighted prediction : 여기저기서 엄청 새로운것처럼 설명해놨지만, 별거 아니다. 이때까지 그랬듯이 Temporal distance 가 있을 경우 weight를 취해서 prediction 을 해준다.

▲Explicit mode : weight W0 또는 W1 그리고 차분값(offset) D를 준다

▲Implicit mode : 안준다 구해라

 

막 복잡해 보이진만 x,y 그래프 위에서 1차 extrapolation 또는 interpolation 한거임(temporal distance 만큼 떨어진 점 두개주고 한 점을 구하여라)

 

 

'Learning stuff' 카테고리의 다른 글

NAND FLASH_특징  (0) 2013.02.23
Flash Memory 쪽의 기본  (0) 2013.02.23
H.264/AVC Prediction_2  (0) 2013.02.15
H.264/AVC Prediction_1  (0) 2013.02.15
H.264/AVC intro  (2) 2013.02.14

H.264/AVC Prediction_2

Learning stuff 2013. 2. 15. 14:47

Inter-prediction

Inter-prediction is the process of predicting a block of luma and chroma samples from a picture that has previously been coded and transmitted, reference pictures.

Previously coded picture 들은 그럼 어디에 있느냐 Decoded Picture Buffer 에 있다. 그러므로 먼져 frame의 종류와 구조부터 봐야할것 같음

Frame 의 종류 : I-frame, P-frame, B-frame

◆ I-frame : Intra-frame 은 다른 이미지를 참조하지 않고, 독립적으로 해독이 가능한 독립형 프레임이다. 항상 처음 프레임은 I-frame 이 어야하고, 아마 우리가 되감기나 빨리감기할때 돌아가는 단위가 있자나..... 난 분명 45초부터 보고 싶은데 42초에서 50초 사이에는 42초 부터 밖에 실행이 안되는거.... 경험이 있을거라고 생각하다. 어쨌든 이런거나 전송된 비트스트림이 손상되었을 경우 재동기화 지점, 새로운 클라이언트가 스트리밍 시청에 참여하였을때 등등 시작점의 기능으로서 사용된다.

◆ P-frame : Predictive-frame 은 이전의 I-frame 이나 P-frame을 참조하여 부호화 하는 프레임이다.

◆ B-frame : Bi-Predictive Inter-frame은 이전의 참조프레임이나 이후의 참조프레임 2개를 모두 참조해서 부호화하는 프레임이다.

H.264 Overview 는 다음과 같다. 아... 물론 여기서는 Decoding 쪽에 초점을 두어서 ㅎㅎ

● inter-prediction 을 decoding 할때! Decoding order와 실제 Display order 가 다르다는 것이다.

◆ Decoding order : The order in which a video decoder should process the coded picture (frame_num)

◆ Display order : The order in which a video is displayed. Determined by Top_Field_Order_Count , Bottom_Field_Order_Count. (Top_Field_Order_Count + Bottom_Field_Order_Count = Picture_Order_Count)

◆Display order 에 따라서 다음과 같이 나뉘고 그에 따른 표 (Type 3 생략)

 

 

 

◆ Prediction 대상 frame 은 B 냐 P 냐에 따라서 Previously decoded picture 을 참조하게 되는데 이 참조되는 picture 들은 그 전에 list0 과 list1 로 미리 분류되어 저장되어 있다. P는 list 0 을 B 는 list0 과 list1 의 데이터를 모두 참조한다. list0 과 list1 이 나뉘어지는 기준은 다음과 같이 되어있긴한데 솔직히 먼말인지 몰갓음...... ㅠ

- List 0 defaults to prediction from the most recent 'past' picture in display order

- List 1 defaults to prediction from the nearest future picture in display order

 

 

 

'Learning stuff' 카테고리의 다른 글

Flash Memory 쪽의 기본  (0) 2013.02.23
H.264/AVC Prediction_3  (0) 2013.02.15
H.264/AVC Prediction_1  (0) 2013.02.15
H.264/AVC intro  (2) 2013.02.14
Verilog Vector and Arrays  (0) 2013.02.13

H.264/AVC Prediction_1

Learning stuff 2013. 2. 15. 01:21

Prediction을 소개하는 한 글을 보면 이런 부분이 나온다.

The reason for the widespread adoption of H.264/AVC is its compression performance and that peformance gain compared with previous version is mainly due to H.264/AVC's efficient prediction methods.

그렇다. Prediction은 중요한거시였다. 나중에 보면 알겠지만 얘들 할수있는 것들은 모조리 다 prediction 하려고 한다. 심지어 motion vector나 intra-prediction mode도 prediction으로 데이터를 줄이려고 한다. 독한놈들이다. 여튼 그래서 Prediction.

1. Intra-prediction : using data within the current frame.

2. Inter-prediction : using data which come from the previously coded frames.

두 종류에 대한것들이다

●Macro block 이란

◆16*16-pixel 의 region of the frame. Basic unit for motion compensated prediction(MPEG-1,-2,-3,-4, H.261, H.263, H.264)

◆거의 4:2:0 format 이다. 즉 256(16*16) luminance sample 들이 네개의 8*8 sample block에 있고 각각 64개의 red chrominance samples, blue chrominance samples 들이 한 8*8 sample block 에 있다.

◆3개의 macro block : I macro block, P macro block, B macro block.

◆ I macro block : predicted using intra-prediction from neighbouring samples in the current frame.

◆ P macro block : predicted from neighbouring samples in a previously-coded frame.

◆ B macro block : predicted from samples in one or two previously-coded frames.

 

●Intra prediction 이란

◆block 안이나 해당 block 과 인접한 block 들과의 correlation 이 높다는 점을 이용함

◆block size : 16*16, 8*8 , 4*4

◆당연히 block size가 작으면 more accurate, less residual data, more required bit for choice of prediction 크면 less accurate, more residual data, less required bit for choice of prediction

상황에 따라서 적절히 씀...예시는 다음과 같음

◆ 총 9개의 예측 모드가 있고 그것들은 다음과 같음

※참고로 많이 쓰는 mode 일수록 작은 숫자의 mode로 할당하였다고 함. 그래.

◆ 예를 들어 예측모드 4 같은 경우에는 다음과 같이 됨

 

◆ 중요한건 아니지만 부호화가 안된화소..... 설명하기 귀찮다 그림으로 대체

 

◆ 여기까지가 block 내에서의 prediction 이다. 그리고 block 끼리 prediction mode도 prediction 한다.

◆ current block 의 prediction mode 가 이웃한 블록의 prediction mode 와 high correlation을 가진다는 점을 이용하였다. 다음 그림과 같이.....

◆부호화의 순서는 다음과 같고 그 이유는 따라가다 보면 알게 되어있다. 예를들어 3을 prediction 하려면 2와 1이 필요하고 2와 1을 prediction하려면 1이 필요하기 때문에 저런식으로 한다.

 

◆예측모드 flag(pre_intra_pred_mode)가 1이면 예측한 값이 맞다는 의미라서 그냥 쓰고 0이면 예측한값이 실제값과 틀렸다는것을 의미하며 실제 값(9가지 mode중 예측한 1가지 값을 뺀 8가지 값)을 나타내는 예측모드 flag(rem_intra_pred_mode)를 전송하여 준다.

 

 

 

 

 

 

 

 

 

 

 

'Learning stuff' 카테고리의 다른 글

H.264/AVC Prediction_3  (0) 2013.02.15
H.264/AVC Prediction_2  (0) 2013.02.15
H.264/AVC intro  (2) 2013.02.14
Verilog Vector and Arrays  (0) 2013.02.13
verilog inout  (2) 2013.01.30

H.264/AVC intro

Learning stuff 2013. 2. 14. 22:49

H.264 란

H.264란 압축방식의 규격 이름입니다. (통칭적으로는 CODEC) MPEG(Moving Picture Experts Groups) 에서 영상 표준 압축방식을 개발했는데요 이것과 따로 ITU-T Video Coding Experts Group 에서 H.263이라는 표준 방식을 사용하고 있었어요. 근데 따로 만들다가 둘이 눈맞아서 JVT(Joint Video Team) 이라는 그룹을 형성 하여 H.264로 통일한거에요. 그래서 MPEG 에서는 MPEG4-AVC(Advanced Video Coding)으로 불리고 ITU 에서는 H.264라고 불리기 때문에 H.264/AVC로 부른답니다.

 

H.264의 장단

화질이 극찬받을만큼 좋은것은 아니지만... 그래도 저번보다는 좋겠지요

장점 : 화질 개선 알고리즘(MPEG과 같이 lossy compression방식은 화질개선 알고리즘이나 복구 알구리즘이 화질에 상당한 영향을 미침), 뛰어난 compression rate

단점 : computation complexity 가 높다 ㅠ(느려느려.... 그래서 이걸 빠르게 하기위해서 시스템 관점으로 보는게 필요한거)

 

H.264 압축방식의 포인트는 Entropy coding 을 하기에 용이한 format 으로 만드는 것입니다.

다음 그림이 매우매우 중요함!

 

위에 그림을 보면 흐미......

Encoder 가 크고 Decoder 은 사실 Encoder 의 한 부분인것을 알 수 있다.

 

대략적인 과정은 다음과 같다

1. Inter-prediction(Motion Estimation, 서로 다른 프레임 간) 을 해본다 : Motion Vector가 생김

2. Intra-prediction(같은 프레임 안에서) 을 해본다 : Prediction Mode가 생김

3. 두개중 어느것이 나은지 비교해본다 (두개의 residual 을 비교해 본다 : ( <원본 - Motion compensation> vs <원본 - Intra prediction으로 생긴> )

4. 나은거 중에서 선택을하여 Transform, Quatizer, Reorder을 해준다

5. Entropy coding 을 한다.(압축을 한다)

사실 1부터 4까지의 과정은 압축하기 용이한 형태로 만들어주는 과정이라고 할 수 있다.

1) Prediction : 원본 파일과 prediction 을 한 파일의 차이값만 전송한다 : 숫자가 작아진다. 사실 그거보다 더 중요한것은 high frequency info가 줄어든다. 왜냐하면 residual이 생긴걸 보면 삐쭊뺴쭊이 아니라 밋밋한 정보거든

2) Transform : 이 밋밋한 정보를 가지고 transform을 하면 당연히 정보들이 한쪽으로(low frequency) 모이겠지 그러면 0이 모여서 압축하기 좋은 형태가 된다나

3) Quantizer : 애매한 값들을 ROUND 시키는거 (이건 잘 모르겠음 추후에 더 추가)

4)Reorder : low frequency 쪽으로 모인 정보들을 더 모아주는 과정, 0이 연속되어 있으면 압축이 잘되기 때문에 2D 에서 완전히 low frequency => high frequency 순서로 정보를 모아준다.

이 네 과정을 통해서 압축하기 좋게 만들어 주는 것이다.

사실 이 하나하나가 만만치 않은 과정이다. 그러나 대충보면 이러하다는 것이다

 

'Learning stuff' 카테고리의 다른 글

H.264/AVC Prediction_2  (0) 2013.02.15
H.264/AVC Prediction_1  (0) 2013.02.15
Verilog Vector and Arrays  (0) 2013.02.13
verilog inout  (2) 2013.01.30
SRAM timing diagram  (0) 2013.01.30

Verilog Vector and Arrays

Learning stuff 2013. 2. 13. 13:58

오늘 누가 물었는데 갑자기 생각하니까 헷깔리더라고

 

- Arrays, Vectors and Memories

Verilog supports three similar data structure : Arrays, Vectors, Memories.

Arrays : objects of same type.

Vectors : represent multi-bit busses

Memories : array of vector reg

 

 

 

 

'Learning stuff' 카테고리의 다른 글

H.264/AVC Prediction_1  (0) 2013.02.15
H.264/AVC intro  (2) 2013.02.14
verilog inout  (2) 2013.01.30
SRAM timing diagram  (0) 2013.01.30
SIMD  (0) 2013.01.29

verilog inout

Learning stuff 2013. 1. 30. 23:35

inout are actually "wire" so we can't use any procedural assignments. we need to use continuous

assignments.

inout a,b;
input wire enable;

wire a_out, b_out;
wire a_in, b_in;

//output assignment of inout port
assign a = (enable) ? a_out : 1'bz;
assign b = (enable) ? b_out : 1'bz;

//input assignment of inout port
assign a_in = (enable) ? a : 1'bz;
assign b_in = (enable) ? b : 1'bz;

 

'Learning stuff' 카테고리의 다른 글

H.264/AVC intro  (2) 2013.02.14
Verilog Vector and Arrays  (0) 2013.02.13
SRAM timing diagram  (0) 2013.01.30
SIMD  (0) 2013.01.29
verilog $setup, $hold, $width  (0) 2013.01.29

SRAM timing diagram

Learning stuff 2013. 1. 30. 00:47

메모리에서 가장 간단한 SRAM 부터 시작욥

 

SRAM 의 Timing diagram 은 아주 간단한 편이다.

Here, I will ignore the setup time for address and data.

 

For write, we should set up the address and data on the A , D. And then we should generate the writing pulse which is long enough for the write access time.

For read, we should disassert the writing operation (W) and we should assert reading operation. Once we assert read operation, the memory start to give some data. But until we give the right address that we want to access, memory would give garbage data. If we present the specific address that we want to access, valid data will be available at the output after a delay of the Write Access Time Also after we change the address, data bus maintain the data during Output hold time.

 

 

 

 

 

 

 

 

'Learning stuff' 카테고리의 다른 글

Verilog Vector and Arrays  (0) 2013.02.13
verilog inout  (2) 2013.01.30
SIMD  (0) 2013.01.29
verilog $setup, $hold, $width  (0) 2013.01.29
Cache Optimization  (0) 2013.01.25