본문 바로가기

떠들기

기말고사 시계 프로젝트 : The World v2

어느 대학의 컴퓨터공학과 1학년의 하드웨어쪽[각주:1] 2학기 기말고사는 이렇습니다.

FPGA 장비[각주:2][각주:3]를 이용하여...

* 시계 만들기 (30점) [완료]
* 스탑워치 만들기 (20점) [완료]
* 알람 만들기 - 소리는 부저 이용. (30점)
- 알람시간 설정
- 알람 울리기 (동방노래를 멜로디만이라도 돌리고 싶은 마음이 조금... 무리겠죠? 힘들어요.)
* 모드를 바꿔도 시계의 값을 계속 가게 하기 (점수주려고 만든 조항, 20점) [코드 구조상 자동으로 완료]

정보 : 50점 이상일 시 따로 기말고사는 치르지 않고 이 프로젝트로 기말고사를 대신
정보 2 : 50점 미만일 시 따로 기말고사를 치름과 동시에 이 프로젝트의 검사를 일주일 연기 (...)


물론 시험 당일에 만드는 건 아무래도 시간상 역부족이고요, 일~이주 전부터 고지받아 만들고 있습니다.

하지만 정작 만든 시간이라면 이전에 만들던 현재는 버려진 코드 하나와 (시계 구현도 못했었음), 어제 귀찮음을 무릅쓰고 따뜻함을 이겨내며 컴퓨터실에서 오후 7:30~10:30 동안 만든 것과, 오늘 그것을 마무리한 오후 5:20 ~ 9:20 이렇게 뿐이었죠. 다 귀차니즘이 원인이죠... 하지만!

위에 [완료] 보이시죠? 그동안 해냈습니다, 해냈다고요! 만세! 으앜! 아무리 생각해도 기분이 째진다! 50점은 넘었어요! 이제 기말고사를 칠 필요가 없다구요! 으앜ㅋㅋㅋㅋㅋㅋ!

거기다가, 고생해서 만든데다가 미리 구조를 글로 구상하고 만든 만큼, 매우매우매우 깔끔하게 동작하더군요! 기분 째져요! 이히힣히히힣히히하하하핳하핳하핰ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ


걱정하던 게 하나 사라져줘서 다행입니다.


아직 조금 걱정인 건, 키패드 입력에 대한 걸 한번도 안짜봤다는 거구요, 그걸 어떻게 모듈화해야 깔끔하려나... 라는 것과 알람을 울리려면 어떻게 모듈[각주:4][각주:5]끼리 값을 주고받느냐 하는거죠. 키패드는 예제 소스 한번 제대로 분석해보지 않은 터라 사실 미지의 영역이라 좀 겁나고요, 알람은 어떻게든 될 것 같네요.


글로 구상하던 것에 대한건데요, 사실 이 블로그에 비밀글로 썼었고요, 쓰다 말긴 했지만요... 머릿속 상상만으로 해결되지 않는 부분을 글로 써가면서 깔끔하게 정리하니까 쉬워지더군요. 전체적으로 코딩이 깔끔해진 느낌이에요. 이건 나중에 게임 만들때 같은 때에 써먹어야 할 것 같네요.

기말고사 점수 측정(?) 뒤 그 쪽은 공개할 겁니다. 소스야 공개할 수 없지만요. 아마 시계 짜시려는 분들은 도움되실지도 모르겠네요.

사실 거기 써놓은 것을 모두 구현하려면 생각보다 시간이 오래 걸릴 것 같아서 지금은 기말고사 조건만 충족시킬 수 있도록 코딩하고 있습니다. 대표적으로, 계획해놓은 출력 장치인 7 Segment[각주:6], 글자 디스플레이 (정식 명칭이 기억이 안나네요.), Dot Matrix[각주:7], 부저 (소리내는 장치) 중에서 기말고사의 조건에 해당하는 7 Segment (와 부저...도 있지만 아직...) 만 출력하고 있습니다. 여유가 있다면 저것들로 재미있는 계획을 실현해보고싶긴 한데 말이죠... 다른 시험도 있으니까요.


그러니까, 이 글을 쓰는 이유는 바로 영상입니다.

너무 기쁜 나머지 영상까지 찍었다죠...


별로 중요한 건 아니지만, 추가 정보라면 FPGA 장비는 한백전자 COMBO - Ⅱ 이고요, 하필이면 쓰는 통신장비가 오래된 프린터를 연결할 때 쓰는 병렬포트라서... 다른데서 하기는 무리입니다. 칩은 Spartan 1000 뭐시기... 의 FG676 이고요. 많이 써봤지만 다는 못외우는군요 ㅎㅎ


