스마트 컨트롤러 - 1차원 배열의 입력과 출력


학습목표

 

C에서 배열이 어떻게 구동하는지 이해할 수 있다.

 

1차원 배열

 

p/257

 

배열에서 3개의 변수를 만들었지만 그 이상의 변수를 초기화하여도 에러가 발생하지 않는다. compiler는 문법적 오류를 검사하기 때문에 경우에 따라서는 문제가 발견되지 않을 수 있다.

 

//visual studio에서는 배열을 생성할 때 사용자가 배열의 범위를 침범하여 코딩하는 경우를 대비하여 배열 사이를 12byte로 띄워놓았다.

 

First In Last Out으로 자료를 넣고 빼는 것이 stack 메모리의 출력 형식이다.

 

QueueFirst In First Out 형식이다. ex) 키보드, 마우스 입력

//순서가 중요시 되는 작업에는 First In First Out형식을 쓴다.

 

Stack구조는 자주 사용하는 것을 다시 쓴다는 규칙을 바탕으로 자주 쓰는 것을 쉽게 꺼내 쓸수 있는 곳에 보관하는 것이다. ->가장 최근에 만든 함수/변수가 가장 먼저 사용될 가능성이 높다!

 

p/259 예제 - 배열의 길이 계산)

 

배열을 만들 때 변수의 개수를 세기 귀찮을 때 개수를 넣지 않아도 compiler에서 자동으로 개수만큼 변수를 생성해준다.

 

초기화시키지 않은 배열의 값에는 0이 들어간다.

 

p/262 예제 - 문자열)

 

 

 

%s 는 시작 문자의 주소점에서 시작해서 0이 나올 때 까지 출력한다.

 

코드를 짜다가 아스키코드의 번호가 필요한 경우가 있다. 이 때 %c‘ ’을 활용하여 아스키 코드를 알아볼 수 있다.

 

p/263 scanf 함수를 이용한 문자열의 입력

 

scanf를 사용하여 문자열을 입력할 때 띄워쓰기를 하게 되면 띄워쓰기 전까지만 출력된다.

 

