GPIF Waveform을 작성하기 위한 준비절차
오늘은 GPIF를 이용하여 BULK IN 예제와 똑같은 일을 하도록 예제를 꾸며보자.

예제는 앞서 BULK IN 예제에서와 마찬가지로 UniHigh v1.0에서 필요 없는 DR_VendorCmnd()함수 내부를 비우고 이를 기본으로 하여 살을 덧붙였다.

UniHigh v1.7
(실행 전에 Waveform 작성하기 앞부분 참조.)

회로는 다음과 같이 꾸몄다.
이전에는 Port A의 핀들을 사용했지만,
이번에는 GPIF를 사용하기 때문에 RDY0(STROBE), RDY1(SELECT), CTL0(ACK)핀을 사용한다.





GPIF가 State Machine이라고 하였으므로, GPIF Designer를 써서 WaveForm을 만들기 전에
먼저 State Diagram을 그려보는 것이 나중에 Waveform을 만들 때 헛갈리는 것을 줄여준다.



일단 완성된 Diagram은 다음과 같다.
(그림이 잘 안보이면, 그림을 클릭해서 크게 보거나, 다운로드한 후 보시라.)

복잡해 보이지만 하나하나 따라가다 보면 그리 복잡하지도 않다.


첫 번째,
일단 GPIF engine을 처음 구동시키는 것은 8051 펌웨어이다.
GPIF 엔진이 일단 일을 시작하면 8051은 빠지고, 전적으로 GPIF가 데이터의 흐름을 관리하게 된다. 물론 8051이 중간 중간 끼어들어 데이터를 첨삭하거나 수정하는 등 필요한 작업을 할 수도 있다.
GPIF가 시작되면 GPIF state는 Idle ->S0로 간다.





두 번째,
본좌의 허접탱탱구리 프로토콜에 의하면
Parallel 포트의 SELECT(17번 핀)가 LOW로 떨어지는 것은
곧 데이터 전송이 시작될 것을 의미하므로,
다음 state로 넘어가서 데이터를 전송 받는 절차를 시작하고,
그렇지 않다면 그 state에서 SELECT가 LOW로 떨어질 때까지 기다린다.




세 번째,
S1 state는 일단 없는 것으로 생각하고,
SELECT가 LOW로 떨어지면 S0에서 S2로 넘어가는 것으로 생각하자.




네 번째,
S2상태에서 STROBE(1번 핀)가 LOW로 떨어지면,
이는 Parallel 포트의 데이터라인에 데이터가 실려있다는 것을 알려주는 신호이므로
이를 받기 위해 S3으로 상태를 바꾼다.
그런데, 만일 우리가 FIFO에 받은 데이터를 USB를 통해 호스트로 다시 전송하는 속도가
패러렐 포트에서 데이터를 받는 속도보다 느려서(그럴 가능성은 적지만.)
FIFO가 꽉 차 있을 경우에는 데이터를 더 받으면 안되므로,
FIFO Full Flag가 0이 될 때까지 기다린다.




다섯 번째,
S3 state에서는 FD[7:0]을 통해 받은 데이터를 FIFO에 써넣고,
데이터를 잘 받았다는 것을 알리기 위해 ACK(10번 핀)를 HIGH로 세팅한다.
“Parallel” 어플리케이션은 ACK가 HIGH가 되면
자신도 한 바이트에 대한 데이터 전송절차를 마무리하는 뜻으로
STROBE를 HIGH로 되돌린다.




여섯 번째,
STROBE가 HIGH가 되면
ACK를 원래대로 LOW로 되돌린다.




일곱 번째,
SLEECT가 HIGH라면 데이터 전송이 다 끝난 것이므로,
IDLE상태로 가서 GPIF transaction을 마무리하고,
아니라면 S1으로 간다.




여덟 번째,
S1에서는 SELECT가 HIGH가 될 때, Idle상태로 간다


아~!!!!

뭔가 설명해 놓고도, 본좌가 뭔 소리를 지껄였는지 잘 모르겠다.
정리해서 낼 더 쉬운 말과 그림으로 풀어드릴테니 지둘리시라.

이넘의 GPIF는 할때마다 매번 헷갈린다.
한번 헷갈리면 디버깅하기도 영 엿같은 일이 된다.
따라서, GPIF에서는 시간을 좀 더 들이더라도 확실히 개념 잡고 넘어가도록 해보자.
또 그만치 중요하다.


오늘 예제는 저번 BULK IN 예제와 동일한 방법으로 테스트하면 된다.
* BULK IN 강좌에 덧글 단 대로 페러렐 포트의 CMOS setup을 ECP로 놓고 하시라.

by 바람처럼날다 | 2005/05/09 23:04 | FX2 펌웨어 강좌 | 트랙백 | 덧글(1)
트랙백 주소 : http://muosys.egloos.com/tb/137707
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 어리버리 관절염 at 2009/02/19 10:16
머리가 한계를 느끼기 시작했슴다. ㅠㅠ 다시 보기 무한 반복중......좋은 강좌 감사드립니다. 도움이 많이 되네요. 책보는거 보다 훨~씬~ 더 .` ㅋㅋㅋㅋ

:         :

:

비공개 덧글

< 이전페이지 다음페이지 >