การต่อ Z80 กับหน่วยความจำ ROM


        การต่อ Z80 กับหน่วยความจำ ROM สามารถทำได้ดังนี้
               1.) ต่อขาเอาท์พุต O0 ถึง O7 ของไอซี ROM เข้ากับขา D0 ถึง D7 ของ Z80
               2.) ต่อขาแอดเดรสทั้งหมดของไอซี ROM เข้ากับขาแอดเดรสของ Z80
               3.) ขา MREQ ขา RD และ ขาแอดเดรสที่เหลือของ Z80 ต่อกับวงจรถอดรหัสเพื่อสร้างสัญญาณเลือกชิพและสัญญาณอ่านข้อมูล เพื่อต่อกับขา CS และ OE ของ ROM รูปแบบการสร้างวงจรถอดรหัส สัญญาณเลือกชิพและสัญญาณอ่านข้อมูลในแต่ละวงจรอาจกแตกต่างกันแล้วแต่การออกแบบ ซึ่งจะขอยกตัวอย่างประกอบเพื่อความเข้าใจดังนี้

รูปแสดงการต่อ Z80 กับ ROM เพียงตัวเดียว

        จากตัวอย่างจะเป็นการต่อ Z80 เข้ากับหน่วยความจำ ROM เพียงตัวเดียวอย่างง่ายๆโดยจะเห็นว่า จะมีการต่อสายสัญญาณทั้ง 3 กลุ่มดังนี้ คือ
               1.) กลุ่มสายแอดเดรส จะต่อขาแอดเดรสของ Z80 เข้ากับขาแอดเดรสของ ROM ซึ่งไม่จำเป็นต้องเรียงตามลำดับก็ได้ แต่นิยมเรียงลำดับขาแอดเดรสเพราะจะช่วยให้การกำหนดตำแหนหน่วยความจำสะดวกขึ้น จะเห็นว่าจะมีขาแอดเดรสของ Z80 เหลืออยู่ส่วนหนึ่งซึ่งสามารถใช้ขาเหล่านี้สร้างสัญญาณเลือกชิพในกรณีที่มีหน่วยความจำมากกว่า 1 ตัว
               2.) กลุ่มสายข้อมูลจะต่อขาข้อมูลของ Z80 ทั้ง 8 เส้น (D0-D7) เข้ากับขาเอาท์พุตของ ROM (O0-O7) โดยต่อตามลำดับเรียงกันไป คือ D0 ต่อกับ O0,D1 ต่อกับ O1 และ D7 ต่อกับ O7
               3.) นำสัญญาณ MREQ ร่วมกับ RD มาสร้างเป็นสัญญาณอ่านหน่วยความจำ MEMR เพื่อไปกระตุ้นขา CE ของ หน่วยความจำให้ทำการส่งข้อมูลออกมา ส่วนขา OE จะต่อลงกราวน์เพื่อให้ไอซีพร้อมจะทำงานในสภาวะพร้อมส่งข้อมูลออกมาทันทีเมื่อมีสัญญาณเลือกชิพ

        ลำดับขั้นตอนการอ่านข้อมูลจาก ROM
               1.) ซีพียู Z80 จะส่งแอดเดรสออกไปรอก่อน
               2.) จากนั้นจะส่งสัญญาณ MERQ และ RD ออกไปเพื่อบ่งบอกว่าจะอ่านหน่วยความจำ ทำให้ CE ของหน่วยความจำเป็นสถานะจาก High เป็น LOW
               3.) จากนั้นหน่วยความจำจะส่งข้อมูลจากขาเอาท์พุต (O0 ถึง O7) ออกมาทางบัสข้อมูลและส่งเข้าในตัวซีพียู Z80 โดยผ่านทางขาข้อมูล D0-D7 เป็นการเสร็จสิ้นขบวนการ

