728x90
Computer Architecture

Computer Architecture

  • CPU : 중앙 연산 장치, 마이크로프로세서의 일종
    • 마이크로프로세서 : 메모리에서 데이터를 읽어들여 명령어를 처리하는 IC
    • 명령어 자체는 외부(메모리)에 저장
  • 메모리 : 명령어, 데이터가 저장됨
    • CPU와 메모리는 address, data, control의 3가지 bus로 통신한다.
    • address : 데이터가 저장된 주소
    • data : 해당 주소에 저장된 데이터
    • control : read / write 지정
    • 메모리의 크기는 address와 data의 곱
    • 한 주소에 접근하게 되면, 그 주소의 모든 데이터를 동시에 읽거나, 써야 한다.
  • 이때 버스와 소자는 Tri-state buffer로 연결한다.
    • CPU-메모리 소자는 1:n으로 연결되는데, 만약 Tri-state가 아닌 경우 통신하는 임의 메모리가 아닌 다른 소자는 Ground되어, 통신 신호가 그쪽으로 빠져나갈 수 있다.
    • Tri-state off의 경우 Hi-Z상태로 되어 회로가 마치 분리된 듯한 상태가 되어, 통신하는 신호가 온전히 CPU로 전달될 수 있다.

  • ROM
    • Read-Only Memory
    • CPU와의 연결 시 address bus, 단방향 data bus(ROM > CPU), read signal만 전송 가능한 control bus로 연결
    • ROM 제조시에 정보가 미리 저장됨
    • 비휘발성 : 전원을 꺼도 데이터가 보존됨
    • 2n×b2^n\times b ROM의 경우 n개의 address bus 입력을 받으면, b개의 data가 출력
    • ROM 내에는 디코더가 존재
      • n-bit address 신호를 받았을 때, ROM 내 주소에 저장되어있는 b개의 데이터 중 하나를 선택하여 bus로 출력
      • Combinational logic으로도 구현 가능하지만, 데이터가 많으면 과하게 회로가 복잡해지고, 사용해야 하는 트랜지스터 수도 비정상적으로 많아져 잘 쓰이지 않는다.
      • 실제로는 1bit당 트랜지스터 하나에 0/1을 인가하여 데이터 저장
      • 만약 위 8×4 ROM의 경우, 만약 000 주소신호를 주면 Y0 : 0100의 신호를 D3-D0 버스로 출력하게 된다.

