2025/04/13 3

[밑바닥부터] 8일차 - 2장 불 연산: ALU 구현 및 테스트

ALU 구현 및 테스트ALU구현6개의 제어 비트를 사용해야 한다. (zx, nx, zy, ny, f, no)책에 나와 있는 힌트로는, 16비트 값을 0으로 만들거나 반전하는 논리 설계를 먼저 하라고 한다. ⇒ zx, zy, nx, ny, no가 우선적으로 설정되어야 한다.zx, zy 등을 만들기 위해서는 고급 프로그래밍 언어의 if와 같이 조건을 설정해야 한다.하드웨어에서 조건을 만들려면 멀티플렉서를 사용한다.예를 들어, zx 비트가 1이면 x입력을 0으로 만들고, 0이면 원래 x값을 사용할 수 있도록 한다.그 다음으로는 f에 따라 + 연산과 And 연산을 선택하도록 하면 된다.이 주요 6기능이 제대로 동작하는지 확인 후 zr과 ng 출력에 필요한 기능을 이어서 구현한다.진리표zxnxzynyfnoout(..

[밑바닥부터] 7일차 - 2장 불 연산: 가산기와 증분기 구현

가산기와 증분기 구현가산기구현코드를 작성해보기 전에 가산기의 동작을 생각해보자.LSB는 반가산기를 통해서 더해주고, 나머지는 carry 비트가 추가적으로 필요하니 전가산기를 써주면 될 것 같다.HDL CHIP Add16 { IN a[16], b[16]; OUT out[16]; PARTS: HalfAdder(a= a[0], b= b[0], sum= out[0], carry= carry0); FullAdder(a= a[1], b= b[1], c= carry0, sum= out[1], carry= carry1); FullAdder(a= a[2], b= b[2], c= carry1, sum= out[2], carry= carry2); FullAdder(a= a[..

[밑바닥부터] 6일차 - 2장 불 연산: 반가산기, 전가산기 구현

반가산기, 전가산기 구현반가산기진리표abcarrysum0000100101011110진리표를 확인했을 때, carry는 and 연산이고 sum은 xor 연산임을 확인할 수 있다.HDL CHIP HalfAdder { IN a, b; // 1-bit inputs OUT sum, // Right bit of a + b carry; // Left bit of a + b PARTS: And(a = a, b = b, out = carry); Xor(a = a, b = b, out = sum); }전가산기진리표abccarrysum0000000101010010111010001101101101011111반가산기를 사용해서 구현해보자. a + b + c의 결..