#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);
}

}}}
----
----