#title 스터디/Nand 2 Tetris Describe [스터디/Nand 2 Tetris] here [[TableOfContents]] = Nand2Tetris = * 스터디 소개 : 컴퓨터의 최하위 레벨 계층인 논리회로(하드웨어)단부터 OS와 high level language까지 두루두루 섭렵하고 실습하여 최종에는 테트리스를 만드는것이 목표인 스터디입니다. * 스터디에 사용하는 사이트 -> http://www.nand2tetris.org/ == 9/26(목요일) == * 참여자 : [김윤환], [안혁준], [권영기]. * 스터티에 대한 방향 : * 누가 : 3명 + a(?)가 * 인원수 문제 : max 5명까지 받는다. * 언제 : 시작은? 이번주부터 // 매주 일요일 1시 * 어디서 : zp실에서 * 무엇을 : nand2Teris를 * 어떻게 : 집에서 ppt를 읽어온뒤 만나서 실습하는 방향으로. * 왜 : * 혁준 ->재미있을것같아서. * 윤환 ->컴퓨터 자체를 아는 좋은 기회라고 생각해서 + 흥미가 있는 분야? 여서. * 영기 ->전체를 꿰뚫기위해. * 다음시간까지 할일 : chapter 0,1 읽어오기. == 9/29(일요일) == * 참여자 : [김윤환], [안혁준], [권영기] === 공부한 내용 === * Chapter1 기본적인 논리 게이트를 공부함. Nand gate를 primitive gate로 놓고, 나머지 논리 게이트 Not, And, Or, Xor, Mux, Demux 등을 Nand만으로 구현. * 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); } }}} ---- ----