สารบัญ:

สร้างคอมพิวเตอร์ด้วยความเข้าใจพื้นฐานเกี่ยวกับอิเล็กทรอนิกส์: 9 ขั้นตอน (พร้อมรูปภาพ)
สร้างคอมพิวเตอร์ด้วยความเข้าใจพื้นฐานเกี่ยวกับอิเล็กทรอนิกส์: 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: สร้างคอมพิวเตอร์ด้วยความเข้าใจพื้นฐานเกี่ยวกับอิเล็กทรอนิกส์: 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: สร้างคอมพิวเตอร์ด้วยความเข้าใจพื้นฐานเกี่ยวกับอิเล็กทรอนิกส์: 9 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: อุปกรณ์คอมพิวเตอร์มีอะไรบ้าง (ส่วนประกอบของคอมพิวเตอร์) Learn Computer Hardware | Indysong Kids 2024, กรกฎาคม
Anonim
สร้างคอมพิวเตอร์ด้วยความเข้าใจพื้นฐานเกี่ยวกับอิเล็กทรอนิกส์
สร้างคอมพิวเตอร์ด้วยความเข้าใจพื้นฐานเกี่ยวกับอิเล็กทรอนิกส์

คุณเคยต้องการที่จะแสร้งทำเป็นว่าคุณฉลาดจริงๆ และสร้างคอมพิวเตอร์ของคุณเองตั้งแต่เริ่มต้นหรือไม่? คุณไม่รู้อะไรเลยเกี่ยวกับสิ่งที่ต้องทำเพื่อสร้างคอมพิวเตอร์ขั้นต่ำเปล่าหรือไม่? มันง่ายถ้าคุณรู้เรื่องอิเล็กทรอนิกส์มากพอที่จะรวมไอซีเข้าด้วยกันอย่างถูกต้อง คำแนะนำนี้จะถือว่าคุณเก่งในส่วนนั้นรวมถึงสิ่งอื่น ๆ อีกสองสามอย่าง และหากไม่เป็นเช่นนั้น ก็ไม่ควรยากเกินไปที่จะปฏิบัติตามหากคุณทราบวิธีการทำ breadboarding/prototyping จุดประสงค์ของคำแนะนำนี้คือเพื่อให้คุณได้รับ "คอมพิวเตอร์" ที่ใช้งานได้โดยไม่ต้องรู้มากเกี่ยวกับวิธีการทำงาน ฉันจะครอบคลุมการเดินสายและพื้นฐานของการเขียนโปรแกรมตลอดจนจัดทำโปรแกรมสั้น ๆ สำหรับคุณ มาเริ่มกันเลยดีกว่า

ขั้นตอนที่ 1: ชิ้นส่วนและสิ่งของ

อะไหล่และสิ่งของ
อะไหล่และสิ่งของ
อะไหล่และสิ่งของ
อะไหล่และสิ่งของ

"คอมพิวเตอร์" ต้องการ: พลังงาน อินพุต การประมวลผล หน่วยความจำ และเอาต์พุต ในทางเทคนิคเราจะมีสิ่งเหล่านี้ทั้งหมด เราจะกล่าวถึงสิ่งเหล่านี้ตามลำดับ

สำหรับพลังงาน คุณจะต้องใช้แหล่งจ่ายไฟ 5 โวลต์ (ต่อไปนี้จะเรียกว่า 5V) ขอแนะนำว่าเป็นแหล่งที่มีการควบคุม ดังนั้นคุณจึงไม่ต้องทอดชิ้นส่วนในวงจรของคุณโดยไม่ได้ตั้งใจ อินพุตของเราจะเป็นปุ่ม การประมวลผลนั้นอธิบายตนเองได้ เรากำลังใช้โปรเซสเซอร์ หน่วยความจำจะประกอบด้วย ROM เท่านั้น การลงทะเบียนวัตถุประสงค์ทั่วไปภายในของโปรเซสเซอร์จะเพียงพอที่จะใช้เป็น RAM เอาต์พุตจะเป็น LED

1 LM7805C - ตัวควบคุม 5V

1 ZYLOG Z80 - โปรเซสเซอร์

1 AT28C64B - EEPROM

1 74LS273 - Octal D Flip-Flop

1 74HC374E - Octal D Flip-Flop

3 CD4001BE - สี่ประตู NOR

1 NE555 - เครื่องกำเนิดนาฬิกา

ตัวต้านทาน 2 1K โอห์ม

ตัวต้านทาน 1 10K โอห์ม

1 เครือข่ายตัวต้านทาน 10K Ohm; 8 Bussed หรือ 8 ตัวต้านทาน 10K เพิ่มเติม

ตัวเก็บประจุ 1 1uF

ตัวเก็บประจุ 1 100uF

1 ปุ่มกด

เมทริกซ์ปุ่ม 3x4 1 ปุ่มหรือปุ่มกดเพิ่มเติม 8 ปุ่ม

8 LED - การเลือกสีไม่สำคัญ

8 330 โอห์มตัวต้านทานหรือเครือข่ายตัวต้านทาน

1 เขียงหั่นขนมขนาดใหญ่จริงๆ หรือ อันเล็กๆ หลายอัน

ลวดจำนวนมากและจำนวนมาก

ในแผนผังของฉันฉันติดตั้ง SRAM ไว้ คุณไม่จำเป็นต้องกังวลเกี่ยวกับเรื่องนี้ ฉันเพิ่มลงในแผนผังเพื่อให้สะท้อนถึงวงจรจริงของฉันได้อย่างแม่นยำเท่านั้น และฉันเพิ่มลงในวงจรเพื่อใช้ในอนาคต ที่เพิ่มเข้ามาในแผนผังคือ quad OR gate (74LS36) อินพุตของเกตที่ไม่ได้ใช้ทั้งสองอันเชื่อมโยงกับ VCC และเอาต์พุตของเกตที่เหลือจะลอยอยู่ (ไม่ได้วาด) ยังไม่ได้วาดหรือระบุไว้ข้างต้นเป็นตัวเก็บประจุสองตัวในวงจรไฟฟ้า

ฉันกำลังป้อน 12V ที่ได้รับการควบคุมลงในตัวควบคุม 5V เพื่อป้อนเขียงหั่นขนมทั้งหมด มันค่อนข้างอุ่น ดังนั้นฉันจึงติดฮีทซิงค์เพื่อทำให้เย็นลง หากคุณใช้ไฟน้อยกว่า 12V เพื่อป้อนตัวควบคุม (ใช้อย่างน้อย 7V) ตัวควบคุมควรเย็นลง

Z80 เป็นที่ที่เวทมนตร์เกิดขึ้น ใช้คำแนะนำที่เก็บไว้ใน ROM และดำเนินการ EEPROM เก็บโปรแกรมของเราเพื่อให้โปรเซสเซอร์ทำงาน

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

ฟลิปฟล็อปฐานแปดที่ใช้สำหรับอินพุตนั้นเป็นสิ่งเดียวกัน ฟลิปฟล็อปเอาท์พุตเก็บเอาท์พุตสูงหรือต่ำ ดังนั้นจึงไม่สามารถใช้ขับบัสได้ มันจะเก็บข้อมูลบนรถบัส ฟลิปฟล็อปที่ใช้สำหรับอินพุตแทนที่พิน /RESET ด้วย /EN ซึ่งจะตัดการเชื่อมต่อเอาต์พุตของ (และจาก) ชิปมากหรือน้อยเพื่อไม่ให้เก็บข้อมูล (เอาต์พุตแบบไตรสถานะ)

ขั้นตอนที่ 2: การเดินสายไฟนาฬิกาและวงจรรีเซ็ต

การเดินสายไฟ นาฬิกา และวงจรรีเซ็ต
การเดินสายไฟ นาฬิกา และวงจรรีเซ็ต
การเดินสายไฟ นาฬิกา และวงจรรีเซ็ต
การเดินสายไฟ นาฬิกา และวงจรรีเซ็ต
การเดินสายไฟ นาฬิกา และวงจรรีเซ็ต
การเดินสายไฟ นาฬิกา และวงจรรีเซ็ต

หมายเหตุ: สำหรับชิ้นส่วนทั้งหมด ให้ต่อสายไฟก่อน ในบรรดาสิ่งที่ต้องลืมต่อสาย ชิปจะมีโอกาสรอดจากการเชื่อมต่อไฟฟ้าที่ถูกลืมได้น้อยมาก

วงจรไฟฟ้าเป็นวงจรที่ง่ายที่สุดในการต่อสาย ตามด้วยวงจรรีเซ็ตและวงจรนาฬิกา ตามลำดับ ในภาพ อินพุต 12V อยู่ที่รางปลั๊กไฟทางด้านขวาสุด ลวดสีน้ำตาลซ่อนสายสีเหลืองไว้ข้างใต้ ป้อน 12V ไปยังตัวควบคุม เอาต์พุตของตัวควบคุมจะดึงปลั๊กไฟอื่น ๆ ทั้งหมดบนเขียงหั่นขนมและรางปลั๊กทุกตัวมีพื้นร่วมกันเพราะนั่นคือวิธีการทำงานของอุปกรณ์อิเล็กทรอนิกส์

โปรเซสเซอร์ต้องการวงจรนาฬิกาในการทำงาน หากไม่มีมันก็จะนั่งอยู่ที่นั่นในสถานะเริ่มต้นและไม่ทำอะไรเลย นาฬิกาทำงานตัวประมวลผลภายในกะการลงทะเบียนเพื่อให้สามารถสร้างสัญญาณที่จะทำสิ่งต่างๆ อินพุตนาฬิกาจะทำได้แม้กระทั่งตัวต้านทานแบบธรรมดาและปุ่มกด แต่ต้องใช้เวลาหลายรอบนาฬิกาในการดำเนินการตามคำสั่ง คำแนะนำในการเขียนไปยังเอาต์พุตใช้เวลา 12 รอบในตัวเอง คุณอาจไม่ต้องการนั่งตรงนั้นแล้วกดปุ่มมากกว่า 100 ครั้งเพื่อให้ได้รหัสเพียงลูปเดียว (ตัวเลขจริงอยู่ที่ส่วนท้ายของคำสั่ง) นั่นคือสิ่งที่ NE555 มีไว้เพื่อ มันเปลี่ยนให้คุณและทำได้ในอัตราที่รวดเร็ว (ค่อนข้าง)

ก่อนที่คุณจะเริ่มเดินสายอะไร คุณอาจต้องการไปข้างหน้าและคิดออกว่าคุณต้องการจัดวางส่วนประกอบของคุณบนกระดานอย่างไร วงจรนาฬิกาของฉันวางอยู่ที่ด้านล่างของบอร์ด ดังนั้นมันจะไม่ไปขวางทางส่วนประกอบอื่นๆ เราจะถือว่าคุณรู้วิธีสร้างนาฬิกาพื้นฐานด้วยตัวจับเวลา หากไม่เป็นเช่นนั้น คุณจะต้องค้นหา "555 Astable" และทำตามบทช่วยสอน ใช้ตัวต้านทาน 1K เพื่อไประหว่างราง 5V และพิน 7 ของตัวจับเวลา (R1) และ 10K ระหว่างพิน 7 และพิน 2 (R2) ตรวจสอบให้แน่ใจว่าได้ผูกพินรีเซ็ต พิน 4 เข้ากับราง 5V เพื่อให้ตัวจับเวลาสามารถทำงานได้ ฉันติดไฟ LED ที่เอาต์พุตของฉันเพื่อที่ฉันจะได้ตรวจสอบได้ว่านาฬิกาทำงานจริงหรือไม่ แต่ไม่จำเป็นต้องใช้

อีกทางเลือกหนึ่งของ NE555 คือการตั้งค่าให้เป็นเกท NOT และใช้ตัวต้านทาน 1K เพื่อผูกเอาท์พุตกลับไปยังอินพุท โดยปกติแนะนำให้ใช้ตัวจับเวลา 3 ตัวในการทำเช่นนี้ แต่ฉันพบว่ามีเพียง 1 ตัวเท่านั้นที่ทำงานได้ดี แค่รู้ว่าถ้าคุณทำเช่นนี้ มันจะแกว่งด้วยความเร็วสูงมากและจะเป็นเรื่องยากมาก เป็นไปไม่ได้ด้วยซ้ำที่จะบอกได้ว่าไฟ LED แสดงสถานะกำลังกะพริบ การตั้งค่านี้เรียกว่า "ring oscillator"

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

ตอนนี้เราต่อวงจรรีเซ็ต ก่อนอื่นคุณต้องหาตำแหน่งบนกระดานของคุณก่อน ฉันเลือกข้างนาฬิกา เพิ่มปุ่มของคุณไปที่บอร์ด ใช้ตัวต้านทาน 1K เพื่อผูกด้านหนึ่งของปุ่มกับราง 5V หมุด RESET ของเราทำงานต่ำ หมายความว่าเราต้องถือไว้สูง นั่นคือสิ่งที่ตัวต้านทานใช้สำหรับ ทางแยกนี้เป็นจุดที่พินรีเซ็ตเชื่อมต่อด้วย อีกด้านหนึ่งของปุ่มตรงไปที่พื้น หากคุณต้องการรีเซ็ตการเปิดเครื่อง ให้เพิ่มตัวเก็บประจุ 10uF ที่ทางแยกนี้ด้วย มันจะรักษาแรงดันไฟบนพินรีเซ็ตให้ต่ำนานพอที่จะเปิดใช้งานวงจรรีเซ็ตภายในโปรเซสเซอร์และฟลิปฟล็อป

ขั้นตอนที่ 3: การเดินสายไฟ Z80

ตอนนี้เรามาถึงเรื่องสำคัญแล้ว เราจะต่อสายสัตว์ร้ายที่เป็น Z80 บนกระดานของฉัน ฉันวาง Z80 ไว้ที่ส่วนบนของบอร์ดเดียวกันกับวงจรรีเซ็ต ตามที่ระบุไว้ก่อนหน้านี้ ให้ต่อรางไฟก่อน 5V ไปที่พิน 11 ทางด้านซ้ายและกราวด์อยู่หนึ่งพิน แต่อยู่ทางด้านขวา คุณอาจสังเกตเห็นความกว้างคี่ของชิปด้วย มันจะทำให้คุณมีตัวเชื่อมต่อที่เปิดอยู่ 3 ตัวที่ด้านหนึ่งบนเขียงหั่นขนมและอีก 2 ตัวที่อีกด้านหนึ่ง จะทำให้สะดวกน้อยลงในการต่อสายเพิ่มเติมหากคุณเลือกที่จะทำเช่นนั้น

หมายเลขพินต่อไปนี้ - ฉันคิดว่าคุณรู้วิธีนับพินบน IC - เป็นอินพุตที่ไม่ได้ใช้และต้องเชื่อมโยงกับราง 5V: 16, 17, 24, 25

จำนาฬิกาของเราได้ไหม เอาต์พุตไปที่พิน 6 บน z80 วงจรรีเซ็ตเชื่อมต่อกับพิน 26 โดยไม่ต้องมีส่วนประกอบอื่นๆ บนบอร์ด เท่าที่ฉันสามารถทำให้คุณมีสายไฟของ z80 ได้เอง การเดินสายเพิ่มเติมจะทำในขั้นตอนต่อไป

เนื่องจากฉันได้สร้างวงจรไว้แล้วก่อนที่ฉันจะคิดว่าจะเขียนคำแนะนำนี้ ฉันจะระงับรูปภาพไว้จนกว่าจะถึงขั้นตอนต่อไป

ขั้นตอนที่ 4: การเดินสาย ROM

เดินสาย ROM
เดินสาย ROM

หมายเหตุ: คุณอาจต้องการระงับการวางมันไว้บนกระดานจริงๆ หากยังต้องการการตั้งโปรแกรม (เพิ่มเติมในภายหลัง)

สำหรับ ROM ฉันวางมันไว้ข้าง Z80 ทางด้านขวาและเลื่อนมันไปหนึ่งพินบนเขียงหั่นขนม สิ่งนี้ทำให้ฉันสามารถต่อสายแอดเดรสบัสได้โดยตรง แต่จะเพิ่มเติมในภายหลัง AT28C64B เป็น EEPROM ซึ่งหมายความว่าสามารถตั้งโปรแกรมได้หลายครั้งโดยปิดและเปิดหมุดบางตัว เราไม่ต้องการให้ EEPROM ของเราตั้งโปรแกรมใหม่โดยไม่ได้ตั้งใจเมื่ออยู่ในวงจร ดังนั้นเมื่อคุณต่อรางไฟแล้ว ให้ต่อสายไฟ 27 (/WE) เข้ากับราง 5V เพื่อปิดคุณสมบัติการเขียนทั้งหมด

โปรแกรมของฉันมีขนาดเล็กมาก ฉันต้องการเพียง 5 บรรทัดที่อยู่ด้านล่าง (A0-A4) ที่เชื่อมต่อ แต่ฉันต่อสาย A5, A6 และ A7 เพื่อให้สามารถเขียนโปรแกรมที่ใหญ่ขึ้นโดยไม่ต้องทำงานเพิ่มเติม บรรทัดที่อยู่เพิ่มเติม (A8-A12) จะเชื่อมโยงโดยตรงกับกราวด์ เพื่อป้องกันการเข้าถึงที่ไม่ต้องการไปยังที่อยู่ที่สูงกว่าจากอินพุตแบบลอย ด้วยอินพุตที่อยู่ที่ไม่ได้ใช้เชื่อมโยงกับกราวด์และการควบคุมการเขียนที่เชื่อมโยงกับ 5V การเดินสายส่วนที่เหลือค่อนข้างตรงไปตรงมา ค้นหา A0 บนโปรเซสเซอร์และต่อสายไปที่ A0 บน ROM จากนั้นค้นหา A1 บนโปรเซสเซอร์และต่อสายกับ A1 บน ROM ทำเช่นนี้จนกว่าคุณจะเชื่อมต่อที่อยู่ทั้งหมดเข้าด้วยกัน ในภาพ แอดเดรสบัสไปยัง ROM ของฉันถูกเดินสายสีน้ำเงิน แอดเดรสบัสที่ไปยัง RAM นั้นถูกเดินสายเป็นสีแดง สายไฟเหล่านี้ถูกตัดและถอดออกก่อนเนื่องจากมาในชุดสายไฟแบบเขียงหั่นขนมและเหมาะสำหรับการเดินสายนี้

หลังจากที่คุณได้รับที่อยู่แบบมีสายแล้ว (ซึ่งเรียกว่าแอดเดรสบัส) ให้ทำสิ่งเดียวกันกับพินที่ระบุว่า D0 ตามด้วย D1, D2 เป็นต้น ทำเช่นนี้กับดาต้าพินทั้งหมด (D0 - D7) และคุณมี บัสข้อมูลแบบมีสาย เรากำลังเดินสาย ROM เกือบเสร็จแล้ว ค้นหาพิน /CE (เปิดใช้งานชิป) ของ ROM และต่อสายเข้ากับพินโปรเซสเซอร์ 19, /MREQ (คำขอหน่วยความจำ) จากนั้นค้นหา /OE ของ ROM (เปิดใช้งานเอาต์พุต) และต่อสายเข้ากับพินโปรเซสเซอร์ 21, /RD (อ่าน) ตอนนี้เราทำเสร็จแล้ว ทั้งหมดนี้ทำด้วยสายจัมเปอร์เพราะต้องไปอีกด้านหนึ่งของโปรเซสเซอร์และเขียงหั่นขนมไม่มีที่ว่างเพียงพอสำหรับการเดินสายที่เรียบร้อยเช่นนั้น

ขั้นตอนที่ 5: การเดินสายไฟเอาต์พุต

การเดินสายไฟขาออก
การเดินสายไฟขาออก
การเดินสายไฟขาออก
การเดินสายไฟขาออก

เนื่องจากไม่มีคนอาศัยอยู่ ฉันจึงเลือกส่วนของบอร์ดทางด้านซ้ายของ Z80 สำหรับเอาต์พุต วางฟลิปฟลอปไว้ตรงนั้นแล้วต่อรางไฟฟ้าเข้าด้วยกัน พิน 1, /MR (รีเซ็ต) สามารถเชื่อมต่อโดยตรงกับพินรีเซ็ตของโปรเซสเซอร์ แต่คุณสามารถปล่อยให้มันผูกติดกับราง 5V ได้ การทำเช่นนี้จะทำให้แสดงข้อมูลขยะจนกว่าจะมีการเขียนครั้งแรกเท่านั้น สังเกตว่าชิปมีอินพุตนาฬิกาบนพิน 11 อินพุตนี้แปลกตรงที่มันถูกเปิดใช้งานเมื่อพินสูง โปรดทราบว่าพินนี้ไม่ใช่นาฬิกาเดียวกับที่ขับเคลื่อนโปรเซสเซอร์ นาฬิกานี้ล็อคข้อมูลที่ยืนยันบนบัสข้อมูล

จำได้ไหมว่าเราเชื่อมต่อ D0 - D7 บน ROM กับพินเดียวกันบนโปรเซสเซอร์ได้อย่างไร ทำเช่นเดียวกันสำหรับชิปนี้ D0 ของมันไปที่ D0 บนบัสข้อมูลเป็นต้น หมุดที่ขึ้นต้นด้วย "Q" คือเอาต์พุต ก่อนที่เราจะต่อสายเหล่านี้ เราจำเป็นต้องเพิ่มชิปให้มากขึ้น ฉันใช้เกท NOR รูปสี่เหลี่ยมเพราะฉันมีท่อของมันและฉันต้องการอยู่แล้ว แต่สำหรับชิปตัวใดตัวหนึ่งก็จะใช้งานได้หากคุณต่อสายอย่างถูกต้อง ฉันสามารถผูกหนึ่งอินพุตกับเกตทั้งหมดเข้ากับกราวด์และใช้อินพุตอื่นเช่นกัน อินพุต แต่ฉันเลือกที่จะเชื่อมต่ออินพุตทั้งสองเข้าด้วยกันเพื่อความเรียบง่าย

ฉันวางชิปไว้ด้านล่างของฟลิปฟล็อปเพื่อให้ต่อสายโดยตรงได้ง่ายขึ้นโดยไม่ต้องใช้จัมเปอร์ แต่ตอนนี้ฉันใช้สายเหลือน้อย ดังนั้นมันจึงไม่สำคัญในท้ายที่สุด Q0, Q1….. Q7 บน flip-flop ไปที่อินพุตในแต่ละเกต ด้วย 4 เกทในแต่ละแพ็คเกจ/ชิป ฉันต้องการ 2 แพ็คเกจและใช้เกตทั้งหมด หากคุณพบรุ่นของ flip-flop ที่สามารถขับ LED ได้โดยไม่ต้องใช้บัฟเฟอร์เช่นนี้ ชิปสองตัวนี้ไม่จำเป็น หากคุณใช้เกทเป็นบัฟเฟอร์ที่ไม่มีเอาต์พุตกลับด้าน (AND/OR/XOR) คุณสามารถต่อไฟ LED ได้ตามที่คุณคาดหวัง หากคุณใช้ชิ้นส่วนเดียวกับฉันและ/หรือเอาต์พุตกลับด้าน ไฟ LED ควรต่อสายตามที่อธิบายไว้ด้านล่าง ภาพแรกแสดงส่วน IC ของเอาต์พุต

ใช้ตัวต้านทาน 330 โอห์มเพื่อผูก LED ที่เป็นบวก (แอโนด) กับราง 5V และเชื่อมต่อขั้วลบ (แคโทด) กับเอาต์พุตของเกต คุณสามารถเห็นในภาพที่สองที่ฉันใช้บัสตัวต้านทานสองตัว โดยแต่ละตัวมีตัวต้านทานภายในเพียงห้าตัว การเดินสายไฟ LED แบบนี้จะทำให้ไฟสว่างขึ้นเมื่อปิดเอาต์พุต เราทำสิ่งนี้เพราะเอาต์พุตปิดอยู่เมื่ออินพุตเปิดอยู่ ตรวจสอบให้แน่ใจว่าคุณได้ติดตามว่าประตูใดที่ส่งออกของคุณจากการควบคุมแบบฟลิปฟล็อป เว้นแต่ว่าไฟ LED ของคุณจะกระจัดกระจายหรือลำดับของไฟ LED นั้นไม่มีความหมาย การสูญเสียการติดตามอาจทำให้เกิดความสับสนในภายหลังเมื่อคุณถามตัวเองว่าทำไมเอาต์พุตถึงผิด

ขั้นตอนที่ 6: การเดินสายอินพุต

การเดินสายไฟอินพุต
การเดินสายไฟอินพุต

นำรองเท้าแตะรุ่น 74HC374 ไปวางไว้ที่ใดที่หนึ่ง ของฉันอยู่ด้านล่างของ Z80 ที่ด้านล่างของกระดาน จำครั้งสุดท้ายที่เราเชื่อมต่อ D0 กับ D0 และ D1 กับ D1 และอื่นๆ ได้ไหม คราวนี้เราเชื่อมต่อ Q0 กับ D0 และ Q1 กับ D1 เป็นต้น โชคดีที่เราไม่ต้องเพิ่มบัฟเฟอร์ชิปในครั้งนี้ 555 แต่เราจะเชื่อมต่อ 10K Ohm กับพิน "D" แต่ละตัว (D0-D7) และกราวด์ จากนั้นจึงใช้ปุ่มกับพินเดียวกันและราง 5V หรือคุณสามารถใช้ตัวต้านทานบัสและลดจำนวนชิ้นส่วนของคุณลงได้มาก เมทริกซ์ปุ่ม 3x4 (ไม่มีเอาต์พุตเมทริกซ์!!) ก็ช่วยได้เช่นกัน รูปภาพแสดงวงจรอินพุตทั้งหมดพร้อมกับตรรกะของกาว (ส่วนถัดไป)

ขั้นตอนที่ 7: ลอจิกกาว

เรามีสิ่งสุดท้ายที่จะต่อสาย เรียกว่า "glue logic" เพราะใช้ในการถอดรหัสสัญญาณควบคุมเพื่อให้ทุกอย่างทำงานได้ เป็นสิ่งที่ยึดวงจรไว้ด้วยกัน เมื่อโปรเซสเซอร์ต้องการเขียนข้อมูลไปยังเอาต์พุต ทั้ง /IORQ และ /WR (20 และ 22 ตามลำดับ) จะลดลง และข้อมูลที่กำลังส่งจะถูกยืนยันบนบัสข้อมูล หมุดนาฬิกาบนรองเท้าแตะทั้งสองมีการใช้งานสูง หมายความว่าข้อมูลจะถูกล็อคเมื่อหมุดรับสัญญาณสูง เราใช้เกต NOR และต่อสาย /IORQ กับอินพุตหนึ่งของเกต และ /WR ไปยังอินพุตอื่น เมื่อค่าใดค่าหนึ่งสูง หมายความว่าไม่ได้เลือกวงจร IO หรือไม่มีการดำเนินการเขียน เอาต์พุตที่ป้อนนาฬิกาของ flip-flop จะยังคงต่ำ เมื่ออินพุตทั้งสองมีค่าต่ำ และเฉพาะเมื่อเอาต์พุตสูงขึ้น และฟลิปฟล็อปจะล็อคข้อมูลไว้

ตอนนี้เราต้องต่อสายอินพุตฟลิปฟล็อป เราสามารถต่อเข็มนาฬิกาในลักษณะเดียวกับก่อนหน้านี้ แต่ใช้ /IORQ และ /RD แต่ต่างจาก flip-flop อื่นๆ เรายังมีพิน /OE ที่ต้องการให้ลดต่ำลงก็ต่อเมื่อ /IORQ และ /RD ต่ำเท่านั้น เราสามารถใช้เกท OR ได้ หรือเราสามารถเอาสัญญาณที่เรามีอยู่แล้วสำหรับนาฬิกาแล้วกลับด้านด้วยหนึ่งในสองเกทที่เรามีอยู่แล้ว ในขณะที่ระบุคำแนะนำนี้ ฉันไม่มีประตู OR ดังนั้นฉันจึงใช้ตัวเลือกหลัง การใช้ตัวเลือกหลังหมายความว่าฉันไม่จำเป็นต้องเพิ่มส่วนใดๆ เพิ่มเติม

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

