본문 바로가기
코스웨어/15년 스마트컨트롤러

20150202-4번-김성주-컴파일 과정 / 마이크로 컴퓨터, 아날로그, 디지털

by 알 수 없는 사용자 2015. 2. 2.
728x90
반응형
1~4교시 수업 (S/W)

컴파일러 과정에 대한 설명 및 이해
  • 지난 주 정리

- C언어 연산자에 대한 정리 - 정수 - char(1), int(4)(sort(2), long(4) / 실수 - float(4)


- cl 컴파일러 :  메모장으로 만든 c source(main.c) -> 실행파일인 main.exe로 만드는 과정

- C 언어 기본형
#includ<stdio.h>
int main()
{
  return 0;
}

-파일 형태
파일 이름
파일 확장자
ex) main.c <- main(파일이름), .c(파일 확장자)
-예외 : .exe(execute) - 실행프로그램은 연결시키는 프로그램이 아닌 실행하는 프로그램이다.

                                                                                                                                        

  • exe 파일 내용 확인하는 방법
1. .exe파일을 .bin 파일로 확장자를 변경해준다. (ex)main.exe -> main.bin) ex)
2.7. 비쥬얼 스튜디오를 실행한다.
3. 변경한 .bin 파일을 비쥬얼 스튜디오에 드로그엔 그롭한다.
4. 비쥬얼 스튜디오에 .bin파일의 내용이 출련된다.

설명 : 4D의 크기는 1bite / 사용한 진법은 16진법을 10진법으로 표시하면 77, M에 대응하는 아스키 코드가 77이므로 M이 출력된다.

실행파일 - 기계어(2진수)로 되어있다. 2진수는 binary라 해서 binary 파일이라고도 한다.
  • 컴퓨터의 기계어 사용에 대한 기본 분류
컴퓨터의 CPU : AMD가 Intel의 호환기종으로 사용하기 때문에 컴퓨터에서 사용하는 CPU는 주로 Intel과 Intel기계어를 기반으로 만든 AMD가 있다.
컴퓨터의 CPU외 CPU : 컴퓨터에서 사용하는 기계어와 다른 기계어를 사용하는 CPU

                                                                                                                                        
  • 번역기(컴파일러, 인터프리터)
C소스파일을 번역해서 실행할 수 있게 하는 프로그램이다.
설명 : C언어로 만든 고급어(ex)main.c)를 기계어(2진수)로 번역해주는 번역기(한번에 c소스파일을 한번에 번역하는 역할을 한다.)

종류 : 컴파일러, 인터프리터


  • 컴파일러 ex)C,FORTRAN...

- 고급언어로 쓰여진 프로그램이 컴퓨터에서 수행되기 위해서는 컴퓨터가 직접 이해할 수 있는 언어로 바꾸어 주어야 합니다. 이러한 일을 하는 프로그램을 컴파일러라고 합니다.

- 번역과 실행 과정을 거쳐야 하기 때문에 번역 과정이 번거롭고 번역 시간이 오래 걸리지만, 한번 번역한 후에는 다시 번역하지 않으므로 실행 속도가 빠릅니다.

- 하나의 C소스 파일은 하나의 CPU에 맞게만 번역이 되기 때문에 다른 기종의 CPU와의 호환성이 나쁘다.
- 사용 예 : 컴퓨터 게임, 알집

  • 인터프리터 ex)java,BASIC...
- 소스 프로그램을 한번에 기계어로 변환시키는 컴파일러와는 달리 프로그램을 한 단계씩 기계어로 해석하여 실행하는 ‘언어처리 프로그램’입니다. 
줄 단위로 번역, 실행되기 때문에 시분할 시스템에 유용하며 원시 프로그램의 변화에 대한 반응이 빠릅니다.

- 한 단계씩 테스트와 수정을 하면서 진행시켜 나가는 대화형 언어에 적합하지만, 실행 시간이 길어 속도가 늦다는 단점이 있습니다.

- 프로그램이 직접 실행되므로 목적 프로그램이 생성되지 않는다.

- JAVA 프로그램의 실행 과정 
main.java -> 컴파일러 -> main.class(가상 CPU의 실행파일)
  -> JVM(실행하면서 번역) -> 실행 / (가상 CPU : 실제로 존재하지 않는 CPU)