/* visual studio에서 scanf를 제한하는가?

 

위에 선언된 str변수는 buffer이기 때문에 사용자가 입력하는 내용을 변수의 용량이 넘치더라도 그대로 입력해준다.

 

위의 str변수의 크기를 8로 지정하였는데도 scanf로 인해 그 이상이 입력되는 상황이 발생한다. 때문에 visual studio에서는 scanf를 사용하지 못하게 한다. => scanf는 경계체크를 하지 않는다.

 

 

%s를 사용하지 않고 문자열을 출력하게 코딩할 수 있다.



 

 

반응형
Posted by newind2000
Busan IT/디지털 제어2015. 3. 13. 13:35

디지털 제어 - Flip Flop회로(latch 회로, RS, D Flip Flop)

 

NOR/NAND latch 회로 복습

 

학습목표

 

7402를 활용하여 NOR회로를 만들 수 있다.

7400을 활용하여 NAND회로를 만들 수 있다.

NAND회로를 활용하여 RS Flip Flop 회로를 만들 수 있다.

7474회로로 D Flip Flop 회로를 만들 수 있다.

 

지난 시간에 만들었던 NOR/NAND latch회로를 만들어보자!

 

 





 

latchS-R 플립플롭의 가장 큰 차이는 클럭 공급의 차이이다.

클럭 공급으로 인해 데이터의 입출력이 연속이 아니라 클럭 공급의 형태로 바뀐다.

값이 1(S) 1(R)일 때 부정 값을 보완해주기 위해 나온 것이 D플립플롭이다.

 

/* 카르노 맵 그리는 법!

 

비트 2개가 한꺼번에 바뀌는 것을 방지하기 위해 SR값은 00 01 11 10으로 나열해 준다.

Q에는 2비트 값(0,1)을 기입해준다.

 

실습 - 클록형 S-R 플립플롭(NAND) 만들기






클럭의 high부분에서만 데이터가 처리되는 것을 레벨(level)트리거 라고 한다. 이 때 high부분에서 전압이 일정하지 않고 잡음이 발생하여 오동작이 발생할 수 있다. 때문에 high에서 low low에서 high로 바뀌는 부분에서 동작할 수 있도록 만든 것이 에지(edge) 트리거라고 한다.

//프로테우스에서 시뮬레이션 해보면 지연이 표시되지 않기 때문에 펄스 전이 검출기 회로에서의 지연 값을 볼 수 없다.



//파란색 구간은 부정을 표시한다.







 

//Q(t+1) 입력의 Q와 출력의 Q를 표시해주기 위한 표시.






 

반응형
Posted by newind2000
Busan IT/디지털 제어2015. 3. 12. 17:33

디지털 제어 - AVR makefile 소스의 이해와 1차원 배열

 

AVR makefile 소스의 이해와 1차원 배열

 

학습목표

 

WinAVR에서 makefile 구동 개념을 안다.

makefile의 기본 문법을 안다.

1차원 배열의 기본개념의 대해 이해한다.

 

WinAVR Makefile

 

87 CPPSRC = , C++ 소스

 

97 ASRC = , 어셈블리 소스

 

103 OPT = s,optimization 최적화.(0 = 속도 최적화, s = 메모리 최적화)

 

110 DEBUG = dwarf-2, 출력하는 디버그 파일 형식 설정

 

//COFF - Common File Form

 

//윈도우 실행 파일은 PE format

 

117 EXTRAINCDIRS =, Extra Included Directories

 

125 CSTANDARD = -std=gnu99, C 표준 설정

 

129 CDEFS = -DF_CPU=$(F_CPU)UL, C++ defined

 

 

cl /DSMART=100 CDEF.c

 

// 컴파일 옵션에서 사용하는, /(C) = -(

 

129 CDEFS = -DF_CPU=$(F_CPU)UL -> #define F-CPU 16000000UL //UL unsigned long

 

-D를 추가할 시 한 칸 띄우고 같은 다시 적어주면 된다.

 

makefile에 소스코드에 없는 내용이 적혀서 구동할 수 있기 때문에 소스를 분석할 때 makefile을 같이 보아야 한다.

 

133 ADEFS = -DF_CPU=$(F_CPU)

 

137 CPPDEFS = -DF_CPU=$(F_CPU)UL

 

//아래에 CFLAG는 누적된다.

 

150 CFLAGS = -g$(DEBUG), DEBUG에 위에 선언한 dwarf가 들어간다.

 

151 CFLAGS += $(CDEFS), //상위에서 나온 내용이 아닌 경우 오류가 난다.

 

152 CFLAGS += -O$(OPT),

 

153 CFLAGS += -funsigned-char,

 

157 CFLAGS += -Wall, Warning All 경고를 전부 출력해라. -> 소스에 사소한 것이라도 알려 달라.

 

// ‘-’ 다음에 나오는 것들은 옵션이다.

 

164 CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst)

 

CFLAGS는 가독성을 위해서 짧게 나누어서 나열한다.

 

233 MATH_LIB = -lm, math 라이브러리를 추가시킬 때 쓰는 옵션 //여기서 나오는 수학은 단순 사칙연산이 아니라 고등수학을 말한다. ex) sin, cos

 

262 LDFLAGS = -Wl,-Map=$(TARGET).map,--cref, LD(objexe로 만들어주는 기능)에 사용되는 flag(옵션)

 

340 CC = avr-gcc, C compiler(C:\WinAVR-20100110\bin)

 

355 MSG_ERRORS_NONE = Errors: none

 

389 ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS), /m MCU = atmega128

 

모든 flag값들을 ALL_CFLAGS가 다 가지고 있다는 의미

 

‘:’ label 표시이다.

 

// 탭으로 들여 쓰고 반드시 붙어 있어야 한다.

 

//대입 연산자랑 비슷한 순서로 수행된다.

 

 

 

 

 

이리하여 ‘make’를 쳤을 때 makefile이 어떻게 동작하는지 기본배경을 알 수 있다.

 

p/254 Ch. 11. 1차원 배열

 

같은 형의 자료를 한 개 이상 열거해 놓은 것을 배열이라고 한다.

 

모든 프로그래밍은 배열을 가지고 있고 그 개념은 거의 다 비슷하다.

 

C가 가지는 특징은 주소를 사용한다는 것이다. 또한 배열과 포인터는 밀접한 관련이 있다.

 

대괄호([])1개만 있으면 1차원 2개 있으면 2차원... so and so forth.

 

구형 c compiler에서는 배열 속 대괄호 안에 숫자를 변수로 만들어 쓸 수 없다.

//C++과 신형 c compiler에서는 허용한다.

 

p/256 예제 - 배열의 합)


 

반응형
Posted by newind2000
Busan IT/디지털 제어2015. 3. 12. 13:24

디지털제어 - 기억회로(NOR/NAND latch회로)

 

학습목표

 

- NOR 래치회로와 NAND 래치회로의 동작을 이해한다.

- S-R 플립플롭, D 플립플롭, J-K플립플롭, T플립플롭의 동작을 이해한다.

- 클록형 플립플롭, 에지 트리거 플립플롭, 주종형 플립플롭의 차이점을 이해한다.

- 비동기 입력의 동작을 이해한다.

 

 

플립플롭 하나는 한 개의 bit를 기억한다.

 

실습 - 기억회로 만들기)

 

NOR 게이트를 이용한 기억회로 //입력 값을 설정 한 후 회로에 전원을 인가한다.



정확한 이름은 NOR latch회로이다.

 

NOR gate 대신 NAND회로를 넣고 그려보자!

 

74HC02를 활용하여 NOR latch회로를 만들어보자!



74HC02를 사용하여 만들어 보았다.

NAND latch회로도 74LS00을 만들어 보았다.


반응형
Posted by newind2000

메모리(RAM)의 구조/지역변수&전역변수/AVR makefile

 

학습목표

 

메모리의 구조의 대하여 이해하고 변수생성 시 어느 영역에 저장되는지 안다.

폰 노이만 구조와 하버드 구조의 차이점을 이해한다.

지역변수와 전역변수의 차이와 활용에 대해서 안다.

재귀함수에 대해 안다.

Makefile에 있는 문법에 대해 안다.

 

//Intel이나 ATmega에서 메모리 영역의 사용은 동일하다.

 

명령어들은 메모리의 Code영역에 저장된다.

폰 노이만 방식은 Code영역과 저장용 메모리 영역의 버스를 달리함으로써 속도를 향상 시킨다.

 

전역 변수를 쓰면 함수의 인자가 필요하지 않게 된다.

 

전역변수는 프로그램을 복잡하게 만드는 주범임으로 가능한 한 사용을 최소화해야 한다.

또한 전역변수는 해당 프로그램이 시작될 때부터 종료할 때까지 메모리를 차지하게 된다. 때문에 RAM의 메모리를 지속적으로 사용하게 된다.

 

지역변수를 사용하면 변수의 생성과 소멸에 의해 CPU에 부하가 발생할 수 있지만 이것은 메모리 사용보다는 낮은 우선순위이다.

 

Static 지역변수


 

Static변수는 한 번만 초기화되는 전역변수이다.

 

p/234 예제 static 변수)

 

 

Static 변수도 전역변수의 일종임으로 가능한 한 지역변수를 사용하자!

 

사용해야 하는 우선 순위(왼쪽이 순위 높음)

 

지역변수 - static 지역변수 - 전역변수

 

레지스터 변수

 

레지스터 변수 선언하면 CPU내 레지스터에 저장될 확률이 높아진다. 때문에 빠른 변수의 처리를 원할 경우 register 변수를 선언하면 처리가 빨라질 수도 있다.

 

// register명령어와 비슷한 명령어는 volatile이다. 둘 다 compiler 실행에 간섭한다.

 

전역변수는 register 변수로 선언할 수 없다.

 

p/238 재귀함수

 

재귀함수는 만들지 말아라! 메모리를 많이 사용하기 때문이다.

 

무한 재귀함수의 문제점은 변수를 무한대로 생성하여 메모리를 지속적으로 차지하게 된다. Window운영체제에서는 이러한 프로그램을 강제종료 시키지만 이러한 재귀함수를 제한하지 않은 환경에서는 오작동이 발생할 수 있다.

 

// 지역 변수를 다른 용어로 buffer라고도 부른다.

 

// 할당된 메모리를 넘어가서 다른 영역까지 메모리를 침범하는 경우를 oveflow라고 부른다.

 

// 해킹의 용도로 고의적으로 stack을 넘치게 하여 컴퓨터에 오류를 일으키게 할 수 있다.

 

makefile에 대한 설명

 

line44 MCU = atmega128 //변수타입 없이 선언 되었다. MCU의 값 atmega128

line65 F_CPU = 16000000 //전에 800000이던 것을 수정하였다.

 

line83 SRC = $(TARGET).c //변수를 사용할 때는 $(TARGET)을 사용해해야 한다.

 

#을 넣으면 주석처리 된다.

$(*)을 넣으면 변수처리 된다.











 

반응형
Posted by newind2000
Busan IT/디지털 제어2015. 3. 11. 13:27

디지털 제어 - 엔코더/디코더/멀티&디멀티플렉서

 

학습목표 - 엔코더, 디코더, 멀티&디멀티플렉서의 논리를 이해하고 회로도를 그릴 수 있다.




 

오늘은 본격적으로 인코더에 대해서 알아보겠다.








 

2진수를 그레이코드 바꾸는 법

 

- 맨앞자리는 그대로 내려오고

- 그 위에부터는 두 개씩 XOR을 하여 내려오면 된다.

 

ex) 1011(2) -> 1110(Grey)

 

//카르노맵이란?

 

 

그레이코드를 2진수로 바꾸는 법

 

- 맨 앞지리는 그대로 내려오고

- 그 뒤부터 앞에 나온 값과 다음 자리를 XOR 값을 도출하면 된다.

 

ex) 1110(Grey) -> 1011(2)

 

 

패리티 비트(Parity bit)는 정보의 전달 과정에서 오류가 생겼는지를 검사하기 위해 추가된 비트이다. 전송하고자 하는 데이터의 각 문자에 1 비트를 더하여 전송하는 방법으로 2가지 종류의 패리티 비트(홀수, 짝수)가 있다. 패리티 비트는 오류 검출 부호에서 가장 간단한 형태로 쓰인다.

 

짝수(even) 패리티 - 전체 비트에서 1의 개수가 짝수가 되도록 패리티 비트를 정하는 것인데, 이를테면 데이터 비트에서 1의 개수가 홀수이면 패리티 비트를 1로 정한다.

 

홀수(odd) 패리티 - 전체 비트에서 1의 개수가 홀수가 되도록 패리티 비트를 정하는 방법이다.

 

7bit의 자료 데이터를 전송할 때 짝수 패리티는 자료 데이터 속 1의 개수가 짝수가 되도록 제일 앞자리에 0또는 1일 넣어서 8비트 1의 개수가 짝수가 되는 값으로 도출해준다.

홀수 패리티는 1의 개수가 홀수가 되도록 가장 앞자리에 0또는 1을 넣어주는 것이다.

 

패리티는 데이터를 한 공간에서 다른 공간으로 이동시킬 때 데이터가 제대로 전송되었는지 정검해주는 기술을 말한다.



포트는 총 10개이고 시작/종료 포트 각 각 1개씩, 데이트 비트 8개 총 10bit이다.

엔코더를 그려 보자



엔코더는 디코더의 반대이다. 2n승개의 코드 입력을 받아서 n개의 데이터를 내보내는 것이다.

디코더도 그려보자.

 

 

 

디코더 & 디멀티 플렉서

 

디코더는 코드를 분할하는 것이다. n비트의 코드 입력을 받아서 2n승개의 데이터를 내보내는 것이다.

 

ex) 2진법 -> 전광판 숫자로

 

엔코더

 

//수업의 목표는 1. 진리표를 만들어서 2. 진리표를 보고 회로도를 만드는 것이다.

멀티플렉서도 만들어 보자!



멀티 플렉서는 다양한 입력 값 중에 하나를 선택하여 출력하는 것이다.

 

 

아래의 회로를 만들어 보자!

 

1. 4 X 2(엔코더) X 4(디코더)

 

2. 1 X 4(디멀티플렉서) X 1(멀티플렉서)

 

 

1. 엔코더의/디코더/디멀티플렉서/멀티플렉서의 논리와 회로 구조를 이해한다.

 

2. 위의 주어진 엔코더와 디코더를 붙혀서 입력 값과 출력 값이 맞는지 확인한다.

 

 

코드란 어떤 정보를 특정 규칙의 다른 언어로 변환한 것인데, 프로그래밍에서는 정보를 디지털신호(2진수)로 변환하는 것이다.

 

Decoder2진 정보를 다른 형식의 단일 신호로 바꾸어 주는 회로이다.

n개의 정보를 입력 받아 2n승의 정보를 출력한다.

 

 

반응형
Posted by newind2000

Return의 기능/전역 변수 & 지역 변수/메모리의 영역 구분

 

#1. return의 기능(함수의 종료)

 

학습목표 - 함수의 문법과 사용을 이해하고 return의 기능을 이해한다.

 

어제 배운 것 복습

 

p/214 함수의 유형

 

- 인자와 반환 값의 유무에 따른 4가지 유형

 

- 지역변수란 함수 안에서만 실행되고 해당 함수가 끝나면 같이 사라지는 변수를 말한다.

 

- 함수의 개수를 알아내려면 메인 함수의 둥근 괄호의 개수를 살펴보면 된다.

 

 

p/215 return이 자니는 두 가지 의미 중 한 가지 의미만 살리기

 

1. 함수를 종료한다.

 

2. 값을 반환한다.

 

 

/*나누기에서

 

나누어지는 수 - 피제수

 

나누는 수 - 제수 */

 

 

