강의

[디지털 로직 설계] - #7. 우리는 어떤 목적으로, 왜 truth table을 작성하는가?

gybak 2024. 5. 21. 13:47

학교 수업에서 여러분이 어떤 목적으로 truth table을 작성하고 활용했는지 기억을 한 번 되살려 봅시다.

 

아마 처음에는 완성된 로직을 보고 이에 대한 truth table을 작성하는 문제부터 접하셨을 겁니다. 반대로, 미리 작성된 truth table을 보고 논리식 또는 회로를 완성하는 문제도 풀어보셨을 겁니다. 나중에는 truth table을 활용해 논리식 또는 회로를 좀 더 단순하게 만들어 보라는 문제도 풀어보셨을 겁니다. ('카르노 맵' 기억하시죠?)

 

수업 시간에 배운 truth table의 활용 방법 https://www.youtube.com/watch?v=0iQJsKVpSUY  (꼭 보실 필요는 없습니다만... 그래도 혹시나 궁금하시다면!)

 

수업에서 배운 truth table의 활용 목적은 초벌 설계가 끝난 후에 이를 최적화하기 위한 쪽에 가깝습니다. 논리소자 개수를 최대한 줄여서, 적은 자원을 쓰고도 똑같은 기능을 하는 회로를 만드는 겁니다. 단도직입적으로 우리가 왜 truth table을 작성했냐고 묻는다면 "효율적으로 작동하는 회로를 만들기 위해서"라고 답할 수 있습니다.

 

실전에서는 어떨까요? 우리가 수업을 통해 배웠던 그 설계 방법을 그대로 따라서 하는 경우는 결코 없을 것입니다. 일단 회로를 구성하고 truth table을 작성해 회로를 최적화하는 식으로 진행하지 않습니다. 이는, 자동화된 설계 도구가 아예 없는 (진짜로 종이와 펜만 가지고 설계하는) 경우에나 유용한 방식입니다. 엄청나게 편리하고 정교해진 개발 툴을 사용하는 지금은 굳이 따를 필요가 없는 고전적인 방식입니다.[각주:1]

 

실제로 truth table을 작성하지 않고도 개발 프로젝트를 마치는 데에는 전혀 문제가 없습니다. 설계 의도에 맞게 작동하게끔 로직을 만들었다면, (얼마나 엉망으로 만들었든 관계없이) 나머지는 개발 툴이 알아서 잘 해줍니다. 정말 기가 막힐 정도로 잘 해줍니다. 이런 상황에서 굳이 truth table을 작성할 필요가 있을까요? 만약 그렇다면 그 이유는 뭘까요?

 

현업 개발자들 의견이 다양할 수도 있겠습니다만, 저는 "설계 대상을 구체화하기 위해서" truth table을 작성합니다. Top-level 또는 큰 단위의 모듈보다는 자잘한 로직 블럭들을 그려나갈 때 truth table을 활용합니다. 그간의 경험을 돌아보면, 특히 mux/demux가 포함된 로직을 그릴 때에 잘 활용했던 것 같습니다. (encoder, decoder, FSM 등...) 구체적인 예시를 지금 보여드리기에는 다소 이른 것 같아 일단 넘어가겠습니다. 나중에 FSM이나 시스템 버스를 다룰 때에 분명히 다시 나오게 될 겁니다.


목차 (연재 순서)

0. 강의 개요
1. 기초 논리 소자 (Basic Logic Elements)
2. Combinational Logic
    1) 논리연산 -- 3-input AND, 2-input XOR
    2) 산술연산 -- Half Adder, Full Adder
    3) 흐름제어 -- Mux, Demux
3. Truth Table 및 Look-Up Table
    1) 우리는 어떤 목적으로, 왜 truth table을 작성하는가?
    2) 설계한 로직은 어떻게 FPGA에서 작동하는가?
4. 메모리 소자 (Memory Elements)
    1) Flip-Flop
    2) Memory Block
5. Sequential Logic
    1) D-FF with synchronous reset
    2) 2진법 반올림(round-up) 로직
6. Timing Diagram

 

 

  1. 혹시나 오해할까봐 말씀드리는데, 그렇다고 이 고전적인 방식을 더 이상 배울 필요가 없다고 주장하는 게 아닙니다. 교과서와 실전이 다르다는 점을 강조하려 했을 뿐입니다. 저는 오히려 최신 툴을 철저히 배제하고 종이와 펜만 가지고 설계해볼 것을 주문하곤 합니다. 최신 기술을 자유자재로 쓰는 능력은 고전을 제대로 이해했을 때에 비로소 얻을 수 있는 것이라고 확신하기 때문입니다. [본문으로]