회로

8 비트 컴퓨터 구축 방법 : 18 단계 (그림 포함)

디지털큐브, PMP 'T5' 3차원 UI 깜짝 공개

디지털큐브, PMP 'T5' 3차원 UI 깜짝 공개

차례:

Anonim

8 비트 TTL 컴퓨터를 구축하는 것은 힘든 작업이나 복잡한 작업처럼 들리거나 적어도 기본 CPU의 아키텍처를 이해하기 시작했습니다. 결론적으로 CPU는 모든 프로세스의 기본 사항을 배우게되면 작동이 매우 간단합니다. 이 프로젝트는 자신의 컴퓨터를 만들고 프로세스와 함께 제공되는 멋진 지식을 얻는 데 관심이있는 모든 사람들을 돕기위한 것입니다. 시도하는 것을 두려워하지 말고, 당신은 배울 수 있습니다.
이 프로젝트는 전자 공학의 기초를 설명함으로써 시작됩니다. 그 후, 바이너리 및 부울 로직의 기본 사항을 설명합니다. 마지막으로 우리는 Malvino의 텍스트에 설명 된 것처럼 간단한 컴퓨터를 사용하여 다양한 부분의 기능으로 이동합니다 (몇 가지 수정). 디지털 컴퓨터 전자 . 즉,이 Instructable의 최종 제품은 고유 한 명령어 세트로 프로그래밍 할 수있는 컴퓨터입니다. 이 프로젝트는 또한 컴퓨터의 많은 디자인 측면을 당신에게 맡기고 자신의 컴퓨터를 구축하기위한 안내서 역할을합니다. 이것은이 프로젝트에 접근 할 수있는 많은 방법이 있기 때문입니다. 부울 논리에 대한 올바른 이해와 바이너리 작업이 프로젝트의 모든 부분을 건너 뛰어도 좋습니다. 나는 여러분 모두가 이걸 좋아하고 뭔가를 얻을 수 있기를 바랍니다. 나는 확신합니다.
이 프로젝트에는 다음이 필요합니다.
1.) 전원 공급 장치
2.) 브레드 보드 + 많은 수의 전선
3.) 출력을위한 LED
4.) 다양한 논리 IC들 (후술 됨)
5.) 자유 시간
6.) 엉망으로 기꺼이 실수에서 배울 의향
7.) 많은 인내
선택 사항 (그러나 매우 유용함) :
1.) 오실로스코프
2.) 디지털 멀티 미터
3.) EEPROM 프로그래머
4.) 소닉 드라이버
이 프로젝트에 유용한 링크 :
디지털 컴퓨터 전자 제품 :
http://www.amazon.com/Digital-computer-electronics-Albert-Malvino/dp/007039861
TTL 요리 책 : http://www.amazon.com/TTL- 북마크 - 이해 - 트랜지스터 - 트랜지스터 - 통합 / dp / B0049UUV38

용품:

1 단계 : 컴퓨터 란 무엇입니까?

이것은 응답이 필요없는 매우 단순한 질문처럼 보일 수 있습니다. 실제로 많은 사람들이 진정한 답을 모르는 질문입니다. 컴퓨터는 트랜지스터보다 기계적으로나 이론적으로 오래 존재 해왔다. 컴퓨터의 실제 정의는 Alan Turing의 이름으로 매우 지적인 사람에 의해 생각되었습니다. 그는 Turing Machine이라고 불리는 기계를 설명했습니다. 현재 컴퓨터 나 휴대 전화에서부터 슈퍼 컴퓨터에 이르기까지 우리가 사용하는 모든 컴퓨터는 가장 간단한 수준에서 튜링 머신으로 분류 될 수 있습니다.
튜링 머신이란 무엇입니까? Turing Machine은 테이프, 헤드, 테이블 및 상태 레지스터의 4 부분으로 구성됩니다. 이러한 기계의 작동을 시각화하려면 먼저 각 방향으로 무한히 확장되는 필름 스트립을 상상해야합니다. 이제이 필름 스트립의 각 셀에는 정의 된 기호 세트 (알파벳과 같은) 중 하나만 포함될 수 있다고 상상해보십시오. 이 예에서는 각 셀에 "0"또는 "1"만 포함될 수 있다고 가정 해 보겠습니다. 이러한 셀은 무한한 시간 재 작성 될 수 있지만 다시 변경 될 때까지 무기한으로 정보를 유지합니다. Turing Machine의 머리 부분은 셀에 기호를 쓸 수있을뿐 아니라 주어진 정수 (정수)만큼 필름 스트립에서 위치를 증가 또는 감소시킬 수 있습니다. 다음 부분은 "오른쪽 4 셀 이동"및 "1 셀 설정"과 같이 실행될 헤드에 대한 주어진 명령 세트를 보유하는 테이블입니다. Turing Machine의 네 번째이자 마지막 부분은 기계의 현재 상태를 유지하는 목적을 가진 상태 레지스터입니다. 상태에는 테이프의 현재 데이터뿐만 아니라 명령이 포함됩니다.
그것이 컴퓨터의 작동이 얼마나 단순한 지입니다. 컴퓨터가 작동 할 때 실제로는 튜링 기계로 작동합니다. 주어진 명령 및 알고리즘 세트로 컴퓨터에 저장된 데이터를 처리합니다. 이 Instructable에 설명 된 컴퓨터는 매우 단순한 컴퓨터 모델이지만 계속해서 따라 실행될 일련의 지침으로 프로그래밍 할 수있는 컴퓨터로 작동합니다.
유용한 링크:
Turing 기계에 Wikipedia :
http://en.wikipedia.org/wiki/Turing_machine

2 단계 : 전자 제품 소개

8 비트 컴퓨터를 만들기 전에 전기 및 아날로그 회로의 기본 특성을 파악하는 것이 매우 유용합니다. 컴퓨터에 아날로그 컴포넌트가 필요한 부분이 있습니다. 전기 공학에서 충돌 과정을 제공하는 최소한의 비용으로 많은 전자 공학 교습 지침서를 이용할 수 있습니다. 나는 개인적으로 발견했다. 전자 자체 학습 안내서 Harry Kybet과 Earl Boysen이 아날로그 전자 공학의 세계를 다루는 훌륭한 책이 될 것입니다.
전자 자체 학습 안내서 http://www.amazon.com/Electronics-Self-Teaching-Guide-Thing-Guides/dp/0470289619/
공통 구성 요소 :
Resistor - 옴으로 측정 한 전류를 제한합니다.
축전기 - 충전 저장은 극성 또는 비극성 (극성은 올바른 방향으로 배치해야 작동 가능함) 일 수 있습니다. 패럿 단위로 측정되었습니다.
다이오드 - 전류를 한 방향으로 만 흐르게하고 잘못된 방향으로 배치하면 특정 전압에서 끊어집니다.
트랜지스터 (Transistor) - 조정자 역할을하는 세 번째 핀에 의해 제어되는 현재 게이트. 많은 종류의 트랜지스터가 있지만 여기에서는 NPN과 PNP의 두 가지 유형으로 제공되는 BJT (bipolar junction transistor)에 대해 이야기 할 것입니다.