앞으로 비교연산자 ‘==’를 쓸 때 변수를 오른쪽에 쓴다.

실수를 ‘==’ 대신에 ‘=’를 입력했을 경우 에러가 나게 됨으로 실수를 잡을 수 있다.

 

실습 - return의 함수 종료 기능)

p/216 함수의 정의와 그에 따른 원형의 선언

 

함수는 호출되기 전에 미리 정의되어야 한다. 이 때 지난 시간에 배운 함수의 선언함수의 정의가 나온다.

 

!!! #2. 둘째 시간은 쉬었어요 \(-0-)/

#3. 지역변수와 전역변수

 

학습목표 - 지역변수와 전역변수를 구분하여 사용할 수 있다.

 

 

지역변수는 해당지역을 벗어나면 자동으로 소멸된다.

 

지역변수는 선언된 지역 내에서만 유효하기 때문에 선언된 지역이 다르면 이름이 같아도 문제가 되지 않는다.

 

지역변수의 주기는 여는 괄호로 시작해서 1. 닫는 괄호를 만나거나 2. return을 만나면 끝이난다.

 

같은 이름의 변수가 있으면 가장 가까이 있는 변수에게 명령어의 효력이 발생한다.

 

p/228 지역변수

 

위와 같이 동일한 num변수가 “if문 내에서는 main함수의 num이 가리워진다라고 한다.

 