-JAVA의 사용예 : 안드로이드 앱

  • 컴파일러
파일명.c로 만든 c언어 프로그램을 파일명.exe로 된 실행파일로 바꾸는 과정
  • 컴파일러 과정
- 기본형을 컴파일러를 사용하면 main.c -> main.obj(o) -> main.exe 이런 순서로 생성된다.
- 그러나 main.c - main.obj 사이에는 2가지 (main.i - main.ams)가 있다.
- cl - main.c -> main.i -> main.asm -> main.obj -> main.exe 
- gcc - main.c -> main.i -> main.s -> main.o -> main.exe 

 - 컴파일러 과정



  •  cl명령어로 컴파일 중간과정 파일 생성 명령어
컴파일 세부과정에 따른 과정 및 명령어

컴파일러 세부과정 명령어 입력에 따른 파일 생성

- .obj 파일을 만드는 명령어 cl /c 

- .i 파일을 만드는 명령어 cl /P

- .asm 파일을 만드는 명령어 cl /Fa

- 만들어진 .i, .asm 파일 내의 내용 확인


  • 전처리 과정(Preprocess)
위치 - .c - .i 사이의 과정
정의 : C Program이 Compile시에는 실제 Source의 내용을 바로 Compile하는 것이 아니라 일단 개발자가 작성한 Source를 분석하여 필요시 일부 Source를 수정하는 작업을 진행 하게됩니다.
이처럼 Compile하기전에 미리 어떠한 작업이 이루어지는 것을 흔히 '전처리'라고 부릅니다.(전처리 과정은 대게 Source File과 include File을 결합한 직후 발생합니다.)
전처리는 c언어가 아니고 따로 취급한다.
ex)#include<stdio.h> 


 구분 방법 : #이 붙으면 전처리 언어
                 : #이 없으면 c언어 
 명령어 : <> , ""

- main.i 파일의 내용에서 마지막 부분을 확인하면 그림과 같이 나온다. 입력한 C언어 위에 위치한 엄청나게 많은 명령어는 c언어가 아닌 #include가 불러온 전처리 언어이다.


  • 컴파일 과정(Compile)
위치 - .i - .ASM 사이의 과정
C언어로 된 파일을 어셈블리파일 ex)main.ASM로 변경하는 과정

  • 어셈블리 과정(Assembly)
위치 - .ASM - .obj 사이의 과정
컴파일된 파일 main.ASM 을 main.obj 으로 변경해서 C언어를 기계로 변경하는 과정
변형만 될 뿐 실행파일이 만들어지지 않았으므로 실행이 불가능하다.

- 어셈블리 파일의 마지막 부분의 내용

  • Link 과정(.exe, .bin)
위치 : .obj - .exe 사이의 과정
목적프로그램이 만든 기계어(.obj)를 가지고 다듬어서 실행가능한 기계어로 만드는 과정
결과적으로 "main.exe"와 같은 실행프로그램을 만드는 과정이다.


  • C소스 프로그램 제작
-주석 :1.  // : 현재위치로 부터 1줄을 사용할 때 사용한다.
           2. /*
                  */ : 줄 단위가 아닌 //사이의 명령어를 사용한다.
ex)
/*
* Default number of supported streams. _NFILE is confusing and obsolete, but
* supported anyway for backwards compatibility.
*/



5~8교시 수업(H/W)
마이크로 컴퓨터 / 아날로그, 디지털

  • 마이크로 컴퓨터

마이크로 프로세서의 역사
- 4비트 마이크로 프로세서 - Intel 4004(1960), 4040
- 8비트 마이크로 프로세서 (1970년대 중반)
  •  인텔 (Intel) - Intel8008(1972년) -> Intel808(1973년) -> Intel 8085
  •  모토로라(Motorola) - MC 8600(1974년) -> MC 6802
  •  자일로그(Zilog) - Z80 <- Intel8080을 개선, Intel8080의 명령어를 모두 포함하고 내부구조도 크게 향상
  •  MOS 테크(MOS technology) - MXS6502 -> Apple 2의 CPU(Central Process Unit)로 사용