ROM Application

  • Multiplier
    • 주소 Bus의 입력은 a개의 multiplicand와 b개의 multiplier로 구성
    • ROM 내부에 (a+b) bit의 곱셈 테이블이 2a+b2^{a+b} 크기만큼 저장
    • 테이블에는 a x b의 값이 각 주소에 맞게 저장
    • 만약 multiplicand에 1, multiplier에 2를 입력한다면, 테이블에서 출력되는 값은 2가 된다
    • 실제 회로에서, 곱셈기는 CPU와 연결된 다수 소자 중 하나일 것
      • address bus를 통해 지정된 주소값이 전달되면 곱셈기가 on이 된다.
      • data bus를 통해 곱셈기 입력을 넣어준다
      • 출력되는 곱셈값은 다시 data bus를 통해 CPU로 입력된다.
  • Adder
    • multiplier와 같은 원리로 구성
    • ROM 내부에는 2개 addend의 합으로 구성되는 테이블이 존재

  • 내부 ROM 구조
    • ROM의 구현 방식은 매우 다양하게 존재
    • 예시 : 다이오드를 이용한 ROM 회로
      • 디코더 출력이 Low로 나타나므로, 다이오드가 연결된 회선은 Low가 될 때 +5V 신호가 디코더쪽으로 빠져나간다.
      • 그 외에는 모두 High가 출력
      • 출력단 D쪽에 인버터가 연결되어 있으므로, 디코더가 low가 되는 Y5라인은 원래는 1101에서 0100으로 신호가 반전 출력된다.
      • 예시 : Transistor ROM 회로
        • 디코더에 high출력이 될 경우 트랜지스터가 on 상태로 변한다.
        • MOS에 의해 VDD신호는 그라운드로 들어가게 된다.
        • 즉 맨 윗줄의 경우 왼쪽부터 0010 신호가 된다.

  • 2-Dimensional Decoder
    • ROM 내부의 디코더를 설계 시, 입력 크기가 커지면 그에 따라 디코더 출력이 지수적으로 증가
    • 만약 입력이 32개만 돼도, 출력은 약 4억개, 사실상 설계가 불가능한 회로이다.
    • 복잡한 디코더 설계를 위해, Address bus를 나누도록 설계
    • A0 ~ A6의 신호를 각 3, 4bit로 나누어 디코더와 MUX로 연결
    • A가 0010111이면, A6, 5, 4는 001신호가 연결, 디코더 1번출력만 유효
    • MUX로 1111 1110 1110 1000 신호 인가, inverting input이므로 0000 0001 0001 0111 이 들어옴
    • MUX에는 0111 신호가 입력되었으므로 7번째 입력이 출력
    • 그러므로 해당 2D decoder는 1을 출력한다.

  • 상업용 롬 종류
    • Mask ROM
      • 반도체 설계 과정에서 NMOS/CMOS (or BJT) 설계 시 마스크를 이용하여 데이터 기록
      • 재기록 불가
      • 데이터 기록 시간 ( = 마스크 공정 시간 )이 오래 걸림
      • BJT ROM은 MOS 대비 밀도가 낮음
    • PROM (Programmable ROM)
      • BJT소자로 제작
      • 쓰는데 약 10~50us : 공정 생산 후 writer를 통해 강한 전류를 가해 데이터 저장
      • 재기록 불가
    • EPROM (Erasable PROM)
      • NMOS, CMOS로 제작
      • 자외선에 노출하여 정보를 지운 후 재기록 가능
    • EEPROM (Electrical EPROM)
      • NMOS로 제작
      • 역방향 전압을 가해 데이터 소거
      • 10,000 ~ 100,000회 재기록 가능
      • EPROM 대비 읽는 시간이 조금 더 김
      • 기록 : WE on, OE off + A(주소)
      • 출력 : WE off, OE on
    • Flash EPROM(플래시메모리)
      • EEPROM, 데이터를 특정 구획(블록) 단위로 소거

  • ROM 내부 구조
    • ROW decoder / Colmun decoder : array에 저장된 주소 선택
    • CS : 칩 선택, 동작할 필요가 없을 때 off시켜 전력소모 경감 (Active 대비 1/10)
    • OE : 출력 enable

Static RAM (SRAM)

  • RAM(Random Access Memory)
    • 읽기/쓰기 가능
    • 위치에 무관하게 읽고 쓰는 시간이 동일
    • ROM 역시 RAM의 일종이지만, 주 기능이 읽기이므로 RAM과는 구분
  • SRAM(Static RAM)
    • 전력이 공급되는 동안만 정보가 저장
    • 1개 cell은 AND(컨트롤 신호에 따라 동작), D-Latch(정보 저장), 3-state buffet(컨트롤 신호에 따라 동작)으로 구성
  • DRAM(Dynamic RAM)
    • 트랜지스터 + 커패시터 1개씩으로 구성되어 SRAM 대비 크기가 작음
    • word line : 주소 지정
    • bit line : 정보 지정
    • precharge : 0 상태에서 1 상태로 충전하기까지 걸리는 시간이 있으므로, 빠른 동작을 위해 중간 전압으로 bit line을 설정한다. 증폭기를 이용하여 전압이 약간만 상승해도 1 상태가 된 것으로 인식하여 빠르게 신호를 전환한다.
    • 커패시터 소자 주변에는 기생 저항/커패시터가 존재하기 때문에 동작에 따라 저장시켜둔 신호값이 휘발 > 주기적으로 refresh해주어야 함