전역변수(Global Variable)

 

main함수가 전에 선언되는 변수를 전역변수라고 한다.

 

p/230 - 전역변수)

 

전역변수는 기본 0으로 초기화된다!!!!!

전역변수를 초기화하면 해당되는 변수의 크기에 해당되는 메모리는 전부 0으로 채워진다.

 

 

 

 

 

 

#4. 메모리의 영역 구분

 

학습목표 - 메모리의 영역 구분이 어떻게 이루어지는지 이해한다.

 

// 함수는 이름자체가 주소이다.

 

메모리

 

함수들이 있는 영역은 Code영역이다.

 

// Visual Studio에서는 기존 영역과

 

지역변수Stack영역에 있다.

 

전역변수는 BSS영역에 있다.

 

전역변수BSS영역이 있고 Data영역이라고 한다.

 

초기 값을 넣은 변수들은 Data영역에 포함되고 초기 값이 없는 변수들은 BSS영역에 들어간다.

 

 













 

 

 

 

 

 

 

반응형
Posted by newind2000
Busan IT/디지털 제어2015. 3. 10. 13:26

디지털 제어 - 가산기 & 디코더의 논리회로

 

 

지난 시간에 했던 반가산기와 전가산기를 복습해보자.

 

전가산기는 반가산기 2개와 OR Gate 1개를 추가하여 만들 수 있다.

 

