Documentation
-
Combinational Logic
- 다수의 입/출력의 조합 : 진리표가 매우 복잡하다
-
Documentation Standrads
- 정확하고, 제조 가능하며, 유지보수가 가능한 디자인임을 보증
- 구성요소
- 스펙
- 블록 다이어그램 : informal spec
- schematic diagram : 공식적 스펙
- 전기적 소자 연결, IC 타입, 핀 구성 등
- timing diagram : 시그널 순서, 시그널 간 딜레이
- logic device description : 논리식, 진리표, HDL 혹은 C언어로 작성됨
- circuit description : 앞서 설명한 내용으로 설명하기 애매한 내용들
-
Block Diagram : 입/출력, 내부 신호 전달
- 작성 시 과하게 상세하거나, 애매하게 작성하지 않도록 한다.
-
Signal Name
- 변수 이름의 적절한 지정은 회로 이해에 큰 도움이 된다.
- Go, Pause, Ready, Error 등등...
- 신호가 asserted : 신호가 active 상태이다
- 신호가 deasserted/negated : 신호가 active 상태가 아니다
Active Low | Ready- | Error.L | ADDR15(L) | Reset* | ~GO | \Receive | Transmit_L |
---|---|---|---|---|---|---|---|
Active High | Ready+ | Error.H | ADDR15(H) | Reset | Go | Receive | Transmit |
-
Bubble-to-Bubble Logic Design
- 일반적으로 Inverting Gate가 Non-Inverting Gate보다 빠르다
- 신호가 전달될 때 Bubble끼리 전달되도록 한다.
-
Drawing Layout
-
손으로 그리는 경우, 연결점에 dot(●) 표시를 한다.
-
프로그램을 통해 그리는 경우, T자 접점은 허용되나, 십자 교차로 연결을 표시하는 것은 금지된다(몇몇 SW에서는 dot표시가 불가)
-
Flat Schematic Structure
- 복잡한 회로 구성에 사용되는 방식 중 하나
- 장점 : 회로의 부분을 각 페이지에 나누어 표시하여 모든 회로를 한 눈에 볼 수 있음
- 단점 : 회로가 복잡해 보인다.
-
Hierarchical(구조적) Schematic Structure
- 회로 간의 연관관계를 표시
- 장점 : 회로 구성이 비교적 간단하게 보임
- 단점 : 한 눈에 보기 힘듦
-
-
버스 : 2개 이상의 연관된 신호의 조합
Circuit Timing
-
Timing Diagram : 시간적 제약의 표현을 위해 신호 간의 timing을 나타낸 것
-
data 신호에 대해서, timing diagram은 data 신호가 0인지, 1인지 표시할 필요가 없다. 대신 신호가 겹치는 표시를 이용하여 신호 변화를 표시한다.
-
data bus에 대해 data[7:0]과 같은 식으로 표기하며, 버스 내 신호는 항상 같은 시간 timing 을 갖는다.
-
모든 회로는 H->L, L->H에 대해 서로 다른 Propagation Delay를 갖는다.
-
회로 구성시 Propagation Delay는 더 나쁜 값을 고려하여야 한다.
Programmable Logic Devices
-
PLD : 사용자가 제한된 범위 내에서 원하는 기능을 구현 가능한 device
-
PLA(Programmable Logic Arrays) : 2-Level And-Or Device
- Minterm Expressions : AND 조합이 논리합으로 나타나는 논리식을 표현
- PLA device : n x m PLA with p product terms
- n : 입력
- m : 출력 = p개 입력을 갖는 OR gate 개수
- p : product 식의 개수 = 2n개 입력을 갖는 AND gate 개수
- PLA 입력 연결을 연결하지 않으면 1이 됨
- PLA 입력을 모두 연결하면 0이 됨
- PLA 출력을 연결하지 않으면 0이 됨
-
PAL(programmable Array Logic) : 최근 가장 많이 사용되는 PLD
- OR array가 고정된 채, And Array를 설정 가능
- bidirectional i/o pin : 입/출력이 한 핀에서 사용 가능(내부 회로에서 지원 시)
- PAL16L8 : 10개의 입력, 6개의 I/O핀, 2개의 출력핀
- 최대 16개 입력, 8개 출력까지 지원 가능
- GAL : Generic Array Logic devices
- 출력단 XOR 게이트의 한쪽 단자를 GND와 fuse하여 출력 신호를 통과시키거나, high로 만들어 invert 신호를 출력할 수 있게 한다.
- CPLD(complex PLD) : 다수의 PLD를 각 PLD에 원하는 기능을 구현 후 조합한 것
- EEPLD(Electrically Erasable PLD) : 한번 프로그램 후에도 지우고 다시 재프로그래밍이 가능한 PLD
Decoder / Encoder
- Decoder
- code를 푸는 회로
- 코드, n개 입력, m개 출력으로 구성되어, 출력 포트 중 하나의 포트로만 신호가 출력된다.
- 7-segment decoder
- 7-segment : 7개 LED로 문자/숫자를 표시 가능한 display
- 74x49 seven segment decoder를 이용하여 4-bit 입력을 7-segment 출력으로 변환
- 위 진리표는 0~9 숫자만을 출력, 점선부분은 don't care terms
- 7-segment : 7개 LED로 문자/숫자를 표시 가능한 display
- Encoder
- 코드르 만드는 회로
- ex. to n binary encoder : 개 숫자를 n-bit 이진수로 변환
- priority encoder : 입력에 우선순위가 존재
- 기존 encoder의 경우 I0 입력의 floating 문제
- 또한 비정상 출력이 존재 : I2, I4가 동시에 1이 되면 2진수 110-비정상 출력
- GS_L : EI_L이 on(0)이면서 우선순위에 맞게 입력될 때 on
- EO_L : EI_L이 on이면서 입력 없을 때 on
- GS_L과 EO_L은 다수 74148 조합 시 사용
Tri-state devices
- 0, 1이 아닌 제3의 상태(Hi-Z)를 만들어 줌
- EN이 on일 때만 입력이 출력으로 전달되는 특성을 이용, 버스 출력에 활용 가능하다.
- dead time : low/high에서 Hi-z로 변하는 시간을 반대로 가는 시간보다 짧게 만들어 버퍼 신호 간 충돌을 막는다.
- 74245 transceiver : Tri-state buffer를 반대 방향으로 교차하여 방향 신호에 따라 데이터가 통신할 방향을 지시
Multiflexer(MUX)
- 입력 신호 중 원하는 신호를 선택하여 출력
- ex. 74151 8x1 multiplexer truth table
Demultiplexer(DeMUX)
- 입력 신호를 원하는 경로로 출력(Mux의 반대역할)
XOR gate / parity circuit
- XOR () : 두 입력이 다를 때 1
- XNOR () : 두 입력이 같을 때 1
- XOR parity gate
- parity check
- 신호 전송시 오류를 검출하는 방법
- 오류 수정은 불가
- 2진수 신호의 1 개수를 계산하여 even/odd parity에 따라 1의 개수가 짝/홀이 되도록 parity bit를 추가한다.
- ex. even parity, 110 입력인 경우 parity bit=0
- 입력을 모두 XOR하면 입력에서 1의 개수가 홀인지 짝인지 확인 가능
- parity check
- ex. 에러 검출 회로
- 입력이 1110000일 때
- write가 enable되면 메모리에 D1-D7이 저장
- 이 때 74280(parity generator)가 xor 회로로 입력의 1 개수를 계산 (odd=1)
- write시에 I입력은 항상 0
- read가 on일 시 74541 tri-state buffer가 enable되어 메모리 신호를 출력
- 이때 저장된 PIN은 POUT을 통해 다시 74280으로 전송 (I = RD * POUT = 1)
- 이 신호로 다시 74280이 parity check, odd 신호는 0이 됨(RP 포함, 1 111 0000)
- 만약 read 중 8bit 신호 중 하나가 수정된 경우 odd가 1이 되면서 ERROR 신호가 on이 됨(ERROR = RD * ODD)
- Hamming Code
- 오류 위치를 검출하고 1bit 오류에 대해 자기정정이 가능한 코드
- n개 데이터에 k개 parity bit를 더하여 만들어짐
- 패리티 비트는 번째 비트에 위치한다.
- 데이터 비트 수는 의 공식을 따른다(k=2일 때 data bit = 1)
Arithmatic and Logic Unit(ALU)
- Comparator : 비교기
- XOR 게이트를 사용, 두 입력이 같은지 확인
- XOR 게이트를 사용, 두 입력이 같은지 확인
- 74x85 comparator
- AGTBOUT : A가 B보다 크거나, AGTBIN 신호에 1이 전달되면 on
- AEQBOUT : A와 B가 같으면서 AEQBIN에 1이 전달되면 on
- ALTBOUT : A가 B보다 작거나, ALTBIN에 1이 전달되면 on
- 왼쪽 7485에 AEQBIN에 on(5V)신호를 전달하였고 A,B가 0101로 동일하므로 다음 7485에 AEQB on 전달
- 가운데 7485 역시 동일하게 AEQB on 전달
- 오른쪽 7485는 A가 1001, B는 1000으로 A가 B보다 더 크므로 AEQBOUT은 0, AGTBOUT에 1로 출력
- Half Adder
- 1bit 숫자 2개를 더한다
- 합과 Carry out을 각각 출력
- 아래 자리수에의 올림인 Carry in은 더해지지 않음
- Full Adder
- 더할 값 + 아래 자리수에서 올림의 합 계산
- 자리수 올림되면 Carry out으로 출력
- Ripple Adder
- 전가산기 다수를 조합하여 여러 자리 수의 덧셈 구현
- Carry in-out 전달 시간으로 인해 속도가 느림
- Carry Lookahead Adder(자리올림 예측 가산기)
- 생성(g) : carry out의 발생 여부
- 전달(p) : carry in이 1일 경우, 덧셈의 결과가 carry out되는지 여부
- (둘 중 하나만 1이면 carry in 발생시 carry out이 발생되므로)
- 구조가 복잡하여 4bit 이상으로는 잘 사용하지 않음(4bit CLA를 여러개 조합함)
- ALU
- 산술, 논리 연산이 가능한 회로
- 74181 : 입력과 4-bit 선택에 따라 다른 연산 결과가 나타남