1. 2015 Mid-term Examination (100)
Basic Computer Design
Date: 2015-10-29
1. Computer 개발의 역사를 바탕으로 향후 Computer의 발전 방향을 예상하
라. (20)
- 소자 관점: 기계식 Relay, 진공관, TR 순으로 논리 회로를 구성하는 소자가
계속 줄고 있어, 향후 Computer를 구성하는 논리 회로 소자인 TR은 크기가
더욱 작아져 집적도와 전력 효율이 개선될 것으로 예상함
- 크기 관점: ENIAC은 크기가 매우 컸으나 PC로 오면서 책상에 둘 정도로
전체 Computer 크기가 줄었음, 향후 이 추세는 Smartphone, Smart Watch를
거치면서 고성능 Computer를 몸에 부착하거나 물체에 장착하는 형태로 발
전할 것으로 예상함
- 연결 관점: 기존 Computer는 단독으로 동작했으나, Internet이 활성화 된
후에는 전세계 Computer가 연결되는 특성을 가지고 있음, 향후 이 Network
은 더욱 커지고 연결 범위도 넓어져 소형 Computer까지 Internet에 연결되
어 통신이 가능할 것으로 예상함
2. 현재 사용 범위가 크게 확장되고 있는 Arduino 개념의 장점을 3가지 이상
서술하라. (20)
- Arduino는 Open Source로 개발되었으므로, HW를 누구든지 개발할 수 있
는 개방적인 특성이 있어 가격적 장점과 기기 호환성의 장점이 있음
- Arduino는 다양한 사용자가 전세계에 존재하고 있어, Program 개발에 필요
한 정보를 광범위하게 수집하여 활용할 수 있음
- Arduino에 연결할 수 있는 다양한 Sensor, Actuator가 존재하고 있어, 우리
가 상상할 수 있는 대부분의 제품을 Prototype을 쉽게 제작할 수 있음
- Arduino는 Sketch IDE를 제공하고 있고, 다양한 HW용 Firmware도 이미 제
공되고 있어 HW를 Arduino에 쉽게 연결하여 제어할 수 있음
2. 3. DRAM과 비교한 CPU Register의 특징을 3가지 이상 서술하라. (20)
- DRAM은 Capacitor 특징으로 인해 Refresh가 반드시 필요하여 고속 동작이
어려우나, Register는 Flip-flop 특성을 가지므로 고속 동작에 유리하다.
- Register는 구조가 복잡하여 대용량 설계가 어려우나, DRAM은 구조가 단순
화여 대용량 설계가 쉽다.
- Register는 Flip-flop 구조로 인해 전력 소모가 매우 커서 CPU 내에 여러
개를 배치할 수 없으나, DRAM은 Capacitor 충전을 위한 기능만 필요하여 전
력 효율이 좋으므로 Mainboard에 대용량 DRAM을 배치할 수 있다.
4. Arduino Sketch 언어를 이용해 다음 작업을 Programming하시오. Code는
짧을수록 가산점 반영. (40)
1) J-K Flip-flop 기능을 Arduino Sketch 함수인 void JkFlipflop(boolean J,
boolean K, boolean & Q, boolean & Qbar)로 표현 (10)
void JkFlipflop(boolean J, boolean K, boolean & Q, boolean & Qbar) {
static boolean q = false, qbar = true;
Q = J*qbar + (!K)*q;
Qbar = !Q;
q = Q, qbar = Qbar;
}
2) PC Keyboard로 영어 문자열 “one”을 입력받으면 “1”을 출력하고, “two”
는 ”2”를 출력하는 Code; 여기서 Serial Port의 연결 속도는 9600 [bps],
getSerialInput(), isEmpty() 함수는 있다고 가정; 반드시setup()과 loop() 함
수를 사용할 것(10)
void setup() {
Serial.begin(9600);
3. }
void loop() {
String sInput = getSerialInput();
if (!isEmpty(sInput)) {
if (sInput == “one”) Serial.print(‘1’);
else if (sInput == “two”) Serial.print(‘2’);
}
else delay(1000);
}
3) PC Keyboard로 숫자 문자열을 받으면, 1부터 이 숫자까지 합을 계산하여
출력하는 Code; 여기서 Serial Port의 연결 속도는 9600 [bps],
getSerialInput(), isEmpty(), atoi() 함수는 있다고 가정; 반드시setup()과
loop() 함수를 사용할 것(20)
void setup() {
Serial.begin(9600);
}
void loop() {
String sInput = getSerialInput();
if (!isEmpty(sInput)) {
int nMax = atoi(sInput);
int nSum = 0;
for (int i = 1; i <= nMax; i++) nSum += i;
Serial.print(nSum);
}
else delay(1000);
}