หากการเดินสายของคุณถูกต้องและคำอธิบายของฉันชัดเจน สิ่งที่เหลืออยู่ก็คือการตั้งโปรแกรม ROM มีสองสามวิธีในการดำเนินการนี้ คุณสามารถใช้วิธีที่ง่ายและสั่งชิปใหม่จาก Digikey เมื่อคุณสั่งซื้อชิ้นส่วน คุณจะมีตัวเลือกในการอัปโหลดไฟล์ HEX และพวกเขาจะตั้งโปรแกรมก่อนที่จะจัดส่ง ใช้ไฟล์ HEX หรือ OBJ ที่แนบมากับคำแนะนำนี้และรอให้มันมาถึงทางไปรษณีย์ ตัวเลือกที่ 2 คือการสร้างโปรแกรมเมอร์ด้วย Arduino หรืออย่างอื่น ฉันลองใช้เส้นทางนั้นแล้วและไม่สามารถคัดลอกข้อมูลบางอย่างได้อย่างถูกต้องและต้องใช้เวลาหลายสัปดาห์กว่าจะเข้าใจ ฉันลงเอยด้วยการทำตัวเลือก 3 ซึ่งก็คือการตั้งโปรแกรมด้วยมือและสวิตช์พลิกเพื่อควบคุมที่อยู่และสายข้อมูล

เมื่อแปลงเป็น OP Code ของโปรเซสเซอร์โดยตรงแล้ว โปรแกรมทั้งหมดนี้จะอยู่ในพื้นที่ที่อยู่เพียง 17 ไบต์ ดังนั้นการเขียนโปรแกรมด้วยมือจึงไม่น่ากลัวเกินไป โปรแกรมโหลดลงในรีจิสเตอร์วัตถุประสงค์ทั่วไป B มูลค่า 00 รีจิสเตอร์ B ใช้สำหรับเก็บผลลัพธ์ของการเพิ่มก่อนหน้า เนื่องจากการลงทะเบียน A เป็นที่ที่คณิตศาสตร์เกิดขึ้น เราจะไม่ใช้มันเพื่อเก็บข้อมูล

พูดถึงรีจิสเตอร์ A เราดำเนินการคำสั่ง IN ซึ่งอ่านอินพุตและเก็บข้อมูลที่อ่านไว้ใน A จากนั้นเราเพิ่มเนื้อหาของรีจิสเตอร์ B และส่งออกผลลัพธ์

หลังจากนั้น รีจิสเตอร์ A จะถูกคัดลอกไปยังรีจิสเตอร์ B จากนั้นเราทำชุดคำสั่งกระโดด เนื่องจากการกระโดดทั้งหมดชี้ไปที่ไบต์ล่างของบรรทัดที่อยู่ และเนื่องจากไบต์บนของคำสั่งกระโดดถูกกำหนดไว้ในอาร์กิวเมนต์ที่สองและคือ "00 " เราสามารถบังคับให้แต่ละการข้ามตามด้วย NOP เราทำสิ่งนี้เพื่อให้เวลาระหว่างการแสดงเอาต์พุตและอินพุตการอ่านเพื่อป้องกันการป้อนข้อมูลโดยไม่ได้ตั้งใจ การกระโดดแต่ละครั้งใช้รอบนาฬิกาสิบรอบและ NOP แต่ละครั้งใช้สี่รอบ หากการวนซ้ำใช้เวลานานเกินไปสำหรับความชอบของคุณ คุณสามารถเพิ่มความเร็วสัญญาณนาฬิกาหรือคุณสามารถตั้งโปรแกรมใหม่เพื่อใช้การกระโดดน้อยลง

ขั้นตอนที่ 9: การทดสอบ

หากคุณต่อสายทุกอย่างถูกต้องและตั้งโปรแกรม ROM อย่างถูกต้อง มีขั้นตอนสุดท้ายที่ต้องทำ: เสียบปลั๊กและดูว่าใช้งานได้หรือไม่ กดปุ่มและรอสักครู่ โปรแกรมใช้รอบนาฬิกา 81 รอบในการวนรอบแรก และแต่ละรอบใช้เวลา 74 รอบนาฬิกา

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

แนะนำ: