💽 디지털 공학 개론
디지털 논리연산
- 논리 연산
- 2진 비트로 표현된 정보 처리
- 모든 디지털 시스템의 기본 연산
- 디지털 시스템
- 2진 논리 회로(binary logic circuit)로 구현
- 논리 회로
- 두 개의 상태(0, 1)로 표현되는 입력 신호에 대해 논리적 연산을 수행하는 전자회로
- 기본 논리 연산
- AND 연산
- 두 개의 스위치가 모두 닫혀있어야 램프가 켜짐
- 논리식: L=AB, L=A*B
- 곱 연산
- 직렬 연결
- OR 연산
- 두 개의 스위치 중, 어느 하나만 닫혀도 램프가 켜짐
- 논리식: L=A+B
- 합 연산
- 병렬 연결
- NOT 연산
- 스위치가 닫히면 램프가 꺼지고, 열리면 켜짐
- 논리식: L=A'(프라임, 대시)
논리 게이트
- 논리 게이트
- 2진 정보를 처리하기 위한 기본적인 논리회로 부품
- 트랜지스터를 이용하여 구현
- 기본적인 논리게이트: AND, OR, NOT 게이트
- AND 게이트
- AND 연산을 수행하는 논리 게이트
- 출력 함수: F=AB, F=A*B
- 진리표, 진리 지표(2^2=4)
- OR 게이트
- OR 연산을 수행하는 논리 게이트
- 출력 함수: F=A+B
- 진리표, 진리지표(2^2=4)
- NOT 게이트
- 입력신호를 반전시켜 출력하는 논리 게이트
- 인버터(inverter)
- 출력 함수: F=A'
- 진리표, 진리지표(2^1=2)
- 버블
💻 마이크로프로세서
AVR 소개
- AVR
- 1997년, 미국 Atmel사에서 개발
- 8비트 제어용 마이크로콘트롤러 시리즈
- 대중적으로 널리 사용되는 원칩 마이크로컴퓨터
- 하버드 구조
- 파이프라인 처리 방식(명령어 단일 클럭으로 실행)
- RISC(Reduced Instruction Set Computer) 방식
- 명령어 처리 속도와 효율성이 높음
- 사용자 편의를 위해 ISP(In-System Programming) 방식으로 개발 >>
ROM-writer
- AVR 마이크로콘트롤러 패밀리
- 메모리의 용량 및 입출력 장치 개수를 비롯한 주요 기능 외에 핀의 개수, 칩 크기에 따라 응용 범위 달라짐
- 내장 메모리 용량 및 핀의 개수의 크기에 따라 ATiny, AT90, ATmega 패밀리
- AT90 사용이 저조하여 단종
- TINY AVR family
- 내부 RAM 없거나 매우 적은 모델
- 핀 수도 적음
- 간단한 응용 시스템, 제품 개발
- 1KB~2KB의 플래시 메모리(내부)
- MEGA AVR family
- 8KB~256KB의 플래시 메모리(내부)
- 가장 규모가 크며 성능이 높고 가격이 비쌈
- 28~64핀, 최대 7개의 I/O 포트
- 프린터, FAX, CD-ROM, 통신 장비의 컨트롤러 제어기
- 특수 용도 AVR(ASSP AVRs)
- 차량용, CAN 통신용, LCD 드라이버, 배터리 컨트롤러, USB 내장
- RISC
- 발진 주파수가 내부 클럭(전기적 진동 신호)
- 기본 명령의 실행 시간: 1 클럭
- 32개의 범용 레지스터가 ALU(연산 장치)에 직접 연결 >> 모든 연산 및 전송이 레지스터에서 레지스터로
- 2단계의 파이프라인 구조
- 하버드 구조
- 프로그램 버스와 데이터 버스가 별도
- 동시에 액세스 가능
- 데이터 메모리: 레지스터 파일 형태로 통합 관리
- 레지스터와 데이터 메모리를 레지스터 파일이라고 하는 하나의 통합된 공간에 같이 배치
- 레지스터 대 레지스터의 방식으로 일괄 통합 관리
- 레지스터와 메모리 간에 상호 전송 필요X
- 명령어 수 줄이고 속도 빨라짐
- CMOS 구조
- 소비 전력이 매우 적음
- 전달 특성 우수
- 동작 전압 범위 넓음
- 플래시 메모리 탑재(EEPROM)
- 프로그램 메모리가 플래시 메모리로 되어 있음
- ISP 기능 제공: 손쉽게 프로그램 다운로드
- C언어에 최적화된 설계
- RISC 구조 >> CPU 내부 명령어 적음
- 컴파일 과정에서의 최적화 수행 여부가 성능에 중요한 역할
- 어셈블리어 코드보다 최적화 컴파일러가 만든 어셈블리어 코드가 크기도 작고 속도도 빠르게 함
- 개발 단계에서부터 C언어 최적화 고려하여 설계
ATmega128의 특징
- 컴퓨터 구조
- 8비트 마이크로콘트롤러로서 저소비 전력형
- RISC 구조
- 133종의 명령어 세트 >> 1클럭 실행 사이클
- 명령 처리 속도: 16MHz, 평균: 16MIPS
- 8비트 범용 작업 레지스터 32개
- 2 사이클로 실행되는 곱셈기
- 다수의 I/O 제어용 레지스터
- 메모리의 구성
- 4KB의 데이터 저장용 SRAM
- 4KB의 데이터 저장용 EEPROM
- 외부에 최대 64KB의 데이터 메모리를 인터페이스
- memory-mapped I/O 방식 사용
- 외부 I/O 번지는 데이터 메모리 영역에 할당
- I/O 장치의 구성
- 8비트 병렬/O 포트 6개 + 5비트 병렬 I/O 포트 1개(G)
- USART 직렬 통신 포트 2개 >> 전이중 통신방식(동시에 양방향 통신)
- SPI 및 TWI 직렬 통신 포트
- 8비트 타이머/카운터(0,2) 2개
- 16비트 타이머/카운터(0,3) 2개
- 2개의 8비트 PWM(펄스 폭 변조) 출력
- 6개의 2~16비트 PWM 출력
- 1개의 아날로그 비교기
- 프로그램 및 동작
- 128KB의 ISP 방식 프로그램용 플래시 메모리
- 10000번까지 지우고 다시 쓸 수 있음
- ISP 전용 SPI 인터페이스 핀
- 리셋 벡터 + 외부 인터럽트 8개 = 인터럽트 벡터 35개
- 기타 특징
- 슬립 모드: 6개의 파워 절약 모드
- ATmega103 호환 모드
- 64핀 TQFP(Thin Quad Flat Package)
- 64핀 MLF(Micro Lead Frame)
- TQFP: PC 카드(PCB: 집적회로판)처럼 공간이 제약된 응용 제품 설계 시 사용되는 집적 회로
- MLF: 변환기판에 사용 가능한 집적 회로
L
: 2.7V~5.5V의 전원 전압 및 0~8MHz의 시스템 클럭에서 동작
128
: 4.5V~5.5V의 전원 전압 및 0~16MHz의 시스템 클럭에서 동작
- 핀 배치 및 기능
- VCC: 전원 공급(+)
- GND: 전원 접지(-)
- Port A~E: 8비트 양방향 입출력 포트
- Port F:
+
A/D기능 내장
- Port G: 5비트 양방향 입출력 포트
- XTAL1,2: 클럭 단자(외부)
- AVCC: Port F의 A/D 변환기 회로 전원 공급(+)
- AREF: A/D 변환기의 아날로그 기준 전압 핀
- PEN: SPI 시리얼 프로그램 모드 시 프로그램 인에이블 핀
ATmega128 내부 구조
- 메모리
- 플래시 프로그램 메모리
- EEPROM
- 데이터 메모리(SRAM)
- 프로그램 카운터(PC)
- 다음에 실행할 명령어 주소 가리킴
- 플래시 프로그램 메모리 공간
- 명령어를 차례로 인출 >> 응용프로그램 실행
- 명령어 레지스터(IR)
- 프로그램 카운터가 지정한 곳에서 명령어 레지스터로 명령어 인출
- 명령어 디코더
- 명령어 레지스터의 명령 코드를 디코딩 >> 제어 신호 생성
- ALU: 명령 코드에 해당되는 연산 동작 수행
- 제어 신호: 연산 대상이 되는 오퍼랜드를 ALU에 전달 & 연산 결과 저장
- 범용 레지스터
- 데이터 레지스터: 데이터를 저장하는 레지스터
- 주소 레지스터: 레지스터 간접 주소 방식을 위한 레지스터
- 기타 주변 장치
- USART: 범용동기/비동기 직렬송수신장치
- SPI 통신: 직렬 주변장치 인터페이스
- JTAG: 디버깅 수행
- ISP: 내장된 플래시 메모리에 실행 코드 직접 다운로드
- 플래시 프로그램 메모리
- 프로그램 저장
- 비휘발성
- 128Kbyte
- 10,000회 쓰고 지우기
- 다운로더(ISP 장치)
- 부트 프로그램: 부팅에 필요한 기본 정보(운영체제)
- 응용 프로그램: 워드 단위(16비트)의 명령어로 구성
- EEPROM
- 비휘발성: 프로그램 실행 중 생성된 데이터 유지
- 4Kbyte
- SRAM보다 속도가 느림
- 데이터 메모리(SRAM)
- 휘발성 메모리
- 변수는 프로그램 수행 중 변경 가능
- 변수 저장
- 4Kbyte 내장
- 동작 절차
- PC(프로그램 카운터) >> MAR(메모리 주소 레지스터) >> MBR(메모리 버퍼 데이터) >> IR(명령어 레지스터) >> Decoder >> ACC(누산기)
💾 시스템 프로그래밍
리눅스 컴파일의 개요
- 컴파일러
- 텍스트로 작성한 프로그램을 시스템이 이해할 수 있는 기계어로 변환하는 과정
- 컴파일 과정 + 라이브러리 링크 과정
- GNU C 컴파일러, gcc
- 리눅스에서 무료로 제공
- 기능: C 프로그램을 컴파일해 실행 파일 생성
- 형식:
gcc [옵션] [파일명]
-c
: 오브젝트 파일(.o
)만 생성
-o 실행 파일명
: 지정한 실행 파일 생성하고 기본 실행 파일명은 a.out
# gcc test.c
# ls
a.out test.c
# gcc -o test test.c
# ls
test test.c
- /user/local/bin 디렉토리에 설치됨 >> 경로 추가해야 함
Makefile과 make
- 소스 파일 여러 개를 묶어서 실행 파일 생성하는 도구
- make 명령은 Makefile 내용에 따라 컴파일
- /user/ccs/bin을 경로에 추가해야 함
// main.c
#include <stdio.h>
extern int addnum(int a, int b); // 외부 함수
int main(void)
{
int sum;
sum = addnum(1,5);
printf("Sum 1~5 = %d\n", sum);
return 0;
}
// addnum.c
int addnum(int a, int b)
{
int sum = 0;
for (; a<=b; a++)
sum += a;
return sum;
}
# Makefile // 환경 설정
CC = gcc // 컴파일러
...
OBJS = main.o addnum.o // 오브젝트 파일
LIBS =
all: add // 실행 파일 생성
...
# make
gcc -c main.c
gcc -c addnum.c
gcc -o add main.o
addnum.o
# ls
Makefile add* addnum.c
addnum.o main.c
main.o
# add
Sum 1~5 = 15
리눅스 기본 명령어들
- 프롬프트
- 사용자의 명령 입력 기다리는 표시
- 쉘에 따라 다르게 나타남
- 배시 쉘(
$
) / 시스템 관리자(#
)
- 기본 디렉토리
- 사용자의 홈 디렉토리
- user1(사용자 계정)@ubuntu(호스트 이름):~$
- 사용자 계정 등록 시, 지정
- 명령 행 편집 방법
- 프롬프트 다음에 명령어 입력
- 문자 지우기: 백스페이스, delete 키
- 단어 지우기: ctrl + w / 공백 문자로 구분
- 문장 지우기: ctral + u
- 리눅스 명령어의 구조
- 형식:
명령어 [옵션] [인자]
- 옵션: 명령어 사용 시, 세부 기능 선택 / 없을 수도 있음 /
-
또는 --
로 시작
- 인자: 명령어에 전달되는 값 / 파일 명 or 디렉토리 명
- 예시:
ls -al bbs
- 로그인 관련
- telnet: 유닉스/리눅스에 원격 접속
- logout: 접속 해제
- exit: 접속 해제
- shutdown: 리눅스 종료 명령(r/h/c)
- 파일/디렉토리 관련
- pwd: 현재 디렉토리 경로 출력
- ls: 디렉토리 내용 출력
- cd: 현재 디렉토리 변경
- cp: 파일 및 디렉토리 복사(r)
- mv: 파일 및 디렉토리 이름 변경 및 이동
- rm: 파일 및 디렉토리 삭제(r)
- mkdir: 디렉토리 생성
- cat: 파일 내용 출력
- more: 페이지 단위로 내용 출력
- chmod: 파일 접근 권한 변경
- grep: 패턴 검색
- 프로세스 관련
- ps: 현재 실행 중인 프로세스의 정보 출력(ef)
- kill: 프로세스 강제 종료(9)
- 기타 명령
- su: 사용자 계정 변경
- tar: 파일 및 디렉토리 묶기(tar) / 압축(gz)
- whereis: 파일 위치 검색
- date: 현재 날짜 출력
- clear: 현재 화면에 보이는 내용 지우기
- passwd: 사용자 계정의 비밀번호 변경
📠 운영체제
운영체제 발달 과정
- 제 1세대
- 진공관 사용
- 기계어 사용: 기계어로 프로그램 작성
- 운영체제 의미x
- 제 2세대
- 트랜지스터 사용
- 일괄처리 시스템 등장(버퍼링, 스풀링)
- 작업 제어 언어 등장
- 한 작업에서 다른 작업으로의 전환 자동 처리
- 입출력 제어 시스템 등장
- 기계어, 어셈블리어 사용
- 제 3세대
- 트랜지스터 + IC(집적회로) 사용
- 운영체제 고급 언어(C언어)로 작성: UNIX
- 장치 독립성 제공
- 다중모드: 일괄, 시분할, 실시간, 다중처리
- 작업제어 언어 복잡: 명령어 많아짐
- 소프트웨어 계층 구조 개념과 소프트웨어 공학 등장
- 다중 프로그래밍: 다중 사용자를 위한 CPU 작업 할당
- 다중처리: 다중 프로세스를 위한 시스템 처리 능력 향상
- 시분할 시스템: 사용자와 컴퓨터 인터페이스 운영으로 시분할 시스템 등장
- 제 4세대
- LSI(고밀도 집적 회로) + VLSI(초고밀도 집적 회로)
- 컴퓨터 네트워크와 온라인 처리
- 마이크로프로세서 등장 >> PC 개발
- 가상기계, 데이터베이스 시스템 등장
- 분산 데이터 처리 개념
- UNIX, DOS, VMS 사용
- Windows 개발
- 워크스테이션, 멀티 프로세서 일반화
- 제 5세대
- VLSI, 조셉슨 소자, 칼륨-비소 소자, 광-소자 사용
- 네트워크 시스템, 분산처리 시스템 실용화
- 지식기반 시스템 등장
- 인공지능 실현
- 논리, 추론 기능 강화
- 가상 머신 개념 등장
- 사용자와 컴퓨터 간 대화 기능 실현
- 정보 기술 융합 실현
- GUI 등 사용자 위주의 시스템
운영체제의 종류
- 서버용 운영체제
- UNIX, LINUX, Windows NT, ..., OS X Server
- 개인용 운영체제
- IBM-DOS, MS-DOS, Windows95, ..., MacOS
- 단일 작업 처리는 DOS 사용
- 다중 작업 처리는 Windows 비롯하여 UNIX, Linux 사용
- Windows95 이전의 Windows 3.1 버전들은 운영체제가 아니라 응용 프로그램에 속한다
📺 전산 개론
컴퓨터 네트워크와 인터넷
- 컴퓨터 네트워크와 인터넷
- LAN(Local Area Network): 한 건물이나 비교적 가까운 장소
- WAN(Wide Area Network): LAN을 다시 연결, 보다 광역화된 네트워크
- 인터넷망: 1969년, ARPAnet으로 시작
- 웹(WWW: World Wide Web): 1994년, 웹브라우저
- VAN(Valued Added Network): 부가가치 통신망, 공중 사업자로부터 회선을 대여
- 인트라넷(내부망)과 익스트라넷(외부망): 방화벽 안과 밖으로 구별, 보안 문제
- 초고속 인터넷 서비스
- 모뎀
- ADSL/VDSL, 케이블 모뎀
- 광케이블
- 1990년대 후반: 선진국들이 인터넷 속도를 획기적으로 증가
- 정보의 슈퍼 하이웨이
ICT 기술의 발전 방향
- ICT 기술은 마이크로프로세서와 주기억장치 RAM, 그리고 광섬유의 대역폭에 의해 통신 속도, 처리 성능이 향상됨
- 무어의 법칙
- 인텔사의 창업자
- 마이크로프로세서의 성능은 18개월마다 2배씩 증가, 가격은 매년 2분의 1씩 감소
- 주기억장치인 RAM 메모리의 용량도 10년 사이에 100배 증가
- 특히, 플래시메모리 용량은 최근 매년 2배씩 증가 >> 황의 법칙
- 길더의 법칙
- 광섬유의 대역폭 즉, 이터 전송속도는 12개월에 3배씩 빨라짐
- 초고속 통신망에 의한 인간 생활 사이클 변혁(재택 근무)
- 멧칼프의 법칙
- 3COM 창시자, 이더넷 프로토콜 개발
- 네트워크의 가치는 사용자 수의 제곱에 비례하지만 비용은 일정
- 인터넷을 통한 데이터량은 100일마다 2배 증가
- 통신의 부가가치 창출 속도가 엄청남
- 단품 서비스에서 토탈 솔루션 서비스로
- 제품 판매 후 유지 보수형 서비스 증대
- 멀티미디어 융복합 제품 증대
- 코스의 법칙
- 거래 비용 감소에 따라 기업 내 조직의 복잡성, 기업 수 감소
- 정보 처리 비용의 감소로 다운 사이징 등의 기업 개편 가속화 >> 새로운 전략 필요
- 아웃소싱, 외주
- 컴퓨터 기술 발전
- 마이크로프로세서 칩은 4비트부터 시작하여 현재는 64비트까지 발전
- 마이크로 컨트롤러, DSP(Digital Signal Processor), GPU(Graphical Processing Unit)과 같은 특수목적 마이크로프로세서
- 주기억장치로 이용되는 DRAM 메모리 용량도 크게 증가
- 휴대용 메모리로 USB 플래시 메모리의 사용 일반화
- 새로운 컴퓨터 구조를 통해 컴퓨터 성능과 처리 속도 향상
- 병렬 컴퓨팅: 명령문이 동시에 복수의 프로세서에 의해 처리되는 방식 >> 양자 컴퓨팅, 큐 비트
- 정보 통신과 인터넷 기술의 발전
- 초고속 인터넷에서 FTTH(Fiber to the Home)으로 발전
- FTTH는 광섬유를 이용한 인터넷망이 가정에까지 연결된 경우 >> 데이터 전송 속도: 100M비트/초~1G비트/초
- 모바일 컴퓨팅 활성화 >> 무선 인터넷 서비스 중요
- 과거의 e-커머스가 모바일 커머스로 발전
- 디지털 TV 보급 + 초고속 인터넷 인프라 = IPTV 서비스
- 초고속 인터넷 + TV 서비스 + 전화 >> 상호작용성
- 하드웨어, 소프트웨어 < 디지털 콘텐츠
- ICT 기술 활용 방식, 고객 요구 이해, 새로운 활용 제시가 중요
- 모바일 혁명
- 이동 중에 언제 어디서나 원하는 정보 주고 받는 것이 가능
- 지식 정보 사회에서 경쟁력 획득
- 빌게이츠가 언급
- 유무선망, 위성통신망, 방송망 통합 >> 광대역 통합망(BcN: Broadband Convergence Network)
- 위치기반 서비스(LBS: Local Based Service): GPS, 네비게이션, ITS(지능형 교통 시스템)
- 디지털 컨버전스(Digital Convergence)
- 컴퓨터와 IT 기술이 다른 첨단 기술인 BT(Bio), NT(Nano) 등과 융합
- 전통 산업과 융합 >> 경쟁력 제공
- 방송과 통신 간 경계선 없어짐
- 디지털 라이프: 가정 생활과 일상에 적용(홈네트워킹, 유비쿼터스 헬스)
- 가상현실 기술 발전 >> 새로운 가상 세계 생성
- 디지로그: 디지털 + 아날로그