Describe 스터디/Nand 2 Tetris here
1. Nand2Tetris ¶
- 스터디 소개 :
컴퓨터의 최하위 레벨 계층인 논리회로(하드웨어)단부터 OS와 high level language까지 두루두루 섭렵하고 실습하여 최종에는 테트리스를 만드는것이 목표인 스터디입니다.
- 스터디에 사용하는 사이트 -> http://www.nand2tetris.org/
1.2.1. 공부한 내용 ¶
- Chapter1
- 기본적인 논리 게이트를 공부함.
- Nand gate를 primitive gate로 놓고, 나머지 논리 게이트 Not, And, Or, Xor, Mux, Demux 등을 Nand만으로 구현.
- Mux나 Demux같은 경우, 입력이나 출력이 너무 많을 경우, 작은 규모의 Mux를 여러 개 이용해서 큰 규모의 Mux를 구현해도 된다. 예를 들면, 4way Mux는 2Way Mux 3개를 이용해서 구현할 수 있다.
- HDL Code
- Not Gate
CHIP Not2 { IN a; OUT out; PARTS: Nand(a = a, b = a, out = out); }
- And Gate
CHIP And { IN a, b; OUT out; PARTS: Nand(a = a, b = b, out = x); Nand(a = x, b = x, out = out); }
- Or Gate
CHIP Or { IN a, b; OUT out; PARTS: Nand(a = a, b = a, out = x1); Nand(a = b, b = b, out = x2); Nand(a = x1, b = x2, out = out); }
- Xor Gate
CHIP Xor { IN a, b; OUT out; PARTS: Nand(a = a, b = a, out = nota); Nand(a = b, b = b, out = notb); Nand(a = nota, b = b, out = x1); Nand(a = a, b = notb, out = x2); Nand(a = x1, b = x2, out = out); }
- Mux
CHIP Mux { IN a, b, s; OUT out; PARTS: Nand(a = s, b = s, out = nots); Nand(a = a, b = s, out = x1); Nand(a = b, b = nots, out = x2); Nand(a = x1, b = x2, out = out); }
- Mux 4way
CHIP Mux4way { IN a[4], s[2]; OUT out; PARTS: Nand(a = s[0], b = s[0], out = nots0); Nand(a = s[1], b = s[1], out = nots1); Nand(a = a[0], b = s[1], out = x0); Nand(a = a[1], b = nots1, out = x1); Nand(a = a[2], b = s[1], out = x2); Nand(a = a[3], b = nots1, out = x3); Nand(a = x0, b = x1, out = xx0); Nand(a = x2, b = x3, out = xx1); Nand(a = xx0, b = s[0], out = xxx0); Nand(a = xx1, b = nots0, out = xxx1); Nand(a = xxx0, b = xxx1, out = out); }
- Demux
Demux는 다 구현하고서 Mux 4way를 Demux 파일에 써버리는 바람에 날려버림 ㅡㅡ;
1.2.3. 후기 ¶
- 쇠뿔도 단김에 빼라는 말이 있듯이, 순식간에 스터디 진행합니다. 학기 끝날 때까지 매주 진행해보려고 하는데, 끝까지 다 할 수 있었으면 좋겠습니다. 뭐 윤환이나 혁준이형 있으니까 잘 진행되겠죠. 이번 시간에 했던 것은 기초 중에 기초인데, 사실 작년 논리회로 시간에 Nand 게이트로 다른 gate 구현하기 따위는 해본적이 없어서 좀 당황도 했습니다. 그리고 그림 그리는 것도 참 간만이고, 다음 시간까지 논리회로 ppt 좀 보고서 와야겠네요. 간단한 4way MUX도 저리 긴데, 사칙연산은 어떻게 해야할지.. 머리가 아픕니다. - 권영기