SDRAM(Synchronous DRAM)

  • decoder and latch : latch는 주소를 저장하여 처음 12bit를 저장 후, 나머지 10bit를 받아들여 12bit 주소 bus(A[11:0])을 통해서 총 22bit(4096 array) 주소에 접근 가능하도록 한다.
  • mux and demux : 데이터를 출력할 때는 mux, 입력할때는 demux를 이용하여 데이터 column을 선택한다.
  • 입력, 출력 refresh 등의 명령은 CMD 버스를 통해 명령어를 전달하여 동작을 지시하며, 같은 address를 row/column으로 나누어 지정 가능하기 때문에 일반 ROM/RAM 대비 같은 address line으로 더 큰 데이터 접근 가능
  • 장점 : 주소 pin의 개수 감소, 클락에 맞추어 메모리에 2-step으로 간단히 접근(주소 입력 - 데이터 접근)

  • Read Cycle
    • PRE : bit line을 precharge
    • ACTV : address bus의 row address 신호를 latch에 저장
      • PRE-to-ACTV delay : precharge가 완료되기까지 걸리는 시간
    • READ : coloumn address 신호를 이용하여 지정한 주소의 신호를 출력
      • RAS(Row Address Stroke)-to-CAS(Column Address Stroke) delay : 읽어들인 row address가 row latch에 모두 저장되기까지의 시간
      • CAS Latency : 데이터가 출력되기까지 걸리는 시간 (refresh과정 포함)
  • Write Cycle : Read 대신 Write 신호를 입력
    • 입력 시 원하는 주소에만 부분적으로 쓸 때, 먼저 저장되어있던 데이터를 Column latch에 저장 후, 원하는 주소만 갱신한 뒤 해당 row에 덮어쓰는 방식으로 데이터 저장

  • Burst Read/Write
    • 같은 Row에 대해 연속된 column은 RAM 내부에서 주소를 증가시키면서 한번에 읽기/쓰기 동작
    • single read/write 대비 clock 수 감소, 주소 계산 경감
  • DDR(Double Data Rate) SDRAM
    • 신호를 더 빠르게 처리하기 위해 통상 rising edge때 동작하는 신호를, rising/falling 모두를 클록 기준으로 설정
    • burst mode에서 데이터가 이동하는 속도가 2배(명령 시간은 동일)

Example

  • 키패드
    • CPU에서 디코더로 주소 신호를 주면 버튼을 인식할 row 선택
    • high가 된 row에서 버튼이 눌리게 되면 신호가 Data bus로 전달
      • low인 row는 버튼을 눌러도 인가 전압이 0V쪽으로 흘러 신호가 전달되지 않음
    • CPU는 처음 지정한 address와 나중에 들어온 data를 조합하여 좌표 확인
    • row의 전환 주기가 매우 짧아 키패드 전체를 확인 가능
728x90
728x90
Multibit Register and Latches

Multibit Register and Latches

  • 레지스터 : common clock input을 갖는 2개 이상의 flipflop 조합
  • ex. 74374 register
    • CLK가 rising일 때 1~8D값이 저장
    • OE_L이 내부에 tri-state buffer 회로로 1~8Q에 연결, OE_L이 on이 되어야 저장된 signal이 출력

Counter

  • 1 - 2 - 3 - ... - 다시 1로 반복하는 sequential circuit
  • state diagram이 1개의 cycle로 구성
  • m개 state의 counter = modulo-m counter = divide by m counter
  • n-bit binary counter with T flip flop
    • n개의 ff로 0 ~ 2n12^n-1까지 count 가능

synchronous counter

a b c d
Q0 0 1 0 1 0
Q1 en 0 0 1 0 1
Q1 0 0 1 1 0
Q2 0 0 0 0 1
  • Q1 en은 Q0에서의 transition에 의해 시간차를 두고 입력
    • 4-bit number abcd=0101일 때, Q0에 C값이 들어갈 때 Q1 en에는 Q0의 b값이 입력
  • Q2, Q3 en 역시 Q1, Q2값을 전달받아 동작하므로 각각 시간차를 두고 입력됨
  • propagation delay로 인해 자리수가 늘 수록 동작이 느려짐

Synchronous Parallel Binary Counter

  • 자리수가 높아질 수록 직전 자리수들의 출력 신호가 누적되어 입력
  • And-gate의 pan-in이 증가하므로 low-high 변화 시간이 길어짐 = 동작을 위한 최소 clock에 제한
  • 또한 병렬연결에 의해 clock입력의 전류 크기가 커져야 함

  • ex. 74163 free running mode

    • free running : clock이 입력되면 연속하여 동작
    • CLR : low 신호가 입력되면 출력을 바로 0000으로 초기화 (asynchronous)
    • LD(Load) : low 신호가 입력되면 A~D에 입력된 신호를 출력 (synchronous)
    • 분주 : 주기를 2n2^n등분으로 나눔
    • RCO 신호를 다른 74163의 clock에 연결하면 확장된 counter를 만들 수 있음
    • 신호에 저항을 연결하는 이유 : 전류 제한

Decoding Binary Counter States

  • counter 출력 신호를 decode
  • decoder의 출력 변화로 인해 출력신호에 glitch 발생 : 출력단에 병렬 C를 연결하여 glitch 보상

Other sequence Counter

  • 원하는 순서대로 동작하는 카운터
  • case. T flip flop
    1. transition table 작성
    2. next state와 Toggle input에 대한 K-map을 각각 작성
    3. 이를 이용하여 회로도 작성
    • 오류 발생을 가정 : ex. 오류 발생시 출력을 000으로 초기화

Shift Register

  • Shifter(Shift register) : 전달을 목적으로 하는 register
    • 컴퓨터 간 통신 (rotate shifter)
    • arithmatic shifter : 1bit씩 옮겨서 값을 2배로 곱하거나, 1/2로 나눔
    • clock당 n-bit를 움직이는 shifter

  • bps : bit-per-second, 초당 전송하는 bit 수
    • ex. rising edge shifter, 100Mbps
      = 초당 rising edge가 100M개인 clock으로 통신
    • 기기 간 데이터 통신을 위해서는 shift register가 필요
    • shifter 내 flipflop의 transition time에 의한 제한이 존재하므로 원하는 대로 속도를 증가시킬 수는 없음

  • Serial-in, Serial-out(SISO) shifter(좌)

    • clock 입력 > D FF on, 입력단 D FF 신호는 다음 D FF로 전송
    • clock 입력에 따라 순차적으로 다음 FF로 데이터 전송, 출력
    • 모든 데이터가 전송되는데 FF 개수만큼의 clock 필요
  • Serial-in, Parallel-out(SIPO) shifter(우)

    • 입력 과정은 SISO와 동일 : 모든 데이터가 입력되는데는 FF 개수만큼의 clock 필요
    • 데이터 출력은 동시에 이루어짐

  • Parallel-in, Serial-out(PISO) shifter
    • LOAD/SHIFT
      • 1은 LOAD 신호, 0은 SHIFT 신호
      • LOAD일 때는 1D-ND까지의 신호가 D FF로 입력
      • SHIFT일 때는 LOAD된 신호를 SEROUT으로 순차 출력
      • LOAD-LOAD 사이에는 FF 개수만큼의 Clock 필요(입력된 신호를 모두 전송)

  • Parallel-in, Parallel-out(PIPO) shifter
    • PISO와 다르게 각 FF이 parallel하게 출력

  • ex. 74194 Universal Shift Register
    • 4bit bidirectional PIPO shifter
  • 74194 extension
    • CLK, CLR, S0, S1핀은 공통으로 사용
    • Q8~Q5, Q4~Q1 74194가 각각 존재할 때,
      Q5 출력은 Q4~Q1 74194의 LIN으로,
      Q4 출력은 Q8~Q5 74194의 RIN으로 입력 :
      left/right shift시 74194 간 신호 전달
    • MSB, LSB에만 출력 사용시 PISO shifter로 사용 가능 :
      MSB는 Serial Right out, LSB는 Serial Left Serial Out
  • 74194 ring counter
    • 2진 카운터와 다르게 특정 순서로 움직이지 않고, bit 위치가 순환하면서 이동
    • ex. D만 on하고 나머지는 GND한 경우
      0001 > 0010 > 0100 > 1000 > 0001 ...
    • 74194 4-bit 4-state self correcting ring counter
      • 74194 ring counter의 경우 중간에 신호 오류가 발생하면 그 오류를 그대로 반영하여 shift함
      • LSB를 제외한 나머지를 NOR회로로 연결
      • LIN 입력에 Q0~Q2신호가 000일 경우에만 1을 넣어주고, 그 외에는 0을 넣어 일정 clock후 정상신호를 회복하도록 함(최대 3clock 소요)
  • Johnson Counter
    • n-bit, 2n states
    • LSB에 인버터를 연결하여 LIN 신호로 입력
    • 0000 입력 기준으로 MSB부터 순서대로 1로 채워짐
    • 1111이 되면 MSB부터 순서대로 0으로 채워짐
    • Q0~Q3 : 0000 > 1000 > ... > 1111 > 0111 > ... > 0000 > 1000 > ... shift를 반복
    • Self Correcting Johnson counter
      • 출력 핀 중 일부를 NOR회로로 연결하여 74194 S0단자에 연결
      • 오류 발생시 일정 clock이 지난 후 S0에 1 신호가 입력되면 DCBA 신호가 출력되어 신호 정상화
  • Linear FeedBack Shift Register Counter
    • 2n12^n-1개 state를 갖는 카운터(최대 길이)
    • n-bit parallel shift register에 대해 정해진 feedback 입력을 XOR연결하여 SERIN단자에 연결
    • LFSR with 0 state
      • 2n개 state를 갖는 카운터
      • LSB를 제외한 출력을 NOR연결하고, LFSR XOR 출력과 XOR하여 all 0 state를 구현

