기본 논리문으로 임의의 브리 함수 만들기

소개하다.


디지털 전자 기술은 아마도 현재 영향이 가장 크고 응용이 가장 광범위한 기술일 것이다.그것은 모든 칩의 기초를 이루었다. ARM 마이크로컨트롤러부터 휴대전화 프로세서까지, 그리고 기능이 강한 AMD Threadripper까지.이 모든 상황에서 디지털 전자 기술이 주도적인 위치를 차지한다.
기본 원리를 이해해야 할 뿐만 아니라 이러한 원리와 디지털 전자 부품이 어떻게 현대 세계의 기초를 구성하는지 이해해야 한다. 즉, 우리가 어떻게 기본 논리문에서 기능이 완비된 컴퓨터로 발전하는지 이것은 매우 유용하다.

컴퓨팅 시스템의 요소


디지털 전자 기술이 중요한 이유는 현대 기술의 기초일 뿐만 아니라, 현대 기술이 실제적으로 우리의 생활을 지배하고 있기 때문일 뿐만 아니라, 우리로 하여금 프로그래머와 컴퓨터 과학자가 되게 하기 때문이다.
우리가 독학으로 인재가 된 프로그래머든, 4년 동안 컴퓨터 과학 학위를 가진 사람이든, 우리는 기본 논리문에서 CPU까지 어떻게 가르치는지 가르쳐 준 적이 없다.
노먼 니산(Noam Nisan)과 시몬 쇼켄(Shimon Schocken)이 쓴 책The Elements of Computing Systems은 바로 이렇게 썼다.그것은 현대 컴퓨터의 기본 구조 블록이 어떻게 실제적으로 컴퓨터를 만드는지 가르쳐 준다.

[새로운 2판이 나왔지만 1판을 읽고 있습니다.]
그것은 운영체제와 그 위에 통용되는 프로그래밍 언어를 가진 성숙한 컴퓨터로 시작해서 무엇이든 만들 수 있는 방법을 적극적으로 가르쳐 주겠다고 약속했다.이 책은 낸드2TTERIS라고도 불린다.
나는 이미 이 책을 읽기 시작했는데, 일요일마다 읽고 있어서, 나는 거의 한 장을 완성했다.

초급 대문에서 대문을 짓다


디지털 건축 과정이나 디지털 전자 과정을 밟은 사람들은 낸드(비화) 문을'통용 문'이라고 부른다. 왜냐하면 그들의 어떤 조합이 다른 문을 만들 수 있기 때문이다.그래서 비문이 있을 때, 유니버설 컴퓨터를 만들 수 있다.이 책은 너에게 이렇게 하라고 한다.이것은 AND, NOT, AND 또는 많은 논리 문을 만들 수 있도록 해 줍니다. 미리 실행된 NAND 문만 있으면 됩니다.
그래서 이미 비문을 실현하고 제공했다.너는 우선 문이 아니라, 혹은, 혹은, 그리고,그리고 이전에 구축된 기능을 계속 사용하여 이차 또는 문, 다중 복원기(MUX), 복원기(D-MUX)와 이 문과 기본 문의 여러 버전을 만들 것입니다.화목하거나 불화는 비문이다.
그 자체가 흥미진진한 임무로 지능적으로도 계발적이다.
이것이 바로 이 문장의 핵심이다.
세 개의 논리문으로 어떤 브리 함수를 실현하는지 보여 드리겠습니다.이것은 알 만한 비결이다.
자, 시작합시다.

부울 함수 구현


볼 함수를 설계하다


