[한번 해봤는데] Nand 2 Tetris 2장.

2881 단어 Nand2TetrisHDL
전번(Nand2Tetris 1장)의 계속.
ALU 제작에 참고로 사용됩니다.혼자. Nand2 Tetris/Hiraku.
다음은 이 책을 통해 실제 학습에 착수한 화제다.
* 하드웨어<- 이번
* 아키텍처
* 운영 체제
* 프로그래밍 언어
* 컴파일러
* 데이터 구조 및 알고리즘
* 소프트웨어 엔지니어링

제2장 볼 산술


memo
십진법의 일반 공식은
(x_nx_{n-1}\cdots x_0)_b = \sum_{i=0}^{n} x_ib^i
바이너리 처리에 관해서는 기본 정보 등을 이미 배웠기 때문에 생략한다

산술 논리 연산기(Arristhmetic Logical Unit, ALU) 제작 방법


  • 반가법기: 두 분의 합을 구하다
    입력은 두 개입니다.
    출력은 이 비트 출력(Sum)과 비트 상승(Carry)의 2개

  • 입력
    출력
    A, B
    C, S
    0, 0
    0, 0
    0, 1
    0, 1
    1, 0
    0, 1
    1, 1
    1, 0
    생각이 간단하다
    A, B 중 하나만이 1->Sum++
    A, B는 모두 1->Carry++

  • 구화기: 세 자리의 합
    세 개의 입력이 있다.세 번째 입력은 아래 자릿수에서 시작하는 자릿수 상승입니다.
    출력은 이 비트 출력(Sum)과 비트 상승(Carry)의 2개

  • 입력
    출력
    A, B, C
    C, S
    0 0 0
    0 0
    0 0 1
    0 1
    0 1 0
    0 1
    0 1 1
    1 0
    1 0 0
    0 1
    1 0 1
    1 0
    1 1 0
    1 0
    1 1 1
    1 1
    진리치표에서 나오면
    \begin{align}
    C_{out} &= \bar{A}\cdot B\cdot C_{in}+ {A}\cdot \bar{B}\cdot C_{in}+ {A}\cdot B\cdot \bar{C}_{in}+ {A}\cdot B\cdot C_{in}\\
    &= A\cdot B+B\cdot C_{in}+C_{in}\cdot A\\
    &=\cdots
    \end{align}\\
    
    
    상세 정보전자선로의 조립과 동작 실험[설계편]/교토대학20p 이후
    결국 아주 예쁜 모양이 될 거예요.
  • 가법기: 두 n위의 합을 구하다
    비트수만 늘었어요.
    첫 번째는 반가법기, 그 다음에 모든 가법기
  • 를 사용한다.
  • 증가: 지정된 숫자에 1 더하기
    1만 추가합니다.
    그나저나 HDL로 1을 표시하고 싶은 경우는 다음과 같다true
  • HalfAdder(a = in[0], b = true, sum = out[0], carry = carry0);
    

  • ALU(산술 논리 연산기):out=f(x, y) 계산
    입력의 x, y 처리 및 출력out 처리에 대한 총괄
    각 함수 규격에 따라 움직이면 된다.
    (예: if(zx)x=0 구현)

  • 알다
    기존(내부)의 변수(버스)에 대해 이미지 처리를 할 수 없기 때문에 다음과 같이 분해하고 출력할 때 이미지 처리
  • 를 한다.
        Mux16(a = AFXY, b = NAFXY, sel = no, out = out, out[0..7] = aout, out[8..15] = bout, out[15] = ng);
        //if(out == 0) set zr
        Or8Way(in = aout, out = zr1);
        Or8Way(in = bout, out = zr2);
    
    End of script - Comparison ended succesfully
    2시간 30분 걸렸어요.
    창고를 지나가다GitHub

    좋은 웹페이지 즐겨찾기