SlideShare a Scribd company logo
1 of 16
Download to read offline
이산치




      Project #6:
        2-비트
      덧셈기 설계




                    09 허규준
                    11 김정무
                    11 김종진
                    11 정민정
                    11 김슬기
-목차-
-개인별 업무
-일정계획
-회의록
-자료 조사
-알고리즘
-소스
-참고문헌 및 출처
-개인별 업무-
    이름                       역할


  08 허규준                   알고리즘 구상


  11 김종진            알고리즘 구상 및 프로그램 설계


  11 김정무                    자료조사


  11 정민정              자료조사 및 회의록 작성


  11 김슬기        조장 : 자료조사 및 보고서 작성, 일정 계획




            -일정 계획-

5월 30일     업무 분담 및 문제 파악




6월 2일      조사내용 정리 및 이해, 알고리즘 구상




6월 6일      최종 소스 토의 및 수정
-회의록-
회의일시   2012년 5월 30일(수)            조        D0   작성자   11 정민정

참석자    09허규준, 11정민정, 11김정무, 11김종진, 11김슬기



       내용                                       비고



       1.조원별 업무분담
       조장과 프로그램설계 1명, 관련사항 조사 3명으로 팀을 구성했다.
       2.일정 계획
       다음 회의시간까지 자신이 맡은 업무를 수행해 와서 서로의 정보를
       교환하고 문제 해결을 위해 토의하기로 함.
       3.보고서 계획
       소집단보고서작성 및 자신들이 참고한 자료들과 출처를 조장에게 보
       내고 조장이 보고서 초안을 작성하기로 하였다.
회의내용
       4.알고리즘 계획
       교수님이 설명해주신 내용을 바탕으로 소스를 어떻게 짤 것인가에 대
       한 대략적인 알고리즘을 구상하였다.
자료 조사
<불 대수>
-두 가지의 요소에 대하여 하나를 택하는 것과 같은 연산을               수행하는 논리. 불 대수를 사
용하면 컴퓨터 내부의 회로에 대한 것을 연산식으로 나타내고, 그 결과를 회로에 대응시킬
수 있으므로 논리 회로를 다루는데 편리하다.


<boolean expression(불 연산식)>
-불 대수에서의 연산식으로, 단독의 변수나 정수 또는 그것들의 연산자로 조합시킨 것과
함수의 인용으로 표시한 식. 예를 들면, 2개의 입력 X, Y가 있어, 출력으로서 합 S로 자리
올림한 C가 얻어지는 연산식은 다음과 같이 나타낸다.




  불 대수의 기본 연산 : 논리 곱, 논리 합, 논리 부정, 배타적 논리합


    (1) 논리곱
    o. 두 가지 명제의 조건이 연속될 때 앞의 것도 참이고 다음 것이 모두 참이어야 한다는
    논리.
    o. 두 개의 원소가 2진 변수로서 A와 B라 한다면 A이고 B이어야 된다.
    o. AB, A   B, A   B, A.B와 같이 표현하고 A AND B와 같이 표현하기도 한다.
    o. 표 3-1은 두 개의 변수 A와 B에 대하여 논리곱 연산으로 조합되는 종류와 그 결과를
    보여 준다.




표 3-1. 논리곱
A                B                A.B
        0            0                  0
        0            1                  0
        1            0                  0
        1            1                  1




 (2) 논리합
   o. 두 가지 조건의 명제에서 둘 중 하나만 만족해도 되는 경우를 논리합이라 함.
   o. A + B, A   B, A         B, A OR B로 표시한다.
   o. 표 3-2는 두 변수 A와 B에 대하여 논리합으로 조합되는 종류와 그 결과를 보여준다.
표 3-2. 논리합

   A             B              A + B
    0            0                0
    0            1                1
    1            0                1
    1            1                1

 (3) 논리 부정
   o. 현재의 명제를 부정하는 것.
    현재의 명제가 참인 경우 결과는 거짓이 된다.
   o. 변수가 A일 때, A' (A 부정), NOT A와 같이 표현.
        A가 1 인 경우 결과는 0 이 되고 0 이면 1 이 된다.
   o. 표 3-3은 변수 A에 대한 논리 부정 연산에 대한 결과를 보여 준다.
표 3-3. 논리 부정

        A                B'
        0                1
        1                0
 (4) 배타적 논리합
   o. 두 개의 명제가 서로 반대되는 조건으로 논리합의 형태를 취하여 AB' + A'B와                      같
   은 논리 관계를 배타적 논리합 (exclusive OR)이라 한다.
   o. 명제의 조건을 기억한 변수가 A와 B라면, A                  B, A XOR B 와 같이 표현한다.
   o. 표 3-4는 두 개의 변수 A와 B에 대하여 배타적 논리합으로 조합되는 종류와                        결
   과를 보여 준다.
   표 3-4. 배타적 논리합
A            B           A (+) B
     0            0                   0
     0            1                   1
     1            0                   1
     1            1                   0

    o. 배타적 논리합은 대응되는 변수의 내용이 서로 다르면 결과가 1이고, 대응하는             내
    용이 같으면 결과는 0이다.