Timing and Synchronization Issue

Clock Skew

  • 회로 내 배선 길이가 길어지는 경우 신호 전달에 시간차 발생
  • Q1은 정상적인 D FF 동작을 나타내나, D2로의 clock전달이 지연되어 원래 Q2는 0으로 출력되어야 하지만 1로 출력
  • Clock skew 방지
    • 병렬 신호선 일부에만 buffer 부착시 clock skew 발생
    • 모든 신호에 같은 buffer를 부착 (가급적 동일 IC를 통해 연결)
    • 선로에 병렬 커패시터를 연결하여 의도적으로 신호전달을 지연시켜 시간차를 맞추는 방법도 존재

Asynchronous Input

  • 디지털 시스템의 입력은 대부분 클록과 동기화되지 않은(=언제 입력될 지 모르는) 입력
  • synchronizer를 이용하여 clock에 동기화된 입력으로 변환
  • 극단적인 noise : clock edge에서 비동기 신호가 유지되지 못하고 순간 변화한 경우는 신호 전달에 오류
  • 비동기 신호를 2개의 synchronized state로 나타내고자 할 때 synchronizer 2개를 사용하는 것은 부적절
    • 동기화 간 clock delay 존재 = 같은 클락에 다른 응답 가능성
    • 동기화 된 하나의 신호를 Combinational Logic을 통해 나누어 출력하는 것이 좋음
728x90
728x90
Bistable Elements
  • Sequential Logic : 현재 출력이 과거 출력에 영향을 받음
  • Ocombinational=f(input)O_{combinational} = f(input)
  • Osequential=f(input,Opresent)O_{sequential} = f(input, O_{present})

Bistable Elements

  • clock signal
    • 전압이 공급되면 디지털 회로는 클락에 따라 움직임
    • high-low 시간을 합쳐 주기 period라고 함.
    • 주파수 = 1 / 주기
    • duty cycle = high / period (invert clock의 경우 low/period)

  • Latch : 입력이 바뀌면 출력도 바뀜
  • Flip-Flop : 클록이 바뀔 때 출력이 바뀜

Flip Flop

  • 이하 모든 Flipflop 해석은 Clock Rising edge일 때 신호를 읽는 것으로 가정

  • D flip-flop
    • (a) D flip-flop 내부 구조 : 2개 latch를 조합하여 사용
    • (b) truth table : D 신호에 따라 다음 신호를 결정, 그 외에는 현재 상태를 유지
    • (c) D flip-flop 회로 기호

  • tpLH/tpHLt_{pLH} / t_{pHL}

    • 신호가 low > high / high > low로 바뀌는 시간
  • thold/tsetupt_{hold} / t_{setup}

    • 클록이 바뀌기 후/전에 신호가 유지되어야 하는 시간
    • 이 시간 범위 내에 신호가 바뀌면 출력 신호가 불안정하게 된다.
  • setup/hold time을 이용하여 D flip-flop의 최소 클록을 구할 수 있다.

  • D flip flop with PR and CLR

    • Clock과 무관하게 PR(preset) 입력 시 on
    • CLR(clear) 입력 시 off
  • D flip flop with enable : enable이 입력될 때만 flip flop이 동작, 이외에는 이전 신호를 그대로 유지


  • S-R Flip Flop
    • S(set)=1 : Q = 1
    • R(Reset)=1 : Q=0
    • S, R이 모두 0 : 이전 신호 유지
    • S, R이 모두 1 : not allowed(신호 불안정)
    • scan flip-flop
      • 데이터 입력 외에 test용 enable, input이 별도로 존재
      • test enable이 high가 되면 data 대신 test input의 데이터가 입력으로 들어간다.

  • J-K flip flop
    • S-R flip flop에서의 단점을 보완
    • J가 Set, K가 reset 역할
    • J,K가 모두 high가 되면 출력을 반전

  • T(toggle) flip-flop
    • T에 on 입력 시 출력이 반전
    • T off일때는 출력 유지
    • J-K flip flop의 J, K단자를 연결한 것과 같은 동작

Clocked Synchronous State-Machine Analysis and Design

  • state machine = sequential circuit(순차회로)
  • clocked : flip-flop에서 클록 입력
  • synchronous : 클록이 변화할 때 상태가 변화 / 모든 flip-flop은 같은 clock signal에 따라 변화

  • Mealy machine
    • F(combinational logic)로 n개의 flip-flop으로 구성된 상태 메모리의 입력을 정의
    • F(next-state-logic)과 G(output logic)는 현재 상태와 입력의 조합으로 구성

  • Moore machine
    • Mealy와 다르게 출력은 현재 상태만으로 구성
    • next-state는 현재 상태와 입력의 조합으로 구성

  • Characteristic Eq.

    • 입력과 현재 상태 Q(t)로 직후의 상태 Q(t+ϵ)Q(t+\epsilon)를 표현하는 논리식
    • ex. S-R FF
    • 위 식을 단순화하면 Q*=S + R`Q의 식으로 나타난다.
  • Transition Eq.

    • Excitation Eq. : 입력 단자의 논리식
    • Characteristic Eq. : state memory의 다음 상태를 정의
    • Transition Eq. : excitation eq.를 이용하여 다음 상태를 정의
    • output Eq. : 시스템의 출력

  • state machine
    • 상태표를 그림의 형태로 표현
    • mealy machine
      • 다음 상태와 출력이 현재 상태와 입력의 조합으로 구성
      • circle에는 현재 상태, 화살표는 입력의 변화를 표시
      • 입력이 변화할 때 출력과 상태가 모두 변하므로, 화살표에 입/출력을 모두 표기한다.
    • moore machine
      • 출력은 현재 상태로, 다음 상태는 입력과 현재 상태의 조합으로 구성
      • circle 안에 출력이 표시되며, 화살표에는 입력의 변화만 나타난다.

Clocked synchronous state-machine design

  • Design example
    • 입력 A, B, 출력 Z를 갖는클록 동기화 machine를 설계
    • 다음의 경우 Z=1:
      • A가 2개 tick동안 같은 값을 유지하는 경우
      • 위 조건을 만족한 이후 B가 1을 유지하는 경우
    • 그 외 Z=0
    • 위 조건을 기준으로 하는 state table 작성
      • INIT : 초기 상태
      • A0(A1) : 이전에 0(1)이 입력된 경우
      • OK0(OK1) : 이전에 0(1)이 두번 입력된 경우
    • State Assignment
      • 1-bit = 1-flip flop
      • 상태의 개수 = m이라고 할 때 최소 flip flop # = log2m\lceil log_2m\rceil
      • 주어지는 조건의 영향을 많이 받게 됨
        • D-flipflop을 쓸 것인지/J-K flipflop을 쓸 것인지
        • SOP/POS 표현 중 어떻게 나타낼 것인지
728x90
728x90
Documentation

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
  • Encoder
    • 코드르 만드는 회로
    • ex. 2n2^n to n binary encoder : 2n2^n개 숫자를 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 (X=ABX = A\oplus B) : 두 입력이 다를 때 1
  • XNOR (Y=ABY = A\odot B) : 두 입력이 같을 때 1
  • XOR parity gate
    • parity check
      • 신호 전송시 오류를 검출하는 방법
      • 오류 수정은 불가
      • 2진수 신호의 1 개수를 계산하여 even/odd parity에 따라 1의 개수가 짝/홀이 되도록 parity bit를 추가한다.
      • ex. even parity, 110 입력인 경우 parity bit=0
    • 입력을 모두 XOR하면 입력에서 1의 개수가 홀인지 짝인지 확인 가능
      • 110=01\oplus1\oplus0 = 0

  • ex. 에러 검출 회로
  • 입력이 1110000일 때
  1. write가 enable되면 메모리에 D1-D7이 저장
  2. 이 때 74280(parity generator)가 xor 회로로 입력의 1 개수를 계산 (odd=1)
  • write시에 I입력은 항상 0
  1. read가 on일 시 74541 tri-state buffer가 enable되어 메모리 신호를 출력
  2. 이때 저장된 PIN은 POUT을 통해 다시 74280으로 전송 (I = RD * POUT = 1)
  3. 이 신호로 다시 74280이 parity check, odd 신호는 0이 됨(RP 포함, 1 111 0000)
  4. 만약 read 중 8bit 신호 중 하나가 수정된 경우 odd가 1이 되면서 ERROR 신호가 on이 됨(ERROR = RD * ODD)
  • Hamming Code
    • 오류 위치를 검출하고 1bit 오류에 대해 자기정정이 가능한 코드
    • n개 데이터에 k개 parity bit를 더하여 만들어짐
    • 패리티 비트는 2n(n=0,1,...)2^n(n=0,1,...)번째 비트에 위치한다.
    • 데이터 비트 수는 2k1k2n2kk1(k3)2^{k-1}-k-2\leq n\leq2^k-k-1(k\geq3)의 공식을 따른다(k=2일 때 data bit = 1)

Arithmatic and Logic Unit(ALU)

  • Comparator : 비교기
    • XOR 게이트를 사용, 두 입력이 같은지 확인
  • 74x85 comparator
    • AGTBOUT : A가 B보다 크거나, AGTBIN 신호에 1이 전달되면 on
    • AEQBOUT : A와 B가 같으면서 AEQBIN에 1이 전달되면 on
    • ALTBOUT : A가 B보다 작거나, ALTBIN에 1이 전달되면 on
    1. 왼쪽 7485에 AEQBIN에 on(5V)신호를 전달하였고 A,B가 0101로 동일하므로 다음 7485에 AEQB on 전달
    2. 가운데 7485 역시 동일하게 AEQB on 전달
    3. 오른쪽 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되는지 여부
      • g=XiYig = X_i * Y_i
      • pi=Xi+yip_i = X_i+y_i(둘 중 하나만 1이면 carry in 발생시 carry out이 발생되므로)
      • S=XYCiS = X \oplus Y \oplus C_{i}
      • Ci=gi1+pi1+Ci1C_{i} = g_{i-1} + p_{i-1} + C_{i-1}
      • 구조가 복잡하여 4bit 이상으로는 잘 사용하지 않음(4bit CLA를 여러개 조합함)
  • ALU
    • 산술, 논리 연산이 가능한 회로
    • 74181 : 입력과 4-bit 선택에 따라 다른 연산 결과가 나타남
728x90

+ Recent posts