UART 일반적으로 TX/RX 2wire이고 hw flow control을 지원하는 경우 4wire이다. 2wire인 경우 start/stop bit를 통해 시작과 끝을 구분하고 baudrate 마다 1bit씩을 읽는다. 4wire의 경우 용어가 무척 헷갈리게 만들어놨는데 RTS(Request to Send: 나에게 데이터롤 보내줘 또는 나 받을 준비 됐어) CTS(Clear to Send: 어 알았어. 이제 보낼게) 이다. 순서상 RTS가 active low가 먼저 되어야 CTS가 그에 따라 low가 되고 TX 할 수 있는 상황이다. 두 경우 모두 asynchronous, full duplex 방식이라고 할 수 있다. SPI I2C처럼 slave address가 없는 대신 slave device 갯수만..
주변장치들이 CPU의 개입없이 메모리에 직접 접근하여 읽거나 쓸 수 있도록 하는 기능 - 여기서 주변장치란 : HDD, 그래픽카드, Network카드, 사운드카드 등 CPU는 DMA request를 DMA Controller에 보낸 뒤에 다른 일을 할 여유가 생김. DMAC의 counter가 0이 될 때까지 CPU 개입 없이 I/O 수행 작업이 완료되면 DMAC -> CPU로 단 한 번의 인터럽트만 발생한다. (데이터가 전송되는 동안 CPU는 다른 작업을 수행할 수 있게 되어 효율성 UP) 메모리의 일정 부분이 DMA 전용으로 지정되며 CPU가 데이터 전송에 관여하지 않아도 되므로 성능이 좋아짐 주변장치의 데이터는 Device Controller에 의해 local buffer로 이동했다가 memory에 ..
메모리는 이렇게 생겼다. Address pin과 Data pin (이 둘이 서로 따로 존재한다는 것을 기억하자! 이게 중요하다!)으로 구성되어 있다. RD(Read) pin : memory로부터 data를 읽을 때 사용WR : write 할 때A[0]~[7] : Addresss pin이며 8개니까 2^8개의 주소를 가리킬 수 있다. 0x0~0xFFD[0]~[7] : Data pin이며 각 주소당 몇 칸의 데이터를 저장할 수 있느냐이다. 이 메모리에서 주소 하나로 가리킬 수 있는 데이터 량은 8bit (1byte)임을 알 수 있다.그럼 이 메모리에 담을 수 있는 총 데이터의 크기는 주소의 크기 x 주소 하나당 데이터 크기 이니까 2^8 x 8 bit = 2^8 Byte = 256 Byte가 된다. 본격 m..
Bus란 장치들이 정보 공유를 위해 공유하는 선들의 집합인데, 한 번에 한 녀석만 다닐 수 있는 Freeway에 가깝다.어느 특정 시점에 시간을 멈추고 bus를 바라본다면 bus 위에는 그 당시 bus를 쓰도록 허가 받은 장치들의 신호만이 보인다고 생각하면 된다. clock 별로 바라보면 마치 clock 단위마다 네온 사인처럼 왔다갔다 하는 형국이다.아래처럼 길 하나를 함께 쓰되 특정 시점에 허가 받은 녀석만 사용할 수 있다. MUX를 이용한 register 끼리의 통신 통로로써의 bus를 예로 들어보자. 각각의 register는 4bit latch이며 4개의 MUX에 연결되어 있다. S1, S0가 MUX control신호이며, 이 신호에 의해 MUX의 enabled port 번호가 결정된다. 진리표를 ..
Clock은 디지털 회로의 심장 박동이라고 할 수 있다. System적으로는 clock이 모든 행위의 단위가 된다고 할 수 있고, 박자를 맞추어 사건을 정해진 순서대로 헝클어짐 없이(동기화) 수행되도록 한다는 의미이다. CLK은 '유지비트'라는 말로 바꿔쓸 수 있다. 유지비트가 1(CLK high)일 때만 data in으로부터 들어오는 데이터를 읽을 수 있고 0(CLK low)일 때는 마지막 유지비트가 1일 때의 data가 유지된다. 모든 디지털 회로를 논리회로와 이런 latch회로로 구성된다. 그럼 반복 계산을 하려면 논리회로를 수십 개 써야만 할까? 우리는 그 대신 중간에 register를 하나 두고 한 번 계산된 값을 넣어 둔 다음 feedback 하는 형태로 회로를 구성할 수 있다. 이때 CLK이..