<disjunction of minterms(최소항의 논리합)>
-논리곱 형식을 최소항, 논리합 형식을 최대항이라고 한다.


   o. 임의의 논리 변수 A와 B가 다음과 같은 조건일 때
    1) A = 1, B = 0 이면 결과가 1 이다.
    2) A = 1, B = 1 이면 결과가 1 이다.
    3) A = 0, B = 1 이면 결과가 0 이다.
    4) A = 0, B = 1 이면 결과가 0 이다.
    결과가 1 인 경우는 (1)과 (2)이고, 그 밖의 것은 0 이며. 이에 대한 진리표와 최소항 및
    최대항은 표 3-6과 같다.


                          표 3-6       진리표와 최소항 및 최대항

             A        B      결과(Y)         최소항         최대항

              0       0           0         A' B'   A + B
              0       1           0         A' B    A + B'
              1       0           1          AB'    A' + B
              1       1           1         A B     A' + B'


(2) 최소항에 의한 논리식
  o. 결과가 1 인 최소항을 논리합으로 결합한다.
   표 3-6에서 입력 변수가 1 인 경우를 정상형으로 표현하고, 0 인 경우를 보수형으로
  표현한다.
  o. 정상형을 AND 연산으로 묶어서 표현하면
     Y = A B' + A B
                   한다.
  이 경우를 최소항의 논리합이라 한다.


<Karnaugh maps(카르노 맵/K맵)>
-논리식의 간소화 과정을 그림으로 나타내 주기 때문에 5 - 6 개 이하의 변수로 구성된
논리식을 간소화하는데 편리한 방법이다.
(1)       1변수와 2변수 카르노 맵
        한 개의 논리 변수 A의 값은 0 또는 1 이기 때문에 두 개의 칸으로       표시한
   다.
        카르노 맵을 표현한 사각형의 오른쪽 칸을 1 에 대응하는 논리 변수, 왼쪽 칸은 0 에 대
   응하는 논리 변수라 한다.
그림 3-1       1변수 카르노 맵

    A            0               1
                 X'              X

  논리 변수 2개인 경우
        입력 가능한 값은 네 가지 조합.
   여기에 대응하는 최소항을 사각형에 나타낸다.
   만일, 입력 변수가 A와 B라면 A를 행에, B를 열에 위치시키고, 행은 위에 0을 위치시켜 교
   차되는 지점에 최소항을 표현한다.
   그림 3-2은 2변수 입력에 대한 카르노 맵을 보여 준다.


그림 3-2      2변수 카르노 맵과 최소항
(a) 2변수 카르노 맵

        A
                      0               1
        B
        0            A'B'            AB'
        0            A' B            A B



(b) 2변수 최소항

   X         Y                   최소항

   0         0              A'             B'


   0         1              A'             B


   1         0              A              B'


   1         1              A              B



  카르노 맵의 교차되는 사각형은 최소항이 되므로 2변수 진리표의 행에 해당되는 최소항과
  같다. 카르노 맵 내에 최소항의 결과인 1 과 0을 표현한다.
카르노 맵으로 논리식을 간소화할 때에는 원래의 논리식에 의한 진리표에서 1인 것만 카르
  노 도에 표현하고, 이웃한 1항끼리 묵는다.
  묶여진 사각형에서 조건에 변화가 없는 것만 추출하여 논리합으로 표현. 그림 3-3은 논리식
  Y =A'B' + AB' + AB를 카르노 맵으로 간소화시키는 것을 보여 준다.




그림 3-3 2변수 논리식의 간단화




                 (a) 원 논리식           (b) 간단화된 논리식


(2) 3변수 카르노 맵
 어떤 논리식의 입력 변수가 세 개라면 세 변수로 결합되는 조합의 수는 8(23) 가지이므
로 여덟 칸짜리 카르노 맵을 작성하면 된다. 변수가 세 개라면 먼저 짝지어지는 두 개를 최
소항으로 만들어 행에 위치시키고, 나마지 하나를 열에 위치시킨다.
  이때, 두 개의 짝지어진 것은 그레이 코드 순서인 (00, 01, 11, 10)의 순서로 배열한다. 그림
  3-4는 입력 변수 A, B, C에 대한 카르노 맵과 최소항을 보여 준다.


그림 3-4 3변수 카르노 맵과 최소항
(a) 3변수 카르노 맵

       AB
                00            01       11       10
   C
   0          A'B'C'         A'BC'    ABC'     AB'C'
   1          A'B'C          A'BC      ABC     AB'C



(b) 3변수 최소항
A B C                 최소항
        0   0   0            A'B'C'
        0   0   1            A'B'C
        0   1   0            A'BC'
        0   1   1            A'BC
        1   0   0            AB'C'
        1   0   1            AB'C
        1   1   0            ABC'
        1 1 1                 ABC



  변수가 세 개인 경우 양끝의 내용이 1일 때는 이웃한 것으로 처리한다.1인 것을 묶을 때 2,
  4, 8과 같이 2의 배수가 되도록 하여 최대한 많이 묶는다.




<binary device(바이너리 디바이스)>
-컴퓨터 과학에서의 2진의 형태로 데이터를 기록하는 장치, 또는 그러한 코드화된 데이터
를 판독하는 장치.


