본문 바로가기
코스웨어/12년 내장형하드웨어

LCD와 타이밍도

by 알 수 없는 사용자 2012. 7. 18.
728x90
반응형

*타이밍도 읽기

순서대로 코딩하도록 합니다.

우선 파형 분석

1. RS

시작값, 입력값, 마무리값 모두 H,L둘다 될 수 있다. (상관이 없다)

2. R/W

일단 쓰기 경우 이기때문에 시작값 마무리값은 H,L둘다 될수 있지만

쓰기동작이 되는 구간에서는 L를 취해야 된다.

3. E

시작 값은 L를 취해야 하며 이후 동작시 H값 그리고 종료시점에서 다시 L값

4. D0 ~ D7

1번과 동일함.

여기서 중요한것은 시간지연을 얼마나 주느냐 인데

시간지연 값은 표의 Value값을 기준으로 기준값을 만족시켜주면 된다.

(최소값 혹은 최대값이 만족되면 그만!, 단 이후 최적화는 필요함)


1. 최초값을 설정합니다. RS, R/W, E, DB0~DB7의 초기값을 봅니다.

RS는 H/L 상관없음. R/W는 H/L 상관없음, E는 최초값 L, DB값은 H/L 상관없음

고로 초기값을 모두 0을 투척

-> PIO_CODR = LCD_ALL (LCD_ALL은 모든 PA핀을 define)


2. E (enable)의 값이 High가 되었다.

-> PIO_SODR = LCD_EN


3. tSA만큼 딜레이를 준다.

-> for(i=0;i<100000;++i)

일단 대충 딜레이를 준다 (기준치를 만족할 만큼의 값) 이후에 최적화


4. Data값을 준다

-> PIO_SODR = 0x0200;


5. PWEH만큼 딜레이를 준다.

-> for(i=0;i<100000;++i)


6. E (enable)의 값을 Low로 만들어준다

-> PIO_CODR = LCD_EN


7. 마지막으로 딜레이를 준다

-> for(i=0;i<100000;++i)


타이밍도의 순서대로 소스를 코딩한다.

약간의 세련된 define을 붙여서

volatile unsigned int iNum;
   
    PIO_CODR = LCD_ALL;            //start = all low
    PIO_SODR = LCD_EN;             //two step = EN High
    EMB_delay(100000);                //three step = t_AS delay (min 40ns)
    //PIO_SODR = 0x00010000;       //DA0 = HIGH
    PIO_SODR = LCD_DB(0x01);     //four step = DATA Exchange
    EMB_delay(100000);                //five step = PW_EH delay (min 220ns)
    PIO_CODR = LCD_EN;             //six step = EN Low
    EMB_delay(100000);                //five step = PW_EH delay   
   
    return ;

이런코드를 완성할 수 있다.

Data값 즉 instruction은 LCD스펙을 참조하여 추가하시면 되겠다.

우선 하나의 함수를 완성하였고 이후 LCD_DB(x) 메크로 함수를 이용해서

명령어를 사용하면 된다.


--------------------------------------------------------------------------------------------------------------------------------

추가해서

타이밍도 보는방법을 더 추가하면 - 퍼왔습니다.

미 Clock에서 살펴 보았듯이, Timing을 제대로 확인하기 위해서는 스위칭 특성을 이해해야 하는데, 게이트에서는 입력신호가 들어온 후 출력신호가 나오기까지 약간의 시간이 걸립니다.

그 시간을 전달 지연시간이라고 부릅니다. 그리고 전달 지연 시간에 관한 전기적 특성을 스위칭 특성이라고 부릅니다.

예를 들어 펄스 하나를 게이트 IC에 입력하는 경우 그림과 같이 펄스는 실제로는 타이밍 차트상에서 완전한 사격형이 아닌 사다리꼴의 모양이 됩니다. Analog 신호와 Digital 신호에서 언급한 대로 신호의 변화란 만만치 않은 변화 이지요. 이상적이지 않은 완벽한 네모꼴의 디지털 세계가 아니기 때문에 사다리 꼴이 되는 걸 이해해 주세요




