วงจร

วิธีสร้างคอมพิวเตอร์ 8 บิต: 18 ขั้นตอน (พร้อมรูปภาพ)

पृथà¥?वी पर सà¥?थित à¤à¤¯à¤¾à¤¨à¤• नरक मंदिर | Amazing H

पृथà¥?वी पर सà¥?थित à¤à¤¯à¤¾à¤¨à¤• नरक मंदिर | Amazing H

สารบัญ:

Anonim

การสร้างคอมพิวเตอร์ TTL 8 บิตฟังดูเหมือนเป็นงานที่ยุ่งยากและซับซ้อนหรืออย่างน้อยก็ทำให้ฉันเมื่อฉันเริ่มออกเดินทางเพื่อทำความเข้าใจสถาปัตยกรรมของ CPU พื้นฐาน เมื่อพูดถึง CPU จะทำงานได้ค่อนข้างง่ายเมื่อคุณเรียนรู้พื้นฐานเบื้องหลังกระบวนการทั้งหมด โครงการนี้มีวัตถุประสงค์เพื่อช่วยให้ทุกคนที่สนใจในการสร้างคอมพิวเตอร์ของตัวเองและได้รับความรู้ที่ยอดเยี่ยมที่มาพร้อมกับกระบวนการ อย่ากลัวที่จะลองคุณสามารถเรียนรู้ได้เท่านั้น
โครงการนี้จะเริ่มต้นด้วยการอธิบายพื้นฐานของอุปกรณ์อิเล็กทรอนิกส์ หลังจากนั้นจะอธิบายพื้นฐานของไบนารีและตรรกะบูลีน สุดท้ายเราจะย้ายไปยังฟังก์ชั่นของส่วนต่าง ๆ ของคอมพิวเตอร์ที่เรียบง่ายที่สุดเท่าที่จะทำได้ (ด้วยการดัดแปลงเล็กน้อย) ดังที่อธิบายไว้ในข้อความของ Malvino Digital Computer เครื่องใช้ไฟฟ้า . ซึ่งหมายความว่าผลิตภัณฑ์สุดท้ายของคำสั่งนี้จะเป็นคอมพิวเตอร์ที่คุณสามารถตั้งโปรแกรมด้วยชุดคำสั่งที่ไม่ซ้ำใคร โครงการนี้ยังนำแง่มุมการออกแบบหลายอย่างของคอมพิวเตอร์มาให้คุณและทำหน้าที่เป็นแนวทางในการสร้างคอมพิวเตอร์ของคุณเอง เนื่องจากมีหลายวิธีในการเข้าถึงโครงการนี้ หากคุณมีความเข้าใจอย่างถ่องแท้เกี่ยวกับตรรกะบูลีนและการทำงานของระบบไบนารี่คุณสามารถข้ามไปที่เนื้อของโครงการได้ ฉันหวังว่าทุกคนจะสนุกและได้รับบางสิ่งบางอย่างจากสิ่งก่อสร้างฉันรู้ว่าฉันแน่ใจ
สำหรับโครงการนี้คุณจะต้อง:
1. ) แหล่งจ่ายไฟ
2. ) Breadboards + สายไฟจำนวนมาก
3. ) LED สำหรับเอาท์พุท
4. ) ตรรกะต่าง ๆ ของ IC (กล่าวถึงในภายหลัง)
5. ) เวลาว่าง
6. ) ความเต็มใจที่จะทำให้สับสนและเรียนรู้จากความผิดพลาด
7. ) ความอดทนเป็นอย่างมาก
ตัวเลือก (แต่มีประโยชน์มาก):
1. ) Oscilloscope
2. ) ดิจิตอลมัลติมิเตอร์
3. ) โปรแกรมเมอร์ EEPROM
4. ) ไขควงโซนิค
ลิงค์ที่มีประโยชน์สำหรับโครงการเช่นนี้:
เครื่องใช้ไฟฟ้าคอมพิวเตอร์ดิจิตอล:
http://www.amazon.com/Digital-computer-electronics-Albert-Malvino/dp/007039861
ตำรา TTL: http://www.amazon.com/TTL-Cookbook-Understanding-Transistor-Transistor-Integrated/dp/B0049UUV38

วัสดุ:

ขั้นตอนที่ 1: คอมพิวเตอร์คืออะไร

นี่อาจดูเหมือนคำถามง่าย ๆ ที่ไม่จำเป็นต้องตอบเมื่อจริง ๆ แล้วมันเป็นคำถามที่หลายคนไม่รู้จักคำตอบที่แท้จริง คอมพิวเตอร์มีอยู่นานกว่าทรานซิสเตอร์มากในรูปแบบเชิงกลและเชิงทฤษฎี คำจำกัดความที่แท้จริงของคอมพิวเตอร์คิดขึ้นโดยบุคคลที่ฉลาดมากด้วยชื่อของ Alan Turing เขาอธิบายเครื่องจักรที่เรียกว่าทัวริงเครื่องจักร คอมพิวเตอร์ทุกเครื่องที่เราใช้ในปัจจุบันจากคอมพิวเตอร์หรือโทรศัพท์มือถือที่คุณกำลังอ่านข้อมูลนี้ไปยังซูเปอร์คอมพิวเตอร์ทุกเครื่องสามารถจัดเป็นเครื่องทัวริงในระดับที่ง่ายที่สุด
เครื่องทัวริงคืออะไร เครื่องทัวริงประกอบด้วย 4 ส่วนคือส่วนหัวของเทปตารางและสถานะ เพื่อให้เห็นภาพการทำงานของเครื่องจักรดังกล่าวคุณต้องนึกภาพแถบฟิล์มที่ทอดยาวไปในแต่ละทิศทาง ทีนี้ลองจินตนาการว่าแต่ละเซลล์ของแถบภาพยนตร์นี้สามารถมีสัญลักษณ์ได้ชุดเดียวเท่านั้น (เช่นตัวอักษร) สำหรับตัวอย่างนี้ให้เราจินตนาการว่าแต่ละเซลล์สามารถมี "0" หรือ "1" เท่านั้น เซลล์เหล่านี้สามารถเขียนใหม่ได้ไม่ จำกัด จำนวนเวลา แต่เก็บข้อมูลไว้โดยไม่มีกำหนดจนกว่าจะมีการเปลี่ยนแปลงอีกครั้ง ส่วนหนึ่งของเครื่องทัวริงที่รู้จักในฐานะหัวสามารถเขียนสัญลักษณ์ไปยังเซลล์รวมทั้งการเพิ่มหรือลดตำแหน่งของมันบนแถบฟิล์มโดยจำนวนเต็มที่กำหนด (จำนวนเต็ม) ของเซลล์ ส่วนถัดไปคือตารางที่เก็บชุดคำสั่งที่กำหนดไว้สำหรับส่วนหัวเพื่อดำเนินการเช่น "ย้าย 4 เซลล์ขวา" และ "ตั้งค่าเซลล์เป็น 1" ส่วนที่สี่และสุดท้ายของเครื่องทัวริงคือการลงทะเบียนสถานะซึ่งมีวัตถุประสงค์เพื่อเก็บสถานะปัจจุบันของเครื่อง สถานะรวมถึงคำสั่งเช่นเดียวกับข้อมูลปัจจุบันบนเทป
นั่นคือความเรียบง่ายของการทำงานของคอมพิวเตอร์ เมื่อคอมพิวเตอร์ของคุณทำงานจริง ๆ แล้วมันทำงานเป็นเครื่องทัวริง มันประมวลผลข้อมูลที่เก็บไว้ในคอมพิวเตอร์ของคุณโดยชุดคำสั่งและอัลกอริทึมที่กำหนด คอมพิวเตอร์ที่อธิบายไว้ในคำแนะนำนี้เป็นแบบจำลองที่ง่ายมากของคอมพิวเตอร์ แต่ก็ยังทำงานเป็นคอมพิวเตอร์ที่คุณสามารถตั้งโปรแกรมด้วยชุดคำสั่งที่จะติดตามและดำเนินการ
ลิงค์ที่มีประโยชน์:
Wikipedia เกี่ยวกับเครื่องจักรทัวริง:
http://en.wikipedia.org/wiki/Turing_machine

ขั้นตอนที่ 2: ความรู้เบื้องต้นเกี่ยวกับอิเล็กทรอนิกส์

ก่อนที่จะสร้างคอมพิวเตอร์ 8 บิตมันมีประโยชน์อย่างยิ่งที่จะเข้าใจคุณสมบัติของกระแสไฟฟ้าและวงจรแอนะล็อก มีชิ้นส่วนในคอมพิวเตอร์ที่คุณจะสร้างจะต้องมีส่วนประกอบแบบอะนาล็อก มีคู่มือการเรียนรู้ด้วยตนเองทางอิเล็คทรอนิคส์มากมายสำหรับค่าใช้จ่ายที่น้อยที่สุดซึ่งจะช่วยให้การเรียนการสอนด้านวิศวกรรมไฟฟ้า ฉันพบโดยส่วนตัวแล้ว คู่มือการสอนด้วยตนเองทางอิเล็กทรอนิกส์ โดย Harry Kybet และ Earl Boysen เป็นหนังสือที่ยอดเยี่ยมสำหรับการต่อสู้กับโลกของอุปกรณ์อิเล็กทรอนิกส์อะนาล็อก
คู่มือการสอนด้วยตนเองทางอิเล็กทรอนิกส์ : http://www.amazon.com/Electronics-Self-Teaching-Guide-Teaching-Guides/dp/0470289619/
ส่วนประกอบทั่วไป:
ตัวต้านทาน - จำกัด กระแสไฟฟ้าวัดเป็นโอห์ม
ตัวเก็บประจุ - ประจุที่เก็บสามารถเป็นขั้วหรือไม่ขั้วก็ได้ (หมายถึงขั้วที่ต้องวางในทิศทางที่ถูกต้องเพื่อการทำงาน) วัดใน farads
Diode - อนุญาตให้กระแสไหลในทิศทางเดียวเท่านั้นแบ่งลงด้วยแรงดันที่แน่นอนเมื่อวางในทิศทางที่ผิด
ทรานซิสเตอร์ - เกตปัจจุบันที่ถูกควบคุมโดยพินที่สามที่ทำหน้าที่เป็นสื่อกลาง มีทรานซิสเตอร์หลายชนิด แต่ที่นี่เราจะพูดถึง BJT (ทรานซิสเตอร์สองขั้วทางแยก) ซึ่งมีสองประเภทคือ NPN และ PNP

กระแสไฟฟ้าแรงดันและความต้านทานไปจับมือกันในวงจร ความสัมพันธ์ระหว่างทั้งสามสามารถแสดงออกได้ด้วยกฎของโอห์ม: V = IR กล่าวอีกนัยหนึ่งแรงดันเท่ากับกระแสเป็นแอมแปร์คูณด้วยความต้านทานเป็นโอห์ม กฎของโอห์มเป็นหนึ่งในสูตรที่สำคัญที่สุดในอุปกรณ์อิเล็กทรอนิกส์และเป็นสิ่งที่ควรค่าแก่การรู้จากเบื้องบน
ในการใช้กฎของโอห์มคุณจำเป็นต้องรู้ความต้านทานของวงจร ในการหาค่าตัวต้านทานคุณต้องใช้รหัสสี รหัสสีตัวต้านทานขึ้นอยู่กับสเปกตรัมที่มองเห็นและสามารถจดจำได้ในแฟชั่นที่แตกต่างกัน สำหรับผู้ที่ไม่สนใจที่จะจดจำมีเครื่องมือมากมายที่ช่วยให้คุณค้นหาค่าที่ถูกต้องสำหรับตัวต้านทานของคุณ ในการคำนวณความต้านทานรวมในวงจรคุณต้องใช้สูตรสองสูตรสำหรับการกำหนดค่าตัวต้านทานที่แตกต่างกันสองแบบ: อนุกรมและขนาน ในตัวต้านทานแบบหนึ่งตัวหนึ่งจะติดตามตัวต้านทานตัวอื่น ๆ ในขณะที่ตัวต้านทานแบบขนานจะทำงานควบคู่กัน ในสูตรสูตรง่ายมาก:
ตัวต้านทานในซีรีย์: R (ทั้งหมด) = R (1) + R (2) + . . + R (N)
หมายความว่าคุณเพียงแค่ต้องเพิ่มค่าของตัวต้านทาน
ตัวต้านทานแบบขนาน: R (ทั้งหมด) = 1 / {1 / R (1) + 1 / R (2) + . . + 1 / R (N)}
เครื่องมือที่ดีในการค้นหาความต้านทานจากรหัสสี: http://www.csgnetwork.com/resistcolcalc.html
มันง่ายกว่าที่จะเข้าใจสูตรของตัวต้านทานแบบขนานถ้าคุณคิดว่าตัวต้านทานนั้นทำงานร่วมกันเหมือนคนสองคนทำงานร่วมกันในโครงการ สูตรเดียวกันนี้ใช้สำหรับปัญหาคำที่คุณได้รับอัตราที่คนสองคนทำงานและคุณจะต้องค้นหาว่าโครงการของพวกเขาจะเสร็จสมบูรณ์เร็วแค่ไหนหากทำงานร่วมกัน
ในการค้นหาว่ากระแสไฟฟ้าถูกส่งไปยังส่วนประกอบที่กำหนดด้วยค่าความต้านทานที่กำหนดคุณเพียงแค่เสียบค่าความต้านทานและแรงดันไฟฟ้าเข้ากับกฎของโอห์มแล้วแก้หา I ตัวอย่างเช่น
แสงอยู่ในวงจรและตัวต้านทาน 1K (หนึ่งพันโอห์ม) สองตัวถูกวางไว้ด้านหน้ามันขนานกัน ด้วยแหล่งจ่ายไฟ 9 โวลต์กระแสไฟเท่าไรที่ให้แสงสว่าง?
1. ) คำนวณ R (รวม):
R (ทั้งหมด) = 1 / (1/1000 + 1/1000) = 1 / (2/1000) = 1000/2 = 500 โอห์ม
2. ) คำนวณปัจจุบันโดยใช้กฎของโอห์ม:
9 = I * 500
I = 9/500 = .018 A = 18 mA (มิลลิแอมป์)
คุณสามารถจัดเรียงตัวต้านทานในวงจรเพื่อควบคุมแรงดันไฟฟ้า สิ่งนี้เรียกว่าตัวแบ่งแรงดันและเกี่ยวข้องกับตัวต้านทานสองตัวในอนุกรม แรงดันเอาท์พุทของตัวต้านทานทั้งสองอยู่ที่จุดต่อ เพื่อความคิดที่ดีขึ้นให้ดูรูปที่ฉันแนบไว้ ในการจัดเรียงนี้สูตรสำหรับแรงดันเอาท์พุทคือ:
V (ออก) = V (แหล่งที่มา) * R (2) / {R (1) + R (2)}
ตัวเก็บประจุจะเป็นประโยชน์ในคอมพิวเตอร์ของคุณพร้อมกับการสร้างนาฬิกา นาฬิกาเป็นเพียงวงจรที่เปิดและปิดในอัตราคงที่ เช่นเดียวกับตัวต้านทานตัวเก็บประจุมีสองสูตรสำหรับการค้นหามูลค่ารวมทั้งแบบอนุกรมและแบบขนาน
ซีรี่ส์: C (รวม) = 1 / {1 / C (1) + 1 / C (2) + . . + 1 / C (N)}
Parallel: C (total) = C (1) + C (2) + . . + C (N)

อัตราที่ตัวเก็บประจุประจุขึ้นอยู่กับความต้านทานของวงจรก่อน (หรือหลังจากถ้าคุณกำลังปลดปล่อย) ตัวเก็บประจุเช่นเดียวกับความจุ การชาร์จของตัวเก็บประจุถูกวัดในค่าคงที่เวลา ใช้เวลา 5 ค่าคงที่ในการชาร์จหรือคายประจุอย่างเต็มที่ สูตรสำหรับการค้นหาค่าคงที่เวลาของตัวเก็บประจุเป็นวินาทีคือ:
T (คงที่) = ความต้านทาน * ความจุ
ไดโอดนั้นใช้งานง่ายและมีประโยชน์เมื่อสร้างคอมพิวเตอร์ TTL พวกมันยอมให้กระแสไหลในทิศทางเดียวเท่านั้น เมื่อพวกมันอยู่ในทิศทางที่ถูกต้องพวกมันคือสิ่งที่เรียกว่าการเอนไปข้างหน้า เมื่อพวกเขากลับตัวพวกเขาจะพังด้วยแรงดันไฟฟ้าที่แน่นอน เมื่อไดโอดทำงานกับกระแสมันจะเอนเอียงแบบย้อนกลับ
ทรานซิสเตอร์ทำงานเหมือนวาล์วที่ทำงานโดยกระแส BJT มีสามพิน: นักสะสมอิมิตเตอร์และฐาน เพื่อความเรียบง่ายในขั้นตอนนี้ฉันจะอธิบายทรานซิสเตอร์ NPN ที่กระแสไหลจากตัวสะสมไปยังตัวส่ง กระแสที่ใช้ที่ฐานควบคุมการไหลของกระแสจากตัวสะสมไปยังตัวปล่อย ทรานซิสเตอร์เหมาะอย่างยิ่งสำหรับการใช้งานมากมายเนื่องจากความสามารถในการขยายสัญญาณ นี่เป็นเพราะกระแสที่ใช้ที่ฐานของทรานซิสเตอร์สามารถน้อยกว่าการควบคุมกระแส อัตราขยายในปัจจุบันนี้เรียกว่าเกนปัจจุบันของทรานซิสเตอร์หรือเบต้า สูตรสำหรับเบต้าคือ:
เบต้า = ปัจจุบัน (นักสะสม) / ปัจจุบัน (ฐาน)
เมื่อทรานซิสเตอร์อยู่ในสภาพสมบูรณ์มันก็บอกว่าจะอิ่มตัว ทรานซิสเตอร์บูลีนเป็นทรานซิสเตอร์ที่อยู่ในสถานะอิ่มตัวหรือปิดและไม่เคยอยู่ระหว่างกัน นี่คือประเภทของทรานซิสเตอร์ที่คุณจะใช้เป็นส่วนใหญ่ในอุปกรณ์อิเล็กทรอนิกส์ดิจิทัล ทรานซิสเตอร์สร้างประตูลอจิกที่จำเป็นสำหรับคอมพิวเตอร์ในการทำงาน สิ่งเหล่านี้จะถูกอธิบายในภายหลัง
ลิงค์ที่มีประโยชน์:
http://en.wikipedia.org/wiki/Resistor
http://en.wikipedia.org/wiki/Capacitor
http://en.wikipedia.org/wiki/Diode
http://en.wikipedia.org/wiki/Transistor

ขั้นตอนที่ 3: หมายเลขไบนารี

วันนี้เราคุ้นเคยกับระบบหมายเลขทั่วโลกที่ยึดตามหมายเลขสิบ โดยที่ฉันหมายความว่าเราไม่มีตัวเลขในระบบตัวเลขของเราที่มีค่าเท่ากับค่าสิบดังนั้นระบบตัวเลขของเราจึงเป็นฐานสิบ
คิดว่าระบบหมายเลขของเราเป็นเครื่องวัดระยะทาง เครื่องวัดระยะทางจะนับจากตัวเลขต่ำสุดถึงหลักสูงสุดจากนั้นบังคับให้โรเตอร์ถัดไปตามลำดับเพื่อเลื่อนไปยังที่เดียว ตัวอย่างเช่น:
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
0 9
1 0 <- พกไปที่ตัวเลขถัดไป
ไบนารีคือฐานสองหมายความว่ามีเพียงสองตัวเลขและไม่มีตัวเลขสำหรับ 2 ไบนารีเท่านั้นมีตัวเลข 0 และ 1 หรือ "ปิด" และ "เปิด" หากต้องการนับเป็นไบนารี่คุณเพียงใช้เทคนิควัดระยะทาง:
0001b - 1
0010b - 2
0011b - 3
0100b - 4
0101b - 5
0110b - 6
0111b - 7
1,000b - 8
ฯลฯ . .
มีอีกปัจจัยหนึ่งของระบบตัวเลขของเราที่ทำให้มันเป็นฐานสิบ ในขณะที่เราเคลื่อนที่ในตัวเลขที่สูงขึ้นน้ำหนักของตัวเลขจะเพิ่มขึ้นตามกำลังสิบ ตัวอย่างเช่น 1 = 10 ^ 0, 10 = 10 ^ 1, 100 = 10 ^ 2 เป็นต้น . . ในไบนารีสิ่งที่แน่นอนคือฐานสองและเป็นเช่นนี้แต่ละตัวเลขต่อเนื่องคือพลังของทั้งสอง 1b = 1 = 2 ^ 0, 10b = 2 = 2 ^ 1, 100b = 4 = 2 ^ 2, ฯลฯ . .
ในการแปลงเลขทศนิยมให้เป็นเลขฐานสองมีเคล็ดลับง่ายๆที่รู้จักกันในชื่อ double-dabble ที่ทำให้กระบวนการง่ายขึ้นมาก:
สมมติว่าเราต้องการแปลง 13 เป็นเลขฐานสองเราเริ่มต้นด้วยการหาร 13 ด้วยสองแล้วเขียนส่วนที่เหลือลง จากนั้นข้างบนคุณเขียนหมายเลขผลลัพธ์โดยไม่มีส่วนที่เหลือ (6 ในกรณีนี้) แล้วหารด้วยสองแล้วเขียนส่วนที่เหลือข้างบนหมายเลขก่อนหน้า คุณทำกระบวนการนี้ต่อไปจนกว่าจะถึง 1 หรือ 0 ในตอนท้ายที่คุณอ่านจากบนลงล่างเพื่อรับผลลัพธ์
1/2 = 0 R1 <อ่านจากบนลงล่าง ผลลัพธ์คือ 1101 หรือ 2 ^ 0 + 0 + 2 ^ 2 + 2 ^ 3 = 1 + 0 + 4 + 8 = 13 ซึ่งเรียกว่าคำฐานสอง
3/2 = 1 R1 <
6/2 = 3 R0 <
13/2 = 6 R1 <
เลขฐานสิบหกจะใช้บ่อยมากกับไบนารี เลขฐานสิบหกคือฐาน 16 และมีตัวเลข 0-9 และ a-f เลขฐานสิบหกหนึ่งตัวใช้เพื่ออธิบายข้อมูลหนึ่งบิตหรือสี่บิต บิตเป็นไบนารีเดียว 1 หรือ 0 แทะสามารถนับได้ตั้งแต่ 0 ถึง 15 (0000 ถึง 1111) ก่อนบิตถัดไปจะอยู่ในแทะถัดไป สองไส้ด้วยกันเป็นไบต์หรือ 8 บิต ตั้งแต่ตัวเลขแรกคือ 2 ^ 0 ตัวเลขสุดท้ายจึงมีน้ำหนัก 2 ^ 7 ดังนั้นไบต์สามารถอยู่ที่ใดก็ได้ในช่วงตั้งแต่ 0 ถึง 255 เพื่อแสดง byte 00101110 (46 เป็นทศนิยม) เป็นเลขฐานสิบหกคุณจะต้องแยก nibbles สองอันออกเป็น 0010 และ 1110 ก่อนโดย nibble แรกมีค่า 2 และวินาที หนึ่งมีค่า E (หรือ 14 ในทศนิยม) ดังนั้นไบต์ 00101110 เป็นเลขฐานสิบหกจะเป็น 2E
ลิงค์ที่มีประโยชน์:
http://en.wikipedia.org/wiki/Binary_numeral_system
http://en.wikipedia.org/wiki/Hexadecimal

ขั้นตอนที่ 4: ประตูลอจิก

คอมพิวเตอร์ประกอบด้วยลอจิกประตูนับพันที่ถูกจัดเรียงเพื่อทำหน้าที่บางอย่าง ลอจิกเกตเป็นส่วนประกอบในอุปกรณ์อิเล็กทรอนิกส์ดิจิตอลซึ่งเอาต์พุตขึ้นอยู่กับสถานะของอินพุต ประตูลอจิกส่วนใหญ่มีสองอินพุตและหนึ่งเอาต์พุต คุณสามารถนึกถึงประตูตรรกะในฐานะผู้มีอำนาจตัดสินใจในอุปกรณ์อิเล็กทรอนิกส์ดิจิทัล ประตูหลักหกหลักที่ใช้ในอุปกรณ์อิเล็กทรอนิกส์ระบบดิจิตอล ได้แก่ :
และประตู: เอาท์พุทสูงเมื่อทั้งหมดถ้าอินพุทสูง
หรือประตู: เอาต์พุตสูงเมื่อมีอินพุตใด ๆ สูง
NOT Gate: มีเพียงอินพุตเดียวเท่านั้น เอาท์พุทสูงเมื่ออินพุตต่ำ
เกต NAND: เอาต์พุตสูงยกเว้นอินพุตทั้งหมดจะสูง
NOR Gate: เอาต์พุตสูงเมื่อไม่มีอินพุตสูง
XOR Gate: เอาต์พุตสูงเมื่อมีจำนวนอินพุตคี่สูง

Tri-State Buffer: บัฟเฟอร์ที่ควบคุมโดยสัญญาณลอจิกที่สาม
สิ่งสำคัญคือตอนนี้ต้องพูดถึงความแตกต่างระหว่างสัญญาณสูง "1" และสัญญาณต่ำ "0" สัญญาณสูงอาจเป็นการเชื่อมต่อกับแรงดันไฟฟ้าบวกหรืออาจเป็นอินพุตลอย อินพุตลอยตัวเป็นอินพุตที่ไม่ได้เชื่อมต่อกับเอาต์พุตใด ๆ ตัวอย่างของอินพุตแบบลอยจะเป็นแบบที่ไม่ได้เชื่อมต่อเลยหรืออย่างใดอย่างหนึ่งที่เชื่อมต่อกับเอาต์พุตของบัฟเฟอร์แบบ 3 สถานะที่ไม่ได้เปิดใช้งาน สัญญาณต่ำจะปรากฏเมื่ออินพุตอยู่ที่พื้น
ประตูลอจิกสามารถป้อนเข้าซึ่งกันและกันเพื่อสร้างฟังก์ชั่นที่สามารถจินตนาการได้เกือบทั้งหมด ยกตัวอย่างเช่นประตู NOR สองแห่งสามารถป้อนเข้าด้วยกันเพื่อเก็บข้อมูลหนึ่งบิตในสลัก RS_NOR ในขณะที่จ่ายพลังงานให้กับวงจร

ขั้นตอนที่ 5: การนับไบนารี (ตัวนับโปรแกรม)

หนึ่งในส่วนที่สำคัญที่สุดของคอมพิวเตอร์คือตัวนับโปรแกรม ตัวนับโปรแกรมจัดเตรียมคอมพิวเตอร์พร้อมที่อยู่ปัจจุบันของคำสั่งที่จะดำเนินการ เพื่อให้ตัวนับโปรแกรมทำงานได้จำเป็นต้องนับเป็นไบนารี่ เมื่อต้องการทำรองเท้าแตะ JK นี้จะใช้ flip-flop เป็นการจัดเรียงของประตูตรรกะที่เก็บหนึ่งบิต (เช่นสลัก RS_NOR ที่อธิบายไว้ในขั้นตอนประตูตรรกะ) JK flip-flop เปลี่ยนสถานะของมันเมื่ออินพุตพัลส์ของนาฬิกาสูงและต่ำอีกครั้ง (อินพุต J และ K ของมันต้องสูงด้วย) กล่าวอีกนัยหนึ่งเมื่อใดก็ตามที่ฟลิกฟล็อปของ JK ได้รับสัญญาณนาฬิกาที่ตกจะเปลี่ยนสถานะจาก "0" เป็น "1" หรือจาก "1" เป็น "0"
หากคุณเชื่อมต่อเอาต์พุตของฟลิปฟลอร์ JK หนึ่งฟอลต์ไปที่อื่นและเรียงซ้อนผลลัพธ์จะเป็นตัวนับไบนารีที่ทำหน้าที่เหมือนเครื่องวัดระยะทาง เนื่องจากฟลิปฟล็อป JK ตัวแรกในซีเควนซ์นั้นสูงและต่ำมันจะทริกเกอร์อันถัดไปในซีเควนซ์ ความถี่ของนาฬิกา (กี่ครั้งที่เปิดและปิดวินาที) จะลดลงครึ่งหนึ่งเมื่อมีการเพิ่มฟลิปฟล็อป JK อย่างต่อเนื่องทุกครั้ง นั่นเป็นเหตุผลที่การปัดพลิก JK เรียกอีกอย่างว่าวงจรแบ่งสอง รูปแบบผลลัพธ์สำหรับรองเท้าแตะ JK สี่อันคือ 0000, 0001, 0010, 0011, 0100 และอื่น ๆ . .
สำหรับคอมพิวเตอร์ที่ง่ายที่สุดเท่าที่จะทำได้อธิบายไว้ในคำแนะนำนี้อย่างไรก็ตามมีฟังก์ชั่นเพิ่มเติมอีกสองสามอย่างที่คุณต้องการเพื่อให้คอมพิวเตอร์ใช้งานได้ เพื่อให้คอมพิวเตอร์สามารถรีสตาร์ทโปรแกรมได้จำเป็นต้องมีความสามารถในการล้างข้อมูลหรือตั้งค่าเอาต์พุตทั้งหมดให้เป็นศูนย์ ตัวนับโปรแกรมยังต้องการความสามารถในการโหลดคำฐานสองสำหรับรหัส JMP ซึ่งทำให้คอมพิวเตอร์สามารถข้ามไปยังคำสั่งที่กำหนดได้ ประตูลอจิกถูกนำมาใช้เพื่อให้บรรลุเป้าหมายนี้ โชคดีสำหรับเราที่เคาน์เตอร์ไบนารีมาในชิปที่สะดวกด้วยฟังก์ชั่นทั้งหมดที่คุณต้องการ

ขั้นตอนที่ 6: ลงทะเบียน

ลงทะเบียน:

การลงทะเบียนอาจเป็นส่วนที่สำคัญที่สุดของคอมพิวเตอร์ รีจิสเตอร์เก็บค่าไว้ชั่วคราวระหว่างการใช้งานคอมพิวเตอร์ คอมพิวเตอร์ 8 บิตที่อธิบายไว้ในคำสั่งนี้มีการลงทะเบียนสองตัวแนบอยู่กับ ALU ของมันการลงทะเบียนเพื่อเก็บคำสั่งปัจจุบันและการลงทะเบียนสำหรับการส่งออกของคอมพิวเตอร์

การลงทะเบียนจะมีหมุดควบคุม 2 หรือ 3 ตัวขึ้นอยู่กับชิป รีจิสเตอร์ที่เราจะใช้มีหมุดควบคุมสองชุด: เปิดใช้งานเอาต์พุตและเปิดใช้งานอินพุต (ทำงานทั้งสองเมื่อต่ำ) เมื่อพินเปิดใช้งานเอาต์พุตเชื่อมต่อกับกราวด์คำไบนารี่ที่เก็บไว้ในปัจจุบันจะถูกส่งออกไปทั่วพินเอาต์พุต เมื่อมีการเชื่อมต่ออินพุตขาเข้ากับกราวด์คำไบนารีที่ปรากฏบนหมุดอินพุตจะถูกโหลดเข้าสู่รีจิสเตอร์

ตัวอย่างของการใช้งานรีจิสเตอร์บนคอมพิวเตอร์คือตัวสะสมบน ALU (หน่วยคำนวณเลขคณิตที่ดำเนินการทางคณิตศาสตร์) ตัวสะสมนั้นเป็นเหมือน scratchpad สำหรับคอมพิวเตอร์ที่เก็บเอาท์พุทของ ALU ตัวสะสมยังเป็นอินพุตแรกของ ALU การลงทะเบียน B เป็นอินพุตที่สอง สำหรับการดำเนินการเพิ่มเติมค่าแรกจะถูกโหลดลงในตัวสะสม หลังจากนั้นค่าที่สองที่จะเพิ่มเข้าไปในค่าแรกจะถูกโหลดลงใน B register เอาท์พุทของแอคคูมูเลเตอร์และรีจิสเตอร์ B จะถูกเปิดขึ้นและจะป้อนเข้าสู่ ALU อย่างต่อเนื่อง ขั้นตอนสุดท้ายสำหรับการเพิ่มคือถ่ายโอนเอาต์พุตของการดำเนินการไปยัง Accumulator

การลงทะเบียนทั้งหมดทำงานบนสายดาต้าบัสที่เรียกว่าบัส บัสคือกลุ่มของสายไฟที่มีจำนวนเท่ากับสถาปัตยกรรมของ CPU ใด ๆ นี่เป็นการวางม้าก่อนรถเข็นเพราะความกว้างของบัสคือการวัดที่กำหนดไว้สำหรับสถาปัตยกรรมซีพียู เนื่องจากดิจิตอล 1 หมายถึงแรงดันไฟฟ้าบวกและ 0 หมายถึงการต่อสายดินจึงเป็นไปไม่ได้ที่จะให้ทะเบียนทั้งหมดแบ่งปันบัสเดียวกันโดยไม่ให้พวกเขามีความสามารถในการเลือกเชื่อมต่อและยกเลิกการเชื่อมต่อจากบัส โชคดีสำหรับเรามีสถานะที่สามระหว่าง 1 และ 0 ที่ไม่น่าไว้วางใจกับการแสดงผลในปัจจุบันที่ใช้งานได้ดีสำหรับสิ่งนี้ ใส่บัฟเฟอร์ tri-state: ชิปที่ช่วยให้คุณสามารถเลือกกลุ่มสายเชื่อมต่อกับบัส การใช้ tri-state-buffer เหล่านี้คุณสามารถมี register และ chip ทุกตัวในคอมพิวเตอร์ทั้งหมดที่ต้องการการสื่อสารแบ่งปันสายไฟเดียวกันกับบัส ในกรณีที่คอมพิวเตอร์ของฉันมันเป็นวงกว้าง 8 ช่องของเขียงหั่นขนมที่ทอดหมุดด้านล่างของเขียงหั่นขนม ทดลองเกี่ยวกับบัสเนื่องจากพวกเขานำข้อมูลทั้งหมดจากชิ้นหนึ่งไปยังอีกชิ้นหนึ่งในคอมพิวเตอร์บัสบัสที่ผิดปกติอาจหมายถึงข้อมูลที่ผิดพลาดที่กระเพื่อมลงมา

ขั้นตอนที่ 7: ALU

ALU (หน่วยคำนวณเลขคณิต) ของคอมพิวเตอร์เป็นส่วนที่ดำเนินการทางคณิตศาสตร์ สำหรับคอมพิวเตอร์ SAP จะต้องมีสองฟังก์ชันเท่านั้นคือการเพิ่มและการลบ การเพิ่มและการลบในไบนารีนั้นคล้ายกับการบวกและการลบในรูปทศนิยมเช่น:
1 <- Carry 1 1 <- Carry Bits
05 0101
+05 +0101
10 1010
ในการเพิ่มไบนารี่เราต้องการสิ่งที่เรียกว่าแอด - แอดเดอร์ แอดเดอร์แบบเต็มเพิ่มไบนารีหนึ่งบิตไปยังอีกบิตได้อย่างมีประสิทธิภาพด้วยการพกพาและดำเนินการ การดำเนินการของแอดเดอร์แบบเต็มเหมือนกับอินพุทที่สามสำหรับกระบวนการเพิ่ม พวกมันถูกใช้เพื่อเชื่อมโยงตัวเสริมเต็มหลายตัวเข้าด้วยกัน การดำเนินการของแอดเดอร์แบบเต็มเกิดขึ้นเมื่อมีคู่อยู่ในกระบวนการเพิ่ม การดำเนินการของแอดเดอร์แบบเต็มจะถูกป้อนเข้าสู่การดำเนินการเพื่อเพิ่มไบนารีหลายบิต ในการสร้าง adder แบบเต็มคุณต้องมีประตู XOR สองประตูประตู AND สองประตูและประตู OR
ในการลบเลขฐานสองเราจำเป็นต้องแปลงตัวเลขให้เป็นจำนวนลบและเพิ่มลงในจำนวนที่เราลบออก ในการทำสิ่งนี้เราใช้สิ่งที่เรียกว่าคำชม 2 ในการใช้คำชมฐานสองของคำฐานสองคุณกลับแต่ละบิต (เปลี่ยนทุก 0 เป็น 1 และทุก ๆ 1 เป็น 0) และเพิ่มหนึ่งคำ
5 = 0101, -5 = 1010+1 = 1011
ไม่ได้ใช้ -> 1 1
10 1010
+(-5) +1011
5 0101
เพื่อควบคุมการผกผันของบิตเราใช้ประตู XOR ที่มีอินพุตต่ำปกติ ด้วยอินพุตต่ำปกติหนึ่งเอาต์พุตจะเทียบเท่ากับอินพุตอื่น เมื่อคุณตั้งค่าอินพุตควบคุมให้สูงคุณจะสลับอินพุตอื่น หากเราจับคู่การผกผันนี้กับบิตที่ถูกส่งไปยังผู้ดำเนินการในโปรแกรมเสริมเต็มการดำเนินการลบคือผลลัพธ์

ขั้นตอนที่ 8: หน่วยความจำโปรแกรมและ RAM

หน่วยความจำโปรแกรมของคอมพิวเตอร์ของคุณจะเก็บคำแนะนำที่จะดำเนินการ มันจะทำหน้าที่เป็น RAM ที่สามารถเก็บค่าในระหว่างการทำงานของคอมพิวเตอร์ หน่วยความจำของโปรแกรมประกอบด้วยสามส่วนหลักคือหน่วยความจำที่อยู่หน่วยความจำลงทะเบียน (MAR) และมัลติเพล็กเซอร์ หน่วยความจำคือชิปที่มีที่เก็บข้อมูล 16 ไบต์ มีที่อยู่สี่บิตที่ป้อนเข้าสู่หน่วยความจำที่บอกได้ว่าควรจะอ่านหรือเขียนไบต์อะไร MAR เก็บที่อยู่ปัจจุบันสำหรับไบต์ที่จะอ่านหรือเขียนจากหน่วยความจำ มันกำลังป้อนเข้าสู่ชิปหน่วยความจำอย่างต่อเนื่องเว้นแต่คอมพิวเตอร์อยู่ในสถานะการเขียนโปรแกรม มัลติเพล็กเซอร์อนุญาตให้คุณเลือกระหว่างสองอินพุตและเอาต์พุตอินพุตที่กำหนด มัลติเพล็กเซอร์ที่ใช้ในคอมพิวเตอร์ของฉันอนุญาตให้คุณเลือกจากสองอินพุตสี่บิต (MAR และอินพุตด้วยตนเอง) เมื่อคอมพิวเตอร์อยู่ในสถานะโปรแกรมมิงแอดเดรสแมนนวลจะถูกป้อนเข้าสู่หน่วยความจำและอนุญาตให้คุณตั้งโปรแกรมไบต์ในหน่วยความจำคอมพิวเตอร์ตามที่อยู่ที่คุณกำหนด

ขั้นตอนที่ 9: ลงทะเบียนคำแนะนำ

การลงทะเบียนคำสั่งของคอมพิวเตอร์จะเก็บคำสั่งปัจจุบันและที่อยู่ที่คำสั่งนั้นจะทำงาน มันเป็นองค์ประกอบที่ง่ายมากโดยมีวัตถุประสงค์ที่สำคัญมาก ในระหว่างการใช้งานคอมพิวเตอร์เนื้อหาของที่อยู่ที่ระบุในหน่วยความจำจะถูกถ่ายโอนไปยังคำสั่งการลงทะเบียน ในคอมพิวเตอร์ของฉันบิต fout ซ้ายสุดคือรหัส OP หรือคำสั่งปัจจุบันที่จะดำเนินการ สี่บิตที่ถูกต้องหรือสี่บิตต่ำสุดบอกคอมพิวเตอร์ว่าจะใช้แอดเดรสใดในการดำเนินการ สี่บิตแรกป้อนรหัส OP อย่างต่อเนื่องในเมทริกซ์การควบคุมซึ่งบอกคอมพิวเตอร์ว่าจะต้องทำอะไรสำหรับคำสั่งที่กำหนด บิตสี่ขวาสุดป้อนกลับเข้าไปในคอมพิวเตอร์เพื่อให้สามารถถ่ายโอนแอดเดรสไปยัง MAR หรือตัวนับโปรแกรม

ขั้นตอนที่ 10: การส่งออกลงทะเบียน

ถ้าคอมพิวเตอร์เพิ่งจะส่งสัญญาณออกของบัสไปยังผู้ปฏิบัติงานการอ่านค่าจะไม่สมเหตุสมผล นี่คือสาเหตุที่มีรีจิสเตอร์เอาต์พุตซึ่งมีวัตถุประสงค์เพื่อเก็บค่าที่มีความหมายสำหรับเอาต์พุต เอาต์พุตสำหรับคอมพิวเตอร์ของคุณอาจเป็น LED แบบง่ายที่แสดงไบนารีดิบหรือคุณอาจมีหน้าจอที่อ่านตัวเลขจริงบนจอแสดงผลเจ็ดส่วน ทุกอย่างขึ้นอยู่กับจำนวนงานที่คุณต้องการใส่ลงในคอมพิวเตอร์ของคุณ สำหรับคอมพิวเตอร์ของฉันฉันใช้หลอด Numitron Russian IV-9 สำหรับการส่งออกของคอมพิวเตอร์ของฉันควบคู่ไปกับ Arduino เพื่อทำการแปลงจากเลขฐานสองเป็นทศนิยม

ขั้นตอนที่ 11: นาฬิกา

ทุกส่วนในคอมพิวเตอร์จะต้องมีการซิงโครไนซ์อย่างสมบูรณ์เพื่อให้สามารถทำงานได้อย่างถูกต้อง ในการทำเช่นนี้คอมพิวเตอร์ของคุณต้องใช้นาฬิกาหรือวงจรที่มีเอาต์พุตที่เปิดและปิดในอัตราคงที่ วิธีที่ง่ายที่สุดในการทำเช่นนี้คือใช้ตัวจับเวลา 555 ตัวจับเวลา 555 เป็นตัวจับเวลาที่ได้รับความนิยมอย่างมากที่ถูกคิดค้นขึ้นในยุคของคอมพิวเตอร์ที่ได้รับความนิยมอย่างมากจากมือสมัครเล่นทุกวันนี้ ในการสร้างวงจร 555 คุณจำเป็นต้องรู้วิธีการทำงาน
นาฬิกาสำหรับคอมพิวเตอร์ของคุณควรจะค่อนข้างช้าในตอนแรก 1Hz หรือหนึ่งรอบต่อวินาทีเป็นค่าเริ่มต้นที่ดี สิ่งนี้ช่วยให้คุณสามารถดูการทำงานของคอมพิวเตอร์ของคุณและตรวจสอบข้อผิดพลาดใด ๆ ชิป 555 ต้องการตัวต้านทานสองตัวและตัวเก็บประจุสำหรับการทำงาน ตัวต้านทานสองตัวกำหนดระยะเวลาของพัลส์สูงและต่ำรวมถึงความถี่โดยรวม ตัวเก็บประจุเปลี่ยนความยาวพัลส์สำหรับทั้งคู่ หากคุณไม่มีประสบการณ์เกี่ยวกับตัวจับเวลา 555 ตัวฉันขอแนะนำให้ทดลองกับมัน
ลิงค์ที่มีประโยชน์:
http://en.wikipedia.org/wiki/555_timer_IC

ขั้นตอนที่ 12: สถาปัตยกรรม

นี่คือขั้นตอนที่ทุกอย่างมารวมกัน ถึงเวลาที่จะออกแบบสถาปัตยกรรมของคอมพิวเตอร์ของคุณ สถาปัตยกรรมเป็นวิธีการจัดระเบียบการลงทะเบียนและส่วนประกอบต่าง ๆ ของคอมพิวเตอร์ของคุณ ลักษณะการออกแบบนั้นขึ้นอยู่กับคุณอย่างสมบูรณ์แม้ว่ามันจะช่วยให้คุณคำนึงถึงเป้าหมาย (สิ่งที่คุณต้องการให้คอมพิวเตอร์ทำ) และแบบจำลองที่จะออกไป หากคุณต้องการออกแบบคอมพิวเตอร์ของคุณหลังจากใช้งานจริง ฉันแก้ไขสถาปัตยกรรมของ SAP-1 ที่พบใน Digital Computer เครื่องใช้ไฟฟ้า สำหรับคอมพิวเตอร์ 8 บิตของฉัน
ด้านการออกแบบที่ต้องคำนึงถึงเสมอคือการถ่ายโอนข้อมูลระหว่างส่วนประกอบต่าง ๆ ของคอมพิวเตอร์ของคุณ วิธีที่พบมากที่สุดคือการมี "บัส" สำหรับข้อมูลทั้งหมดในคอมพิวเตอร์ อินพุตและเอาต์พุตของรีจิสเตอร์ ALU ตัวนับโปรแกรมและ RAM ทั้งหมดเชื่อมต่อกับบัสของคอมพิวเตอร์ สายไฟถูกจัดเรียงตามลำดับจากบิตที่มีนัยสำคัญน้อยที่สุด (1) ถึงบิตที่มีนัยสำคัญสูงสุด (128)
เอาท์พุทใด ๆ และทั้งหมดที่เชื่อมต่อกับรถบัสจะต้องถูกตัดการเชื่อมต่ออย่างสมบูรณ์ในขณะที่ไม่ได้ใช้งานหรืออื่น ๆ พวกเขาจะรวมเข้าด้วยกันและทำให้เกิดผลลัพธ์ที่ผิดพลาด ในการทำเช่นนี้เราใช้บัฟเฟอร์ Tri-state เพื่อควบคุมเอาท์พุทขององค์ประกอบบางอย่างที่เอาต์พุตตามค่าเริ่มต้นเช่นแอคคิวมูเลเตอร์, ALU และอินพุตจริงสำหรับการเขียนโปรแกรมของคอมพิวเตอร์

ขั้นตอนที่ 13: เมทริกซ์ควบคุม

เมทริกซ์การควบคุมของคอมพิวเตอร์จะบอกแต่ละส่วนว่าเมื่อใดที่จะรับอินพุตและส่งออกค่าของมัน มีหลายสถานะของการดำเนินการแต่ละอย่างในคอมพิวเตอร์ สถานะเหล่านี้ถูกทริกเกอร์โดยตัวนับชนิดหนึ่งที่เรียกว่าตัวนับแหวน ตัวนับเสียงกริ่งมีเพียงครั้งละหนึ่งบิตสูงและวนรอบผ่านเอาท์พุทติดต่อกัน ตัวอย่างเช่นหากตัวนับเสียงกริ่งมี 4 เอาท์พุทมันจะมีเอาท์พุทแรกใช้งาน ที่พัลส์นาฬิกาถัดไปมันจะตั้งค่าเอาต์พุตที่สองให้สูง (และต่ำสุด) นาฬิกาพัลส์ถัดไปจะเลื่อนบิตเอาต์พุตหนึ่งสูงขึ้นไปเรื่อย ๆ ขั้นตอนเหล่านี้เรียกว่าสถานะ T คอมพิวเตอร์ใน Instructable นี้ใช้สถานะ 6 T สำหรับการทำงานของคำสั่งเดียว สามสถานะ T แรกคือสิ่งที่เรียกว่ารอบการดึงข้อมูลซึ่งคำสั่งปัจจุบันถูกดึงและวางลงในคำสั่งลงทะเบียน ตัวนับโปรแกรมเพิ่มขึ้นทีละตัว ชุดที่สองของสามสถานะ T ขึ้นอยู่กับรหัส OP ที่ป้อนเข้าสู่เมทริกซ์ควบคุมจากการลงทะเบียนคำสั่ง สถานะ T มีดังนี้:
T1: เนื้อหาของตัวนับโปรแกรมจะถูกถ่ายโอนไปยังการลงทะเบียนที่อยู่หน่วยความจำ (ที่อยู่รัฐ)
T
2: ตัวนับโปรแกรมเพิ่มขึ้นทีละตัว (รัฐที่เพิ่มขึ้น)
T3: ไบต์ที่ระบุในหน่วยความจำโปรแกรมจะถูกถ่ายโอนไปยังคำสั่งการลงทะเบียน (สถานะหน่วยความจำ)
T4: ขึ้นอยู่กับสิ่งที่คำสั่งจะถูกดำเนินการ
T5: ขึ้นอยู่กับสิ่งที่คำสั่งจะถูกดำเนินการ
T6: ขึ้นอยู่กับสิ่งที่คำสั่งจะถูกดำเนินการ
มีสองวิธีหลักในการสร้างเมทริกซ์การควบคุม: การใช้ตรรกะที่ไม่ต่อเนื่องและการใช้ ROM วิธี ROM เป็นวิธีที่ง่ายที่สุดและมีประสิทธิภาพมากที่สุด การใช้ตรรกะไม่ต่อเนื่องเกี่ยวข้องกับการออกแบบวงจรตรรกะขนาดใหญ่ที่จะส่งออกคำควบคุมที่ถูกต้องสำหรับคอมพิวเตอร์ของคุณขึ้นอยู่กับการป้อนรหัส OP ROM ย่อมาจากหน่วยความจำแบบอ่านอย่างเดียว มี ROM หลายประเภทที่คุณสามารถพิจารณาเพื่อใช้ในงานสร้างของคุณ สำหรับคอมพิวเตอร์ของฉันฉันใช้ EEPROM (ROM ที่สามารถลบได้ทางอิเล็กทรอนิกส์) แต่เดิมเปลี่ยนเป็น NVRAM (หน่วยความจำเข้าถึงโดยไม่ลบเลือนแบบสุ่ม) หลังจากชิป EEPROM ไม่สามารถเขียนได้ ฉันไม่แนะนำ NVRAM เพราะมันมีไว้สำหรับหน่วยความจำเข้าถึงโดยสุ่มและไม่ใช่ที่เก็บข้อมูลถาวร EEPROM เป็นทางออกที่มีประสิทธิภาพที่สุดในความคิดของฉัน
เมทริกซ์การควบคุมจะมีชิป ROM สามตัวแต่ละอันมีที่อยู่อย่างน้อย 32 ที่เก็บข้อมูล 8 บิต (เช่นเดียวกับองค์ประกอบเวลาและการนับ) คำไบนารีที่ส่งออกจากเมทริกซ์ควบคุมเรียกว่า ROM ควบคุมและมีบิตควบคุมทั้งหมดสำหรับทุกองค์ประกอบของคอมพิวเตอร์ของคุณ คุณต้องการให้แน่ใจว่าจะจัดระเบียบบิตควบคุมและรู้ลำดับของพวกเขา สำหรับการไม่มีการดำเนินการคุณต้องการคำควบคุมที่แสดงผลทุกส่วนของคอมพิวเตอร์ที่ไม่ได้ใช้งาน (ยกเว้นนาฬิกาของหลักสูตร) คำควบคุมสำหรับคอมพิวเตอร์ที่อธิบายไว้ในคำสั่งนี้คือความยาว 16 บิตและเก็บไว้ในชิปควบคุม ROM สองตัว ที่อยู่สามแห่งแรกของชิป ROM ควบคุมถือคำควบคุมสำหรับรอบการดึงข้อมูล ที่อยู่ที่เหลือบนชิปถือคำควบคุมเป็นคู่ที่สามสำหรับแต่ละรหัส OP ชิป ROM ตัวที่สามเก็บตำแหน่งหน่วยความจำสำหรับการเริ่มต้นของลำดับคำควบคุมสำหรับรหัส OP แต่ละรหัสและได้รับการจัดการโดยรหัส OP เอง ตัวอย่างเช่นในคอมพิวเตอร์ของฉันถ้าคุณให้การควบคุมรหัส OP 0110 มันจะออกไบนารี 21 ซึ่งเป็นที่อยู่ของการเริ่มต้นของคำสั่ง JMP มีตัวนับ 8 บิตอยู่ระหว่าง OP ROM และ ROM ควบคุมที่นับจาก 0-2 (สามสถานะ 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 อย่างที่จะให้ฟังก์ชั่นการเขียนโปรแกรมพื้นฐานที่ฉันต้องการ คำสั่งที่คุณจะตั้งโปรแกรมไว้ในคอมพิวเตอร์ของคุณคือสิ่งที่เรียกว่าภาษาแอสเซมบลี แอสเซมบลีเป็นหนึ่งในภาษาโปรแกรมแรกสุดและยังสามารถใช้กับคอมพิวเตอร์ได้ในปัจจุบัน คำสั่งในภาษานั้นรวมถึงการโหลดตัวสะสมการเพิ่มการเคลื่อนย้ายการส่งออกและการเก็บตัวแปร แต่ละคำสั่งมีรหัส OP 4 บิตของตัวเองในคอมพิวเตอร์ 8 บิตนี้ คำสั่งที่ฉันเลือกสำหรับคอมพิวเตอร์ของฉันคือ:
NOP: ไม่มีการดำเนินการ (0000)
LDA: โหลดตัวสะสมพร้อมค่าที่อยู่นี้ (0001)
เพิ่ม: เพิ่มค่าตามที่อยู่ที่ระบุไปยังค่าในตัวสะสม (0010)
SUB: ลบค่าตามที่อยู่ที่ระบุจากค่าในตัวสะสม (0011)
STO: เก็บเนื้อหาของตัวสะสมไว้ตามที่อยู่ที่ระบุ (0100)
ออก: เก็บเนื้อหาของตัวสะสมในเอาต์พุตลงทะเบียนเพื่อให้ผู้ปฏิบัติงานสามารถมองเห็นได้ (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 - เปิดใช้งาน Clock out
J - เปิดใช้งาน Jump
MI - MAR อินพุต
RO - โปรแกรมหน่วยความจำออกมา
II - คำสั่งลงทะเบียนใน
IO - คำสั่งลงทะเบียนออก
OI - ลงทะเบียนเอาท์พุท
ลงทะเบียน BI - B
เปิดใช้งานเอาต์พุต EO - ALU
SU - ลบ
AI - ตัวสะสมใน
AO - เปิดใช้งานเอาท์พุท Accumulator
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 (สี่บิตต่ำสุด)
7: RO, AI - ไบต์ที่ระบุจะถูกส่งออกจากหน่วยความจำไปยังตัวสะสม
8: X
เพิ่ม:
9: IO, MI - ที่อยู่ในการลงทะเบียนคำสั่งจะถูกถ่ายโอนไปยัง MAR (สี่บิตต่ำสุด)
10: RO, BI - ไบต์ที่ระบุจะถูกส่งออกจากหน่วยความจำไปยังตัวสะสม
11: EO, AI - ผลรวมของตัวสะสมและลงทะเบียน B จะถูกโหลดเข้าสู่ตัวสะสม
SUB:
12: IO, MI - ที่อยู่ในการลงทะเบียนคำสั่งจะถูกถ่ายโอนไปยัง MAR (สี่บิตต่ำสุด)
13: RO, BI - ไบต์ที่ระบุจะถูกส่งออกจากหน่วยความจำไปยังตัวสะสม
14: AI, SU, EO - ความแตกต่างของตัวสะสมและการลงทะเบียน B จะถูกโหลดเข้าสู่ตัวสะสม
STO:
15: IO, MI - ที่อยู่ในการลงทะเบียนคำสั่งจะถูกถ่ายโอนไปยัง MAR (สี่บิตต่ำสุด)
16: AO, RO, RI - แอคติมูเลเตอร์เอาท์พุทลงในหน่วยความจำของโปรแกรมที่ตำแหน่งที่ระบุ (RO และ RI ต้องใช้งานได้สำหรับการเขียนบนชิปที่ฉันใช้)
17: X
ออก:
18: OI, AO - การสะสมเอาท์พุทเข้าสู่การลงทะเบียนเอาท์พุท
19: X
20: X
JMP:
21: J, IO - คำสั่งการลงทะเบียนโหลดตัวนับโปรแกรมที่มีสี่บิตที่ต่ำที่สุด
22: X
23: X
HLT:
24: HLT - สัญญาณหยุดจะถูกส่งไปที่นาฬิกา
25: X
26: X
OP ROM ของคุณมีหลายสิ่งสามอย่างในแต่ละตำแหน่งหน่วยความจำ นี่เป็นเพราะแน่นอนว่าในแต่ละรอบจะใช้เวลาดำเนินการสามสถานะ ดังนั้นข้อมูลที่ได้รับการจัดการสำหรับ OP ROM ของคุณจะเป็น:
0 - 3
1 - 6
2 - 9
3 - 12
4 - 15
5 - 18
6 - 21
7 - 24
ในการโปรแกรมชิปที่คุณเลือกคุณมีตัวเลือกที่แตกต่างกันมากมาย คุณสามารถซื้อโปรแกรมเมอร์ EEPROM และ EPROM ได้ แต่โดยทั่วไปแล้วพวกเขาจะต้องเสียเงินเป็นจำนวนมาก ฉันสร้างโปรแกรมเมอร์เขียงหั่นขนมสำหรับ ROM ของฉันที่ดำเนินการโดยย้ายสายไปรอบ ๆ และควบคุมการเขียนและอ่านเปิดใช้งานหมุดด้วยปุ่มกด ต่อมาฉันทำให้กระบวนการง่ายขึ้นและออกแบบโปรแกรมเมอร์ Arduino สำหรับ NVRAM ของฉันโดยเฉพาะ ฉันจะแนบรหัสเนื่องจากสามารถแก้ไขได้อย่างง่ายดายเพื่อเขียนโปรแกรมชิปหน่วยความจำแบบขนานใด ๆ ที่คุณจะใช้สำหรับโครงการนี้

ขั้นตอนที่ 15: ซื้ออะไหล่

สิ่งที่ดีเกี่ยวกับการสร้างคอมพิวเตอร์ 8 บิตคือชิ้นส่วนส่วนใหญ่จะเสียค่าใช้จ่ายน้อยกว่าหนึ่งดอลลาร์ต่อชิ้นถ้าคุณซื้อจากที่ที่ถูกต้อง ฉันซื้อชิ้นส่วนของฉัน 90% จาก Jameco Electronics และฉันพึงพอใจกับบริการของพวกเขาอย่างสมบูรณ์ ชิ้นส่วนเดียวที่ฉันซื้อจากที่อื่นจริง ๆ ก็คือเขียงเขียงและสายเขียงหั่นขนม (และหลอด Numitron) เหล่านี้สามารถพบได้ราคาถูกกว่ามากในเว็บไซต์เช่น Amazon ตรวจสอบให้แน่ใจเสมอว่าชิ้นส่วนที่คุณกำลังสั่งซื้อนั้นเป็นชิ้นส่วนที่ถูกต้อง ทุกส่วนที่คุณซื้อควรมีแผ่นข้อมูลแบบออนไลน์ที่อธิบายฟังก์ชั่นและข้อ จำกัด ทั้งหมดของรายการที่คุณซื้อ ตรวจสอบให้แน่ใจว่าได้จัดระเบียบเหล่านี้ไว้เนื่องจากคุณจะใช้แผ่นข้อมูลจำนวนมากในการสร้างคอมพิวเตอร์ของคุณ เพื่อช่วยให้คุณใช้คอมพิวเตอร์ฉันจะแสดงรายการชิ้นส่วนที่ฉันใช้กับของฉัน:
เคาน์เตอร์ 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
4-Bit Register (ฉันใช้สองสำหรับการลงทะเบียน 8 บิต):
74LS173 - http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?freeText=74LS173&langId=-1&storeId=10001&productId=46922&search_type=jamecoall&catalogId=10001&dkey=httpStorCown
2-1 Multiplexer:
74LS157 - http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_46771_-1
RAM ขนาด 16x8 (จำเป็นต้องกลับด้าน):
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
เต็มรูปแบบ:
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
บัฟเฟอร์ Tri-State:
74S244 - http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_910750_-1

ประตูแฮคเกอร์:
74LS86 - http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_295751_-1
และประตู:
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
รองเท้าแตะ JK:
74LS10 - http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_295427_-1

ขั้นตอนที่ 16: การก่อสร้าง

นี่คือที่ที่ความอดทนมาจริง ๆ ฉันเลือกใช้เขียงหั่นขนมสำหรับคอมพิวเตอร์จริง แต่มีวิธีอื่นอีกมากมายที่นั่น (เช่นการพันลวด) ที่ใช้งานได้เช่นกัน เพื่อให้ง่ายขึ้นฉันได้รวมบล็อกไดอะแกรมสำหรับแผนผังที่แท้จริงของคอมพิวเตอร์ของฉัน อย่างไรก็ตามฉันไม่ได้รวมหมายเลขชิ้นส่วนหรือหมายเลขพิน ฉันเชื่อว่าสิ่งนี้จะทำให้สิ่งต่าง ๆ ง่ายขึ้นและเปิดกว้างสำหรับความคิดสร้างสรรค์ เอาต์พุตตัวนับโปรแกรม 4 บิตอินพุต MAR และเอาต์พุตรีจิสเตอร์คำสั่งทั้งหมดเชื่อมต่อกับบัสที่สำคัญน้อยที่สุดสี่บัส
แผนภาพที่สองที่แสดงเป็นตรรกะการควบคุมสำหรับการสิ้นสุดการทำงานของคอมพิวเตอร์ ตัวควบคุมได้รับการออกแบบเพื่อให้สามารถสลับเป็นอินพุตสำหรับคอมพิวเตอร์ได้ สลัก RS_NOR จะอยู่ด้านหน้าสวิตช์สลับเพื่อทำการดีดมัน สวิตช์แบบสลับมักจะมีการเชื่อมต่อที่สกปรกซึ่งอาจเด้งจากสถานะเปิดเป็นสถานะปิดและให้สัญญาณกะพริบมากกว่าที่คุณต้องการ การเพิ่มฟลิปฟล็อปลงในเอาต์พุตของการสลับช่วยกำจัดพัลส์พิเศษ มันจะมีประโยชน์มากเมื่อใช้ตัวเลือกนาฬิกาแบบแมนนวล คุณไม่ต้องการที่จะพลิกสวิตช์และเริ่มต้น 8 พัลส์นาฬิกา ปุ่มอ่าน / เขียนเขียนไบต์อินพุตที่แอ็คทีฟไปยังหน่วยความจำที่กำหนดไว้ โดยการเปลี่ยนคำอินพุตควบคุมเริ่มต้นเป็น RAM ให้เป็นบิต RO และ RI สองบิตที่เริ่มต้นรอบการเขียน สวิตช์การทำงาน / โปรแกรมเปลี่ยนการป้อนข้อมูลที่ใช้งานอยู่ในหน่วยความจำมัลติเพล็กเซอร์ JK flip flop หลังจาก 555 หมายความว่าเมื่อคอมพิวเตอร์ทำงานมันจะไม่เริ่มตรงกลางของนาฬิกาชีพจร สัญญาณ HLT ต่ำจะหยุดนาฬิกาไม่ให้ผ่านนาฬิกาแบบแมนนวลหรือ 555 และในที่สุดสวิตช์ run / clear จะเชื่อมต่อกับพินที่ชัดเจนทั้งหมดในคอมพิวเตอร์เช่นที่บนรีจิสเตอร์และเคาน์เตอร์

ขั้นตอนที่ 17: การเขียนโปรแกรม

ตอนนี้คอมพิวเตอร์เสร็จแล้วก็สามารถตั้งโปรแกรมให้ทำตามคำแนะนำ ในการทำสิ่งนี้คุณต้องใส่คอมพิวเตอร์เข้าไปในการตั้งค่าโปรแกรมด้วยการพลิกสวิตช์สลับการทำงาน / โปรแกรมเข้าไปในตำแหน่งของโปรแกรม หลังจากนั้นคุณเลือกที่อยู่เริ่มต้นที่ 0 และไปที่ 15 แล้วใส่ข้อมูลที่จำเป็นสำหรับโปรแกรมของคุณ ตัวอย่างเช่นในการเริ่มต้นด้วย 5 และเพิ่ม 4 กับทุกเอาต์พุตโปรแกรมจะเป็นดังนี้:
ที่อยู่ - ข้อมูล:
0000 - 00010111 LDA 7: โหลดแอคคิวมูเลเตอร์พร้อมค่าที่เก็บไว้ที่หน่วยความจำ 7 (5)
0001 - 00101000 เพิ่ม 8: เพิ่มค่าที่เก็บไว้ในที่อยู่หน่วยความจำ 8 (4)
0010 - 010,100,00 ออก: เอาท์พุทสะสม
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: ก้าวต่อไป

ฉันหวังว่าคุณจะสนุกกับคำแนะนำนี้และที่สำคัญที่สุดฉันหวังว่าคุณจะได้อะไรจากมัน คุณสามารถพิจารณาการทำงานหนักทั้งหมดนี้เป็นประสบการณ์การเรียนรู้ที่มีค่าอย่างไม่น่าเชื่อที่จะทำให้คุณมีความเข้าใจที่ดีขึ้นเกี่ยวกับอุปกรณ์อิเล็กทรอนิกส์คอมพิวเตอร์และการเขียนโปรแกรม ในท้ายที่สุดคุณจะมีสิ่งที่เจ๋งมากที่แสดงให้เห็นสำหรับการทำงานหนักทั้งหมดของคุณเช่นกัน
หลังจากสร้างคอมพิวเตอร์ 8 บิตเครื่องแรกของคุณแล้วคุณสามารถไปได้ไกลกว่าเดิมและเพิ่มฟังก์ชันการทำงานให้มากขึ้น ALU ที่ใช้ในคอมพิวเตอร์นี้นั้นง่ายมากในการทำงานและวันนี้ ALU ที่แท้จริงมีฟังก์ชั่นมากมายเช่นการเปลี่ยนบิตและการเปรียบเทียบเชิงตรรกะ อีกสิ่งสำคัญที่จะย้ายไปเป็นเงื่อนไขการแตกแขนง การแตกสาขาแบบมีเงื่อนไขหมายความว่าคำสั่งนั้นขึ้นอยู่กับสถานะปัจจุบันของธงที่กำหนดโดย ALU การตั้งค่าสถานะเหล่านี้เปลี่ยนแปลงเมื่อเนื้อหาของตัวสะสมกลายเป็นค่าลบหรือเท่ากับศูนย์ สิ่งนี้ทำให้มีความเป็นไปได้ที่กว้างขึ้นสำหรับการใช้คอมพิวเตอร์ของคุณ
หากคุณมีคำถามใด ๆ เกี่ยวกับโครงการนี้โปรดแสดงความคิดเห็นในคำแนะนำนี้หรือบนเว็บไซต์ของฉันที่ http://8-bitspaghetti.com ฉันขอให้คุณโชคดีกับโครงการนี้

3 คนสร้างโปรเจคนี้!

  • JamesP383 สร้างมันขึ้นมา!

  • xdola ทำมัน!

  • realhet ทำมัน!

คุณทำโครงการนี้หรือไม่? แบ่งปันกับเรา!

ข้อเสนอแนะ

  • Vintage Look Media PC จากแล็ปท็อปเครื่องเก่า

  • Digi-Comp II Replica

  • อินเทอร์เน็ตของชั้นเรียน

  • การประกวดสีสันของสายรุ้ง

  • การประกวดวิทยาศาสตร์ในชั้นเรียน

  • การประกวดแบบสุ่ม

173 การสนทนา

0

AtomicFerryt

1 ปีที่ผ่านมา

คุณคิดว่าคุณสามารถสร้างแผนภาพดิจิทัลสำหรับแผงวงจรหลักได้หรือไม่? ฉันไม่เคยใช้เขียงหั่นขนมมาก่อน แต่สนใจในคอมพิวเตอร์เครื่องเก่าเป็นอย่างมาก

0

FarsinHamza

1 ปีที่ผ่านมา

หนึ่งในคำแนะนำที่สวยงามที่ฉันเคยเห็น …. ฉันซาบซึ้งในความอดทนของคุณ … :)

0

bob491

1 ปีที่ผ่านมา

นี่เป็นคำสั่งที่เขียนได้ดีและมีรายละเอียดมากและยอดเยี่ยมเช่นกัน ขอบคุณ.

0

champ12345

1 ปีที่ผ่านมา

ดูซับซ้อนเล็กน้อย

0

mkpeker

1 ปีที่ผ่านมา

สร้างที่ดี คุณอาจต้องการตรวจสอบ cpu 4 บิตที่ง่ายที่สุดของฉัน (MP-4) เพื่อทำความเข้าใจพื้นฐาน:

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

0

mkpeker

2 ปีที่แล้ว

โครงการที่ดีอาจเป็นคุณต้องการตรวจสอบของฉัน;

ในที่สุดระบบปฏิบัติการประเภทจอภาพของฉัน (พร้อมแอสเซมเบลอร์แอสเซมเบลอร์และ Disassembler) ก็พร้อมใช้งาน
กรุณาตั้งค่าและลอง v1.0b นี้
คุณสามารถค้นหาข้อมูลที่จำเป็นทั้งหมดได้ในหน้า Efex ของฉัน

http://mkpeker.wixsite.com/efex

โปรดส่งความคิดเห็นของคุณมาให้ฉันเพื่อปรับปรุงซอฟต์แวร์
ขอบคุณ

0

TheMrCode

2 ปีที่แล้ว

เกิดอะไรขึ้นถ้าคุณทำให้มันใช้ไฟ LED แทนสาย คุณสามารถดูว่าสัญญาณกำลังจะไปไหน

0

GeorgeW134

2 ปีที่แล้ว

คุณจะเขียนโปรแกรมคำสั่ง if อย่างไร

2 คำตอบ 0

JuliaS87GeorgeW134

ตอบกลับ 2 ปีที่ผ่านมา

คุณไม่จำเป็นต้องมีรหัสใหม่ สิ่งที่คุณต้องการคือค่าที่แสดงถึงความจริงและเท็จเป็น 1 และ 0 คุณโหลดค่านั้นลงในตัวสะสมและการลบ 1 จากนั้นให้คุณกระโดดตามเงื่อนไข หากค่าเป็น 1 (จริง) การลบจะทำให้เกิดการล้นและการกระโดดตามเงื่อนไขจะดำเนินการ หากค่าเป็น 0 (false) จะไม่เกิดการโอเวอร์โฟลว์และจะไม่มีการข้ามเกิดขึ้น

0

calebj20GeorgeW134

ตอบกลับ 2 ปีที่ผ่านมา

เนื่องจากมี register (ตัวสะสม) ที่เก็บผลรวมก่อนหน้าจาก ALU คุณสามารถตรวจสอบว่าผลลัพธ์ให้หมายเลขติดลบบวกหรือศูนย์จากนั้นคุณสามารถเพิ่ม opcode ใหม่ที่ตรวจสอบสถานะและข้ามว่าเงื่อนไขเป็น จริง
ตัวอย่างเช่น

4 - 10 = -6 -> -6 เป็นลบดังนั้นคำสั่งสาขาใด ๆ ที่มี N บิตที่ตั้งค่าเป็น 1 จะข้ามไป

แอสเซมบลี: BRN RA สิ่งนี้จะแตกสาขาไปยังตำแหน่งที่เก็บไว้ใน A

สมมติว่ารหัส opcode คือ 1,000: 1,0001000

ที่นี่คือการสลายบิตของ opcode

BR: 1,000

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 และ jk flip flops
มีเว็บไซต์อื่นที่มีรูปแบบเดียวกับบัฟเฟอร์สถานะ tri
แต่
ไม่มีการแทนที่ฟลอพพลิก JK ฉันต้องใช้ที่แน่นอน
แบบเดียวกับที่คุณระบุไว้หรือฉันสามารถใช้แบบจำลองอื่นได้หรือไม่ และถ้าเป็นเช่นนั้น
ฉันควรใช้รูปแบบใด

0

SuperNovaa41

2 ปีที่แล้ว

เฮ้! ฉันรู้ว่านี่เป็นโพสต์ที่เก่ากว่า แต่คุณสามารถให้ลิงค์อัปเดตสำหรับ Tri State Buffers และ JK Flip Flops ได้ไหม ฉันพยายามค้นคว้าผลิตภัณฑ์ แต่ไม่รู้ว่าจะใช้รุ่นใด ขอบคุณล่วงหน้า!

0

BartH19

2 ปีที่แล้ว

ฉันสนใจที่จะสร้าง CPU อย่างง่ายที่ฉันสามารถใช้พิมพ์บน LED หรือแม้แต่หน้าจอ LCD นี่เป็นโครงการสำหรับฉันหรือคุณช่วยชี้ฉันในทิศทางที่ดีขึ้นได้ไหม?

ฉันเป็นสามเณรที่สมบูรณ์ในเรื่องนี้ ฉันเป็นช่างไม้พยายามทำคอมพิวเตอร์ไม้สักชิ้น!

5 คำตอบ 0

FinnW3BartH19

ตอบกลับ 2 ปีที่ผ่านมา

แทนที่จะสร้างซีพียูคุณควรสร้างคอมพิวเตอร์ด้วยเคสไม้ คอมพิวเตอร์อาจมีราคาค่อนข้างสูง แต่คุณสามารถรับได้ต่ำกว่า $ 300 ลองใช้เว็บไซต์นี้: pcpartpicker.com

0

BartH19FinnW3

ตอบกลับ 2 ปีที่ผ่านมา

ขอบคุณสำหรับสิ่งนี้. ฉันหวังว่าจะมีบางส่วนที่เพียงพอ ฉันต้องการให้มันเป็นเหมือนเครื่องคิดเลขสำหรับคำศัพท์ ฉันจะตรวจสอบลิงค์: D

0

KyleF45BartH19

ตอบกลับ 2 ปีที่ผ่านมา

หากสิ่งที่คุณต้องการให้ทำคือทำหน้าที่เป็นเครื่องคิดเลขคุณอาจต้องการค้นหา Raspberry Pi มันจะเล็กกว่าและราคาถูกกว่า Pi ก็เหมือนกับขนาดของโทรศัพท์

0

KyleF45KyleF45

ตอบกลับ 2 ปีที่ผ่านมา

ตอนนี้ที่ฉันคิดเกี่ยวกับมัน Pi สามารถทำทุกอย่างที่คอมพิวเตอร์เดสก์ท็อปเต็มรูปแบบสามารถทำได้มันเล็กกว่ามาก อาจมีซอฟต์แวร์บางประเภทที่คุณสามารถใช้ได้

0

BartH19KyleF45

ตอบกลับ 2 ปีที่ผ่านมา

ขอบคุณสำหรับคำตอบของคุณ: D

ไม่นานหลังจากที่ความคิดเห็นเดิมของฉันฉันได้พบกับผู้ชายคนนี้จริง ๆ : http: //www.etsy.com/shop/writeotron? ref = cannot_lis …

เราจะทำงานร่วมกันในอันใหม่ มันเป็น Pi!

0

bharathis

2 ปีที่แล้ว

มันยอดเยี่ยมและให้กำลังใจฉันที่จะทำให้ตัวเอง ..

แน่ใจว่าฉันจะกด "ฉันทำมัน" ฉันกำลังอยู่ระหว่างการสร้าง hee hee มันเป็นอุปกรณ์อิเล็กทรอนิกส์ดิจิตอลที่ยอดเยี่ยม