1. 1
2014-2 컴퓨터기초설계 기말 고사(105)
Basic Computer Design
Date: 2014-12-18
1. 조합 논리(Combinational Logic) 회로와 순차 논리(Sequential Logic) 회로에서 Clock이 필요
한 이유를 각각 설명하시오. (20)
- 조합 논리: 이상적인 논리 소자라면 Clock을 사용할 필요가 없지만 실제 논리 소자는 입력과
출력간의 시간 지연이 발생하여 논리 소자가 복잡하게 연결된 조합 논리 회로인 경우는 지연
시간에 의해 오동작이 발생할 수 있음; Clock을 사용하면 조합 논리 회로가 계산되는 순서를
제어할 수 있어 오동작을 방지할 수 있음
- 순차 논리: 순차 논리 회로는 Memory 특성이 기본이므로 이전 상태와 현재 상태를 구별하
기 위한 기준점으로 Clock을 필수적으로 사용함
2. CPU를 구성하는 ALU(Arithmetic Logic Unit), CU(Control Unit), Register, Cache의 임무를 서술
하시오. (10)
- ALU: CPU내에서 산술 연산과 논리 연산을 하는 조합 논리 회로 부분
- CU: Memory 이송, 명령어 해독, ALU 제어를 담당하는 순차 논리 회로 부분으로 CPU에서 핵
심적인 역할을 하는 부분
- Register: ALU와 CU가 사용하는 CPU 내부의 고속 Memory 부분
- Cache: Register는 용량이 적으므로 소수의 정보만 기억할 수 있고 DRAM은 Register에 비해
상대적으로 속도가 느리므로, CPU 내부에 위치하면서 Register보다는 용량이 큰 저장소 역할을
함
3. EEPROM, CMOS Memory, Flash ROM의 장점과 단점을 서로 비교하시오. (15)
EEPROM CMOS Flash
장점
- 전력이 끊겨도 저장 내
용이 사라지지 않음
- 장기간 정보 보존이 가
능함
- 쓰기 속도가 매우 빠름
- Memory 유지에 사용되
는 전력량이 매우 적음
- 전력이 끊겨도 저장 내
용이 사라지지 않음
- 상대적으로 쓰기 속도
가 빠름
- 대용량의 정보 저장이
가능
단점 - 쓰기 속도가 매우 느림
- 대용량 정보를 저장할
Battery가 없으면 내부
정보가 사라짐
- 장기간 보존시 내부 정
보가 사라질 위험 존재
2. 2
수 없음
4. 바다를 항해하여 오염 물질을 탐지할 수 있는 로봇을 만들기 위한 기본 Block Diagram을
구체적으로 그리고 Block을 구체적으로 설명하시오. (20)
- 바다 항해 로봇은 CPU, 센서부, 통신부, 구동부로 구분됨
- CPU: 로봇을 전체적으로 제어하는 부분으로 OS를 가질 수도 있음
- 센서부: 현재 위치를 판단하기 위한 GPS/가속계/관성계, 바다 특성 분석 위한 유량계/화학센
서 등으로 구성
- 통신부: 로봇의 정보를 외부 네트워크로 전송하기 위한 부분으로 3G와 같은 무선 통신이 필
요함
- 구동부: 로봇을 구동하기 위한 모터와 드라이브로 구성된 부분
5. Arduino Sketch 언어를 이용해 다음 작업을 Programming하시오. 반드시 setup()과 loop()
함수를 사용할 것. 다른 함수는 정의하지 말 것. Error 처리는 필요 없음. (40)
1) 먼저 Serial Port로 사용자 입력을 받아 변수 a에 저장한다. 다음으로 사용자 입력을 다시
받아 변수 b에 저장한다. 변수 a와 변수 b를 더한 결과를 Serial Port로 출력한다. 여기서
getSerialInput, atoi 함수는 이미 있다고 가정한다. (20)
String a, b;
void setup() {
Serial.begin(9600);
}
void loop() {
do { a = getSerialInput();
} while (a.length() == 0);
do { b = getSerialInput();
} while (b.length() == 0);
int nA = atoi(a); int nB = atoi(b);
Serial.println(nA+nB);
3. 3
}
2) Digital Port 3번에 연결된 LED를 3초 동안 30번 깜박인다. 이걸 계속 반복한다. 여기서 3번
에 LED는 이미 연결되어 있다고 가정한다. (20)
[답1]
void setup() {
pinMode(3, OUTPUT);
}
void loop() {
int msec = 3000/30;
digitalWrite(3, HIGH); delay(msec/2);
digitalWrite(3, LOW); delay(msec/2);
}
[답2]
void setup() {
pinMode(3, OUTPUT);
}
void loop() {
int msec = 3000/30;
for (int i = 0; i < 30; i++) {
digitalWrite(3, HIGH); delay(msec/2);
digitalWrite(3, LOW); delay(msec/2);
}
}