전류, 전압 및 저항은 회로에서 상호 작용합니다. 세 가지 사이의 관계는 옴의 법칙으로 표현 될 수 있습니다 : V = IR. 즉, 전압은 암페어 단위의 전류에 저항 (저항)을 곱한 것과 같습니다. 옴의 법칙은 전자 제품에서 가장 중요한 공식 중 하나이며, 머리 꼭대기에서 알 수있는 가치가 있습니다.
옴의 법칙을 적용하려면 회로의 저항을 알아야합니다. 저항 값을 찾으려면 색상 코드를 사용해야합니다. 저항 색상 코드는 가시 스펙트럼을 기반으로하며 다양한 여러 가지 방식으로 기억 될 수 있습니다. 그것을 외우는 것을 신경 쓰지 않는 사람들을 위해, 당신이 당신의 저항기를위한 정확한 가치를 발견 할 것을 돕도록 존재하는 도구의 과다가있다. 회로의 전체 저항을 계산하려면 직렬 및 병렬의 두 가지 구성의 저항에 대해 두 가지 공식이 필요합니다. 하나의 저항은 다른 하나의 저항을 따르는 반면, 병렬에서는 서로 나란히 작용합니다. 시리즈에서 수식은 매우 간단합니다.
직렬 저항 : R (total) = R (1) + R (2) +. . . + R (N)
즉, 저항의 값을 합산하면됩니다.
병렬의 저항 : R (total) = 1 / {1 / R (1) + 1 / R (2) +. . . + 1 / R (N)}
색깔 부호에서 저항을 찾아내는 좋은 공구 : http://www.csgnetwork.com/resistcolcalc.html
저항기가 프로젝트에서 함께 일하는 두 사람처럼 함께 작동한다고 생각하면 병렬 식 저항기의 공식을 더 쉽게 이해할 수 있습니다. 두 사람이 운영하는 속도가 주어지는 단어 문제에 대해서도 같은 공식이 사용됩니다. 함께 작업하면 얼마나 빨리 프로젝트가 완료 될지 알아야합니다.
주어진 저항 값으로 주어진 부품에 얼마나 많은 전류가 공급되는지 확인하려면 옴의 법칙에 저항 및 전압 값을 연결하고 I를 풀면됩니다. 예를 들면 다음과 같습니다.
빛은 회로 안에 있으며 두 개의 1K (1000 ohm) 저항기가 병렬로 앞에 배치됩니다. 9 볼트의 전원 공급 장치를 통해 빛에 얼마나 많은 전류가 공급됩니까?
1.) R (total) 계산 :
R (total) = 1 / (1/1000 + 1/1000) = 1 / (2/1000) = 1000 / 2 = 500 오옴
2.) 옴의 법칙을 사용하여 전류를 계산합니다 :
9 = I * 500
I = 9/500 = .018 A = 18 mA (밀리 암페어)
전압을 조절하기 위해 회로의 저항을 정렬 할 수도 있습니다. 이를 전압 분배기라고하며 두 개의 저항을 직렬로 연결합니다. 2 개의 저항기의 전압 출력은 그 접합부에있다. 더 좋은 생각을 위해, 제가 첨부 한 그림을보십시오. 이 배열에서 전압 출력 공식은 다음과 같습니다.
V (out) = V (source) * R (2) / {R (1) + R (2)}
커패시터는 시계의 구성으로 컴퓨터에서 유용 할 것입니다. 시계는 단순히 일정한 속도로 켜고 끄는 회로입니다. 저항과 마찬가지로 커패시터에는 직렬 및 병렬 구성에 대한 총 가치를 찾는 두 가지 공식이 있습니다.
시리즈 : C (total) = 1 / {1 / C (1) + 1 / C (2) +. . . + 1 / C (N)}
병렬 : C (total) = C (1) + C (2) +. . . + C (N)

커패시터가 충전되는 속도는 커패시터와 커패시턴스의 전후 (또는 방전 후)의 저항에 따라 달라집니다. 커패시터의 충전은 시정 수로 측정됩니다. 커패시터를 완전히 충전하거나 방전하려면 5 개의 시간 상수가 필요합니다. 콘덴서의 시간 상수를 초 단위로 찾는 수식은 다음과 같습니다.
T (일정) = 저항 * 커패시턴스
다이오드는 작동이 간편하며 TTL 컴퓨터를 만들 때 편리합니다. 전류는 한 방향으로 만 흐르게합니다. 그들이 올바른 방향으로 배치되면 순방향 편향 (forward-biased)이라고 불리는 것이 있습니다. 그들이 역전 될 때 그들은 특정 전압에서 분해됩니다. 다이오드가 전류에 대해 작동 할 때 역방향으로 바이어스됩니다.
트랜지스터는 전류에 의해 작동되는 밸브처럼 작동합니다. BJT에는 3 개의 핀이 있습니다 : 컬렉터, 이미 터 및베이스. 이 단계에서 간단하게하기 위해 전류가 콜렉터에서 이미 터로 흐르는 NPN 트랜지스터를 설명 할 것입니다. 베이스에 적용된 전류는 컬렉터에서 이미 터로 흐르는 전류의 양을 제어합니다. 트랜지스터는 신호 증폭 능력이 뛰어나 많은 애플리케이션에 이상적입니다. 이것은 트랜지스터의베이스에인가 된 전류가 제어되는 전류보다 상당히 작을 수 있기 때문이다. 이 전류의 이득은 트랜지스터의 전류 이득 또는 베타라고 부른다. 베타 공식은 다음과 같습니다.
베타 = 현재 (콜렉터) / 현재 (기본)
트랜지스터가 완전히 켜지면 포화라고합니다. 부울 (boolean) 트랜지스터는 포화 상태 또는 오프 상태에 있으며 결코 그 사이에 존재하지 않는 트랜지스터입니다. 이것은 주로 디지털 전자 제품에서 다루게 될 트랜지스터의 유형입니다. 트랜지스터는 컴퓨터가 작동하는 데 필요한 논리 게이트를 형성합니다. 이것들은 나중에 설명 될 것이다.
유용한 링크:
http://en.wikipedia.org/wiki/Ristorister
http://en.wikipedia.org/wiki/Capacitor
http://en.wikipedia.org/wiki/Diode
http://en.wikipedia.org/wiki/ 트랜지스터

3 단계 : 이진수

오늘날 우리는 숫자 10을 기반으로하는 전세계 번호 체계에 익숙합니다. 그 말은 우리가 10의 가치가있는 번호 체계가 없다는 것입니다. 따라서 우리의 번호 체계는 10을 기준으로합니다.
우리의 번호 시스템을 주행 거리계로 생각하십시오. 주행 거리계는 가장 낮은 자릿수에서 가장 높은 자릿수까지 계산 한 다음 다음 로터를 차례대로 한 곳으로 밀어 내립니다. 예 :
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
0 9
1 0 <- 다음 자리로 이동합니다.
이진수는 두 자리 숫자이며 두 자리 숫자 만 있습니다. 이진수는 숫자 0과 1 또는 "꺼짐"과 "켜짐"만 있습니다. 2 진수로 계산하려면 주행 거리계 기술을 적용하면됩니다.
0001b - 1
0010b - 2
0011b - 3
0100b - 4
0101b - 5
0110b - 6
0111b - 7
1000b - 8
등. . .
번호 체계의 또 다른 요소가 10을 밑으로합니다. 우리가 더 높은 숫자로 움직일 때, 숫자의 무게는 10의 거듭 제곱으로 증가합니다. 예를 들어, 1 = 10 ^ 0, 10 = 10 ^ 1, 100 = 10 ^ 2 등. . . 2 진법에서는 물론 두 가지가 기본이되므로 각각의 연속 숫자는 다른 2의 거듭 제곱입니다. 1b = 1 = 2 ^ 0, 10b = 2 = 2 ^ 1, 100b = 4 = 2 ^ 2 등. . .
10 진수를 2 진수로 변환하기 위해 double-dabble이라고하는 간단한 트릭이있어 프로세스를 훨씬 쉽게 만듭니다.
13을 2 진수로 변환하려면 13을 2로 나누고 나머지는 적어 둡니다. 그런 다음 바로 위에 나머지 (이 경우 6)없이 결과 숫자를 적어 두 개로 나누고 이전 값 위에 나머지를 적어 둡니다. 1 또는 0에 도달 할 때까지이 과정을 계속합니다. 결과를 얻으려면 위에서 아래로 읽습니다.
1/2 = 0 R1 <위에서 아래로 읽습니다. 결과는 1101 또는 2 ^ 0 + 0 + 2 ^ 2 + 2 ^ 3 = 1 + 0 + 4 + 8 = 13입니다. 이것을 2 진 워드라고합니다.
3/2 = 1 R1 <
6/2 = 3 R0 <
13/2 = 6 R1 <
16 진수는 바이너리와 함께 자주 사용됩니다. 16 진수는 16 진수이며 숫자 0-9 및 a-f를 포함합니다. 하나의 16 진수는 하나의 니블 또는 4 비트의 데이터를 설명하는 데 사용됩니다. 비트는 바이너리의 단일 1 또는 0입니다. 니블은 다음 비트가 다음 니블에 있기 전에 0에서 15 (0000 - 1111)까지 셀 수 있습니다. 두 개의 니블은 함께 바이트 또는 8 비트입니다. 첫 번째 숫자는 2 ^ 0이므로 마지막 숫자는 2 ^ 7 가중치가 적용됩니다. 따라서 바이트는 0에서 255까지의 범위에있을 수 있습니다. 00101110 (십진수 46)을 16 진수로 표현하려면 먼저 두 개의 니블을 0010 및 1110으로 분리해야합니다. 첫 번째 니블의 값은 2이고 두 번째 니블의 값은 2입니다. 하나는 E 값 (또는 십진수로 14)을가집니다. 따라서 16 진수의 00101110 바이트는 2E가됩니다.
유용한 링크:
http://en.wikipedia.org/wiki/Binary_numeral_system
http://en.wikipedia.org/wiki/Hexadecimal

4 단계 : 로직 게이트

컴퓨터는 특정 기능을 수행하도록 구성된 수천 개의 논리 게이트로 구성됩니다. 논리 게이트는 입력의 상태에 따라 출력이 달라지는 디지털 전자 장치의 구성 요소입니다. 대부분의 로직 게이트는 2 개의 입력과 1 개의 출력을 가지고 있습니다. 논리 게이트를 디지털 전자 제품의 의사 결정자로 생각할 수 있습니다. 디지털 전자 기기에 사용되는 6 개의 주요 로직 게이트는 다음과 같습니다.
AND 게이트 : 입력이 높으면 모두 출력이 높습니다.
OR 게이트 : 입력이 높을 때 출력이 높습니다.
NOT 게이트 : 입력이 하나뿐입니다. 입력이 낮 으면 출력이 높습니다.
NAND 게이트 : 모든 입력이 하이가 아니면 출력이 높습니다.
NOR 게이트 : 입력이 높지 않으면 출력이 높습니다.
XOR 게이트 : 홀수 입력이 높을 때 출력이 높습니다.

Tri-State Buffer : 세 번째 논리 신호에 의해 제어되는 버퍼.
이제는 높은 "1"신호와 낮은 "0"신호의 차이점을 언급하는 것이 중요합니다. 높은 신호는 양의 전압에 연결되거나 플로팅 입력이 될 수 있습니다. 플로팅 입력은 출력에 연결되지 않은 입력입니다. 플로팅 입력의 예는 전혀 연결되지 않은 것이거나 활성화되지 않은 3- 상태 버퍼의 출력에 연결된 것입니다. 입력이 접지에있을 때 낮은 신호가 존재합니다.
논리 게이트는 서로 상통하여 거의 모든 기능을 구현할 수 있습니다. 예를 들어, 회로에 전원이 공급되는 동안 RS_NOR 래치에 1 비트의 데이터를 저장하기 위해 2 개의 NOR 게이트를 서로 공급할 수있다.

5 단계 : 이진 계산 (프로그램 카운터)

컴퓨터에서 가장 중요한 부분 중 하나는 프로그램 카운터입니다. 프로그램 카운터는 실행될 명령의 현재 주소를 컴퓨터에 제공합니다. 그러나 프로그램 카운터가 작동하려면 2 진수로 계산해야합니다. 이렇게하려면 JK 플립 플롭이 사용됩니다. 플립 플롭은 하나의 비트를 저장하는 논리 게이트들의 배열이다 (논리 게이트 단계에서 기술 된 RS_NOR 래치와 같다). JK 플립 플롭은 클럭 펄스 입력이 하이가되고 다시 로우가 될 때 상태를 변경한다 (J 및 K 입력도 하이이어야한다). 즉, JK 플립 플롭이 클럭 펄스의 하강 에지를 얻을 때마다 상태가 "0"에서 "1"로 또는 "1"에서 "0"으로 변경됩니다.
한 JK 플립 플롭의 출력을 다른 플립 플롭에 연결하고 캐스케이드하면 결과는 주행처럼 작동하는 바이너리 카운터입니다. 시퀀스의 첫 번째 JK 플립 플롭이 높고 낮아지면 시퀀스의 다음 플립 플롭이 트리거되기 때문입니다. 시계의 주파수 (1 초 단위로 켜고 끄는 횟수)는 JK 플립 플롭을 연속적으로 추가 할 때마다 절반으로 줄어 듭니다. 그래서 JK 플립 플롭을 2로 나누기 회로라고도합니다. 4 개의 JK 플립 플롭을위한 결과 패턴은 0000, 0001, 0010, 0011, 0100 등입니다. . .
그러나이 Instructable에 설명 된 가능한 단순한 컴퓨터의 경우 컴퓨터를 작동시키기 위해 필요한 몇 가지 기능이 더 있습니다. 컴퓨터가 프로그램을 다시 시작할 수 있으려면 모든 출력을 지우거나 0으로 설정해야합니다. 프로그램 카운터는 또한 컴퓨터가 특정 명령으로 점프 할 수있게 해주는 JMP 연산 코드에 대한 이진 워드를로드 할 수 있어야합니다. 논리 게이트는 이러한 목표를 달성하는 데 사용됩니다. 다행스럽게도 우리에게는 바이너리 카운터가 필요한 모든 기능을 갖춘 편리한 칩으로 제공됩니다.

6 단계 : 레지스터

레지스터 :

레지스터는 잠재적으로 컴퓨터의 가장 중요한 부분이 될 수 있습니다. 레지스터는 컴퓨터 작동 중에 일시적으로 값을 저장합니다. 이 Instructable에서 설명한 8 비트 컴퓨터에는 ALU에 연결된 두 개의 레지스터, 현재 명령을 저장하는 레지스터 및 컴퓨터 출력용 레지스터가 있습니다.

칩에 따라 레지스터에는 2 또는 3 개의 제어 핀이 있습니다. 우리가 사용할 레지스터에는 출력 인 에이블 및 인 에이블 (모두 로우이면 액티브)의 두 가지 제어 핀이있다. 출력 인 에이블 핀이 접지에 연결되면 현재 저장된 이진 워드가 출력 핀을 통해 전송됩니다. 입력 핀이 접지에 연결되면 입력 핀에있는 이진 워드가 레지스터에로드됩니다.

컴퓨터에서 레지스터를 사용하는 예는 ALU (수학 연산을 수행하는 산술 논리 장치)의 누산기입니다. 누적 기는 ALU의 출력을 저장하는 컴퓨터의 스크래치 패드와 같습니다. 어큐뮬레이터는 ALU의 첫 번째 입력이기도합니다. B 레지스터는 두 번째 입력입니다. 더하기 연산의 경우 첫 번째 값이 누산기에로드됩니다. 그런 다음 첫 번째 값에 더할 두 번째 값이 B 레지스터에로드됩니다. 어큐뮬레이터 및 B 레지스터의 출력은 퓨즈가 열린 채 ALU에 지속적으로 공급됩니다. 덧셈의 ​​마지막 단계는 연산의 출력을 누산기로 전송하는 것입니다.

레지스터는 모두 버스라는 공유 데이터 라인에서 작동합니다. 버스는 모든 CPU 아키텍처와 동일한 수의 와이어 그룹입니다. 이것은 버스 폭을 고려한 카트가 CPU 아키텍처를 정의하는 측정 값이기 전에 실제로 말을 걸고 있습니다. 디지털 1은 양의 전압을 의미하고 0은 접지를 의미하기 때문에 모든 레지스터가 버스에 선택적으로 연결하고 연결을 끊지 않고 동일한 버스를 공유하는 것은 불가능합니다. 다행스럽게도 우리에게는 1에서 0 사이의 세 번째 상태가 있는데, 이는 현재의 입력 값에 양립성이있다. 트라이 상태 버퍼를 입력하십시오 : 버스에 선 그룹을 선택적으로 연결할 수있게 해주는 칩. 이러한 3 중 상태 버퍼 중 일부를 사용하면 통신이 필요한 전체 컴퓨터의 모든 레지스터와 칩을 버스와 동일한 와이어로 공유 할 수 있습니다. 내 컴퓨터의 경우 브레드 보드의 하단 핀에 걸친 브로드 보드 슬롯의 8 선 광대역 밴드였습니다. 버스에서 주변을 실험 해보십시오. 컴퓨터에서 조각으로 모든 정보를 전달하기 때문에 오류가있는 버스는 잘못된 데이터가 라인 아래로 물결 치는 것을 의미 할 수 있습니다.

7 단계 : ALU

컴퓨터의 ALU (산술 논리 단위)는 수학 연산을 실행하는 부분입니다. SAP 컴퓨터의 경우 두 가지 기능 만 필요합니다 : 더하기와 빼기. 2 진수로 더하기와 빼기는 십진수로 더하기와 빼기와 매우 유사하게 작동합니다. 예를 들면 다음과 같습니다.
1 <- 캐리 1 1 <- 캐리 비트
05 0101
+05 +0101
10 1010
바이너리를 추가하기 위해서는 full-adder가 필요합니다. 완전 가산기는 효과적으로 캐리 인 (carry in) 및 수행 (carry out)을 통해 한 비트의 바이너리를 다른 비트에 추가합니다. 전체 가산기의 캐리 인은 추가 프로세스의 세 번째 입력과 같습니다. 그것들은 여러 개의 full-adders를 함께 연결하는 데 사용됩니다. 전체 가산기의 수행은 가산 과정에서 한 쌍이있을 때 발생합니다. 전체 가산기의 캐리 아웃은 캐리 인에 공급되어 여러 비트의 바이너리를 추가합니다. 전체 가산기를 구성하려면 두 개의 XOR 게이트, 두 개의 AND 게이트 및 OR 게이트가 필요합니다.
이진수를 빼려면 숫자를 음수로 변환하고 빼는 숫자에이를 더할 필요가 있습니다. 이를 위해 2라는 칭찬을 사용합니다. 이진 워드의 2의 칭찬을 취하려면 각 비트를 반전시키고 (0을 1로, 1을 모두 0으로 변경) 하나를 더하십시오.
5 = 0101, -5 = 1010+1 = 1011
사용되지 않음 -> 1 1
10 1010
+(-5) +1011
5 0101
비트의 반전을 제어하기 위해 일반적으로 하나의 낮은 입력을 갖는 XOR 게이트를 사용합니다. 하나의 정상적으로 낮은 입력의 경우, 출력은 다른 입력과 동일합니다. 제어 입력을 높게 설정하면 다른 입력을 반전시킵니다. 이 반전을 전체 덧셈기의 carry in으로 전송 된 비트와 결합하면 빼기 연산이 결과입니다.

8 단계 : 메모리 및 RAM 프로그래밍

컴퓨터의 프로그램 메모리는 실행될 명령을 저장합니다. 또한 컴퓨터 작동 중 값을 저장할 수있는 RAM 역할을합니다. 프로그램 메모리는 메모리, 메모리 주소 레지스터 (MAR) 및 멀티플렉서의 세 부분으로 구성됩니다. 메모리는 16 바이트의 저장 공간을 가진 칩입니다. 읽거나 쓰는 바이트를 알려주는 메모리로 공급되는 4 비트 주소가 있습니다. MAR은 메모리에서 읽거나 쓸 바이트의 현재 주소를 저장합니다. 컴퓨터가 프로그래밍 상태에 있지 않으면 메모리 칩에 계속 공급됩니다. 멀티플렉서는 주어진 입력을 두 개의 입력과 출력 중에서 선택할 수있게합니다. 내 컴퓨터에서 사용되는 멀티플렉서를 사용하면 두 개의 4 비트 입력 (MAR 및 수동 입력) 중에서 선택할 수 있습니다. 컴퓨터가 프로그래밍 상태에있을 때 수동 주소가 메모리에 공급되고 사용자가 정의한 주소의 컴퓨터 메모리에 바이트를 프로그래밍 할 수 있습니다.

9 단계 : 지시 사항 등록

컴퓨터의 명령 레지스터는 명령이 작동 할 주소뿐만 아니라 현재 명령을 저장합니다. 그것은 매우 중요한 목적을 가진 매우 간단한 구성 요소입니다. 컴퓨터 작동 중에 메모리의 주어진 주소 내용이 명령어 레지스터로 전송됩니다. 내 컴퓨터에서 가장 왼쪽에있는 비트는 OP 코드 또는 수행 할 현재 명령어입니다. 오른쪽 4 비트 또는 가장 낮은 4 비트는 컴퓨터에 작업에 사용할 주소를 알려줍니다. 처음 네 비트는 OP 코드를 제어 매트릭스에 지속적으로 공급합니다.이 제어 매트릭스는 컴퓨터에 주어진 명령어에 대해 수행 할 작업을 알려줍니다. 가장 오른쪽의 4 비트가 컴퓨터로 다시 공급되므로 주소를 MAR 또는 프로그램 카운터로 전송할 수 있습니다.

10 단계 : 출력 레지스터

컴퓨터가 버스의 출력을 오퍼레이터에게 공급한다면, 판독은 거의 의미가 없게된다. 이것이 출력을위한 값을 저장하는 목적을 가진 출력 레지스터가있는 이유입니다. 컴퓨터의 출력은 원시 바이너리를 표시하는 간단한 LED 일 수도 있고 7 세그먼트 디스플레이에서 실제 숫자를 읽는 디스플레이를 가질 수도 있습니다. 그것은 모두 당신이 당신의 컴퓨터에 넣고 싶은 작품의 양에 달려 있습니다. 내 컴퓨터의 경우 Arduino와 결합 된 컴퓨터의 출력을 위해 IV-9 러시아어 Numitron 튜브를 사용하여 이진수에서 십진수로 변환합니다.

11 단계 : 시계

올바르게 작동하려면 컴퓨터의 모든 부품을 완전히 동기화해야합니다. 이 작업을 수행하려면 컴퓨터에 일정한 속도로 켜고 끄는 출력이있는 시계 또는 회로가 필요합니다. 가장 쉬운 방법은 555 타이머를 사용하는 것입니다. 555 타이머는 오늘날 애호가들에게 상당히 인기가있는 컴퓨터의 출현 시대에 발명 된 매우 인기있는 타이머입니다. 555 회로를 제작하려면 작동 방법을 알아야합니다.
컴퓨터의 시계는 처음에는 상대적으로 느려야합니다. 1Hz 또는 초당 1 사이클이 좋은 시작 값입니다. 이렇게하면 컴퓨터 작동을보고 오류가 있는지 확인할 수 있습니다. 555 칩은 작동을 위해 2 개의 저항과 커패시터가 필요합니다. 두 개의 저항은 고주파와 저주파가 전체 주파수뿐만 아니라 얼마나 오래 있는지를 결정합니다. 커패시터는 펄스 길이를 변경합니다. 555 타이머에 대한 경험이 없으면 실험 해 보시기 바랍니다.
유용한 링크:
http://en.wikipedia.org/wiki/555_timer_IC

12 단계 : 아키텍처

이것은 모든 것이 함께 이루어지는 단계입니다. 이제 컴퓨터의 아키텍처를 설계 할 차례입니다. 아키텍처는 컴퓨터의 레지스터와 다른 구성 요소가 구성되는 방식입니다. 디자인 측면은 전적으로 당신에게 달렸지 만, 목표를 염두에 두는 것이 도움이되지만 (컴퓨터에서 수행하고자하는 작업) 모델을 벗어나게하는 데 도움이됩니다. 내 컴퓨터를 디자인하고 싶다면 완전히 괜찮습니다. 나는 SAP-1의 아키텍처를 수정했다. 디지털 컴퓨터 전자 내 8 비트 컴퓨터 용.
항상 염두에 두어야 할 디자인 측면은 컴퓨터의 다양한 구성 요소간에 데이터가 전송되는 방식입니다. 가장 일반적인 방법은 컴퓨터의 모든 데이터에 대해 공통 "버스"를 설정하는 것입니다. 레지스터, ALU, 프로그램 카운터 및 RAM의 입력 및 출력은 모두 컴퓨터의 버스에 연결됩니다. 와이어는 최하위 비트 (1)에서 최상위 비트 (128)까지 순서대로 배열됩니다.
버스에 연결된 모든 출력은 비활성 상태 일 때 완전히 연결 해제되어야합니다. 그렇지 않으면 서로 병합되어 오류가 발생합니다. 이를 위해 Tri-state 버퍼를 사용하여 누산기, ALU 및 컴퓨터 프로그래밍을위한 실제 입력과 같이 기본적으로 출력되는 특정 요소의 출력을 제어합니다.

13 단계 : 제어 매트릭스

컴퓨터의 제어 매트릭스는 각 개별 부품에 입력 값과 출력 값을 알려줍니다. 컴퓨터에는 각 작업의 여러 상태가 있습니다. 이러한 상태는 링 카운터라고하는 카운터 유형에 의해 트리거됩니다. 링 카운터는 한 번에 한 비트 높은 값을 가지며 연속적으로 출력을 순환합니다. 예를 들어, 링 카운터에 4 개의 출력이 있으면 첫 번째 출력이 활성화됩니다. 다음 클럭 펄스에서 두 번째 출력을 하이 (첫 번째 로우)로 설정합니다. 다음 클록 펄스는 비트 1 출력을 더 높게 전진시킬 것이다. 이러한 단계를 T 상태라고합니다. 이 Instructable의 컴퓨터는 하나의 명령을 실행하기 위해 6 개의 T 상태를 사용합니다. 처음 세 T 상태는 현재 명령이 페치되어 명령 레지스터에 배치되는 페치 사이클이라고하는 것입니다. 프로그램 카운터도 1 씩 증가합니다. 3 가지 T 상태의 두 번째 세트는 명령 레지스터에서 제어 매트릭스로 공급되는 OP 코드에 따라 다릅니다. T 상태는 다음과 같습니다.
T1 : 프로그램 카운터의 내용이 메모리 주소 레지스터로 전송됩니다. (주소 상태)
2 : 프로그램 카운터가 1 씩 증가합니다. (증가 상태)
T3 : 프로그램 메모리의 주소 지정된 바이트가 명령어 레지스터로 전송됩니다. (메모리 상태)
T4 : 실행중인 명령에 따라 다릅니다.
T5 : 실행중인 명령에 따라 다릅니다.
T6 : 실행중인 명령에 따라 다릅니다.
제어 매트릭스를 생성하는 주요한 두 가지 방법은 이산 논리를 사용하고 ROM을 사용하는 것입니다. ROM 방식이 가장 쉽고 효율적입니다. 이산 로직을 사용하려면 OP 코드 입력을 기반으로 컴퓨터에 대한 올바른 제어 단어를 출력하는 방대한 로직 회로도를 설계해야합니다. ROM은 읽기 전용 메모리를 나타냅니다. 빌드시 사용할 수있는 여러 가지 유형의 ROM이 있습니다. 내 컴퓨터의 경우 원래 EEPROM (전자적으로 지울 수있는 프로그램 가능 ROM)을 사용했지만 EEPROM 칩을 쓰지 못하면 NVRAM (비 휘발성 임의 접근 메모리)으로 옮겨졌습니다. NVRAM은 영구 저장 장치가 아닌 랜덤 액세스 메모리 용이므로 권장하지 않습니다. EEPROM은 제 생각에는 가장 효율적인 솔루션입니다.
제어 매트릭스는 각각 8 비트 저장 장치의 32 개 이상의 주소를 갖는 3 개의 ROM 칩을가집니다 (타이밍 및 카운팅 요소는 물론). 제어 매트릭스에서 전송되는 이진 워드는 제어 ROM이라고하며 컴퓨터의 각 구성 요소에 대한 모든 제어 비트를 포함합니다. 제어 비트를 구성하고 순서를 알아야합니다. 아무 작업이 아니라도 컴퓨터의 모든 부분을 비활성화하는 제어 단어가 필요합니다 (물론 시계 제외). 이 Instructable에 설명 된 컴퓨터의 제어 워드는 16 비트 길이이며 두 개의 제어 ROM 칩에 저장됩니다. 제어 ROM 칩의 처음 3 개 주소는 페치 사이클에 대한 제어 워드를 보유합니다. 칩의 나머지 주소는 각 OP 코드에 대해 3 개의 쌍으로 제어 단어를 보유합니다. 세 번째 ROM 칩은 각 OP 코드에 대한 제어 워드 시퀀스의 시작을위한 메모리 위치를 보유하며 OP 코드 자체로 처리됩니다. 예를 들어, 내 컴퓨터에서 OP 코드 0110을 지정하면 JMP 명령의 시작 주소 인 이진 21을 출력합니다. OP ROM과 제어 ROM 사이에는 8 비트 카운터가 있으며 0부터 3까지의 T 상태에서 세 번째 T 상태는 OP ROM에 의해 출력 된 주소를로드하고 그 위치에서 T1까지 카운트합니다 상태가 카운터를 다시 지 웁니다. 제어 매트릭스에 대한 링 및 바이너리 카운터는 클럭 펄스의 반전에 의해 제어되므로 상승 클록 펄스가 컴퓨터의 요소로 이동하면 제어 워드가 나타납니다. 전체 프로세스는 다음과 같습니다.
1.) T1 상태는 카운터를 0으로 지우고, 0에 저장된 제어 워드가 전송됩니다
2.) 클럭이 하이가되고 주소 상태가 발생합니다
3.) 클럭이 낮아지고 컨트롤 카운터가 증가하고 제어 워드 1이 전송됩니다
4.) 클럭이 높아지고 증가주기가 발생합니다
5.) 클록이 낮아지고 제어 카운터가 2로 증가하면 제어 워드 2가 전송됩니다
6.) 클럭이 하이가되고 메모리 상태가 발생하고 OP 코드가 인스트럭션 레지스터에 도착하면 T3도 활성화되어 다음로 클록 펄스에서 OP 제어 주소가로드됨을 의미합니다
7.) 클럭이 낮아지고 주어진 OP 코드에 대한 세 개의 제어 워드 중 첫 번째에 대한 주소가 카운터에로드됩니다
8.) T4, T5, T6은 OP 코드를 실행합니다.
9.) T1은 카운터를 재설정하고 프로세스는 HLT OP가 수신 될 때까지 계속됩니다. HLT 명령은 시계를 중지합니다.

14 단계 : 마이크로 프로그래밍

이제는 컴퓨터에서 수행 할 수있는 명령을 결정하는 부분입니다. 필자는 필자에게 필자가 필요로하는 기본 프로그래밍 기능을 6 가지 고유 한 작업에 부여했습니다. 컴퓨터에 프로그래밍 할 명령은 어셈블리 언어입니다. 어셈블리는 가장 초기의 프로그래밍 언어 중 하나이며 오늘날에도 여전히 컴퓨터에서 사용할 수 있습니다. 언어의 명령에는 누적 기로드, 변수 추가, 이동, 출력 및 저장이 포함됩니다. 각 명령에는이 8 비트 컴퓨터에 자체 4 비트 OP 코드가 있습니다. 내 컴퓨터에서 선택한 명령은 다음과 같습니다.
NOP : 작동하지 않습니다. (0000)
LDA : 누적기를이 주소의 값으로로드하십시오. (0001)
ADD : 지정된 주소의 값을 누적 기의 값에 추가합니다. (0010)
SUB : 지정된 주소의 값을 누적 기의 값에서 뺍니다. (0011)
STO : 누적 기의 내용을 지정된 주소에 저장하십시오. (0100)
OUT : 누적 기의 내용을 출력 레지스터에 저장하여 작업자가 볼 수 있도록하십시오. (0101)
JMP : 지정된 주소의 메모리에있는 특정 명령으로 건너 뜁니다. (0110)
HLT : 컴퓨터 작동을 중지하십시오. (0111)
각 OP에 대해 어떤 제어 단어가 전송되어야하는지 결정하려면 각 T 상태 동안 어떤 비트가 활성화되어야 하는지를 알아야합니다. 내 컴퓨터의 경우 비트를 다음과 같이 구성했습니다 (밑줄은 활성 낮음 비트를 나타냄).
CE CO J MI RO II IO OI BI EO SU AI AO RI HLT X
CE - 카운트 인 에이블 (프로그램 카운터의 클록 입력을 가능하게 함)
CO - 클럭 출력 활성화
J - 점프 사용
MI - MAR 입력
RO - 프로그램 메모리 아웃
II - 명령어 레지스터 in
IO - 명령어 레지스터 아웃
OI - 출력 레지스터 in
BI - B에 등록
EO - ALU 출력 가능
수호 - 빼기
AI - 누산기
AO - 어큐뮬레이터 출력 가능
RI -에서 프로그램 메모리
HLT - 정지
X - 사용되지 않음
다음은 주어진 명령에 대한 각 T 상태 및 제어 ROM에 있어야하는 주소에 대해 활성화되어야하는 비트입니다.
술책:
0 : CO, MI - 프로그램 카운터가 MAR에 출력합니다.
1 : CE - 카운터는 다음 클럭 펄스에 대해 활성화됩니다.
2 : RO, II - 어드레싱 된 바이트가 RAM에서 명령 레지스터로 출력됩니다
NOP :
3 : X
4 : X
5 : X
LDA :
6 : IO, MI - 명령어 레지스터의 주소가 MAR (가장 낮은 4 비트)로 전송됩니다.
7 : RO, AI - 어드레싱 된 바이트가 메모리에서 누산기로 출력됩니다.
8 : X
더하다:
9 : IO, MI - 명령어 레지스터의 주소가 MAR (가장 낮은 4 비트)로 전송됩니다.
10 : RO, BI - 주소 지정된 바이트가 메모리에서 누적기로 출력됩니다.
11 : EO, AI - 누산기와 B 레지스터의 합이 누산기에로드됩니다.
보결:
12 : IO, MI - 명령어 레지스터의 주소가 MAR (가장 낮은 4 비트)로 전송됩니다.
13 : RO, BI - 주소 지정된 바이트가 메모리에서 누적기로 출력됩니다.
14 : AI, SU, EO - 누산기와 B 레지스터의 차이가 누산기에로드됩니다.
STO :
15 : IO, MI - 명령어 레지스터의 주소가 MAR (하위 4 비트)로 전송됩니다.
16 : AO, RO, RI - 어큐뮬레이터는 주소가 지정된 위치에서 프로그램 메모리로 출력합니다 (RO 및 RI는 내가 사용했던 칩에 쓰기 위해 활성화되어야합니다)
17 : X
아웃:
18 : OI, AO - 누산기는 출력 레지스터로 출력합니다
19 : X
20 : X
JMP :
21 : J, IO - 명령어 레지스터는 프로그램 카운터의 최하위 4 비트
22 : X
23 : X
HLT :
24 : HLT - 정지 신호가 시계로 전송됩니다.
25 : X
26 : X
OP ROM에는 각 메모리 위치에 3의 배수가 있습니다. 물론 각주기마다 세 가지 실행 상태가 필요하기 때문입니다. 따라서 OP ROM의 주소는 다음과 같습니다 :
0 - 3
1 - 6
2 - 9
3 - 12
4 - 15
5 - 18
6 - 21
7 - 24
칩 선택을 프로그래밍하려면 다양한 옵션이 필요합니다. EEPROM과 EPROM 프로그래머를 구입할 수는 있지만 대개 상당한 비용이 든다. 필자는 ROM을위한 브레드 보드 프로그래머를 만들었는데,이 ROM은 전선을 움직이고 푸시 버튼을 사용하여 쓰기 및 읽기 가능 핀을 제어함으로써 작동합니다. 나중에 프로세스를 단순화하고 내 NVRAM 용 Arduino 프로그래머를 구체적으로 설계했습니다. 이 프로젝트에 사용할 거의 모든 병렬 메모리 칩을 쉽게 프로그래밍 할 수 있도록 코드를 첨부 할 것입니다.

