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

전기정보공학부: 논리설계 및 실험

by STEMSNU 2023. 12. 28.

1. 과목에서 배울 수 있는 내용

1.1) 과목의 전반적인 개요

    논리 설계 및 실험은 Boolean Algebra, 논리 회로 등 논리 회로 설계의 기초를 배울 수 있는 과목입니다. 이를 통해 기초적인 combinational logic 및 sequential logic 을 배우고 논리 회로 설계에 대해 이해하여 회로 설계 능력을 쌓을 수 있습니다. 
    이 과목은 전기정보공학부의 4학점 전공필수 과목으로 강의와 더불어 매주 랩이 있고, 학기 말에는 그룹 프로젝트가 있습니다. 강의에서 다루는 내용의 주요 목차는 아래와 같습니다.

  • Boolean algebra
  • Combinational logic design
  • Combinational building blocks
  • CMOS logic circuits
  • Sequential logic design
  • Timing constraints
  • Design FSM

    랩시간에 하는 실험은 대략적으로 다음과 같습니다.  

  • 기본적인 논리 게이트 및 Multi-level, multi-output logic 구현
  • Sequential logic 기초 및 FSM 설계 및 구현
  • Verilog tutorial 

1.2) 수업

    논리설계 및 실험에서 배우는 논리 회로 및 논리 시스템은 논리, 즉 0과 1의 bit 연산을 다루고 이해하는 첫번째 단추가 됩니다. 논리 회로에의 최소 단위는 1bit에 담기는 0(Low) 또는 1(High)이고, 이를 통해 만드는 디지털 회로는 기초전자 회로 및 실험 과목에서 배웠던 아날로그 회로와 다릅니다.       

Figure1 : AND gate


    우선 기본적인 논리 게이트는 AND, OR, Inverter, XOR 등이 있으며, 이 게이트들을 조합하여 로직을 계산하는 것을 Combinational Logic이라고 부릅니다. 

Figure 2: Combinational Logic


    앞선 Combinational Logic은 input에 따른 output이 함수와 같이 계산됩니다. 이와 다르게, input과 저장한 ‘상태’(또는 State)를 바탕으로 output을 도출하고, 다음 State를 Combinational Logic을 거쳐 update하는 회로를 Sequential Logic이라고 합니다. 이때 state를 hold하는 소자를 register라고 하고, 여러 register의 sync를 맞추기 위해 일정한 주기로 1과 0을 진동하는 clock이라는 전기신호를 받게 됩니다. 

Figure 3: Sequential Logic


    예를 들어, 4층 건물의 엘리베이터의 로직을 논리 회로로 만든다고 생각해보면, 1층의 사람이 윗 층 버튼을 눌러도 현재 엘리베이터의 상태 정보, 다른 층의 버튼 눌림 정보, 인원 초과 등 다양한 상태를 저장해야 할 것입니다. 이런 시스템의 로직을 기초적으로 설계하는 것을 배우는 과목이라고 생각하시면 될 것 같습니다.
    마지막으로, 우리가 사용하는 CPU, GPU, DRAM 등은 논리 회로를 기초로 설계되었으며 설계한 회로를 바탕으로 삼성전자와 같은 파운드리에서 반도체를 만듭니다. 이런 하드웨어를 설계할 때 사용하는 프로그래밍 언어는 python과 같은 high-level 언어가 아닌, Verilog란 하드웨어 기술 언어입니다. 추상화된 언어와 다르게 베릴로그로 코드를 작성하면 실제로 하드웨어 위에서 gate, wire, register 들이 구현되는 것이기 때문에 실제 하드웨어 입장에서 구현을 해야합니다. 이 말은 시뮬레이션에서는 코드가 돌아가도 Synthesis(베릴로그 코드를 실제 하드웨어 구조로 변환하는 과정)를 하면 시뮬레이션과 다른 결과가 나올 수 있다는 소리입니다! 논리 설계 및 실험 과목에서는 중간고사 이후 랩 시간에서 Verilog를 처음 다루고, 프로젝트는 Verilog로 목표한 모듈(프로그램)을 구현하는 것을 목표로 합니다.

1.3) 프로젝트

Figure 4: UART module waveform

    그룹으로 진행되는 기말 프로젝트는 Verilog 언어를 사용해 목표한 모듈을 설계합니다. 설계하는 모듈(프로그램)은 강의마다 천차만별이지만, 제가 수강했던 강의는 error detection 및 UART 통신 모듈을 설계하는 프로젝트를 진행하였습니다. 이를 위해서는 기초적인 논리 회로 및 FSM(Finite State Machine)을 잘 이해하고 설계할 수 있어야 하며, 설계한 대로 Verilog 언어로 구현할 수 있는 능력이 필요합니다. 위에서 언급하였지만, Verilog로 프로그램을 짜는 것은 하드웨어 위에서 돌아가는 것을 상정하기에, 단순히 돌아가는 것이 문제가 아닌 여러 문제를 고려해야합니다. 하지만 수업 및 랩을 잘 따라갔다면 큰 문제없이 프로젝트를 해결할 수 있습니다. 


2. 선배의 조언

    논리 회로를 배우는 첫번째 전공 과목이므로 사전 지식이 딱히 필요하지는 않습니다. 랩 시간에 회로를 구성하여 소자를 연결하고 오실로스코프, 함수 발생기를 사용하여 실험을 하므로 기초 회로 및 실습 수업을 잘 들었다면 문제 없이 수강할 수 있을 것입니다.
    중간고사 이후 Verilog를 실습에서 다루고, (이는 분반에 따라 다릅니다. 교수님께서 수업 시간에 아직 lab이 시작 하지 않았음에도 불구하고 Verilog 코드를 언급하시기도 합니다.), 최종 프로젝트는 Verilog 코드를 다뤄야하기 때문에, 미리 Verilog 언어의 문법과 예제를 통한 실습을 해놓은다면 상당히 유리한 위치로 시작할 수 있습니다. 따라서 chipverify을 documentation 처럼 다루고, hdlbits.01xz.net에서 예제를 미리 풀어본다면(다 풀 필요도 없어요!), 비단 이 과목 뿐만 아니라 추후의 ‘컴퓨터 조직론’ 과목에서도 상당히 유리할 것이라 생각합니다. 또한 다소 난해한 첫 인상의 언어에 미리 적응할 뿐만 아니라, 자연스레 논리 회로에 대한 개념이 잡히므로 강추합니다!!


3. 진로 선택에 도움 되는 점

이 과목은 전기정보공학부 학생이라면 누구나 필수로 들어야 하지만, 그만큼 컴퓨터 테크에서는 가장 기초적인 과목입니다. 기초 과목인 만큼 깊은 개념을 다루지는 않지만, 모든 과목이 그렇듯 최선을 다해서 열심히 한다면 후의 진로 선택 폭이 넓어질 것입니다. 


4. 맺음말

컴퓨터 테크의 가장 기초적인 과목으로, 열심히 해서 절대 후회가 없을 과목이라고 생각합니다. 

댓글