MU0 CPU Design


디지털 논리 실습 프로젝트는 2가지였습니다.
처음 것은 FPGA에 디지털 시계를 구현하는 것이었습니다. 구현 자체의 어려움을 떠나서
정확한 분주 구성과 많은 테스트를 통해 시간 흐름과 동일한 클럭 주기를 잡아주어야 한다는 점이 어려웠습니다.
왜 코딩하다보면 그런 것 느끼잖아요, "분명히 문제가 없는 소스인데 왜 포팅해서 돌리니까 안 되는거지?"
임베디드 분야의 흥미로운 부분이자 단점으로도 말할 수 있지요.

이 시계를 마치고 학기말 프로젝트로 부여받은 것이 MU0 Design입니다.
컴포넌트의 구성은 맨 윗 그림과 같고요, 컨트롤 유닛의 상태도표가 두 번째 그림입니다.
만약 프로젝트가 바쁜 기말 기간에 2주간이라는 제약된 기간이 아니었다면 두 번째 그림의 도표가 주어지지 않고
직접 구현하는 방향으로 나왔을지도 모르겠어요. 저 부분의 상태값들이 왜 그런 것인지, 어떠한 흐름을 갖는지를
이해하는 것이 이 프로젝트의 첫 번째 핵심이거든요.

마지막 그림은 수행한 결과입니다. 예제로 주어진 인스트럭쳐에 대해 수행하면 그림과 같은 결과를 갖게
되는데요, 두 번째 핵심이 이 같은 결과가 나오게 되는 메모리 참조 흐름입니다. 물론 첫 번째 핵심이나 두 번째나
마찬가지의 공통집합을 갖습니다.

정확한 이해를 기반으로 컴포넌트를 구분하여 설계한 뒤 통합하면 되는데요, 이 설계에 모호함이 포함되거나
인터페이스 정의에 문제가 있었다면 Integration 작업에서 꽤나 애먹어요.

제가 속한 팀은 이 문제로 골머리를 앓다가 한 명이 담당하는 편이 빠르겠단 결론을 내리고 홀로 뛰어들었습니다. (ㅋㅋㅋ)
팀원의 요구내용을 파악하고 Bottom-up Approach 로 연결하였는데, 이전의 실패를 교훈 삼아 사전 정의를 명확히
해두었더니 이 부분의 에러는 없었습니다.
비록 날을 새야 했지만 완성하고 나니 좋더군요.

'Track 1 (Senior) > Major : CE (Project)' 카테고리의 다른 글

Verilog를 이용한 Simple DES 구현  (0) 2011.04.30
GeekOS (OS Project)  (2) 2011.04.30
MFC 프로젝트  (2) 2011.04.30
Assembler Project  (0) 2011.04.09
QT를 이용한 그림판  (2) 2011.04.04
prev 1 ··· 17 18 19 20 21 22 23 next