이전에 말했듯이 이것은 신호가 스위칭될때 약간의 시간이 걸리기 때문입니다. 완전한 신호 'H'일때의 전압을 기준으로 10%에서 90%로 올리기까지 필요한 시간을 상승시간(tTLH 또는 tr)라 합니다. (Tim Low to High, Rising time) 반대로 90%에서 10%로 내리기까지 필요한 시간을 하강시간(tTHL 또는 tf)라고 합니다. (Tim High to Low, falling time)
 
 
 
이런 물리적인 차이까지도 System을 구성할 때는 고려해야 합니다. High에서 의미를 갖는 신호는 완전 High로 될 때 부터 ~ High에서 Low로 바뀌기 시작할 때까지, Low에서 의미를 갖는 신호는 완전 Low 될 때 부터 ~ Low에서 High로 바뀌기 시작할 때까지로 정확히 구성해 주면 제일 좋지요. 후후.
 
Spec을 읽으려면 위의 Timing에 대해서 잘 이해하고 있어야, 구현할 때도 제대로 구현할 수 있답니다.
 
그럼 Notation을 살펴 볼까요?Timing에 대한 Notation은 다음과 같은 Notation이 일반적입니다.색깔이 어두운 부분 (Shade된 부분)은 Undetermistic 한 부분이며, 어떤 값이든 가질 수 있으며 실제 동작에 있어서아무런 영향을 미치지 않습니다.  High, 또는 Low를 가질 수 있는 영역이라고 보시면 됩니다. 대충 영어로 된 설명을 읽어 보면 아실 수 있겠지요.  그러니까, High(Low) to High 부분은 Transient를 하기 때문에 그 부분에서는 의미 없음이라고 보시면 되고요.
      
 
 
 
Clock은 말 그대로 Clock이고 모양도 주기성을 타는 것처럼 보입니다. 대충 휘갈겨 설명하자면, High to Low는 High에서 Low로 Transient는 신호가 변화하는 구간또는 시스템 안정화 구간을 의미하며, High/Low to High는 High든 Low든 간에 High로 변화하는 것Bus Stable은 High던지 Low이던지 둘중에 한 값만 안정적으로 나오는 상태이며, Bus to high impedance는 Bus에 아무 신호가 없는 상태로의 변화이고요, Bus Change는 Bus에서의 신호상태가 바뀌는 걸 의미하고 High impedance to stable bus는 아무 신호도 없는 상태에서 High나 Low의 안정적인 신호 상태로 변화 한다는 의미이고요마지막으로 diagram은 두꺼운 선은 Timing Diagram중에서도 가장 의미 있는 구간을나타내지요. 
 
덧붙여 High Impedance 상태는 다른 말로 줄여서 Hi-Z 라고도 부른답니다. (High를 줄여 Hi, Impedance를 보통 Z라고 표현하는데서 유래하여)
예를 들어, 다음과 같은 Device의 Timing Diagram이 있다고 칩시다.


 
 
이런 Timing Diagram을 보고서 그냥 음.. 그렇군 하고 지나치면 안됩니다. Timing Diagram을 읽어 볼까요? 예를 들어 tCE라는걸 해석해 보시면, tCE는 CE/라는 신호가 Low로떨어지고 나서 Output Data가 나올 때 까지의 시간이며 이 시간은 지켜져야 한다는 것이Timing Diagram이 말하고자 하는 내용입니다.
 
이런 의미에서 Timing Diagram에는 그 의미를 해석한 Timing Spec이 Data Sheet에 꼭 있기 마련입니다. 찾아보면 아래와 같은 Table이 꼭 있을 테니 잊지 마세요.
 

 
이 Table이 바로 그런 Timing Diagram에 대한 의미로서, 해석해 보면, tCE는 CE/ Access time이고최대 65nS를 넘어서서는 안된다는 의미 입니다.
 
그러면 하나만 더 보고 넘어갈까요?
예를 들어, tRC는 Address Line에 흐르는 신호에 대한 Timing Spec으로서그 의미는 Read Cycle Time이며 최소 65nS를 유지해 주셔야 제대로 된 Data를 얻을 수 있다는
의미 입니다.
 
위의 예는 Memory를 Access할 때 필요한 Operation들이 Timing Diagram으로표시되어 있어서 Memory Operation 이해하기 딱 좋은 Diagram이긴 한데, 담에 Memory Device Control 살펴 볼때 자세히 살펴 볼께요.


728x90