반 감산기의 회로는 ‘-‘자리수로 나누어 표현할 수 있다.

 

4비트 가산기를 만들어보자!







디코더는 코드 형식의 2진 정보를 다른 형식의 단일 신호로 만들어주는 회로이다.

Enable은 전체를 1로 만들어주는 역할을 수행한다.













 

 

점까지 총 8비트로 제어할 수 있다.

 

7세그먼트의 종류 2가지. VCC(A, +)common으로 GND(K, -)common으로 한 것으로 나눈다.

 

//디코더와 디멀티플렉서는 같다고 생각하면 된다.

 

게이트의 숫자를 2배로 늘릴 때 게이트를 복사하여 하나는 enable을 그대로 다른 하나는 enablenot gate를 붙혀 사용하면 된다.

 

 

내일은 인코더를 만들어 보고 인코더가 끝나면 flip-flop을 해본다.

 

 


 

반응형
Posted by newind2000

함수(정의부와 선언부, 함수의 유형)/분할 컴파일/Source Insight

 

#1. 함수의 분할(정의부와 선언부)

 

학습목표 - 함수를 정의부와 선언부로 나누어 코딩할 수 있다.

 

지난 시간에 레지스터/전처리 언어/함수/매크로에 관한 수업을 했다.

 

오늘은 함수에 대해 더 배우고 분할 컴파일에 대해서도 배워본다.

 

