690 likes | 1.14k Views
논리수학과 표현. 논리의 표현 진법과 숫자 표현 2 진수와 10 진수 문자의 표현. dolicom@naver.com http://blog.naver.com/dolicom. 숫자와 문자의 표현 방식. 숫자의 표현 2 진수 보수 체계 – 정수형 Floating Point - 실수형 ASCII 코드 미국의 컴퓨터 문자 표현 ( 1 바이트 ) KS-5601 한국어 지원을 위한 완성형 표준안 (2 바이트가 한글자 ) UNICODE 다국어 지원을 위한 표현 (2 바이트 ). 진수.
E N D
논리수학과 표현 논리의 표현 진법과 숫자 표현 2진수와 10진수 문자의 표현 dolicom@naver.com http://blog.naver.com/dolicom
숫자와 문자의 표현 방식 • 숫자의 표현 • 2진수 보수 체계 –정수형 • Floating Point - 실수형 • ASCII 코드 • 미국의 컴퓨터 문자 표현 ( 1바이트) • KS-5601 • 한국어 지원을 위한 완성형 표준안 (2바이트가 한글자) • UNICODE • 다국어 지원을 위한 표현(2바이트)
진수 • 2진수 : 0과 1로 두가지 상태로 표현 • CPU의 내부의 디지털 회로에 의해 처리 • 8진수 : 0~7로 표현 • 10진수 : 인간의 대표적 숫자 표현 • 16진수 : 4비트를 한 자리로 표현 • 0~15까지를 0,1,2, … , 9,A,B,C,D,E,F로 표현 • 기계어 및 C의 숫자 표현에 많이 사용 한다. • 어셈블리 1BH, 0FEH등으로 • C에서는 0x1b, 0xFE등으로 사용
2진수 • 한 비트는 디지털 회로에서 0과 1로 표현 • 여러 비트의 자릿수로 표현 0 1 1 0 2진수 2 1 3 0 자릿수의 값 2 2 2 2 8 4 2 1 8x0+4x1+2x1+1x0 => 4+2 => 6 • 마지막 비트는 2로 나눗 나머지 값이다.
10진수 • 인간이 일상적으로 사용하는 수 5 0 4 3 10진수 2 1 3 0 10 10 10 10 자릿수의 값 1000 100 10 1 10진수 1000x5+1000x0+100x4+1x3 => 5043 • 마지막 자리는 10으로 나눗 나머지 값이다. • 5043 / 10 => 몫 504, 나머지 3
16진수 • 2진수 4비트를 16진수 한자리로 표현 A 1010 10 B 1011 11 C 1100 12 D 1101 13 E 1110 14 F 1111 15 3 0 E A 16진수 3 2 1 0 16 16 16 16 자릿수의 값 4096 256 16 1 10진수 4096x3+256x0+16x14+1x10 => 30352 • 마지막 자리는 16으로 나눗 나머지 값이다. • 30352 / 16 => 몫 1576, 나머지 10 (=A)
2진수의 표현 • 전자의 디지털 공학은 2진수의 표현을 사용 • 논리 1과 0은 2진수 상태를 전압으로 표시 • 초기의 논리는 5V 전압을 기준으로 표현 • 1 = 5V -> 3.3V • 0 = 0V -> 0V • 3.3V로 바뀌는 추세 • 동작 속도 및 전력 감소 효과 • 전압은 점점 낮아지는 추세이나 디지털 회로를 구성하는 소자의 특성에 따라 한계가 있다. • 디지털 회로로 구성되어 칩은 정해진 전압에 의해 구동되며 회로 설계 시 동작 전압을 확인 해야 한다.
논리의 부울대수 • AND : 논리 and –입력 모두 1일때 출력1 • OR : 논리 or –하나라도 1입력이면 1출력 • NOT : 논리 not –입력의 반대 출력 • XOR : 논리 XOR – 2입력이 다르면 1출력 XOR OR AND NOT A B Y A Y A B Y A B Y • 0 0 0 • 0 1 1 • 0 1 • 1 1 0 0 1 1 0 • 0 0 0 • 0 1 1 • 0 1 • 1 1 1 • 0 0 0 • 0 1 0 • 0 0 • 1 1 1 eXclusive OR
논리 기호 기본 논리 A A Y=A.B Y=A.B B B A A Y=A+B Y=A+B B B Y = A A A A Y=A B Y=A B =AB+AB B B
전자회로 구현-TTL 74LS00(NAND) Y = A & B = not (A and B) A Y B 5V R 100오옴 논리처리 A 논리 처리 A&B 1 = 4.xV 0 = 0.2V 토템폴 출력 B
논리 회로의 선 연결 5V 4.7K Vcc 4.7K
논리의 전자적 표현(개념모델) 5V 출력부 S1 switch 1 = 5V 0 = 0V Z = 플로팅 상태 (어떤 전압 상태도 아님) 입력 처리 로직 입력 S2 switch 0V GND
로직 구현 논리의 표현
전압과 전류 • V = IR 오옴의 법칙 • 디지털 회로는 표현에서 전압은 고정하고 전류 변화 • 전류는 회로의 구성에 따라 자동으로 결정 된다. • 디지털 회로의 구현은 위의 법칙에 따라 TR, FET등으로 구성 한다.
논리 1 출력 5V 전류 로직내부(칩) S1 = ON 입력처리 및 스위치제어 입력 1 = 5V S2 = OFF 0V GND
논리 회로에서 전류 1 5V 4.7K 전류=0 1 0 0 1 1 Vcc 4.7K OFF ON 1=4.xV 전류=출력에따라 ON OFF OFF 0=0.2V OFF ON ON OFF OFF ON ON OFF
논리 회로에서 전류 2 5V 5V 4.7K 4.7K 0 1 1 0 전류 Vcc Vcc 4.7K 4.7K ON OFF 1=4.xV 전류=출력에따라 OFF ON ON 0=0.2V ON OFF OFF OFF ON OFF OFF ON
논리 0 출력 5V S1 = OFF 입력처리 및 스위치제어 입력 0 = 0V 전류 S2 = ON 0V GND
논리 1 입력 입력 5V 5V 입력 출력 5V 5V 전류 S1 = ON S1 = OFF NOT 동작 예 입력 0 = 0V 전류 S2 = OFF S2 = ON 0V GND 0V GND
논리 회로의 선 연결 5V 4.7K Vcc 4.7K
논리 0 입력 5V 5V 전류 S1 = ON S1 = OFF NOT 게이트 동작 예 0 = 0V 입력 전류 S2 = OFF S2 = ON 0V GND 0V GND
논리 Z – Floating Point OE 5V Y=A, OE=1 Y=Z, OE=0 A OE S1 = OFF Y=A, OE=1 Y=Z, OE=0 A 입력처리 및 스위치제어 전류 = 0 입력 어느 전압 OE S1 = OFF 0V GND
논리의 전자적 표현- 한 개의 SW 5V 5V 칩 내부 입력 처리 입력 1 = 5V로 유지 0 = 0V Z = 불가능 S1 switch 0V GND
논리 1 – Open Collector 5V 5V 칩 내부 전류 R 저항 4.7K 10K 입력처리 및 스위치제어 입력 1 = 5V S1 = OFF 0V GND
논리 0 – Open Collector 5V 5V 칩 내부 전류1 R 저항 4.7K 10K 입력처리 및 스위치제어 입력 0 = 0V 전류2 S1 = ON 0V GND
Open Collector 예 A Y B C
오픈 컬렉터와 토템폴 출력 • 오픈 컬렉터 -출력쪽에 풀업 저항을 사용 -TTL의 내부에서 보면 TR의 에미터가 내부 풀업이 없는 상태 : IC의 출력핀에 연결 -외부에서 이 에미터(IC의 출력핀)에 전원을 공급 -출력을 다른 전압으로 구동 가능 – (예) 12V로 풀업 가능, 전압은 IC마다 다름 -쓰임새는 wired-or로 사용 (오픈 콜렉터 출력끼리는 서로 직접 연결) 두개의 출력이 하나는 "로우“, 하나는 "하이" 이더라도 쇼트되지 않음 • 토템폴 출력 -토템풀: 북아메리카 인디언들의 조상의 혼을 기리는 상징물로서 두개 이상의 비슷한 조각상이 하나의 기둥(Pole)에 세겨진것을 말함 -일반적 TTL(7404)의 출력이 TR이 출력핀을 중심으로 상하고 두개 겹쳐진 모양 -출력에 Pull-up 저항이 없이 동작 -절대로 출력을 출력끼리 접속해서는 안됨 : 두개 출력의 논리가 반대일 때, 내부 출력스위칭 TR은 전원에 대해 쇼트와 같이 되어 큰전류로 출력 TR이 파괴
5V S1=ON 1 = 5V S2=OFF 토템폴 출력의 문제 –출력 끼리 연결 • 출력을 두 개 묶으면 논리가 반대로 출력되면 과전류가 흐른다. Y A 전류1 B A Y 전류2 5V S1 = OFF 5V 0 = 0V B S2 = ON 전류
5V S1=OFF Z = open S2=OFF 출력 끼리 연결 사용 예 • 출력을 두 개 묶고 한 출력은 Z으로 설정하고 나머지에서 출력으로 사용 CA Y A 전류1 B CA CB A Y 전류2 5V S1 = OFF 5V CB 0 = 0V B S2 = ON
5V S1=ON 1 = 5V S2=OFF 출력 끼리 연결 사용 예 - 충돌 • 출력을 두 개 묶고 한 출력은 Z으로 설정하고 나머지에서 출력으로 사용 CA Y A 5V 전류1 B CA CB A Y 전류2 5V S1 = OFF 5V CB 0 = 0V B S2 = ON
로직 구현 FET을 사용한 논리 구현
FET(CMOS)을 사용 할 경우 5V p-channel A 논리 처리 1 = 4.xV 0 = 0V B n-channel
FET(CMOS) NOT 게이트(gate) Y = A A 5V p-channel 1 = 4.xV 0 = 0V Vout Vin n-channel
CMOS NOT 게이트(gate) C A X Y B tDa=수nsec 지연 구간 X의 전압과 전류 5V 5V 0 1 A 0 C 1 B 1 0 1=4.xV A=0V 0 = 0.xV 입력신호 C 1 0 0 B tDb
CMOS NOT 게이트(gate) C A X Y B tDa=수nsec 지연 구간 Y의 전압과 전류 5V 5V 0 1 A 0 5V 1 B 1 0 0 = 0.xV A=5V C C 1 0 0 B 1=4.xV 입력신호 tDb
논리 표현 비트와 바이트
CPU의 데이터 처리 단위 • Bit : 한 상태를 나타내는 최소의 단위 . • Byte :한 문자를 나타내는최소의 단위 ( 8 Bit). • Word : 한 단어를 나타내는최소의 단위. (CPU의 비트 수와 연관) • 소형CPU : 2 Byte = 16bit • 대형CPU : 4 Byte = 32bit • 1bit : 어느 한 상태를 나타냄. (1) ON (0) OFF • 1byte = 8 Bit : 256가지상태를 나타냄. 0 1 0 1 1 0 0 1
1byte 단위 처리 예 - 8051 8비트 단위로 저장 데이터 버스 명령어 해석 25 Oprand 버퍼 02 A = 0 B . . . . . . FLAG 설정 00 02 8비트 단위로 계산 ALU 02
1byte 단위 처리 예 - 메모리 • 메모리는 1, 8, 16, 32단위로 엑세스 할수 있음 • 칩을 만들 때 처리 단위는 결정되어 있다. 8단위의 칩 7 6 5 4 3 2 1 0 주소 0000 0001 0002 0003 0004 0005 . . . 7FFF
1byte 단위 메모리 읽기 • 8비트 단위 칩은 한번 무조건 8 비트 단위로 엑세스 A2 A1 A0 0 0 1 7 6 5 4 3 2 1 0 주소 0 1 2 3 4 D7 D6 D5 D4 D3 D2 D1 D0 5 6 7 MUX
1byte 단위 메모리 -바이트단위만 • 특정 1비트만은 처리가 불가능 A2 A1 A0 0 0 1 7 6 5 4 3 2 1 0 주소 0 1 2 3 4 5 6 7 MUX
1byte 단위 메모리 쓰기 • 8비트 단위 칩은 한번 무조건 8 비트 단위로 엑세스 • 정해진 비트 수 단위로만 처리 A2 A1 A0 주소 0 0 1 7 6 5 4 3 2 1 0 0 1 2 3 저장신호 발생 4 5 6 7
메모리의 필요한 신호선-SRAM 8x8bit=64bit 메모리 D7 A2 D6 A1 D5 A0 D4 D3 D2 CS D1 RD/WR D0 GND Vcc Vcc GND 전원
숫자와 논리 계산 숫자의 표현
숫자의 표현과 프로그램 • 정수는 8비트 단위의 계산을 한다. • C int는 몇 개의 레지스터를 묶어 16비트로 표현 한다. • 레지스터 사용 방식은 컴파일러마다 틀림 • 숫자의 계산은 레지스터 값이 ALU 통해 계산 한다. • 실수형 자료(Floating Point) • 32비트를 처리를 위해 2바이트의 변수를 사용한다. • 내부적으로 실수 계산을 불가능 하기 때문에 별도의 함수로 처리
C에서의 숫자 표현 • C에서 2,10,16진수는 개발자의 표현에 의해 컴파일러가 2진수로 변환하여 사용 한다. int cnt16; char cnt8; cnt8 = 0xFE; cnt16 = -2; • 0xFE는 컴파일러에 의해 2진수 1111 1110로 표현되어 프로그램 코드에 붙는다. 8051의 예: ; cnt8 = 0xFE; 74 FE MOV A,0FEH => 01110100 11111110 F5 A0 MOV 0A0H,A => 11110101 10100000 • 결국 위의 프로그램은 01110100 11111110처럼 변형되어 ROM/FLASH에 들어 가서 프로그램이 실행된다.
정수형 표현 체계 I • 2진수의 숫자 표현법-각 CPU의 처리 단위에 따라 비트는 다름. • 2의 보수 체계를 사용 • 정수형 계산은 CPU 내의 ALU을 이용 직접 계산 된다.
10진수와 2진수의 변화 –방법1 • 원리 • 마지막 비트는 2로 나눈 나머지다. • 2로 나누면 전체 비트가 오른쪽으로 한 비트 shift 된다. 1. 0111 - 마지막 비트(LSB) 1은 2로 나눈 나머지 값이다. 2. 7 / 2 = 3 -> 나머지 1 3. 3은7을 오른 쪽으로 1비트 쉬프트 한 값이다.