<logic gates(논리게이트)>
-디지털 시스템의 회로를 구성하는 가장 기본적인 요소는 0과 1로 대변되는 논리대수에 의
한 연산을 집적회로 형태로 구현한 논리 게이트(logic gate)이다. 이 회로는 복잡한 논리를
간결하고 정확하게 표현할 수 있어 컴퓨터 등에 이용된다. 이러한 논리대수의 기본이 되는
게이트로는 AND, OR, NOT 등이 있으며, 이들의 조합으로 다양한 형태의 게이트가 만들어
진다.


AND 게 이 트 는 0 을 " 거 짓 " 이 라 하 고 , 1 을 " 참 " 이 라 고 할 때 , 논 리 적 으 로 "and" 연
산 자 처 럼 동 작 하 기 때 문 에 그 런 이 름 이 붙 었 다 . 아 래 그 림 과 표 는 AND 게 이 트 의
회 로 기 호 와 논 리 조 합 을 보 여 주 고 있 다 (기 호 에 서 입 력 단 자 는 왼 쪽 에 있 는 것 이
고 , 출 력 단 자 는 오 른 쪽 에 있 는 것 이 다 ). 두 개 의 입 력 이 모 두 " 참 " 이 면 , 출 력 도 " 참
"이 되 며 , 그 렇 지 않 은 경 우 는 항 상 "거 짓 "이 된 다 .


                               AND gate
                            입력   입력
                                          출력
                             1        2
                             0        0   0
                             0        1   0
                             1        0   0
                             1        1   1



OR 게 이 트 는 논 리 적 포 함 관 계 인 "or" 의 방 식 으 로 동 작 하 기 때 문 에 그 런 이 름 을 얻
었 다 . 두 개 의 입 력 중 하 나 만 "참 "이 어 도 출 력 은 "참 "이 되 며 , 만 약 두 개 의 입 력 이
모 두 "거 짓 "이 면 출 력 도 "거 짓 "이 된 다 .
OR gate
                           입력  입력
                                           출력
                            1        2
                            0        0        0
                            0        1        1
                            1        0        1
                            1        1        1


XOR (exclusive-OR) 게 이 트 는 논 리 의 " 둘 중 하 나 " 라 는 식 으 로 동 작 한 다 . 즉 , 두
개 의 입 력 중 하 나 가 "참 "이 면 출 력 도 "참 "이 된 다 . 그 러 나 , 두 개 의 입 력 모 두 가 "
거 짓 "이 거 나 또 는 두 개 의 입 력 모 두 가 "참 "이 라 면 출 력 은 "거 짓 "이 된 다 . 이 러 한
회 로 를 관 찰 하 는 다 른 방 법 으 로 는 , 두 개 의 입 력 들 이 서 로 다 르 면 출 력 은 1이 되
고 , 두 개 의 입 력 이 서 로 같 으 면 출 력 은 0이 된 다 고 생 각 해 도 된 다 .

                                XOR gate
                           입력     입력
                                           출력
                            1        2
                            0        0        0
                            0        1        1
                            1        0        1
                            1        1        0


다 른 형 태 의 인 버 터 장 치 들 과 구 분 하 기 위 해 때 로 는 NOT 게 이 트 라 고 불 리 는 , 논
리 변환기는 오직 한 개의 입력만을 가지며, 논리 상태를 정반대로 만들어 준다.

                         인 버 터 또 는 NOT gate

                                입력       출력
                                 1        0
                                 0        1


NAND 게 이 트 는 NOT 게 이 트 바 로 뒤 에 AND 게 이 트 가 이 어 지 는 것 같 이 동 작 한
다 . 두 개 의 입 력 모 두 가 "참 "인 경 우 에 만 출 력 이 "거 짓 "이 되 고 , 그 렇 지 않 은 경 우
는 모 두 "참 "이 다 .

                              NAND gate
                           입력   입력
                                       출력
                            1    2
                            0    0      1
                            0    1      1
                            1    0      1
                            1    1      0


NOR 게 이 트 는 NOT 게 이 트 바 로 뒤 에 OR 게 이 트 가 이 어 지 는 것 같 이 동 작 한 다 .
두 개 의 입 력 이 모 두 "거 짓 "인 경 우 에 만 출 력 이 "참 "이 되 고 , 그 렇 지 않 은 경 우 는
모 두 "거 짓 "이 다 .


                                NOR gate
                           입력     입력     출력
1   2
0   0   1
0   1   0
1   0   0
1   1   0
<알고리즘>
                                   이산 수학
                           (2비트 덧셈 연산기)



먼저 2비트의 2진수를 int형 변수 a, b, c, d 예 저장 한 후 연산을 시작 합니다.
2가지의 함수로 연산이 진행 되는데


int HalfAdderV(int x, int y)   -> ((!x)&&y)||(x&&(!y)) 이 함수로 2진수의 2비트 수를 각각 한
비트씩 덧셈 연산을 했을때에 나오는 값을 계산 할수 있습니다. ( 단 캐리 값의 여부는 아직
알수 없습니다 )


int HalfAdderU(int x, int y) -> x&&y 이 함수로 연산 결과 캐리가 생기는지 알수 있습니다.


- 입력 예제


         A   B
     +   C   D
-------------
     1   2   3