รูปแสดงการต่อ Z80 กับไอซี ROM หลายตัว

        ในกรณีต่อ Z80 เข้ากับหน่วยความจำ ROM จำนวนหลายตัวจำเป็นต้องมีวงจรถอดรหัสเข้ามาช่วย ซึ่งอาจจะสร้างวงจรจากเกทพื้นฐาน หรือจากไอซีถอดรหัสต่างๆ เช่น ไอซีเบอร์ 74138 หรือ 74139 จากรูป เมื่อเปรียบเทียบกับแบบแรกจะเห็นว่ามีไอซีถอดรหัส 74LS138 มาช่วยในการถอดรหัสโดยเอาขาแอดเดรสที่เหลือมาสร้างเป็นสัญญาณเลือกชิพและนำสัญญาณ MERQ และ RD มาเป็นตัวกระตุ้นขา OE ของหน่วยความจำเพื่อให้ส่งข้อมูล
        การทำงานวงจรของวงจร คือ ไอซี ROM-1 จะได้รับการกำหนดตำแหน่งข้อมูลภายในชิพ จากขาแอดเดรส A0 ถึง A10 ของตัวไอซี และจะทำงานก็ต่อเมื่อขาเลือกชิพของมันคือ CE ที่ต่อกับขาเอาท์พุต Y0 ของ 74138 แอ็คทีพเป็นสภาวะลอจิก 0 โดยในกรณีดังกล่าวจะเกิดขึ้นเมื่อขาแอดเดรสของซีพียูที่เหลือ A11-A15 มีสภาวะเป็น LOW ทั้งหมด จากนั้นซีพียูจะสร้างสัญญาณอ่านหน่วยความจำ คือ MERQ และ RD มากระตุ้นขา OE เพื่อให้หน่วยความจำส่งข้อมูลออกมาโดยช่วงตำแหน่งของหน่วยความจำในกรณีนี้จะเป็นดังตาราง

ตารางแสดงการกำหนดตำแหน่งของไอซีหน่วยความจำ ROM-1

        จากตารางจะเห็นว่าแอดเดรสของความจำ คือตำแหน่งแรกของช่องเก็บข้อมูลภายในหน่วยความจำ คือ ตำแหน่งที่ A0 ถึง A10 มีสภาวะเป็นลอจิก 0 ทั้งหมดและตำแหน่งสุดท้ายของหน่วยความจำ คือ ตำแหน่งที่ A0 ถึง A10 มีสภาวะเป็นลอจิก 1 ทั้งหมด ส่วนขา A11 ถึง A15 จะต้องมีค่าเป็น ลอจิก 0 เพื่อให้ไอซีถอดรหัส 74138 ส่งเอาท์พุตลอจิก 0 ออกมาที่ขา Y0 ไปกระตุ้นขาเลือกชิพ CE ของ ROM-1ให้ทำงาน นั่นคือช่วงตำแหน่งของหน่วยความจำ ROM-1 จะอยู่ระหว่าง 0000H ถึง 07FFH
        ส่วนไอซี ROM-2จะได้รับการกำหนดตำแหน่งข้อมูลภายในจากขา A0-A10 และทำงานเมื่อขาเลือกชิพคือ CE แอ็คทีพเป็นสภาวะลอจิก 0 ซึ่งจะเกิดได้ต่อเมื่อขา Y1 ของ 74138 ทำงานในสภาวะที่ขาแอดเดรสที่เหลือ คือ A11 มีสถานะเป็นลอจิก 1 และขา A12 ถึง A15 มีสภาวะลอจิก 0 ทั้งหมดและ Z80 จะสร้างสัญญาณอ่านหน่วยความจำคือ MERQ และ RD มากระตุ้นขา OE ของไอซี ตำแหน่งของหน่วยความจำในกรณีนี้จะเป็นดังตาราง

ตารางแสดงการกำหนดตำแหน่งของไอซีหน่วยความจำ ROM-2

        นั่นคือตำแหน่งหน่วยความจำของ ROM-2 จะเริ่มที่ 080011 ถึง 0FFFH ซึ่งเราสามารถเขียนเป็นแผนผังหน่วยความจำ (Memory Map) ของวงจรในตัวอย่างที่ 2 ดังในรูป

รูปแสดงตำแหน่งหน่วยความจำของวงจร

ลำดับขั้นตอนในการติดต่อเพื่ออ่านข้อมูลจาก ROM
        1.) Z-80 ส่งแอดเดรสของตำแหน่งของหน่วยความจำที่ต้องการอ่านออกไปที่แอดเดรสบัส
        2.) Z-80 สร้างสัญญาณเพื่อติดต่อหน่วยความจำคือทำให้ขา MREQ และ ขา RD แอดทีพเป็นสถานะลอจิก 0 เพื่อขับให้ไอซีหน่วยความจำ ROM ส่งข้อมูลออกมา
        3.) จากนั้น Z-80 จะรอสักระยะหนึ่งเพื่อให้หน่วยความจำทำการถอดรหัสแอดเดรสและส่งข้อมูลออกมายังบัสข้อมูลของระบบ ช่วงเวลาดังกล่าวเรียกว่า Access Time ซึ่งจะมีค่าอยู่ระหว่าง 150-450ns
        4.) หลังจากหน่วยความจำส่งข้อมูลออกมา Z-80 ก็จะทำการอ่านข้อมูลเข้าไปแล้วปรับให้ขา MREQ และ ขา RD มีสภาวะเป็นลอจิก 1 เพื่อให้ไอซีหน่วยความจำหยุดการติดต่อกับ Z80 เป็นการสิ้นสุดขบวนการอ่านข้อมูล

ลักษณะไอซีหน่วยความจำ ROM จะมีขาใช้งานดังนี้
        1.) ขาสัญญาณไฟเลี้ยงคือ VCC กับ GND
        2.) ขากำหนดตำแหน่งแอดเดรสคือ ขา A0 ถึง An (n คือตัวเลขใดๆมีค่าไม่เกิน 15)
        3.) ขาเอาท์พุต คือ ขา O0 ถึง O7 ซึ่งเป็นขาส่งข้อมูลออกจาก ROM
        4.) ขาควบคุมได้แก่ ขา CE (Chip Enable) ซึ่งเป็นขาเลือกชิพของ ROM และขา OE (Output Enable)เป็นขาที่ใช้กำหนดให้ROMส่งข้อมูลออกมา สำหรับ EPROM จะมีขา Vpp ซึ่งใช้ในกรณีโปรแกรมข้อมูลลงในตัวไอซีเพิ่มขึ้นมา

รูปแสดงลักษณะของไอซี EPROM

        ภายในหน่วยความจำจะประกอบด้วยช่องเก็บข้อมูลเป็นจำนวนมาก การติดต่อกับช่องเก็บข้อมูลช่องในกระทำโดยการกำหนดตำแหน่งด้วยข้อมูลที่ขาแอดเดรส สำหรับความจุของข้อมูลในหน่วยความจำโดยทั่วไปจะระบุเป็นตัวเลข 2 ชุด เช่น 1024x8 หรือ 1kBx8 เป็นต้น โดยค่าตัวเลขชุดแรกหมายถึงจำนวนช่องเก็บข้อมูลภายในตัวไอซี ส่วนค่าตัวเลขชุดที่สองจะหมายถึงจำนวนบิทในข้อมูลในแต่ละช่อง เช่น ไอซีที่มีความจุข้อมูล เท่ากับ 1024x4 หมายถึงเป็นไอซีหน่วยความจำซึ่งมีจำนวนช่องเก็บข้อมูล 1024 ช่อง (มีตำแหน่งแอดเดรสให้อ้างถึงได้ 1024 ตำแหน่ง)โดยแต่ละช่องหรือแต่ละตำแหน่งจะเก็บข้อมูลได้ 4 บิต ดังนั้นถ้าต้องการให้แต่ละช่องหรือแต่ละแอดเดรส เก็บข้อมูลขนาด 8 บิตจะต้องใช้หน่วยความจำ 2 ตัวมาเชื่อมต่อกันจึงจะส่งเอาท์พุตออกมาได้ครบทั้ง 8 บิต โดย ไอซีตัวหนึ่งจะเก็บข้อมูล 4 บิตบนและอีกตัวจะเก็บข้อมูล 4 บิตล่าง