- 32비트 마이크로 프로세서
  • Intel 80386, MC 68020, MC 68030(1985년), Z80000(1986년)
  • Intel 80386 -> 386PC / MC 68020 -> 매킨토시2
  • Intel 80486 -> IBM PC 486, PS/2 / MC 86030 -> Power Book 컴퓨터, MC 68040 -> 맥킨토시 FX
  • Intel 80586(Pentium, 1992년) - CISC
마이크로 프로세서의 2대 계열 : 80계열, 68계열

특징
  • 고집적 회로 구성으로 제품의 소형화
  • 가격이 저렴
  • 기능의 변경이나 확장 용이
  • 신뢰성 향상
응용 형태
  • 컴퓨터 및 주변 부품으로 이용
  • 독립된 장치의 내부 제어기로 이용 - 계측기, 자동차 분야
  • 대형 시스템의 구성 요소로 사용 - 통신 시스템
종류
  • 슈퍼 마이크로 컴퓨터, 데스크탑 컴퓨터, 휴대형 랩탑 컴퓨터, 노트북 컴퓨터, 팜탑 컴퓨터

  • ADC (Analogue to Digital Convert)
아날로그(Analogue)
- 아날로그 신호(Analogue Signal)

  • 연속성 / 선형 / 간섭을 많이 받음 -> Digital로 바꾸는게 효율적이다.
  • 자연계에서 일어나는 물리적인 양은 시간에 따라 연속적으로 변화
  • 온도, 습도, 소리, 빛 등은 시간에 따라 연속적인 값을 갖는다.

- 디지털 신호(Digital Signal)

  • 불연속성 / 비선형 / 간섭을  적게 받음 
  • 분명히 구별되는 두 레벨의 신호값 만을 갖는다.

- 아날로그와 디지털의 신호 차이

- 디지털 시스템

  • 이산적인 정보를 가공하고 처리해서 최종 목적으로 하는 정보를 출력하는 모든 형태의 장치
  • 내, 외부 잡음에 강함.
  • 설계하기가 용이
  • 프로그래밍으로 전체 시스템을 제어할 수 있어서 규격이나 사양의 변경에 쉽게 대응할 수 있어서 기능 구현의 유연성을 높일 수 있고 개발기간을 단축시킬 수 있다.
  • 정보를 저장하거나 가공하기가 용이
  • 정보처리의 정확성과 정밀도를 높일 수 있으며, 아날로그 시스템으로는 다루기 어려운 비선형 처리나 다중화 처리 등도 가능
  • 전체 시스템 구성을 소형화, 저가격화로 할 수 있음.
-> 디지털 시스템의 많은 장점으로 인해 기존 아날로그 시스템이나 새로운 시스템의 대부분은 디지털 시스템으로 구성


아날로그 시스템
  • 연속적인 정보를 입력받아 처리해서 연속적인 형태의 정보를 출력하는 시스템

-아날로그 회로와 디지털 회로의 상호 연결


- 디지털 정보의 표현

1. 디지털 정보의 전압레벨

  • 디지털 정보를 표현하기 위해 2진수 체계(binary system)를 사용
  • '0'과'1' 만의 2종류의 디지트(digit)를 사용

2. 디지털 정보의 표현단위

  • 1nibble = 4bit
  • 1byte = 8bit / 1 character
  • 영어는 1byte로 1 문자 표현, 한글은 2byte
  • 1 word : 특정 CPU에서 취급하는 명령어나 데이터의 길이에 해당하는 비트 수

3. 전자소자를 이용한 논리 표현
  • 다이오드에 의한 스위칭
  • 쌍극성 트랜지스터에 의한 스위칭
  • NMOS 트랜지스터에 의한 스위칭

- 논리레벨과 펄스 파형

  • 1. 정 논리와 부 논리
  • 양논리 또는 정논리(positive logic)
  • 음논리 또는 부논리(negative logic)
  • 정논리와 부논리는 모두 디지털  논리 시스템에서 이용되고 있으며, 정논리가 일반적으로 많이 사용

2. 펄스(pulse) 파형
  • 펄스파형은 LOW 상태와 HIGH 상태를 반복하는 전압레벨로 구성
  • 주기 펄스(periodic pulse) & 비주기 펄스(non-periodic pulse)로 분류

