본문 바로가기
전공백서/전기정보공학부

전기정보공학부: 디지털 시스템 설계 및 실험

by STEMSNU 2022. 6. 18.

  안녕하세요, 공우 11.5기 전기정보공학부 강한림입니다. 아래는 전기정보공학부의 전공 과목 중 하나인 "디지털 시스템 설계 및 실험" 과목에 대한 주관적인 소개입니다.

  “디지털 시스템 설계 및 실험”은 하드웨어 설계에 대해 본격적으로 다루는 과목 중 하나입니다. 학생들은 기본적인 논리 소자에 대해 배우는 것에서 더 나아가 각각을 어떻게 ‘프로그래밍’할 수 있는지를 배웁니다. 일반적인 소프트웨어 프로그램을 작성하는 것과 달리 하드웨어 설계는 각각의 소자들이 어떻게 연결될지에 관해 기술하는 것이기 때문에 근본적으로 다릅니다. 이중 하드웨어 설계의 방법에 익숙해지는 것이 이 수업의 가장 큰 목적입니다. 강의 전반부에는 하드웨어 기술 언어(HDL, Hardware Description Language)인 Verilog에 대해 중점적으로 배우게 되고, 강의 후반부에는 컴퓨터 하드웨어에서 산술을 다루는 방법을 공부한 후 최종적으로 하나의 완성된 역할을 하는 하드웨어를 직접 프로그래밍해 시연하는 프로젝트를 진행하게 됩니다.

"디지털 시스템 설계 및 실험" 과목에서 사용되었던 FPGA 보드  (ARTY A7)

  본 과목의 꽃은 프로젝트라고 할 수 있습니다. 최근 몇 년간 CNN accelerator의 일부를 구현하는 것이 프로젝트로 주어졌는데  어렵습니다. CNN accelerator의 이론적 배경에 대해 자세하게 알 필요는 없지만, 실제로 HDL로 코딩해본 경험이 별로 없으면 많은 시행착오를 겪게 됩니다. 하지만 그 과정에서 수업 시간에 배운 내용들에 대해 진정으로 이해하게 되고 각자의 노하우를 찾으면서 어떻게 하드웨어 설계를 해야 하는지를 깨닫게 됩니다. 제가 수강했을 당시에는 3인 1조로 진행이 되었고 저와 다른 수강생들은 이 과목에 투자할 수 있는 시간이 많아서 4주 동안 거의 매일 프로젝트에 노력을 기울였습니다. 최종적으로 거의 이상적인 구조를 만들어 훌륭한 성능을 냈지만, 사실 이 정도로 노력하는 것은 시간상 쉽지 않다는 것을 교수님 포함해 모두가 알기 때문에 완성만 해도 (즉 동작만 해도) 점수는 만점을 받았습니다. 그리고 완성 자체는 많은 조가 했던 것으로 기억합니다. 프로젝트를 하는 데에서 하나의 팁은 처음부터 너무 꼼꼼하게 생각하지 않는 게 좋다는 것입니다. 하드웨어 설계를 도와주는 상용 소프트웨어가 생각보다 성능이 좋아서 많은 경우에 알아서 잘 돌아갑니다. 저희는 처음부터 너무 겁을 먹어서 가장 기초적인 단계들까지 저희가 직접 짰는데, 나중에 보니 상용 프로그램에 그 작업을 맡기는 게 오히려 더 효율적이라는 것도 발견했습니다. 이런 대형 프로젝트에서 계획대로 모든 것이 되기는 쉽지 않을 뿐만 아니라 일차적으로는 완성 여부 자체가 중요하니, 처음에는 쉽게 생각해서 직관대로 짜고, 문제가 생길 때마다 조금씩 바꾸어 나가는 방법이 더 바람직한 것 같습니다.

  수강 전까지 하드웨어 설계 쪽으로 더 공부할 생각은 없었지만, 이 과목을 듣고 난 다음에 졸업 전에 조금 더 들어볼 걸 하는 후회가 들 정도로 재미가 있었습니다. 매우 많은 시간을 투자했지만, 프로젝트를 통해 하드웨어 설계를 잘 할 수 있도록 도와주는 정말 많은 노하우와 자신감을 얻어갈 수 있었습니다. 수업 시간에 배우는 것들을 온전히 소화하도록 도와주는 과목들이 생각보다 몇 없다는 점에서 정말 도움이 많이 되는 과목이라고 생각합니다.

댓글