คือหน่วยความจำชนิดหนึ่ง ที่มีโปรแกรม หรือข้อมูลอยู่แล้ว และพร้อมที่จะนำมาต่อกับ ไมโครโปรเซสเซอร์ได้โดยตรง ซึ่งโปรแกรม หรือข้อมูลนั้นจะไม่สูญหายไป แม้ว่าจะไม่มีการจ่ายไฟเลี้ยงให้แก่ระบบ ข้อมูลที่เก็บอยู่ใน ROM จะสามารถอ่านออกมาได้ แต่ไม่สามารถเขียนข้อมูลเข้าไปได้ เว้นแต่จะใช้วิธีการพิเศษซึ่งขึ้นกับชนิดของ ROM
ชนิดของROM
- Manual ROM
ROM (READ-ONLY MEMORY) ข้อมูลทั้งหมดที่อยู่ใน ROM จะถูกโปรแกรม โดยผู้ผลิต (โปรแกรม มาจากโรงงาน) เราจะใช้ ROM ชนิดนี้ เมื่อข้อมูลนั้น ไม่มีการเปลี่ยนแปลง และมีความต้องการใช้งาน เป็นจำนวนมาก ผู้ใช้ไม่สามารถ เปลี่ยนแปลงข้อมูลภายใน ROM ได้ โดย ROM จะมีการใช้ technology ที่แตกต่างกันตัวอย่างเช่น BIPOLAR, CMOS, NMOS, PMOS
- PROM (Programmable ROM)
PROM (PROGRAMMABLE READ-ONLY MEMORY) ข้อมูลที่ต้องการโปรแกรมจะถูกโปรแกรมโดยผู้ใช้เอง โดยป้อนพัลส์แรงดันสูง (HIGH VOLTAGE PULSED) ทำให้ METAL STRIPS หรือ POLYCRYSTALINE SILICON ที่อยู่ในตัว IC ขาดออกจากกัน ทำให้เกิดเป็นลอจิก 1 หรือ 0 ตามตำแหน่ง ที่กำหนดในหน่วยความจำนั้นๆ เมื่อ PROM ถูกโปรแกรมแล้ว ข้อมูลภายใน จะไม่สามารถเปลี่ยนแปลงได้อีก หน่วยความจำชนิดนี้ จะใช้ในงานที่ใช้ความเร็วสูง ซึ่งความเร็วสูงกว่า หน่วยความจำ ที่โปรแกรมได้ชนิดอื่นๆ
- EPROM (Erasable Programmable ROM)
EPROM (ERASABLE PROGRAMMABLE READ-ONLY MEMORY) ข้อมูลจะถูกโปรแกรม โดยผู้ใช้โดยการให้สัญญาณ ที่มีแรงดันสูง (HIGH VOLTAGE SIGNAL) ผ่านเข้าไปในตัว EPROM ซึ่งเป็นวิธีเดียวกับที่ใช้ใน PROM แต่ข้อมูลที่อยู่ใน EPROM เปลี่ยนแปลงได้ โดยการลบข้อมูลเดิมที่อยู่ใน EPROM ออกก่อน แล้วค่อยโปรแกรมเข้าไปใหม่ การลบข้อมูลนี้ทำได้ด้วย การฉายแสง อุลตร้าไวโอเลตเข้าไปในตัว IC โดยผ่าน ทางกระจกใส ที่อยู่บนตัว IC เมื่อฉายแสง ครู่หนึ่ง (ประมาณ 5-10 นาที) ข้อมูลที่อยู่ภายใน ก็จะถูกลบทิ้ง ซึ่งช่วงเวลา ที่ฉายแสงนี้ สามารถดูได้จากข้อมูล ที่กำหนด (DATA SHEET) มากับตัว EPROM และ มีความเหมาะสม ที่จะใช้ เมื่องานของระบบ มีโอกาส ที่จะปรับปรุงแก้ไขข้อมูลใหม่
- EAROM (Electrically Alterable ROM)
EAROM (ELECTRICALLY ALTERABLE READ-ONLY MEMORY) EAROM หรืออีกชื่อหนึ่งว่า EEPROM (ELECTRICAL ERASABLE EPROM) เนื่องจากมีการใช้ไฟฟ้าในการลบข้อมูลใน ROM เพื่อเขียนใหม่ ซึ่งใช้เวลาสั้นกว่าของ EPROM การลบขึ้นอยู่กับพื้นฐานการใช้เทคโนโลยีที่แตกต่างกัน ดังนั้น EAROM (ELECTRICAL ALTERABLE ROM) จะอยู่บนพื้นฐานของเทคโนโลยีแบบ NMOS ข้อมูลจะถูกโปรแกรมโดยผู้ใช้เหมือนใน EPROM แต่สิ่งที่แตกต่างก็คือ ข้อมูลของ EAROM สามารถลบได้โดยทางไฟฟ้าไม่ใช่โดยการฉายแสงแบบ EPROM โดยทั่วไปจะใช้ EPROM เพราะเราสามารถหามาใช้ และทดลองได้ง่าย มีราคาถูก วงจรต่อง่าย ไม่ยุ่งยาก และสามารถเปลี่ยนแปลงโปรแกรมได้ นอกจากระบบ ที่ทำเป็นการค้าจำนวนมาก จึงจะใช้ ROM ประเภทโปรแกรมสำเร็จ
![](10000-11555/rom7.gif)
จากรูปแสดงให้เห็นส่วนประกอบพื้นฐานของ ROM ซึ่งจะมีสัญญาณต่างๆ ที่เกี่ยวข้องกับ ROM และทุกชิปที่อยู่ใน ROM มักมีการจัดแบ่งแยกหน้าที่เสมอ เช่น ขาแอดเดรสของ ROM เป็นอินพุต ส่วนขาข้อมูลจะเป็นเอาต์พุต โดยหลักการแล้ว ขาข้อมูลจะต่อเข้ากับบัสข้อมูลซึ่งเป็นบัส 2 ทาง ดังนั้นเอาต์พุตของ ROM ในส่วนขาข้อมูลนี้มักจะเป็นลอจิก 3 สถานะ ซึ่งถ้าไม่ใช้ก็จะอยู่ในสถานะ ที่มีอิมพีแดนซ์สูง (High Impedence) ลักษณะโครงสร้างภายในของข้อมูลในหน่วยความจำ สามารถดูได้จาก Data Sheet ของ ROM นั้นๆ เช่น ROM ที่ระบุเป็น 1024 8 ,2048 8 หรือ 4096 8 ตัวเลขชุดแรก (1024 ,2048 หรือ 4096) จะบอกจำนวนตำแหน่ง ที่ใช้เก็บข้อมูลภายใน ส่วนตัวเลขชุดที่สอง (8) เป็นตัวบอกจำนวนบิตของข้อมูลแบบขนาน ที่อ่านจาก ROM ในการกำหนดจำนวนเส้นของบัสแอดเดรสที่ใช้กับ ROM เราสามารถรู้ได้ด้วยสูตร
2x = จำนวนแอดเดรสที่อ้างถึง | เช่น 2x = 4096 จะได้ x = 12 ซึ่งก็คือ จำนวนเส้นบัสแอดเดรสนั่นเอง
ขั้นตอนการอ่านข้อมูลจาก ROM 1. CPU จะส่งแอดเดรสไปให้ ROM แอดเดรสดังกล่าวจะปรากฏ เป็นแอดเดรสที่ต้องการอ่าน ใน ROM โดยข้อมูลจะถูกอ่านออกมาเพียงครั้งละ 1 ไบต์เท่านั้น 2. CPU จะต้องให้ช่วงเวลาของการส่งแอดเดรสยาวนานพอประมาณ (Wait State) เรียกว่า Access Time โดยปกติต้องประมาณ 100-300 นาโนวินาที ขึ้นกับชนิดของ ROM ซึ่ง ROM จะใช้เวลานั้นในการถอดรหัสแอดเดรส ของข้อมูลที่ต้องการจะอ่านออกมาที่เอาท์พุทของ ROM ซึ่งถ้าใช้เวลาเร็วกว่านั้น ROM จะตอบสนองไม่ทัน 3. CPU จะส่งสัญญาณไปทำการเลือก ROM เรียกว่า สัญญาณ /CS (Chip Select) เพื่อบอกว่าต้องการเลือก ROM ซึ่งเป็นการส่งสัญญาณเพื่อยืนยันการเลือกชิปนั่นเอง 4. ข้อมูลจะผ่านออกทางขาข้อมูลชั่วขณะจังหวะการเลือกชิป และเมื่อขาการเลือกชิปไม่แอคตีฟ ข้อมูลก็จะเข้าสู่ภาวะที่มีอิมพีแดนซ์สูง ลักษณะดังกล่าว สามารถเขียนเป็นแผนผังเวลาออกมาได้ ดังแสดงในรูป
![](10000-11555/rrom8.jpg)
การต่อกับบัสของ Z-80 ในการต่อกับบัสของ Z-80 นั้น สามารถเชื่อมโยงกันโดยตรงได้ เพราะ Z-80 แยกบัสข้อมูล และบัสแอดเดรสออกจากกัน ดังแสดงในรูป
![](10000-11555/rrom9.jpg)
จากรูป เป็นการนำเอา 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 มาใส่ที่แอดเดรสกลุ่มล่างสุดนี้ สำหรับการกำหนดพื้นที่ของหน่วยความจำเพื่อการใช้งานนั้น สามารถแสดงได้ดังรูป
![](10000-11555/rrom10.jpg)
จากรูป เป็นการกำหนดพื้นที่ของหน่วยความจำ 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 วงจรการถอดรหัสนี้แสดงได้ดังรูป
![](10000-11555/rrom11.jpg)
ด้วยวิธีนี้จะเห็นว่า ถ้าเราเลือกแอดเดรสจาก A10 - A15 จะมีสัญญาณจาก A0 - A10 ส่งไปยังแอดเดรสของ ROM โดยตรง ส่วน A11 - A 15 จะผ่านการถอดรหัสก่อน แล้วจึงไปทำการเลือกชิปใน ROM ตามที่เราต้องการ เพื่อให้เห็นขั้นตอนการถอดรหัสชัดเจนขึ้น เราควรพิจารณาขั้นตอนการทำงานของ 74LS138 โดยเขียนออกมาเป็นตารางแอดเดรส ดังแสดงในตาราง
![](10000-11555/rrom12.jpg)
จากตารางนี้ เราจะเน้นเฉพาะส่วนของแอดเดรส 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 แบบสมบูรณ์ในกรณีนี้แสดงได้ดังรูป
![](10000-11555/rrom13.jpg)
จากรูปจะเห็นว่า สัญญาณจากซีพียูที่เข้าไปทำการควบคุม ROM จะประกอบด้วยสัญญาณ จากหลายส่วนซึ่งได้แก่ สัญญาณแอดเดรส A0-A15 โดยสัญญาณ A11-A15 จะสร้างสัญญาณใหม่เป็น สัญญาณ ROMA เพื่อเลือก ROM จากนั้นจะใช้สัญญาณ /MREQ กับสัญญาณ /RD สร้างสัญญาณ /MEMR และสร้างเป็นสัญญาณ /CE ต่อไป โดยประกอบกันเป็นขั้นตอนดังแสดงในรูป
![](10000/technology/10000-11555/rrom14.html)
การต่อ Z-80 กับ ROM อีกวิธีหนึ่ง สังเกตว่า ROM เบอร์ 2716 มีขา /CE และ /OE ซึ่งอาจจะนำขาสัญญาณเลือกเอาต์พุตนี้ มาใช้ประโยชน์ได้ การเลือก ROM เบอร์ 2716 นี้จะใช้ /CE และ /OE ในการเลือก โดยขาทั้งสอง จะเป็นลอจิก0 ในการเลือกชิป และเลือกเอาต์พุตโดยทำการเปิดเกตลอจิก 3 สถานะนั่นเอง เมื่อเป็นเช่นนี้ เราสามารถลดจำนวนเกตแบบออร์ (or gate) ลงไป 1 ตัวได้ โดยแทนที่จะใช้สัญญาณ /MEMR และสัญญาณ ROMA มา OR กัน เราก็เชื่อมต่อโดยการใช้สัญญาณ /MEMR ต่อกับสัญญาณ /OE และสัญญาณ ROMA ต่อกับสัญญาณ /CE ดังแสดงในรูป
![](10000-11555/rom15.jpg)
การต่อ ROM หลายๆชิบ หากต้องการจะต่อ ROM หลายๆชิป เช่น ROMA,ROMB,ROMC และ ROMD ก็สามารถต่อเพิ่มได้ โดยใช้สัญญาณเลือกจาก 74LS138 และ /MEMR มาเลือกโดยผ่านทาง /CE และ /OE ได้ ดังแสดงในรูป
การใช้ ROM ในชิปที่มีความจุเพิ่มขึ้น ROM ที่ใช้ในปัจจุบันมีความจุสูงขึ้นมาก EPROM บางตัวมีความจุถึง 32 กิโลไบต์ เช่น EPROM ที่ใข้กันมากในขณะนี้ ได้แก่ เบอร์ 2764 (มีความจุ 8 กิโลไบต์) เบอร์ 27128 (มีความจุ 16 กิโลไบต์) ดังนั้นหากต้องการใช้ ROM ในชิปที่มีความจุเพิ่มขึ้นก็ทำได้ โดยใช้หลักการเช่นเดียวกัน ในที่นี้ขอให้ดูการจัดขาของ EPROM เบอร์ 2732 เมื่อเปรียบเทียบกับเบอร์ 2764 ซึ่งสามารถแสดงได้ดังรูป
![](10000-11555/rrom17.jpg)
EPROM เบอร์ 2732 มีจำนวนขาเท่ากับเบอร์ 2764 ดังนั้นการเพิ่มความจุจะกระทำได้โดยง่าย และสามารถใช้ซ็อกเกต (socket) เดิมได้ทันที หรือเพียงแต่แก้ขาแอดเดรสเพียงเส้นเดียว สังเกตว่าขาที่แตกต่างกันในที่นี้คือ EPROM เบอร์ 2764 ได้เพิ่มเติมอีก 4 ขา โดยเพิ่มส่วนบนเป็น A12 และขา PGM มาอยู่ที่ขา 27 ส่วนขา 26 ไม่ใช้ ความแตกต่างนี้เองทำให้การเพิ่มเติมลายวงจรทำได้ง่ายขึ้น โดยการต่อจากขา 26 มาที่ขา 28 เพื่อต่อสาย Vcc ดังแสดงในรูป
![](10000-11555/rom18.jpg)
เมื่อจะต่อกับ EPROM เบอร์ 2732 เราสามารถขยายระบบโดยใช้ขาแอดเดรสของ EPROM เบอร์ 2732 จากแอดเดรส A0- A11ดังนั้นส่วนที่จะขยายจากซีพียู เราใช้ 74LS42 โดยนำแอดเดรส A12- A15 มาถอดรหัสดังแสดงในรูป
![](10000-11555/rrom19.jpg)
นายภัทรกิติ ไชยสิงห์ เลขที่8 ม.4/1 เสนอ อาจารย์ สมปอง ตรุวรรณณ์ โรงเรียนนารีนุกูล | | |