만약 우리가 브리 함수를 필요로 한다면, 그 행위는 바로 이렇다 -
A
B
C
Y
0
0
0
1
0
0
1
0
0
1
0
0
0
1
1
0
1
0
0
1
1
0
1
1
1
1
0
1
1
1
1
0
이 브리지 값표는 우리가 이런 함수가 필요하다는 것을 알려준다-

  • A, 3개의 부울 변수 B와 C는 모두 0
  • A만 1, B와 C는 0

  • A와 C는 1이고 B는 0

  • A와 B는 1, C는 0
  • 현재, 어떤 경우, 행동이 예상에 부합되는 브리 함수를 정의해야 할 수도 있습니다.이 함수가 무엇을 하는지 걱정하지 마라.실현 부분에 주목합시다.

    부울 표현식


    나는 네가 이미 기본적인 문과 그들이 어떻게 일을 하는지 알고 있다고 가정한다.
    따라서 브리 함수를 구축하는 첫 번째 단계에서는 브리 표현식을 만들어야 한다.블로 변수는 두 개의 값(0,1)이 있고 블로 함수는 두 개의 값(0,1,duh!)만 출력할 수 있다.부울 표현식의 계산 결과는 항상 0 또는 1이다.
    어떻게 진정으로 이 점을 해낼 수 있습니까?
  • 함수가 어떤 상황에서 출력되는지 주의하기만 하면 된다.그것만 봐.
  • 어떤 변수가 켜져 있고 어떤 변수가 꺼져 있는지 주의한다.
  • 변수는 변하지 않고 이 예에서 1이고 닫힌 변수를 반전시킵니다(전자학에서는 통과하지 않습니다).
  • 를 곱하세요.
  • 수출 중인 각 제품에 대해 그것들을 더하기만 하면 된다.
  • 이렇게너는 너의 브리 표현식을 얻었다.
    한 걸음 한 걸음 말해 보겠습니다.
    출력에서 처음으로 1이 나타났을 때, 우리는 모든 입력 변수가 닫힌 것을 보았다.우리는 a*, b*와 c*를 얻었다. 그 중에서 a, b와 c는 각각 a, b와 c를 입력하는 변수를 대표하고 x*는 x의 반향을 구한다. 우리는 그것들을 곱해서 a*b*c*를 얻는다.
    두 번째로 1이 나타났을 때 비슷한 방식으로 우리는 -ab*c*를 얻었다.
    세 번째와 네 번째 출현의 1에 대해 우리는 각각 ab*c와 abc*를 얻었다.
    우리는 반드시 그것들을 더해야 한다.이렇게 하면 우리는 -

    [올바른 순서에 따라 사례를 작성해야 합니다. 세 변수 중 첫 번째 변수의 값은 행별로 -0-0-1-1-1-1, 두 번째 변수의 값은 서로 다릅니다. -0-1-1-1-0-1, 세 번째 변수의 값은 -0-1-0-1-1입니다.]

    구현


    부정은 하나의 비문을 통과하고, 곱셈은 하나의 와문을 통과하며, 덧셈은 단지 하나의 혹은 문일 뿐이라는 것을 너는 이미 알고 있을 것이다.
    1조분 a*b*c*는 이런 방식으로 획득할 수 있습니다-

    여기는 두 번째, 세 번째, 네 번째 부분-


    그리고

    지금, 우리는 그것들을 한데 묶어야 한다. 즉, 이 부품들을 하나 또는 문을 통과시켜야 한다.혹은 문의 출력이 우리의 최종 출력이 될 것이다.

    우리의 최종 산출.

    HDL: 구현 및 테스트


    현재, 만약 주위에 집적 회로가 있다면, 전원이나 5V 배터리와 일부 전선으로 빠르게 테스트할 수 있다.출력을 확인하려면 유니버설 시계나 LED 전구가 필요합니다.
    그러나 이 책을 읽을 때 우리는 처음부터 컴퓨터 한 대를 구축하고 있다는 것을 명심하세요.당신이 공교롭게도 축전과 계약을 체결하지 않았다면, 수천 개의 집적회로를 사용하여 컴퓨터 한 대를 제조하는 것은 그다지 현실적이지 못했을 것이다.
    HDL이라는 언어를 사용했습니다.이것은 직관적이고 고급스러우며 전용 프로그래밍 언어로 칩을 설계하고 테스트하며 이전에 만든 칩을 사용할 수 있다.
    그것은 자바로 이루어졌지만, 자바의 실현을 걱정할 필요는 없다. 자바를 사용하기만 하면 된다.칩을 로드하고 테스트하는 GUI 프로그램도 제공됩니다.
    예를 들어 비문을 정하면 당신은 이런 방식으로 비문을 설계할 것입니다.

    보시다시피 이것은 매우 직관적이어서 당신은 20분 안에 그것을 들 수 있습니다.
    다음은 당신이 이것을 테스트하는 방법입니다.

    HDL로 사용자 정의 함수를 작성하려면 -
    // Custom.hdl
    // this is a part of Hashnode blog Convoluted demo
    
    CHIP Custom {
        IN a, b, c;
        OUT out;
    
        PARTS:
        Not(in=a, out=nota);
        Not(in=b, out=notb);
        Not(in=c, out=notc);
        And(a=nota, b=notb, out=notanotb);
        And(a=notanotb, b=notc, out=w1);
        And(a=a, b=notb, out=anotb);
        And(a=anotb, b=notc, out=w2);
        And(a=anotb, b=c, out=w3);
        And(a=a, b=b, out=ab);
        And(a=ab, b=notc, out=w4);
        Or8Way(in[0]=w1, in[1]=w2, in[2]=w3, in[3]=w4, out=out);
    }
    
    914와 비교하면 914는 맞춤형이 아니다.그래서 이 칩을 테스트하기 위해 내 것을 썼다.
    테스트 파일입니다(.tst. -
    // Custom.tst
    // test file for testing custom chip
    // could be found at- https://gist.github.com/ghosh-r/c4e6f5ceb1e7ea2e3ba3601c9de121be
    
    // test file for a custom chip in Convoluted, a Hashnode blog
    
    load Custom.hdl,
    output-file Custom.out,
    compare-to Custom.cmp,
    output-list a%B3.1.3 b%B3.1.3 c%B3.1.3 out%B3.1.3;
    
    set a 0,
    set b 0,
    set c 0,
    eval,
    output;
    
    set a 0,
    set b 0,
    set c 1,
    eval,
    output;
    
    set a 0,
    set b 1,
    set c 0,
    eval,
    output;
    
    set a 0,
    set b 1,
    set c 1,
    eval,
    output; 
    
    set a 1,
    set b 0,
    set c 0,
    eval,
    output;
    
    set a 1,
    set b 0,
    set c 1,
    eval,
    output;
    
    set a 1,
    set b 1,
    set c 0,
    eval,
    output;
    
    set a 1,
    set b 1,
    set c 1,
    eval,
    output;
    
    비교.cmp 파일입니다.그것은 우리가 기대하는 진가표를 포함한다.
    // Custom.cmp
    // compare file for chip Custom.hdl
    // found at- https://gist.github.com/ghosh-r/c4e6f5ceb1e7ea2e3ba3601c9de121be
    // test file at- https://gist.github.com/ghosh-r/cef52b9f6ac017e00d64460b025a53fe
    
    |   a   |   b   |   c   |  out  |
    |   0   |   0   |   0   |   1   |
    |   0   |   0   |   1   |   0   |
    |   0   |   1   |   0   |   0   |
    |   0   |   1   |   1   |   0   |
    |   1   |   0   |   0   |   1   |
    |   1   |   0   |   1   |   1   |
    |   1   |   1   |   0   |   1   |
    |   1   |   1   |   1   |   0   |
    
    비교 파일의 텍스트가 공백에 불안정합니다.
    그것은 시뮬레이터가 생성한 출력 파일과 비교할 것이다.
    다음은 성공적으로 실행된 상황-

    다른 예: 이문


    기본 문에서 XOR을 구현하고 싶다고 가정하십시오.진상표는-
    A
    B
    Y
    0
    0
    0
    0
    1
    1
    1
    0
    1
    1
    1
    0
    이것은 너의 브리 표현식이 될 것이다-

    이것은 너의 HDL 실현이 될 것이다.
    // Xor.hdl
    
    CHIP Xor {
        IN a, b;
        OUT out;
    
        PARTS:
        Not(in=a, out=nota);
        Not(in=b, out=notb);
        And(a=a, b=notb, out=w1);
        And(a=nota, b=b, out=w2);
        Or(a=w1, b=w2, out=out);
    }
    

    결론


    나는 너희들에게 어떻게 세 가지 기본 논리문으로 어떤 브리 함수를 실현하는지 보여 주었다.그러나 더 많은 변수가 있고 칩이 복잡할 때 이런 방법은 현실에 맞지 않는다는 것을 명심해야 한다.
    Ritobrata Ghosh는 물리학 학부생으로 컴퓨터 시각에 전념하는 심도 있는 학습 고문이다.내장형 장치, 사설 AI(연방 학습), 심도 있는 RL과 GANs의 ML에 관심이 있습니다.나도 수학, 문제 해결과 프로그래밍에 흥미가 있다.
    저와 비슷한 댓글을 더 많이 얻으러 왔습니다.
    계속 지켜봐 주시거나 연락 주세요.

    좋은 웹페이지 즐겨찾기