이상적인 펄스파형
  • 이상적인 주기 펄스는 두개의 에지로 구성
  • 리딩 에지(leading edge) = 상승에지(rising edge)
  • 트레일링 에지(trailing edge) = 하강에지(falling edge)

3. 주기, 주파수, 듀티 사이클

주파수(frequency)
  • 주기적인 파형이 1초 동안에 진동한 횟수를 의미
  • 단위는 전파를 처음으로 발견한 독일의 헤르츠의 이름을 따서 헤르츠(Hz)를 사용
주기(Period)
  • 주기적인 파형이 1회 반복하는데 걸리는 시간을 의미

- 주파수와 주기와의 관계

  • T=1/f , f=1/T      T : 주기 , f : 주파수

Duty cycle
  • 장치나 시스템이 작동되는 동안의 시간 비율이다. 1초동안 동작하고, 99초동안 꺼지고 또 다시 1초동안 동작하고, 99초동안 꺼지는 패턴을 반복하는 디스크 드라이브를 가정해 보자. 
  • 이 드라이브는 1/100초 동안 동작하는것이 된다. 이때 우리는 이 디스크 드라이브의 duty cycledl 1/100 또는 1% 라고 하는 것이다.


4. 디지털 집적회로

- 논리회로의 종류
  • 조합논리회로 - 기본 게이트의 조합으로 구성되는 논리회로
  • 순서논리회로 - 조합논리회로에 플립플롭(flip-flop) 또는 메모리를 부가한 논리회로

4-1. IC 패키지
  • PCB에 장착하는 방법에 따라 삽입 장착형과 표면 실장형으로 구분
  • 삽입 장착형 IC는 PCB보드의 구멍에 끼우는 핀을 가지고 있어 있어 뒷면의 도체에 납땜으로 연결할 수 있으며 ,DIP 형태를 갖는다.
  • 표면 실장형 IC는 PCB 표면의 금속 처리된 곳에 직접 납땜 처리
  • SMD는 DIP 형태의 논리회로의 크기를 70%가량 줄이고, 무게를 90%만큼 감소, 또 SMD는 PCB의 제조 가격을 크게 하락 시킴
4-2. 집적회로의 분류

트랜지스터의 집적도에 따른 분류


5. ADC와 DAC

  • ADC(Analog-to-Digital Converter)
  • DAC(Digital-to-Analog Converter)
  • 아날로그- 디지털 변환과정


5-1. 표본화(sampling)
  • 샤논의 표본화 정리 : 신호릐 최고 주파수의 2배 이상의 빈도로 샘플링하면
  • 샘플링된 데이터로부터 본래 데이터를 재현할 수 있다.
  • 사람의 음성인 경우 1초 동안에 8000번 샘플링 필요

5-2. 양자화(quantization)
  • 펄스의 진폭의 크기를 디지털 양으로 변환
  • 이 과정에서 불가피한 양자화 잡음이 발생
  • 양자화 잡음은 이미 정한 신호레벨의 수를 늘리거나 줄일 수 있으나, 데이터의 양이 많아지는 단점이 있다.

5-3. 부호화(Coding)
  • 부호화는 양자화한 값을 2진 디지털 부호로 변환
  • 일반적으로 전화 음성에서는 8비트로 부호화한다.
5-4. ADC와 DAC 과정의 예
  • ADC(Analog-to-Digital Converter)
  • DAC(Digital-to-Analog Converter)
  • CD 오디오 시스템에서의 신호처리과정
  • 소리(입력) -> MIC -> AMP -> ADC -> CD제조 -> DAC -> AMP -> 스피커 ->소리(출력)
  • Clock - Clock이 클 수록 처리할 수 있는 연산이 많아진다.
  • Timer / Counter / ADC / SPI / UART / PWM등등.. 많은 분야에 영향을 끼친다.
  • Clock을 같이 쓰냐 다르냐에 따라서 동기식 / 비동기식으로 나뉜다.
  • 동기식 : 클럭과 같이 사용
  • 비동기식 : 클럭과 독립적으로 사용


728x90