wincupl 로 GAL을 굽기위해 7-segment로 진리표(Truth Table)을 만들어봤는데
그중에 A자리에 불이 들어가게 하는 진리표는 다음과 같다.
수 값
0000 1
0001 0
0010 1
0011 1
0100 0
0101 1
0110 1
0111 1
1000 1
1001 1
1010 1
1011 0
1100 1
1101 0
1110 1
1111 1
음… 이것을 Boolean Function으로 만드는데 축약식으로 만들때
1에 관한 식으로 만들어도 좋지만 0에 관한 식으로 만들어서 반전시키면 식이 적게 나온다.
아무튼 위 식을 카노맵으로 만들어서 축약시키면 된다.
손으로 무식하게 하는편도 좋지만 Karnaugh Minimizer를 쓰면 편하다.
축약 시킨 식과 원래 식과 같은지 비교하기 위해서 만든 프로그램.
// Equivalent Discriminator for Boolean Function by Xeriars
#include <stdio.h>
#include <stdlib.h>
int main () {
int a_,b_,i,fcount=0;
system(“cls”);
printf(” Truth Tablenn”);
for(i=0;i<16;i++) {
int A=!!(i&8), B=!!(i&4), C=!!(i&2), D=!!(i&1);
a_ = (!A & !B & !C & !D) + (!A & !B & !C & D) + (!A & B & C & D) + (A & B & !C & !D);
b_ = (!A & !B & !C) + (B & (!A & C & D) + (A & !C & !D));
if (a_ != b_) { printf(“%X : t1 = %d, t2 = %d ——– Xn”, i,a_,b_); ++fcount; }
else { printf(“%X : t1 = %d, t2 = %dn”, i,a_,b_); }
}
if (fcount > 0) { printf(“nFalse Count : %d”, fcount); }
getch();
return 0;
}
a_랑 b_ 부분을 수정해서 컴파일해보면 알 수 있다.
아무튼 이런 과정을 거쳐서 wincupl에 맞는 언어(?)로 7-segment를 구현한것이다.
Name 7segment;
PartNo g22v10;
Date 2007-05-18 ;
Revision 01;
Designer Xeriars;
Company The X.D.C.;
Assembly 000;
Location In_the_Hell;
Device g22v10;
/* *************** INPUT PINS *********************/
PIN 02 = A;
PIN 03 = B;
PIN 04 = C;
PIN 05 = D;
/* *************** OUTPUT PINS *********************/
PIN 17 = OUTA;
PIN 18 = OUTB;
PIN 19 = OUTC;
PIN 20 = OUTD;
PIN 21 = OUTE;
PIN 22 = OUTF;
PIN 23 = OUTG;
/* *************** EQUATIONS *********************/
!OUTA = (B & C) # (!A & C) # (A & !D) # (!B & !D) # (!A & B & D) # (A & !B & !C);
!OUTB = (!B & !D) # (!B & !C) # (!A & C & D) # (A & !C & D) # (!A & !C & !D);
!OUTC = (!C & D) # (!A & D) # (A & !B) # (!A & B) # (!B & !C);
!OUTD = (!A & C & !D) # (!B & C & D) # (B & !C & D) # (A & B & !D) # (!B & !C & !D);
!OUTE = (C & !D) # (A & C) # (A & B) # (!B & !D);
!OUTF = (A & C) # (A & !B) # (B & !D) # (!C & !D) # (!A & B & !C);
!OUTG = (A & C) # (!B & C) # (A & !B) # (B & !C & D) # (!A & B & !D);
이것을 복사해서 붙인후 .pld 파일로 저장하면 된다.
이제 회로를 꾸민다.
준비물은 7-segment (에노드 타입) 3개, GAL(22V10) 3개, Bread Board, 전선, Wire Striper(option), TTL 7483(전가산기), 330k 저항소자 21개정도,Deep Switch, Toggle Switch, 5V 전원 공급기 (없으면 만들어도 좋다.), Jumper (Option)
아래는 완성한 스샷. (토글이 없어서 수동으로..-_-;;)
덧셈. 7 + 7 = E(Decimal : 14)
뺄셈. F(Decimal : 15) – B(Decimal : 11) = 4
Flash를 안터트렸더니 화질이 구리게 나왔다.
흠.. 목요일날 시험보는데 그때까지 Counter 제작해오라네..-_-;;
언제 다 만든담…