라이킷 3 댓글 공유 작가의 글을 SNS에 공유해보세요

You can make anything
by writing

C.S.Lewis

Ch3-5. 타이밍 다이어그램

by 이경종 Mar 21. 2020

이미 우리는 디지탈 신호 및 파형, 그리고 클락(clock)에 대해 살펴보았다.

이제 이 기반지식들을 가지고 타이밍 다이어그램(Timing Diagram)을 공부해보자!


타이밍 다이어그램이란 각 신호들이 시간별로 처리되는 과정을 그림으로 나타낸 것으로 이해하면 되겠다.

아래 그림을 살펴보자.

브런치 글 이미지 1


이전에 살펴본 그림과 비슷한 모양이다. 클락(clk)은 주기적으로 움직이고 클락에 맞춰서 데이터(D) 파형이 바뀜으로써 데이터를 읽거나 쓰는 동작이 가능해진다. 여기서 중요한 개념은 파형의 높낮이(High / Low)와 시간값이 정해진 바대로 움직여야 유효한 데이터가 나온다는 것이다.


위 그림이 클락이 High로 갈때 D(데이터)를 읽는 다이어그램이라고 생각해보자.

그럼 t=0에서부터 t=6까지 데이터값은 다음과 같게 된다.

브런치 글 이미지 2

                                       D값         0         1          1       0         0        1         1


실제 파형의 움직임은 위 그림처럼 직각으로 떨어지지 않는다. 전기신호가 물리적으로 변동되는데 시간이 걸리므로 실제 타이밍 다이어그램은 아래 그림과 같은 형태로 나타나게 된다.

브런치 글 이미지 3

파형이 High <--> Low로 이동하는 시간값은 해당기기와 통신라인에 따라 다르고, 정확한 값들은 기기의 데이터시트에 정의되어 있다. 소프트웨어 개발하면서 그렇게 중요한 사항은 아니니, 인터넷에 있는 복잡한 그림들을 미리  볼 필요는 없다. 진짜 일을 하다가 꼭 필요하면 해당 기기의 데이터시트를 꼼꼼히 보면 누구나 이해할 수 있는 것들이다.


위 그림에서 파형이 High/Low로 정해져있지 않고, 교차형태를 취하고 있는데, 이는 High/Low 둘중 하나의 값을 가질수 있다는 표현이다. 아래 그림으로 설명하겠다.

브런치 글 이미지 4

빗금이나 교차 형태를 취하고 있는 것은 Low가 High 둘 중 하나의 상태(Valid High, Valid Low)를 가질 수 있다는 것이고, Transition Low 구간은 해당 구간에서 어디서든 High에서 Low로 떨어질 수 있다는 것이다. Transition High도 마찬가지다. 이전에 설명한 바 있는데, High도 Low도 아닌 어정쩡한 상태를 Floating이라고 하며, Tri-state 또는 Hi-Z(하이 임피던스)라고 한다. High, Low가 유효한 경우, valid high, valid low라고 하기도 하고 active high, active low라는 용어를 쓰기도 한다.


한가지 더 High에서 Low로 떨어지는 구간을 falling-edge, Low에서 High로 올라가는 구간을 rising-edge라고 한다. 이 용어들은 임베디드 소프트웨어 개발을 하면서 무지하게 많이 접할 것들이므로 미리 친숙해지는 게 좋다.

브런치 글 이미지 5


실제 데이터시트에 나와 있는 타이밍 다이어그램은 그렇게 단순하지 않다. 아래 그림을 보자. 

브런치 글 이미지 6

특정 NAND 플래쉬 메모리에서 상태(Status)를 읽는 명령을 표현한 타이밍 다이어그램이다. 그림이 복잡해보이는 것은 타이밍 관련 표시, 즉 tCS, tCH와 같은시간값들이 표기되어 있어서 그렇게 보인다. 이 시간값들에 맞춰 파형이 유지되어야지 동작이 유효한 것으로 기기에서 인식하게 된다.


각 핀들에 연결된 라인의 변화에 따라 기기의 동작이 결정된다. 각 핀들이 무엇인지는 여기서 알 필요는 없으나, 이전에 이미 설명한바 있는 CE, WE 등은 일반적인 용어이니 알고 있어야 한다. 굳이 알 필요는 없지만, 설명을 해줬으면 하는 독자들을 위해 위 타이밍 다이어그램이 어떻게 동작하는 것인지 대충 설명하겠다.


I/Ox는 데이터가 나가는 핀으로 입력으로 쓸수도 있고 출력으로 쓸수도 있다.


1. CE가 active low이고 tCS만큼 유지되는 동안(위 타이밍 다이어그램은 CE가 반전임을 주의해라, 즉 실제 CE는 active high로 들어가는 것이다) 

2. CLE가 tCLS만큼 active high를 유지하는 동안

3. WE가 tWP만큼 active low를 유지하는 동안


입력되는 I/Ox 바이트가 처리가 된다. 여기서는 NAND 플래쉬 메모리의 상태(Status)를 읽기 위해 해당 명령어의 바이트값인 0x70 바이트를 보낸 것이다.


여기까지 모든 동작이 유효하게 진행이 된 경우 기기(NAND 플래쉬 메모리)는 그 다음 후속동작을 타이밍 값들(tCEA, tCLR, tWHR 등등)에 맞게 처리를 하고 RE핀을 active low로 내리면, 그 때 Status Output을 읽어갈 수 있게 된다.


해당기기의 디바이스 드라이버를 개발하는 소프트웨어 개발자인 경우 타이밍다이어그램을 이해하는 일은 중요하다. 하지만 단순히 해당 디바이스 드라이버를 가져다가 쓰는 상위 레벨의 소프트웨어 개발자들에게는 중요도가 덜하다고 할 수 있겠다. 어찌되었든 여기서 소개한 타이밍 다이어그램 관련 내용들은 임베디드 소프트웨어 개발자라면 기본적으로 알고 있어야 한 상식이니 숙지하는 것이 좋다.


브런치 글 이미지 7

졸저 <개발자 오디세이아> 가 책으로 나왔습니다. 개발자들의 애환과 희망을 담으려 최선을 다했습니다. 많은 사랑 부탁드립니다^^




작가의 이전글 Ch3-4. 32비트 CPU에서 64비트 데이터 처리

브런치 로그인

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari