[SRAM-PIM Core Circuit] Design 4-bit Adder
"4-bit Adder"
HA & FA
HA(Half Adder)
→ 1-bit 이진수 2개를 더하는 회로
→ 입력 2개(A, B) & 출력 2개(Sum, Carry)
→ 이전 자리에서 올라온 Carry를 받을 수 없음
→ 1-bit 이진수 2개와 하위 단계에서 올라온 Carry까지 포함하여 총 3-bit를 더하는 회로
→ 입력 3개(A, B, Cin) & 출력 2개(Sum, Cout)
RCA (Ripple Carry Adder) (Ex. 0010 + 0110 + 1010 + 1111 = 100001)
→ 하위 bit에서 발생한 Carry가 상위 bit로 순차적으로 전달
→ Full Adder를 일렬로 연결한 구조로, i번째 FA의 Carry 출력이 i+1번째 FA의 Carry 입력으로 연결
→ 회로 설계가 매우 단순하고 전력 소모↓
→ 상위 bit는 하위 bit의 계산이 끝날 때까지 기다려야 하므로, bit 수가 늘어날수록 Delay 증가
3 : 공정 모델 코너 "toplevel.l"에서 "top_tt" 부분만 불러옴
5~6 : [전압원 이름] [(+) 노드] [(-) 노드] [전압 크기]
8~10 : 상수 값 설정
12~15 : 0010 (bit에 "1"이 저장된 port는 501ps에서 1V로 변환)
17~20 : 0110 (bit에 "1"이 저장된 port는 501ps에서 1V로 변환)
22~25 : 1010 (bit에 "1"이 저장된 port는 501ps에서 1V로 변환)
27~30 : 1111 (bit에 "1"이 저장된 port는 501ps에서 1V로 변환)
32 : 10ps 간격으로 2ns까지 Simulation 진행
33 : 그래프를 확인하기 위한 파일 생성
3번째 줄을 주석처리 한 이유 : "input.ckt"파일에 동일한 코드가 있어서 중복으로 오류 발생
왼쪽 그림 : 0010 + 0110 | 가운데 그림 : 왼쪽 결과 + 1010 | 오른쪽 그림 : 가운데 결과 + 1111
100001
500ps 부근에서 튀는 원인은 이전 단계에서 Carry를 받지 못해서이고, 이후 Carry값을 받고 안정해진다.CSA (Carry Save Adder) (Ex. 0010 + 0110 + 1010 + 1111 = 100001)
→ 3개 이상의 수를 더할 때 효율적이며, Carry를 상위 bit로 바로 보내지 않고, 다음 단계로 저장
→ 각 bit 위치에서 독립적으로 덧셈을 수행, 입력 3개를 받아 Sum과 Carry, 두 개의 벡터로 출력(3:2)
→ Carry Propagation(전파)가 발생하지 않아 속도가 매우 빠르며, bit 수와 상관없이 Delay 일정
→ 최종적으로 두 개의 벡터(Sum, Carry)를 하나로 합치기 위해 마지막 단계에 RCA 또는 CLA 같은 일반 가산기 하나 필요
댓글
댓글 쓰기