이 글은 여기까지입니다. 이제 다른 공부를 해야죠... 1학기는 4.0 딱 찍었었는데(운도 좋았었고요.) 이번엔 무리일지도 모르겠네요. 너무 놀아서...


다 쓰고 보니까 적당한 카테고리가 없네요... 언제 한번 개편해야겠어요. 귀찮은데...

ps. 모바일에서 줄바꿈의 간격이 적절히 (한 문단의 상단 여백을 글씨 크기의 0.8배로) 표시되지 않는 문제를 임시로 해결해봤습니다. 어떠려나요? 확인해봐야겠어요. (확인 후) 주석부분도 조금 손봤는데, 괜찮네요.
ps2. 제목이 the world라고요? 죠죠[각주:8]러 아니냐고요? 아직은 아닙니다. 하지만 워낙 유명하다보니... 그냥 써봤어요. 진성 죠죠러 분들께 심심한 사과를 올립니다.

  1. [* 1학년 때는 소프트웨어와 하드웨어 둘 다 배웁니다. 한쪽은 그 유명한 C언어, 나머지 한 쪽은 논리회로와 Verilog HDL 등의 하드웨어 설계용 언어입니다.] [본문으로]
  2. [* 하드웨어 설계용 언어 (저희는 Verilog HDL을 씁니다.) 를 통해 회로를 설계해 넣으면 그대로 동작해주는 고마운 기계입니다.] [본문으로]
  3. [* 덕분에 요새 학생들은 빵판 (브레드보드) 를 만질 일이 없지요. 전자공학과 학생들은 다르겠지만요...] [본문으로]
  4. [* 여기에서는 특정 기능의 단위입니다. Verilog HDL 이라는 하드웨어 설계용 언어는 모듈로 이루어져있습니다. C언어가 함수로 이루어져있듯이 말이죠.] [본문으로]
  5. [* 저도 정확히 아는 건 아니지만, 맞을 겁니다. 아마...] [본문으로]
  6. [* 계산기에서 흔히 볼 수 있는 작대기 형식의 숫자 표기 장치입니다. 점까지 포함해서 막대기가 모두 7개죠. 그게 가로로 8개...] [본문으로]
  7. [* LED가 14 x 10 사이즈로 묶여있습니다. 출력 방식은 7 Segment 와 같다고 적혀있어서, 코드를 복사해서 넣으면 그럭저럭 빠르겠죠.] [본문으로]
  8. [* 일본의 유명 만화 <죠죠의 기묘한 모험>을 말합니다.] [본문으로]
  • Favicon of https://flymoge.tistory.com BlogIcon 모게모게 2012.12.07 11:03 신고

    1학년부터 이걸 하는군요... 전 1학년 때 기초이론만 죽도록 파던데 말이죠...

    시계+스탑워치를 만드는데 베이스클럭 써서 시간표시하는 건 좋은데 문제는 초기시간 설정하는 프로그래밍하는 게 머리아프죠. 스탑워치도 LED들 숫자 4개짜리를 던저줘서 처음엔 밀리세컨드 단위로 나오다가 초가 다 차면 한자리씩 뒤로 미는 기능 구현한다고 고생했......다는 3학년 친구의 말을 들을 수 있었습니다.

    그리고 우리는 부품 다 던저주고 프린팅기판에 납땜만 하는 수준이라 회로설계는 따로 하지 않습니다. 그건 다른 과목에서 하기때문에.......

    • Favicon of https://blog.sftblw.moe BlogIcon Ch. 2012.12.07 15:11 신고

      //초기시간 설정하는 그것의 악몽이.. 저희는 초기시간을 설정할 필요가 없기 때문에 (제시조건이 아님) 알람을 만드는 걸로 넘어가더군요. 결국은 키패드로 입력을 받아서 시간을 설정해야되거든요.

      //초가 다 차면 한자리씩 뒤로 밀어주는 기능... 은 잘 모르겠고요, 출력 위치는 고정이거든요. 올라간 숫자만 받아서 올려주면 되고 말이죠 ♬

    • Favicon of https://flymoge.tistory.com BlogIcon 모게모게 2012.12.07 16:32 신고

      하긴 키패드가 있으니 상당히 간단하겠네요. 보통은 차 룸미러에 달린 그 H/M/S 버튼 구현을 말하는겁니다.
      그리고 자리수 미는 기능, 보통은 안 하죠. 그래서 개노가다인겁니다.....