15 단계 : 부품 구매

8 비트 컴퓨터를 구축하는 가장 좋은 점은 올바른 장소에서 구입할 경우 대부분의 부품에 1 달러 미만의 비용이 부과된다는 것입니다. Jameco Electronics에서 부품의 90 %를 구입했으며 서비스에 완전히 만족했습니다. 내가 실제로 구입 한 유일한 부품은 브레드 보드와 브레드 보드 와이어 (및 Numitron 튜브)입니다. 아마존과 같은 사이트에서는 상당히 저렴합니다. 주문하는 부품이 올바른 부품인지 항상 확인하십시오. 구매하는 모든 부품에는 구매할 품목의 모든 기능과 한계를 설명하는 온라인 데이터 시트가 있어야합니다. 컴퓨터 구성시 많은 데이터 시트를 사용하므로 이러한 구성을 유지하십시오. 컴퓨터 사용을 돕기 위해 필자는 내가 사용했던 부품을 나열 할 것입니다.
4 비트 카운터 :
74161 - http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?freeText=74161&langId=-1&storeId=10001&productId=49664&search_type=jamecoall&catalogId=10001&ddkey=http:StoreCatalogDrillDownView
4 비트 레지스터 (각 8 비트 레지스터에 2 개 사용) :
74LS173 - http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?freeText=74LS173&langId=-1&storeId=10001&productId=46922&search_type=jamecoall&catalogId=10001&ddkey=http:StoreCatalogDrillDownView
2-1 멀티플렉서 :
74LS157 - http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_46771_-1
16x8 RAM (출력을 반전시켜야 함) :
74189 - http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?freeText=74189&langId=-1&storeId=10001&productId=49883&search_type=jamecoall&catalogId=10001&ddkey=http:StoreCatalogDrillDownView
전체 첨가물 :
74LS283 - http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?freeText=74LS283&langId=-1&storeId=10001&productId=47423&search_type=all&catalogId=10001&ddkey=http:StoreCatalogDrillDownView
3 중 상태 버퍼 :
74S244 - http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_910750_-1

XOR 게이츠 :
74LS86 - http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_295751_-1
AND Gates :
74LS08 - http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_295401_-1
NOR 게이트 :
74LS02 - http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_283741_-1
인버터 :
74LS04 - http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_283792_-1
링 카운터 :
CD4029 - http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?freeText=4029&langId=-1&storeId=10001&productId=12925&search_type=jamecoall&catalogId=10001&ddkey=http:StoreCatalogDrillDownView
JK 플립 플롭 :
74LS10 - http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_295427_-1

16 단계 : 건설

여기에 인내심이 실제로 들어옵니다. 실제 컴퓨터에 브레드 보드를 사용하기로 결정했지만, 그 밖의 다른 방법 (예 : 와이어 랩핑)도 가능합니다. 훨씬 더 간단하게하기 위해 내 컴퓨터의 실제 회로도에 대한 블록 다이어그램을 포함 시켰습니다. 그러나 부품 번호 나 핀 번호는 포함되지 않았습니다. 나는 이것이 물건을 더 간단하고 창조적 인 것으로 만들 것이라고 믿습니다. 4 비트 프로그램 카운터 출력, MAR 입력 및 명령어 레지스터 출력은 모두 컴퓨터 버스의 4 개의 최하위 비트에 연결됩니다.
두 번째 다이어그램은 컴퓨터의 작동 종료를위한 제어 논리입니다. 컨트롤은 토글이 컴퓨터의 입력이 될 수 있도록 설계되었습니다. RS_NOR 래치는 디버그하기 위해 토글 스위치 앞에 위치합니다. 토글 스위치는 종종 켜져있는 상태에서 바깥쪽으로 바운스 될 수있는 더러운 연결을 가지고 있으며 원하는 것보다 더 많은 펄스를 제공합니다. 토글 출력에 플립 플롭을 추가하면 여분의 펄스가 제거됩니다. 이것은 수동 시계 옵션을 사용할 때 매우 유용합니다. 스위치를 뒤집고 8 개의 클록 펄스를 시작하기를 원하지 않을 것입니다. 읽기 / 쓰기 버튼은 활성 입력 바이트를 주소 지정된 메모리에 씁니다. RAM에 대한 기본 제어 워드 입력을 쓰기 사이클을 시작하는 2 개의 낮은 RO 및 RI 비트로 변경합니다. 실행 / 프로그램 스위치는 메모리 어드레스 멀티플렉서에서 어떤 입력이 활성화되는지를 변경합니다. 555 이후의 JK 플립 플롭은 컴퓨터가 실행될 때 클럭 펄스의 중간에 시작되지 않는다는 것을 의미합니다. 낮은 HLT 신호는 시계가 수동 클럭 또는 555를 통과하는 것을 중지시킵니다. 마지막으로 실행 / 지우기 스위치는 레지스터 및 카운터에있는 것과 같은 컴퓨터의 모든 클리어 핀에 연결됩니다.

17 단계 : 프로그래밍

컴퓨터가 완료되었으므로 지침을 수행하도록 프로그래밍 할 수 있습니다. 이렇게하려면 먼저 실행 / 프로그램 토글 스위치를 프로그램 위치로 전환하여 컴퓨터를 프로그램 설정에 놓아야합니다. 그런 다음 0에서 시작하여 15로 이동하는 주소를 선택하고 프로그램에 필요한 데이터를 삽입하십시오. 예를 들어, 5로 시작하고 모든 출력에 4를 더하려면 프로그램은 다음과 같습니다.
주소 - 데이터 :
0000 - 00010111 LDA 7 : 메모리 주소 7 (5)에 저장된 값으로 누산기를로드합니다.
0001 - 00101000 ADD 8 : 메모리 주소 8 (4)에 저장된 값 추가
0010 - 01010000 OUT : 축 압기 출력
0011 - 01100001 JMP 1 : 명령어 1로 이동
0100 - X
0101 - X
0110 - X
0111 - 00000101 5
1000 - 00000100 4
1001 - X
1010 - X
1011 - X
1100 - X
1101 - X
1110 - X
1111 - X

18 단계 : 더 나아 가기

나는 당신이 Instructable을 즐겼기를 바란다. 그리고 무엇보다도, 당신이 그것에서 뭔가를 얻었 으면 좋겠다. 이 모든 노력은 전자, 컴퓨터 및 프로그래밍에 대해 더 잘 이해할 수있는 믿을 수 없을만큼 가치있는 학습 경험으로 간주 할 수 있습니다. 결국에는 열심히 일하기 위해 보여줄 수있는 멋진 것을 갖게 될 것입니다.
처음 8 비트 컴퓨터를 구축 한 후에는 더 많은 기능을 추가 할 수 있습니다. 이 컴퓨터에서 사용되는 ALU는 작동이 매우 단순하며 오늘날 ALU는 비트 이동 및 논리적 비교와 같은 수많은 기능을 갖추고 있습니다. 또 다른 중요한 측면은 조건부 분기입니다. 조건부 분기는 명령이 ALU에 의해 설정된 플래그의 현재 상태에 의존 함을 의미합니다. 이 플래그는 누적 기의 내용이 음수가되거나 0과 같을 때 변경됩니다. 이렇게하면 컴퓨터를 훨씬 더 광범위하게 응용할 수 있습니다.
이 프로젝트에 대한 질문이 있으시면이 Instable 또는 내 웹 사이트 (http://8-bitspaghetti.com)에 자유롭게 의견을 말하십시오. 이 프로젝트에서 당신에게 행운이 있기를 바란다.

3 명의 사람들이이 프로젝트를 만들었습니다!

  • JamesP383가 그것을 만들었습니다!

  • xdola는 그것을 만들었다!

  • 현실이 그것을 만들었습니다!

이 프로젝트를 만들었습니까? 그것을 우리와 공유하십시오!

권장 사항

  • 빈티지 노트북 PC의 모습

  • Digi-Comp II 복제

  • 인터넷 클래스 클래스

  • 무지개 경연 대회의 색상

  • 교실 과학 경연 대회

  • 팸플릿

173 토론

0

AtomicFerryt

1 년 전

마더 보드에 대한 디지털 다이어그램을 만들 수 있다고 생각하십니까? 나는 전에 브레드 보드를 사용 해본 적이 없지만 오래된 컴퓨터에 깊은 관심을 가지고 있습니다.

0

페닌 햄자

1 년 전

지금까지 본 아름다운 교훈 중 하나 …. 나는 당신의 인내심에 감사드립니다 … :)

0

bob491

1 년 전

이것은 매우 잘 쓰여지고 상세한 instructables과 매우 멋진. 고맙습니다.

0

champ12345

1 년 전

조금 복잡해 보입니다.

0

mkpeker

1 년 전

좋은 빌드. 당신은 나의 가장 간단한 4 비트 ttl cpu (MP-4)를 점검하여 기본을 이해하고 싶을지도 모릅니다 :

http://www.instructables.com/id/Simplest-4-Bit-TTL-CPU/

0

mkpeker

2 년 전

멋진 프로젝트가 내 것을 확인하고 싶을 수도 있습니다.

마침내 내 모니터 유형 OS (인라인 어셈블러 및 디스어셈블러 사용)가 준비되었습니다.
설치하고 v1.0b를 시도하십시오.
내 Efex 페이지에서 필요한 모든 정보를 찾을 수 있습니다.

http://mkpeker.wixsite.com/efex

소프트웨어를 향상시킬 수있는 것보다 의견을 보내주십시오.
고맙습니다

0

TheMrCode

2 년 전

철사 대신에 led를 사용한다면 어떨까요? 신호가 어디로 가는지 볼 수 있었습니까?

0

GeorgeW134

2 년 전

if 문을 어떻게 프로그램 하시겠습니까?

2 답글 0

줄리아 S87GeorgeW134

2 년 전 답글 달기

새로운 연산 코드는 필요 없습니다. 당신이 필요로하는 것은 참과 거짓을 1과 0으로 나타내는 값입니다. 그 값을 누산기에로드하고 1을 뺍니다. 그러면 조건부 점프를 수행합니다. 값이 1 (참)이면 빼기로 인해 오버플로가 발생하고 조건부 점프가 수행됩니다. 값이 0 (거짓)이면 오버플로가 발생하지 않으므로 점프가 발생하지 않습니다.

0

calebj20GeorgeW134

2 년 전 답글 달기

ALU의 이전 합계를 저장하는 레지스터 (누적 기)가 있기 때문에 결과가 음수, 양수 또는 0을 나타내는 지 확인할 수 있습니다. 그런 다음 상태를 확인하는 새 opcode를 추가하고 조건이 충족되면 점프 할 수 있습니다 참된.
예를 들면

4 - 10 = -6 -> -6이 음수이므로 N 비트가 1로 설정된 모든 분기 명령이 점프합니다

어셈블리 : BRN RA 이것은 A에 저장된 위치로 음수로 분기합니다.

opcode는 1000 : 10001000이라고 가정합니다.

이것이 opcode의 비트 고장 인 경우

BR : 1000

N : 1 | 0

Z : 1 | 0

P : 1 | 0

0: 0 | 0

또한 좀 더 다목적으로 만들고 싶다면 B가 버스 값을 설정하는 기능을 추가 한 다음 마지막 비트 '0'을 A 또는 B에 대해 각각 0 또는 1로 설정할 수 있습니다.

0

T0BY

2 년 전

Crikey, 인내심을 가지고있어!

0

SuperNovaa41

2 년 전

질문이있어. 목록의 모든 부분은 2를 제외하고 거기에 있습니다.
tri state 버퍼와 jk 플립 플롭
트라이 상태 버퍼와 동일한 모델을 가진 다른 웹 사이트가있었습니다.
그러나
JK 플립 플롭 대체품이 없었습니다. 정확한
나와 같은 모델이거나 다른 모델을 사용할 수 있습니까? 그리고 만약 그렇다면
모델을 사용해야합니까?

0

SuperNovaa41

2 년 전

이봐 요! 나는 이것이 더 오래된 포스트 다라는 것을 알고있다. 그러나 Tri State Buffers와 JK Flip Flops에 대한 업데이트 링크를 나에게 줄 수 있겠는가? 제품을 연구했지만 어떤 모델을 사용해야할지 모르겠다. 미리 감사드립니다.

0

바트 H19

2 년 전

LED 나 LCD 화면에 입력 할 수있는 간단한 CPU를 만드는 데 관심이 있습니다. 이것은 나를위한 프로젝트입니까, 아니면 더 나은 방향으로 나를 가르쳐 주시겠습니까?

나는 이것에 완전한 초심자이다. 나는 일종의 목제 컴퓨터를 만들려고하는 목수예요!

5 답글 0

핀 3바트 H19

2 년 전 답글 달기

CPU를 제작하는 대신 나무 케이스가있는 컴퓨터를 만들어야합니다. 컴퓨터는 꽤 비싸지 만 실제로는 $ 300 이하로 얻을 수 있습니다. 이 사이트 (pcpartpicker.com)를 사용해보십시오.

0

바트 H19핀 3

2 년 전 답글 달기

고마워. 부품이 충분히 얇기를 바랍니다. 나는 그것이 단어를위한 계산기와 같기를 바란다. 링크를 확인해 보겠습니다 : D

0

KyleF45바트 H19

2 년 전 답글 달기

만약 당신이하고 싶은 것이 계산기처럼 행동한다면, 당신은 Raspberry Pi를 들여다 볼 수 있습니다. 그것은 훨씬 작고 저렴해질 것입니다. 파이는 전화 크기와 같습니다.

0

KyleF45KyleF45

2 년 전 답글 달기

이제 생각해 보면 Pi는 데스크톱 컴퓨터 전체에서 할 수있는 모든 것을 할 수 있습니다. Pi는 훨씬 작습니다. 아마 당신이 그것을 위해 사용할 수있는 일종의 소프트웨어가 있습니다.

0

바트 H19KyleF45

2 년 전 답글 달기

답장을 보내 주셔서 감사합니다. D

내 원래의 의견 직후 나는 실제로이 사람을 발견 : http : //www.etsy.com/shop/writeotron? ref = unav_lis …

우리는 새로운 것을 위해 함께 일할 것입니다. 그것은 Pi 다!

0

브라 티스

2 년 전

그것의 경이롭고 격려하여 저의 것을 만드십시오 ..

내가 "그것을 만들었습니다"라고 확실히 말할 것입니다. 나는 그것을 구축하는 과정에 좀 있습니다. 헤 헤 전자 제품