위와 같은 연산을 HalfAdderV 함수를 사용하여 B와D 그리고 A와C의 덧셈연산 했을때의 결과
값을 얻어 낼수 있습니다. ( 여기서 3의 계산값은 HalfAdderV ( B , D ) 를 통해 알 수 있습
니다.


그 후 HalfAdderU의 함수를 통해 B, D 연산 후 캐리가 생겼는지 알아본 후 그 결과 값과
HalfAdderV 함수를 통해 얻은 A,C 연산 값을 다시 HalfAdderV 함수를 통해 연산 결과를 내
면 B,D에서 생긴 캐리값과의 최종 덧셈 연산을 하여 2의 최종적인 계산값을 알 수 있습니
다.


1의 계산값은 A,C 모두 1일때 캐리가 발생하여 1의 값이 1일 될 수도 있고 A, C 값이 둘다
1일 아니어도 B, D에서 올라온 캐리값과 계산돠어 최종 캐리가 발생하여 1의 값이 1이 될
수 있으므로
HalfAdderU를 통해 A,C만 연산하여 캐리가 발생 되는지 확인 하고,
HalfAdderV (A, C) 의 값과 HalfAdderU (B, D) 값 두 개의 값을 다시 HalfAdderU로 캐리값
이 발생하는지 확인하여
2가지 결과 값을 || (OR연산자)를 통해 확인하여 두가지 결과값중 하나만 1일 되더라도 1의
값이 1이 되도록 하여
1의 값을 얻을수 있습니다.


이런 방법으로 2진 2비트 연산기를 설계 하였습니다.
<소스>


#include <stdio.h>
int HalfAdderU(int x, int y);
int HalfAdderV(int x, int y);
int main()
{
        int a,b,c,d,e,f,g;
        int u1,v1,u2,u3;
        printf("a를 입력하세요 : ");
        scanf("%d",&a);
        printf("b를 입력하세요 : ");
        scanf("%d",&b);
        printf("c를 입력하세요 : ");
        scanf("%d",&c);
        printf("d를 입력하세요 : ");
        scanf("%d",&d);


        u1=HalfAdderU(a,c);
        v1=HalfAdderV(a,c);
        u2=HalfAdderU(b,d);
        g=HalfAdderV(b,d);
        u3=HalfAdderU(v1,u2);
        f=HalfAdderV(v1,u2);
        e=u1||u3;


        printf("e : %d, f : %d, g : %dn",e,f,g);


        return 0;
}


int HalfAdderU(int x, int y)
{
        return x&&y;
}
int HalfAdderV(int x, int y)
{
        return ((!x)&&y)||(x&&(!y));
}




                  참고문헌 및 출처
자료 출처 -
http://www.terms.co.kr/logicgate.html
디지털 논리와 컴퓨터 설계 (교보문고)

http://hsol.tistory.com/196
블로그 한솔

More Related Content

Viewers also liked (18)

Happy father’s day
Happy father’s dayHappy father’s day
Happy father’s day
 
Blog presdenise
Blog presdeniseBlog presdenise
Blog presdenise
 
Conad 15-bis-nord
Conad 15-bis-nordConad 15-bis-nord
Conad 15-bis-nord
 
Denise connorsfarm
Denise connorsfarmDenise connorsfarm
Denise connorsfarm
 
Happy birthday gaga!!!
Happy birthday gaga!!!Happy birthday gaga!!!
Happy birthday gaga!!!
 
Manuel gomez1
Manuel gomez1Manuel gomez1
Manuel gomez1
 
Totally bored boris
Totally bored borisTotally bored boris
Totally bored boris
 
Research and Organizational Skills
Research and Organizational SkillsResearch and Organizational Skills
Research and Organizational Skills
 
Prime 5 unit 1 lesson 1 conversation
Prime 5 unit 1 lesson 1 conversationPrime 5 unit 1 lesson 1 conversation
Prime 5 unit 1 lesson 1 conversation
 
Data management federal requirements 9 2015
Data management federal requirements 9 2015Data management federal requirements 9 2015
Data management federal requirements 9 2015
 
Conad 15-nord
Conad 15-nordConad 15-nord
Conad 15-nord
 
PowerPoint Basics
PowerPoint BasicsPowerPoint Basics
PowerPoint Basics
 
Conad 13-bis
Conad 13-bisConad 13-bis
Conad 13-bis
 
Conad 17-nord
Conad 17-nordConad 17-nord
Conad 17-nord
 
Monitor ergonomics
Monitor ergonomicsMonitor ergonomics
Monitor ergonomics
 
Library Commercial
Library CommercialLibrary Commercial
Library Commercial
 
Conad 14-nord
Conad 14-nordConad 14-nord
Conad 14-nord
 
Conad 19-bis-nord
Conad 19-bis-nordConad 19-bis-nord
Conad 19-bis-nord
 

More from Kimjeongmoo

Project#6 오탈자 검사 D0 Hwp
Project#6 오탈자 검사 D0 HwpProject#6 오탈자 검사 D0 Hwp
Project#6 오탈자 검사 D0 HwpKimjeongmoo
 
Project#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 HwpProject#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 HwpKimjeongmoo
 
Project#4상호참조 생성기 Hwp
Project#4상호참조 생성기 HwpProject#4상호참조 생성기 Hwp
Project#4상호참조 생성기 HwpKimjeongmoo
 
Project#3다항식의연산 Hwp
Project#3다항식의연산 HwpProject#3다항식의연산 Hwp
Project#3다항식의연산 HwpKimjeongmoo
 
Project#2말의여행 Hwp
Project#2말의여행 HwpProject#2말의여행 Hwp
Project#2말의여행 HwpKimjeongmoo
 
Project#1파스칼 삼각형
Project#1파스칼 삼각형Project#1파스칼 삼각형
Project#1파스칼 삼각형Kimjeongmoo
 
Project#7 Group Codes Hwp
Project#7 Group Codes HwpProject#7 Group Codes Hwp
Project#7 Group Codes HwpKimjeongmoo
 
Project#5 통신망에서 길 찾기 Hwp
Project#5 통신망에서 길 찾기 HwpProject#5 통신망에서 길 찾기 Hwp
Project#5 통신망에서 길 찾기 HwpKimjeongmoo
 
Project#4 Syntax Of Languages Hwp
Project#4 Syntax Of Languages HwpProject#4 Syntax Of Languages Hwp
Project#4 Syntax Of Languages HwpKimjeongmoo
 
Project#3 How Fast Can We Sort Hwp
Project#3 How Fast Can We Sort HwpProject#3 How Fast Can We Sort Hwp
Project#3 How Fast Can We Sort HwpKimjeongmoo
 
Project#2 데이터베이스 시스템 Hwp
Project#2 데이터베이스 시스템 HwpProject#2 데이터베이스 시스템 Hwp
Project#2 데이터베이스 시스템 HwpKimjeongmoo
 
Project#1 지식 기반 시스템 Hwp
Project#1 지식 기반 시스템 HwpProject#1 지식 기반 시스템 Hwp
Project#1 지식 기반 시스템 HwpKimjeongmoo
 

More from Kimjeongmoo (12)

Project#6 오탈자 검사 D0 Hwp
Project#6 오탈자 검사 D0 HwpProject#6 오탈자 검사 D0 Hwp
Project#6 오탈자 검사 D0 Hwp
 
Project#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 HwpProject#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 Hwp
 
Project#4상호참조 생성기 Hwp
Project#4상호참조 생성기 HwpProject#4상호참조 생성기 Hwp
Project#4상호참조 생성기 Hwp
 
Project#3다항식의연산 Hwp
Project#3다항식의연산 HwpProject#3다항식의연산 Hwp
Project#3다항식의연산 Hwp
 
Project#2말의여행 Hwp
Project#2말의여행 HwpProject#2말의여행 Hwp
Project#2말의여행 Hwp
 
Project#1파스칼 삼각형
Project#1파스칼 삼각형Project#1파스칼 삼각형
Project#1파스칼 삼각형
 
Project#7 Group Codes Hwp
Project#7 Group Codes HwpProject#7 Group Codes Hwp
Project#7 Group Codes Hwp
 
Project#5 통신망에서 길 찾기 Hwp
Project#5 통신망에서 길 찾기 HwpProject#5 통신망에서 길 찾기 Hwp
Project#5 통신망에서 길 찾기 Hwp
 
Project#4 Syntax Of Languages Hwp
Project#4 Syntax Of Languages HwpProject#4 Syntax Of Languages Hwp
Project#4 Syntax Of Languages Hwp
 
Project#3 How Fast Can We Sort Hwp
Project#3 How Fast Can We Sort HwpProject#3 How Fast Can We Sort Hwp
Project#3 How Fast Can We Sort Hwp
 
Project#2 데이터베이스 시스템 Hwp
Project#2 데이터베이스 시스템 HwpProject#2 데이터베이스 시스템 Hwp
Project#2 데이터베이스 시스템 Hwp
 
Project#1 지식 기반 시스템 Hwp
Project#1 지식 기반 시스템 HwpProject#1 지식 기반 시스템 Hwp
Project#1 지식 기반 시스템 Hwp
 

Project#6 2 비트 덧셈기 Hwp

  • 1. 이산치 Project #6: 2-비트 덧셈기 설계 09 허규준 11 김정무 11 김종진 11 정민정 11 김슬기
  • 3. -개인별 업무- 이름 역할 08 허규준 알고리즘 구상 11 김종진 알고리즘 구상 및 프로그램 설계 11 김정무 자료조사 11 정민정 자료조사 및 회의록 작성 11 김슬기 조장 : 자료조사 및 보고서 작성, 일정 계획 -일정 계획- 5월 30일 업무 분담 및 문제 파악 6월 2일 조사내용 정리 및 이해, 알고리즘 구상 6월 6일 최종 소스 토의 및 수정
  • 4. -회의록- 회의일시 2012년 5월 30일(수) 조 D0 작성자 11 정민정 참석자 09허규준, 11정민정, 11김정무, 11김종진, 11김슬기 내용 비고 1.조원별 업무분담 조장과 프로그램설계 1명, 관련사항 조사 3명으로 팀을 구성했다. 2.일정 계획 다음 회의시간까지 자신이 맡은 업무를 수행해 와서 서로의 정보를 교환하고 문제 해결을 위해 토의하기로 함. 3.보고서 계획 소집단보고서작성 및 자신들이 참고한 자료들과 출처를 조장에게 보 내고 조장이 보고서 초안을 작성하기로 하였다. 회의내용 4.알고리즘 계획 교수님이 설명해주신 내용을 바탕으로 소스를 어떻게 짤 것인가에 대 한 대략적인 알고리즘을 구상하였다.
  • 5. 자료 조사 <불 대수> -두 가지의 요소에 대하여 하나를 택하는 것과 같은 연산을 수행하는 논리. 불 대수를 사 용하면 컴퓨터 내부의 회로에 대한 것을 연산식으로 나타내고, 그 결과를 회로에 대응시킬 수 있으므로 논리 회로를 다루는데 편리하다. <boolean expression(불 연산식)> -불 대수에서의 연산식으로, 단독의 변수나 정수 또는 그것들의 연산자로 조합시킨 것과 함수의 인용으로 표시한 식. 예를 들면, 2개의 입력 X, Y가 있어, 출력으로서 합 S로 자리 올림한 C가 얻어지는 연산식은 다음과 같이 나타낸다. 불 대수의 기본 연산 : 논리 곱, 논리 합, 논리 부정, 배타적 논리합 (1) 논리곱 o. 두 가지 명제의 조건이 연속될 때 앞의 것도 참이고 다음 것이 모두 참이어야 한다는 논리. o. 두 개의 원소가 2진 변수로서 A와 B라 한다면 A이고 B이어야 된다. o. AB, A B, A B, A.B와 같이 표현하고 A AND B와 같이 표현하기도 한다. o. 표 3-1은 두 개의 변수 A와 B에 대하여 논리곱 연산으로 조합되는 종류와 그 결과를 보여 준다. 표 3-1. 논리곱
  • 6. A B A.B 0 0 0 0 1 0 1 0 0 1 1 1 (2) 논리합 o. 두 가지 조건의 명제에서 둘 중 하나만 만족해도 되는 경우를 논리합이라 함. o. A + B, A B, A B, A OR B로 표시한다. o. 표 3-2는 두 변수 A와 B에 대하여 논리합으로 조합되는 종류와 그 결과를 보여준다. 표 3-2. 논리합 A B A + B 0 0 0 0 1 1 1 0 1 1 1 1 (3) 논리 부정 o. 현재의 명제를 부정하는 것. 현재의 명제가 참인 경우 결과는 거짓이 된다. o. 변수가 A일 때, A' (A 부정), NOT A와 같이 표현. A가 1 인 경우 결과는 0 이 되고 0 이면 1 이 된다. o. 표 3-3은 변수 A에 대한 논리 부정 연산에 대한 결과를 보여 준다. 표 3-3. 논리 부정 A B' 0 1 1 0 (4) 배타적 논리합 o. 두 개의 명제가 서로 반대되는 조건으로 논리합의 형태를 취하여 AB' + A'B와 같 은 논리 관계를 배타적 논리합 (exclusive OR)이라 한다. o. 명제의 조건을 기억한 변수가 A와 B라면, A B, A XOR B 와 같이 표현한다. o. 표 3-4는 두 개의 변수 A와 B에 대하여 배타적 논리합으로 조합되는 종류와 결 과를 보여 준다. 표 3-4. 배타적 논리합
  • 7. A B A (+) B 0 0 0 0 1 1 1 0 1 1 1 0 o. 배타적 논리합은 대응되는 변수의 내용이 서로 다르면 결과가 1이고, 대응하는 내 용이 같으면 결과는 0이다. <disjunction of minterms(최소항의 논리합)> -논리곱 형식을 최소항, 논리합 형식을 최대항이라고 한다. o. 임의의 논리 변수 A와 B가 다음과 같은 조건일 때 1) A = 1, B = 0 이면 결과가 1 이다. 2) A = 1, B = 1 이면 결과가 1 이다. 3) A = 0, B = 1 이면 결과가 0 이다. 4) A = 0, B = 1 이면 결과가 0 이다. 결과가 1 인 경우는 (1)과 (2)이고, 그 밖의 것은 0 이며. 이에 대한 진리표와 최소항 및 최대항은 표 3-6과 같다. 표 3-6 진리표와 최소항 및 최대항 A B 결과(Y) 최소항 최대항 0 0 0 A' B' A + B 0 1 0 A' B A + B' 1 0 1 AB' A' + B 1 1 1 A B A' + B' (2) 최소항에 의한 논리식 o. 결과가 1 인 최소항을 논리합으로 결합한다. 표 3-6에서 입력 변수가 1 인 경우를 정상형으로 표현하고, 0 인 경우를 보수형으로 표현한다. o. 정상형을 AND 연산으로 묶어서 표현하면 Y = A B' + A B 한다. 이 경우를 최소항의 논리합이라 한다. <Karnaugh maps(카르노 맵/K맵)> -논리식의 간소화 과정을 그림으로 나타내 주기 때문에 5 - 6 개 이하의 변수로 구성된 논리식을 간소화하는데 편리한 방법이다.
  • 8. (1) 1변수와 2변수 카르노 맵 한 개의 논리 변수 A의 값은 0 또는 1 이기 때문에 두 개의 칸으로 표시한 다. 카르노 맵을 표현한 사각형의 오른쪽 칸을 1 에 대응하는 논리 변수, 왼쪽 칸은 0 에 대 응하는 논리 변수라 한다. 그림 3-1 1변수 카르노 맵 A 0 1 X' X 논리 변수 2개인 경우 입력 가능한 값은 네 가지 조합. 여기에 대응하는 최소항을 사각형에 나타낸다. 만일, 입력 변수가 A와 B라면 A를 행에, B를 열에 위치시키고, 행은 위에 0을 위치시켜 교 차되는 지점에 최소항을 표현한다. 그림 3-2은 2변수 입력에 대한 카르노 맵을 보여 준다. 그림 3-2 2변수 카르노 맵과 최소항 (a) 2변수 카르노 맵 A 0 1 B 0 A'B' AB' 0 A' B A B (b) 2변수 최소항 X Y 최소항 0 0 A' B' 0 1 A' B 1 0 A B' 1 1 A B 카르노 맵의 교차되는 사각형은 최소항이 되므로 2변수 진리표의 행에 해당되는 최소항과 같다. 카르노 맵 내에 최소항의 결과인 1 과 0을 표현한다.
  • 9. 카르노 맵으로 논리식을 간소화할 때에는 원래의 논리식에 의한 진리표에서 1인 것만 카르 노 도에 표현하고, 이웃한 1항끼리 묵는다. 묶여진 사각형에서 조건에 변화가 없는 것만 추출하여 논리합으로 표현. 그림 3-3은 논리식 Y =A'B' + AB' + AB를 카르노 맵으로 간소화시키는 것을 보여 준다. 그림 3-3 2변수 논리식의 간단화 (a) 원 논리식 (b) 간단화된 논리식 (2) 3변수 카르노 맵 어떤 논리식의 입력 변수가 세 개라면 세 변수로 결합되는 조합의 수는 8(23) 가지이므 로 여덟 칸짜리 카르노 맵을 작성하면 된다. 변수가 세 개라면 먼저 짝지어지는 두 개를 최 소항으로 만들어 행에 위치시키고, 나마지 하나를 열에 위치시킨다. 이때, 두 개의 짝지어진 것은 그레이 코드 순서인 (00, 01, 11, 10)의 순서로 배열한다. 그림 3-4는 입력 변수 A, B, C에 대한 카르노 맵과 최소항을 보여 준다. 그림 3-4 3변수 카르노 맵과 최소항 (a) 3변수 카르노 맵 AB 00 01 11 10 C 0 A'B'C' A'BC' ABC' AB'C' 1 A'B'C A'BC ABC AB'C (b) 3변수 최소항
  • 10. A B C 최소항 0 0 0 A'B'C' 0 0 1 A'B'C 0 1 0 A'BC' 0 1 1 A'BC 1 0 0 AB'C' 1 0 1 AB'C 1 1 0 ABC' 1 1 1 ABC 변수가 세 개인 경우 양끝의 내용이 1일 때는 이웃한 것으로 처리한다.1인 것을 묶을 때 2, 4, 8과 같이 2의 배수가 되도록 하여 최대한 많이 묶는다. <binary device(바이너리 디바이스)> -컴퓨터 과학에서의 2진의 형태로 데이터를 기록하는 장치, 또는 그러한 코드화된 데이터 를 판독하는 장치. <logic gates(논리게이트)> -디지털 시스템의 회로를 구성하는 가장 기본적인 요소는 0과 1로 대변되는 논리대수에 의 한 연산을 집적회로 형태로 구현한 논리 게이트(logic gate)이다. 이 회로는 복잡한 논리를 간결하고 정확하게 표현할 수 있어 컴퓨터 등에 이용된다. 이러한 논리대수의 기본이 되는 게이트로는 AND, OR, NOT 등이 있으며, 이들의 조합으로 다양한 형태의 게이트가 만들어 진다. AND 게 이 트 는 0 을 " 거 짓 " 이 라 하 고 , 1 을 " 참 " 이 라 고 할 때 , 논 리 적 으 로 "and" 연 산 자 처 럼 동 작 하 기 때 문 에 그 런 이 름 이 붙 었 다 . 아 래 그 림 과 표 는 AND 게 이 트 의 회 로 기 호 와 논 리 조 합 을 보 여 주 고 있 다 (기 호 에 서 입 력 단 자 는 왼 쪽 에 있 는 것 이 고 , 출 력 단 자 는 오 른 쪽 에 있 는 것 이 다 ). 두 개 의 입 력 이 모 두 " 참 " 이 면 , 출 력 도 " 참 "이 되 며 , 그 렇 지 않 은 경 우 는 항 상 "거 짓 "이 된 다 . AND gate 입력 입력 출력 1 2 0 0 0 0 1 0 1 0 0 1 1 1 OR 게 이 트 는 논 리 적 포 함 관 계 인 "or" 의 방 식 으 로 동 작 하 기 때 문 에 그 런 이 름 을 얻 었 다 . 두 개 의 입 력 중 하 나 만 "참 "이 어 도 출 력 은 "참 "이 되 며 , 만 약 두 개 의 입 력 이 모 두 "거 짓 "이 면 출 력 도 "거 짓 "이 된 다 .
  • 11. OR gate 입력 입력 출력 1 2 0 0 0 0 1 1 1 0 1 1 1 1 XOR (exclusive-OR) 게 이 트 는 논 리 의 " 둘 중 하 나 " 라 는 식 으 로 동 작 한 다 . 즉 , 두 개 의 입 력 중 하 나 가 "참 "이 면 출 력 도 "참 "이 된 다 . 그 러 나 , 두 개 의 입 력 모 두 가 " 거 짓 "이 거 나 또 는 두 개 의 입 력 모 두 가 "참 "이 라 면 출 력 은 "거 짓 "이 된 다 . 이 러 한 회 로 를 관 찰 하 는 다 른 방 법 으 로 는 , 두 개 의 입 력 들 이 서 로 다 르 면 출 력 은 1이 되 고 , 두 개 의 입 력 이 서 로 같 으 면 출 력 은 0이 된 다 고 생 각 해 도 된 다 . XOR gate 입력 입력 출력 1 2 0 0 0 0 1 1 1 0 1 1 1 0 다 른 형 태 의 인 버 터 장 치 들 과 구 분 하 기 위 해 때 로 는 NOT 게 이 트 라 고 불 리 는 , 논 리 변환기는 오직 한 개의 입력만을 가지며, 논리 상태를 정반대로 만들어 준다. 인 버 터 또 는 NOT gate 입력 출력 1 0 0 1 NAND 게 이 트 는 NOT 게 이 트 바 로 뒤 에 AND 게 이 트 가 이 어 지 는 것 같 이 동 작 한 다 . 두 개 의 입 력 모 두 가 "참 "인 경 우 에 만 출 력 이 "거 짓 "이 되 고 , 그 렇 지 않 은 경 우 는 모 두 "참 "이 다 . NAND gate 입력 입력 출력 1 2 0 0 1 0 1 1 1 0 1 1 1 0 NOR 게 이 트 는 NOT 게 이 트 바 로 뒤 에 OR 게 이 트 가 이 어 지 는 것 같 이 동 작 한 다 . 두 개 의 입 력 이 모 두 "거 짓 "인 경 우 에 만 출 력 이 "참 "이 되 고 , 그 렇 지 않 은 경 우 는 모 두 "거 짓 "이 다 . NOR gate 입력 입력 출력
  • 12. 1 2 0 0 1 0 1 0 1 0 0 1 1 0
  • 13. <알고리즘> 이산 수학 (2비트 덧셈 연산기) 먼저 2비트의 2진수를 int형 변수 a, b, c, d 예 저장 한 후 연산을 시작 합니다. 2가지의 함수로 연산이 진행 되는데 int HalfAdderV(int x, int y) -> ((!x)&&y)||(x&&(!y)) 이 함수로 2진수의 2비트 수를 각각 한 비트씩 덧셈 연산을 했을때에 나오는 값을 계산 할수 있습니다. ( 단 캐리 값의 여부는 아직 알수 없습니다 ) int HalfAdderU(int x, int y) -> x&&y 이 함수로 연산 결과 캐리가 생기는지 알수 있습니다. - 입력 예제 A B + C D ------------- 1 2 3 위와 같은 연산을 HalfAdderV 함수를 사용하여 B와D 그리고 A와C의 덧셈연산 했을때의 결과 값을 얻어 낼수 있습니다. ( 여기서 3의 계산값은 HalfAdderV ( B , D ) 를 통해 알 수 있습 니다. 그 후 HalfAdderU의 함수를 통해 B, D 연산 후 캐리가 생겼는지 알아본 후 그 결과 값과 HalfAdderV 함수를 통해 얻은 A,C 연산 값을 다시 HalfAdderV 함수를 통해 연산 결과를 내 면 B,D에서 생긴 캐리값과의 최종 덧셈 연산을 하여 2의 최종적인 계산값을 알 수 있습니 다. 1의 계산값은 A,C 모두 1일때 캐리가 발생하여 1의 값이 1일 될 수도 있고 A, C 값이 둘다 1일 아니어도 B, D에서 올라온 캐리값과 계산돠어 최종 캐리가 발생하여 1의 값이 1이 될 수 있으므로 HalfAdderU를 통해 A,C만 연산하여 캐리가 발생 되는지 확인 하고,
  • 14. HalfAdderV (A, C) 의 값과 HalfAdderU (B, D) 값 두 개의 값을 다시 HalfAdderU로 캐리값 이 발생하는지 확인하여 2가지 결과 값을 || (OR연산자)를 통해 확인하여 두가지 결과값중 하나만 1일 되더라도 1의 값이 1이 되도록 하여 1의 값을 얻을수 있습니다. 이런 방법으로 2진 2비트 연산기를 설계 하였습니다.
  • 15. <소스> #include <stdio.h> int HalfAdderU(int x, int y); int HalfAdderV(int x, int y); int main() { int a,b,c,d,e,f,g; int u1,v1,u2,u3; printf("a를 입력하세요 : "); scanf("%d",&a); printf("b를 입력하세요 : "); scanf("%d",&b); printf("c를 입력하세요 : "); scanf("%d",&c); printf("d를 입력하세요 : "); scanf("%d",&d); u1=HalfAdderU(a,c); v1=HalfAdderV(a,c); u2=HalfAdderU(b,d); g=HalfAdderV(b,d); u3=HalfAdderU(v1,u2); f=HalfAdderV(v1,u2); e=u1||u3; printf("e : %d, f : %d, g : %dn",e,f,g); return 0; } int HalfAdderU(int x, int y) { return x&&y; }
  • 16. int HalfAdderV(int x, int y) { return ((!x)&&y)||(x&&(!y)); } 참고문헌 및 출처 자료 출처 - http://www.terms.co.kr/logicgate.html 디지털 논리와 컴퓨터 설계 (교보문고) http://hsol.tistory.com/196 블로그 한솔