//잘게 분산된 일을 합치는 작업을 linker에서 수행한다.

 

실습 - 함수의 분리 저장)

 

Led of/off 함수를 분리하여 저장한 후 실행시켜본다.

 

 

 

실습 - 함수의 정의와 선언)

 

smart는 정의부/main은 선언부

#2. 분할 컴파일과 Source Insight 기본 조작

 

학습목표

 

다수의 분할된 코드를 컴파일하여 실행할 수 있다.

Source Insight의 기본 조작법을 숙지 한다.

 

작업을 조각낸 후 이를 합치는 과정을 link라고 한다. 팀 프로젝트에서 조각난 작업을 합치기 전 단계의 작업 결과물은 obj 파일들이 된다.

 

형성된 obj파일들이 제대로 되었는지 확인해 봐야 한다. 이를 테스트하는 것을 컴파일(compile)만 수행한다고 한다. 이 때 명령어는 “cl /c *.c"이다. //*는 파일명

 

이와 같이 작성된 코드를 따로 따로 컴파일하는 것을 분할 컴파일이라고 한다.

 

소스가 많아질 경우 수 많은 코드를 제어하는 것이 힘들어진다. 이때 우리는 도구를 사용한다! -> Source Insight

 

Source Insight 실행 후!

Project -> New Project Settings

소스가 있는 폴더를 지정




원하는 소스파일을 더블클릭하여 창에 올려준다.

줄번호를 표시해 주거나 글자 크기 등을 조절해주기 위해 option -> document option

 

옵션 설정 후 적용하기 위해서는 위의 창에서 'yes'를 입력해 주어야 한다.







Ctrl + Shift + f(찾기 단축기) //범위 지정된 단어가 바로 찾아진다.

 

Case Sensitive - 대소문자 구분

 

