การต่อกับบัสของ Z-80
ในการต่อกับบัสของ Z-80 นั้น สามารถเชื่อมโยงกันโดยตรงได้ เพราะ Z-80 แยกบัสข้อมูล และบัสแอดเดรสออกจากกัน ดังแสดงในรูป
จากรูป เป็นการนำเอา ROM เบอร์ 2716 มาต่อกับ Z-80 โดยใช้แอดเดรสจาก CPU ต่อกับ ROM โดยตรง และบัสข้อมูลก็ต่อถึงกันโดยตรง ในที่นี้จะยังไม่มีการถอดรหัสแอดเดรส สังเกตว่าในขณะนี้ยังไม่มี การต่อสายสัญญาณ /CE ซึ่งปกติต้องมาจาก CPU แต่จะกล่าวถึงเฉพาะวิธีการถอดรหัสเพื่อต่อกับ สัญญาณ /CE นี้เท่านั้น
การกำหนดแอดเดรส
ปกติ Z-80 จะมีสัญญาณแอดเดรสจำนวน 16 สาย โดยใช้ชื่อสัญญาณเป็นแอดเดรส A0-A15 ซึ่งหมายถึง การอ้างแอดเดรสได้ 216 หรือ 65536 ตำแหน่ง แต่ ROM เบอร์ 2716 มีแอดเดรสเพียง 11 สาย นั่นหมายถึง ความจุของหน่วยความจำ มีเพียง 2 กิโลไบต์ หรือ 2048 ตำแหน่งเท่านั้น ดังนั้นการต่อ 2 กิโลไบต์ ลงใน 64 กิโลไบต์จะต้องกำหนดว่า 2 กิโลไบต์ที่ต่อนี้ อยู่ ณ ที่ใดในส่วนของพื้นที่ทั้งหมด 64 กิโลไบต์ของ Z-80 ซึ่งถ้าจะต่อให้ครบทั้ง 64 กิโลไบต์ ต้องใช้ ROM ถึง 32 ตัว
ในการต่อ ROM นั้น เรามักให้ ROM เริ่มที่แอดเดรส 0000H ทั้งนี้เพราะเมื่อเริ่มทำการรีเซต Z-80จะเริ่มทำงานที่แอดเดรสนี้ ดังนั้นเมื่อเปิดเครื่องจะทำให้ Z-80 มีโปรแกรมและพร้อมที่จะรัน (run) จึงต้องนำ ROM มาใส่ที่แอดเดรสกลุ่มล่างสุดนี้ สำหรับการกำหนดพื้นที่ของหน่วยความจำเพื่อการใช้งานนั้น สามารถแสดงได้ดังรูป
จากรูป เป็นการกำหนดพื้นที่ของหน่วยความจำ RAM และ ROM เพื่อการใช้งาน โดยสมมติให้ ROM ที่จะต่อนี้มีทั้งสิ้น 4 ตัว คือ ROMA, ROMB, ROMC และ ROMD โดยในขั้นแรกจะต่อเฉพาะ ROMA และ ROMB ส่วน RAM ที่ใช้จะต่อเป็น RAMA และ RAMB
การเลือกชิปของ ROM
เมื่อต่อ ROM เข้าสู่ระบบ เราจะต้องหาวิธีในการเลือกชิปของ ROM ให้ถูกต้องตามแอดเดรสที่เรากำหนด ไว้ เช่น ROMA เรากำหนดแอดเดรสไว้ที่แอดเดรส 0000H - 07FFH ดังนั้นเราจำเป็นต้องมีตัวถอดรหัสเพื่อเลือก แอดเดรสให้ถูกต้อง การถอดรหัสนี้เราจะใช้แอดเดรสส่วนบนที่เหลือมาทำการถอดรหัส ในที่นี้เราจะใช้ 74LS138 และทำการเลือกโดยใช้ A11, A12, A13, A14 และ A15 การถอดรหัสของ 74LS138 นี้เป็นการเลือกจาก 3 บิตไปเป็น 8 บิตโดยใช้อินพุต A, B, C วงจรการถอดรหัสนี้แสดงได้ดังรูป
ด้วยวิธีนี้จะเห็นว่า ถ้าเราเลือกแอดเดรสจาก A10 - A15 จะมีสัญญาณจาก A0 - A10 ส่งไปยังแอดเดรสของ ROM โดยตรง ส่วน A11 - A 15 จะผ่านการถอดรหัสก่อน แล้วจึงไปทำการเลือกชิปใน ROM ตามที่เราต้องการ เพื่อให้เห็นขั้นตอนการถอดรหัสชัดเจนขึ้น เราควรพิจารณาขั้นตอนการทำงานของ 74LS138 โดยเขียนออกมาเป็นตารางแอดเดรส ดังแสดงในตาราง
จากตารางนี้ เราจะเน้นเฉพาะส่วนของแอดเดรส A11 - A15 ซึ่งจะส่งค่ารวมของแอดเดรสเพื่อออกไปยังขาเอาต์พุตขาที่ 10-15 เช่น ถ้าแอดเดรส A11 - A15 เป็นลอจิก ‘ 0 ‘ หมด ขาที่ 15 ซึ่งเป็นเอาต์พุตจะแอคตีฟ เพิ่อทำการเลือกชิป และจากตารางจะพบว่า ในช่วงระหว่างแอดเดรส 0000H-07FFH ขาที่ 15 ของ 74LS138 จะแอคตีฟ ดังนั้น 74LS138 จึงเป็นวงจรถอดรหัสที่ใช้ในการเลือกชิป ROM ได้อย่างถูกต้อง
สัญญาณการอ่านข้อมูล
สำหรับการอ่านข้อมูลจากหน่วยความจำนั้น Z-80 จะต้องใช้สัญญาณทีเกี่ยวข้องหลายสัญญาณ เช่น สัญญาณ /MREQ กับสัญญาณ /RD สัญญาณทั้งสองจะต้องเกิดขึ้นพร้อมกัน ดังนั้นเมื่อเป็นเช่นนี้ จึงต้องเอาสัญญาณทั้งสองนี้ออร์ (OR) กันเพื่อให้ได้สัญญาณ /MEMR การกำหนดจังหวะการอ่านหน่วยความจำ แสดงได้ดังรูป
การต่อ Z-80 กับสัญญาณ /CS ของ ROM
การเลือก ROM ในจังหวะการอ่านนี้ ซีพียูต้องกำหนดได้ว่าจะเลือกแอดเดรสกลุ่มใด และจังหวะการเลือกนั้นจะต้องตรงกับการอ่านพอดี ดังนั้นจึงต้องนำเอาสัญญาณ /MEMR และสัญญาณเลือก ROMA มาทำการ OR กันอีกครั้ง เพื่อจะเลือก ROM ได้อย่างถูกต้อง วงจรที่ต่อ ROM แบบสมบูรณ์ในกรณีนี้แสดงได้ดังรูป
จากรูปจะเห็นว่า สัญญาณจากซีพียูที่เข้าไปทำการควบคุม ROM จะประกอบด้วยสัญญาณ จากหลายส่วนซึ่งได้แก่ สัญญาณแอดเดรส A0-A15 โดยสัญญาณ A11-A15 จะสร้างสัญญาณใหม่เป็น สัญญาณ ROMA เพื่อเลือก ROM จากนั้นจะใช้สัญญาณ /MREQ กับสัญญาณ /RD สร้างสัญญาณ /MEMR และสร้างเป็นสัญญาณ /CE ต่อไป โดยประกอบกันเป็นขั้นตอนดังแสดงในรูป
การต่อ Z-80 กับ ROM อีกวิธีหนึ่ง
สังเกตว่า ROM เบอร์ 2716 มีขา /CE และ /OE ซึ่งอาจจะนำขาสัญญาณเลือกเอาต์พุตนี้ มาใช้ประโยชน์ได้ การเลือก ROM เบอร์ 2716 นี้จะใช้ /CE และ /OE ในการเลือก โดยขาทั้งสอง จะเป็นลอจิก“0” ในการเลือกชิป และเลือกเอาต์พุตโดยทำการเปิดเกตลอจิก 3 สถานะนั่นเอง เมื่อเป็นเช่นนี้ เราสามารถลดจำนวนเกตแบบออร์ (or gate) ลงไป 1 ตัวได้ โดยแทนที่จะใช้สัญญาณ /MEMR และสัญญาณ ROMA มา OR กัน เราก็เชื่อมต่อโดยการใช้สัญญาณ /MEMR ต่อกับสัญญาณ /OE และสัญญาณ ROMA ต่อกับสัญญาณ /CE ดังแสดงในรูป
การต่อ ROM หลายๆชิบ
หากต้องการจะต่อ ROM หลายๆชิป เช่น ROMA,ROMB,ROMC และ ROMD ก็สามารถต่อเพิ่มได้ โดยใช้สัญญาณเลือกจาก 74LS138 และ /MEMR มาเลือกโดยผ่านทาง /CE และ /OE ได้ ดังแสดงในรูป
การใช้ ROM ในชิปที่มีความจุเพิ่มขึ้น
ROM ที่ใช้ในปัจจุบันมีความจุสูงขึ้นมาก EPROM บางตัวมีความจุถึง 32 กิโลไบต์ เช่น EPROM ที่ใข้กันมากในขณะนี้ ได้แก่ เบอร์ 2764 (มีความจุ 8 กิโลไบต์) เบอร์ 27128 (มีความจุ 16 กิโลไบต์) ดังนั้นหากต้องการใช้ ROM ในชิปที่มีความจุเพิ่มขึ้นก็ทำได้ โดยใช้หลักการเช่นเดียวกัน ในที่นี้ขอให้ดูการจัดขาของ EPROM เบอร์ 2732 เมื่อเปรียบเทียบกับเบอร์ 2764 ซึ่งสามารถแสดงได้ดังรูป
EPROM เบอร์ 2732 มีจำนวนขาเท่ากับเบอร์ 2764 ดังนั้นการเพิ่มความจุจะกระทำได้โดยง่าย และสามารถใช้ซ็อกเกต (socket) เดิมได้ทันที หรือเพียงแต่แก้ขาแอดเดรสเพียงเส้นเดียว สังเกตว่าขาที่แตกต่างกันในที่นี้คือ EPROM เบอร์ 2764 ได้เพิ่มเติมอีก 4 ขา โดยเพิ่มส่วนบนเป็น A12 และขา PGM มาอยู่ที่ขา 27 ส่วนขา 26 ไม่ใช้ ความแตกต่างนี้เองทำให้การเพิ่มเติมลายวงจรทำได้ง่ายขึ้น โดยการต่อจากขา 26 มาที่ขา 28 เพื่อต่อสาย Vcc ดังแสดงในรูป
เมื่อจะต่อกับ EPROM เบอร์ 2732 เราสามารถขยายระบบโดยใช้ขาแอดเดรสของ EPROM เบอร์ 2732 จากแอดเดรส A0- A11ดังนั้นส่วนที่จะขยายจากซีพียู เราใช้ 74LS42 โดยนำแอดเดรส A12- A15มาถอดรหัสดังแสดงในรูป