디지털시스템설계 수업을 듣고 인상깊었던 점들이나 저에게 필요하다 싶은 내용들을 몇가지 정리했습니다.
불리언 대수 공식은 수학공식과 유사한 부분이 많지만, 제가 많이 햇갈려했던 공식을 적겠습니다.
(AB)' = A' + B'
(A + B)' = A'B'
AB + A = A
AB + A' = B + A' < 이게 제일 햇갈렸습니다.
또한 회로를 표현하는 방법에는 Truth Table과 K-map(카르노맵)이 있습니다. Truth Table은 모든 경우의 수를 나열하는 표이고, K-map은 복잡한 논리식을 좀 더 편리하게 간소화 시킬 수 있는 방법 중 하나입니다. 아래는 K-map입니다
먼저, Truth Table로 참인 경우를 찾고, 표 안에 표시합니다.
인접해있는 표시를 묶습니다. 0과 1이 상관없다는 뜻입니다. A'CD + A'CD' + ACD 를 위와 같이 묶어 A'C + CD로 만들 수 있습니다.
항상 궁금했던 질문이었는데, 수업을 마친 지금은 이해하게 되어 시원합니다.
래치는 한비트의 정보를 저장하는 회로입니다.
SR래치는 set이면 출력이 1, reset이면 출력이 0이지만, SR이 동시에 1이면 oscillate(진동)하는 문제점이 있습니다.
그렇다고 위 그림처럼 사이에 not을 넣으면 gate delay가 달라 glitch(원하지 않는 노이즈 펄스) 문제가 발생할 수 있습니다.
위와 같이 Level-Sensitive D Latch를 만들면 입력이 동시에 들어가 delay를 없앨 수 있습니다. 하지만, D latch를 연속적으로 붙이고 클럭(C)을 공유하면 얼마나 많은 래치가 바뀔지 모릅니다. 그래서 마지막으로 탄생한 것이
D filp-flop입니다. D래치 2개를 이어붙이고, 한 클럭에 not을 붙이면,
위와 같이 clk이 올라갈 때만 출력이 나옵니다. 이렇게 딱 한 주기에 한번만 정보가 저장됩니다.
이 플립플롭들을 여러개 모아 클럭을 공유하면, 드디어 우리에게 익숙한 여러 비트의 정보를 저장하는 레지스터가 하나 완성됩니다!
이제 controller design을 통해 원하는 회로를 설계하고, 직접 만들고 싶은 장치들을 만들 수 있습니다.
저는 사실 하드웨어를 그리 좋아하지 않았습니다. 물리를 못하는 저에겐 너무 어렵게 다가왔습니다. 하지만, 역시 한번 해보는 것이 중요한 것 같습니다.
이전부터 이 컴퓨터는 도데체 어떻게 구성되어있길래 정보를 저장할 수 있을까 궁금했습니다. 사실 이전에도 컴퓨터 구조 책에서 래치와 플립플롭에 관련된 내용을 접한 적이 있습니다. 그때는 이해하기 매우 힘들어 '아 나는 역시 회로랑은 안맞아' 라고 단정지어 버렸습니다.
하지만, 기본 and or게이트부터 시작하여 차근차근 레지스터까지 문제점을 해결하며 발전해온 것을 따라오다보니, 이해하기 쉬웠습니다.
이제 궁금증을 해결함과 동시에 세상을 보는 눈이 달라졌습니다. 어떤 전자장치를 보면, 아 이 장치는 회로가 이렇게 구성되있겠구나, 생각보다 만들기 쉽겠는데? 하는 생각이 들었습니다.
처음에는 전공필수과목이라 어쩔수 없이 듣는거지 전공선택이었으면 듣지 않았을 것이다 라고 생각했지만, 컴퓨터를 좋아하는 사람이라면 이 내용을 알 필요가 있다고 생각합니다.