Project Wide - 모든 프로젝트에서 단어 찾기

 


위에 버튼을 통해 찾은 단어를 자유롭게 이동가능.

 

메모장에 사용자가 코딩 시 필요로 하는 기능 등을 추가해준 것이 Source Insight이다. 프로그램 작성 및 수정에는 도움이 되지만 자체 컴파일 기능은 없다.

#3. 분할 컴파일

 

학습목표 - 분할 컴파일을 활용하여 팀별 코딩을 할 수 있다.

 

팀으로 코딩해보자!

 

 

#4. 함수(함수의 유형)

 

학습목표 - 인자와 반환 값의 유무에 따른 함수의 형태를 구분하고 활용할 수 있다.

 

AVR로 가서!

Source Insight에서 창 내에 있는 변수들은 색깔로 표시된다.

 

수정하게 되면 노란색으로 변한다.

 

저장되면 채도가 낮은 연두색으로 바뀐다.

 

//수업 중에 언급하지 않으면 코딩은 메모장에서 한다!

 

분할 컴파일은 잘 정리해 놓자!

 

p/212 예제

 

함수 값에 인자/인수를 넣을 때 만들어준 함수의 형식에 맞게 넣어주어야 한다.

 

함수 속에서만 생성되었다가 함수가 끝나면 사라지는 변수를 지역변수라고 한다.

 

함수의 가장 복잡한 형태가 반환 값도 있고 인자도 있는 4번 형태이다.

 

인수가 없는 경우에는 void를 생략해도 된다. 하지만 컴파일러에 따라 꼼꼼하게 볼 수도 있으니 void를 넣어주는 습관을 기르자.

 

p/214 예제

 

 

 

반응형
Posted by newind2000
Busan IT/디지털 제어2015. 3. 9. 13:26

디지털 제어 - 논리게이트의 개념과 특성

 

학습목표

 

논리 게이트와 논리 레벨의 기본 개념의 대해 알아본다.

기본 논리 게이트들의 동작 원리 및 진리표, 게이트 기호들에 대해 알아본다.

정논리와 부논리에 대해 알아본다.

게이트들의 전기적인 특성에 대해 알아본다.

 

//드모르간 정리에 의해 And회로 없이도 NAND회로가 작성가능하다!

 

기본 게이트(AND, OR, NOT)를 활용하여 다양한 논리회로를 만들 수 있다.

 

지난 시간에 했던 내용들을 다시 한번 살펴보자!

 

TTLCMOS 논리 레벨 정의영역

 

 

정의되지 않은 영역에 의해 논리회로에 신호가 들어가는 것을 막기 위해 pull-up 또는 pull-down을 사용해 준다.

//정의되지 않은 영역에서의 신호와 정확한 입출력에 의한 신호의 결과물 차이는 확연하다 ex) 다이오드 불 밝기의 차이

 












//드모르간 법칙에 대한 학습이 필요하다! 논리게이트는 입력 값에 따른 출력 값이 같으면 모양은 신경 쓰지 않는다.





XOR2bit 덧셈에 사용되는 논리회로이다.

//IC 7486

 




//IC 74266 - 별로 많이 안 쓰인다.





게이트에 입력이 들어가서 출력이 되기까지 걸리는 시간을 반응시간이라고 한다.




//시간차가 없는 LS/HC시리즈를 가장 많이 사용한다.

 

 

입력 범위에 대해서는 증폭회로를 사용하여 입력값을 조절해 줄 수 있음으로 입력전압 범위가 출력전압 범위보다 크다.

 



 

출력전류가 어디로 가느냐에 따라서,

칩의 아웃풋 = 싱크전류, 그라운드 = 소스전류



불확실한 신호가 입력되는 것을 막기 위해 사용.



 

// BJT(Bipolar Junction Transistor),MOS(Metal Oxide Semi-conduct)

 

 

논리회로를 이용하여 반가산기를 만들어 보자 -> 프로테우스로 만들어본다.



 

전가산기를 만들어 보자!

 
















 

 

 

 

반응형
Posted by newind2000