DedicatedProcessor Adder
✅ 과제
⚒️ 코드 ⚒️
⚒️[DedicatedProcessor ALUOP.sv]
✅ Schematic
✅ 시뮬레이션
✅ 분석
반복별 레지스터 값
- 1회: R1=3, R2=2, R3=3, R4=5 → Yes
- 2회: R1=7, R2=6, R3=9, R4=15 → Yes
- 3회: R1=15, R2=14, R3=21, R4=35 → Yes
- 4회: R1=31, R2=30, R3=45, R4=75 → Yes
- 5회: R1=63, R2=62, R3=93, R4=155 → Yes
- 6회: R1=127, R2=126, R3=189, R4=59 → No ⇒ halt
➡️ 첫 번째 반복
- 시작 값: (R1, R2, R3, R4) = (1, 0, 0, 0)
**계산 순서** R2 = R1 + R1 (1 + 1 = 2) ➞ (1, **2**, 0, 0) R3 = R2 + R1 (2 + 1 = 3) ➞ (1, 2, **3**, 0) R4 = R3 - R1 (3 - 1 = 2) ➞ (1, 2, 3, **2**) R1 = R1 | R2 (1 | 2 = 3) ➞ (**3**, 2, 3, 2) R4 = R4 & R3 (2 & 3 = 2) ➞ (3, 2, 3, **2**) R4 = R2 + R3 (2 + 3 = 5) ➞ (3, 2, 3, **5**) 조건 확인: R4 > R2 (5 > 2) ➞ ✅ Yes, 계속 진행
➡️ 두 번째 반복
시작 값: (R1, R2, R3, R4) = (3, 2, 3, 5)
**계산 순서**
R2 = R1 + R1 (3 + 3 = 6) ➞ (3, **6**, 3, 5)
R3 = R2 + R1 (6 + 3 = 9) ➞ (3, 6, **9**, 5)
R4 = R3 - R1 (9 - 3 = 6) ➞ (3, 6, 9, **6**)
R1 = R1 | R2 (3 | 6 = 7) ➞ (**7**, 6, 9, 6)
R4 = R4 & R3 (6 & 9 = 0) ➞ (7, 6, 9, **0**)
R4 = R2 + R3 (6 + 9 = 15) ➞ (7, 6, 9, **15**)
조건 확인: R4 > R2 (15 > 6) ➞ ✅ Yes, 계속 진행
➡️ 세 번째 반복
시작 값: (R1, R2, R3, R4) = (7, 6, 9, 15)
**계산 순서**
R2 = R1 + R1 (7 + 7 = 14) ➞ (7, **14**, 9, 15)
R3 = R2 + R1 (14 + 7 = 21) ➞ (7, 14, **21**, 15)
R4 = R3 - R1 (21 - 7 = 14) ➞ (7, 14, 21, **14**)
R1 = R1 | R2 (7 | 14 = 15) ➞ (**15**, 14, 21, 14)
R4 = R4 & R3 (14 & 21 = 4) ➞ (15, 14, 21, **4**)
R4 = R2 + R3 (14 + 21 = 35) ➞ (15, 14, 21, **35**)
조건 확인: R4 > R2 (35 > 14) ➞ ✅ Yes, 계속 진행
➡️ 네 번째 반복
시작 값: (R1, R2, R3, R4) = (15, 14, 21, 35)
**계산 순서**
R2 = R1 + R1 (15 + 15 = 30) ➞ (15, **30**, 21, 35)
R3 = R2 + R1 (30 + 15 = 45) ➞ (15, 30, **45**, 35)
R4 = R3 - R1 (45 - 15 = 30) ➞ (15, 30, 45, **30**)
R1 = R1 | R2 (15 | 30 = 31) ➞ (**31**, 30, 45, 30)
R4 = R4 & R3 (30 & 45 = 12) ➞ (31, 30, 45, **12**)
R4 = R2 + R3 (30 + 45 = 75) ➞ (31, 30, 45, **75**)
조건 확인: R4 > R2 (75 > 30) ➞ ✅ Yes, 계속 진행
➡️ 다섯 번째 반복
시작 값: (R1, R2, R3, R4) = (31, 30, 45, 75)
**계산 순서**
R2 = R1 + R1 (31 + 31 = 62) ➞ (31, **62**, 45, 75)
R3 = R2 + R1 (62 + 31 = 93) ➞ (31, 62, **93**, 75)
R4 = R3 - R1 (93 - 31 = 62) ➞ (31, 62, 93, **62**)
R1 = R1 | R2 (31 | 62 = 63) ➞ (**63**, 62, 93, 62)
R4 = R4 & R3 (62 & 93 = 28) ➞ (63, 62, 93, **28**)
R4 = R2 + R3 (62 + 93 = 155) ➞ (63, 62, 93, **155**)
조건 확인: R4 > R2 (155 > 62) ➞ ✅ Yes, 계속 진행
➡️ 여섯 번째 반복 (마지막)
시작 값: (R1, R2, R3, R4) = (63, 62, 93, 155)
**계산 순서**
R2 = R1 + R1 (63 + 63 = 126) ➞ (63, **126**, 93, 155)
R3 = R2 + R1 (126 + 63 = 189) ➞ (63, 126, **189**, 155)
R4 = R3 - R1 (189 - 63 = 126) ➞ (63, 126, 189, **126**)
R1 = R1 | R2 (63 | 126 = 127) ➞ (**127**, 126, 189, 126)
R4 = R4 & R3 (126 & 189 = 120) ➞ (127, 126, 189, **120**)
R4 = R2 + R3 (126 + 189 = 315)
8-bit Wrapping (오버플로우): 8비트 레지스터는 255까지만 표현 가능하므로, 315는 256을 뺀 나머지 값인 59가 된다. (315 - 256 = 59)
R4 최종 값 ➞ (127, 126, 189, **59**)
조건 확인: R4 > R2 (59 > 126) ➞ ❌ No, 중단 (Halt)