www./oocities.com/pontipa001

ส่งเพจ
152 :: 162::1144 ::1500 :: 1188 :: DTAC::GSM

หน้าแรก .......... ทดสอบความรู้
คอมพิวเตอร์ในชีวิตประจำวัน คอมพิวเตอร์สำหรับผู้บริหารมัลติมีเดีย ที่มาของการขยายเทคโนโลยีเครือข่ายวิทยุ ทีวี บนอินเทอร์เน็ต
ทางด่วนข้อมูล รากฐานของการศึกษาทางไกลสารสนเทศส่วนบุคคล ความจำเป็นของการใช้คอมพิวเตอร์ ระบบข้อมูลข่าวสารขององค์กร
เมื่อทางด่วนข้อมูลข่าวสารกำลังเป็นจริงจะไล่ตามจับเทคโนโลยีกันอย่างไรดี

สถาปัตยกรรมของ CPU Z-80

โครงสร้างของ CPU Z-80 มีโครงสร้างที่พัฒนามาจาก 8080 ดังนั้นในแง่โครงสร้างพื้นฐานจะ เหมือนกับ CPU 8080 แต่เนื่องจาก Z-80 มีการพัฒนามากขึ้นทางซอฟท์แวร์ และ ฮาร์ดแวร์ จึงทำให้มีรายละเอียดแตกต่างเพิ่มเติมอีกหลายประการด้วยกัน

รูปแสดง block diagram ของ CPU Z-80

โครงสร้างภายในของ Z-80 CPU ประกอบด้วย รีจิสเตอร์ภายในที่สามารถ เขียนและอ่านได้ถึง 208 บิท โดยแยกเป็นกลุ่มของรีจิสเตอร์ขนาด 8 บิท 18 รีจิสเตอร์และรีจิสเตอร์ขนาด 16 บิท อีก 4 รีจิสเตอร์

รูปภาพแสดงรีจิสเตอร์ภายในทั้งหมดของ CPU Z-80

รีจิสเตอร์หลักที่ใช้งานทั่วไป

รีจิสเตอร์ในกลุ่มแรก คือ A,F,B,C,D,E,H,L เป็นรีจิสเตอร์ขนาด 8บิท ที่ใช้งานทั่วไปโดย รีจิสเตอร์ เหล่านี้สามารถประกอบรวมกันเป็นคู่รีจิสเตอร์ได้ คือ AF,BC,DE และ HLโดยคู่ รีจิสเตอร์เหล่านี้ได้รับการใช้งานในลักษณะของรีจิสเตอร์ ขนาด 16 บิท การกระทำภายใน CPU อาจจะอาศัยเพียงรีจิสเตอร์เดียวหรือกระทำเป็นคู่รีจิสเตอร์ได้ โดยที่ A คือ Accumulator , F คือ flag , flagของ Z-80 จะมีด้วยกันทั้งหมด 6 ตัว จึงใช้เพียง 6 บิท แต่ Z-80 อาศัยการเพิ่มบิทขึ้นอีก 2 บิท และกลาย เป็นรีจิสเตอร์ F รีจิสเตอร์ F นี้ ได้รับการ set , reset การกระทำตามคำสั่งทาง คณิตศาสตร์ หรือ ลอจิกได้และเราสามารถใช้ F เหมือนรีจิสเตอร์หนึ่ง ซึ่งเมื่อรวมกับ A แล้ว จะกลายเป็นรีจิสเตอร์ขนาด 16บิทได้

รูปภาพแสดงกลุ่มรีจิสเตอร์หลักใช้งานทั่วไป

กลุ่มรีจิสเตอร์สำรอง

เป็นกลุ่มรีจิสเตอร์ที่สามารถเก็บข้อมูลได้ โดยเป็นตัวเก็บข้อมูลที่มาจากรีจิสเตอร์หลัก รีจิสเตอร์ ชุดนี้จึงมีด้วยกัน 8 ตัว คือ A', F', B', C', D', E', H' ,L' รีจิสเตอร์เหล่านี้เป็นรีจิสเตอร์ที่ใช้ในการ เก็บข้อมูลชั่วคราว ในการที่ต้องการใช้รีจิสเตอร์หลักทำงานอย่างอื่นก่อน ดังนั้นรีจิสเตอร์กลุ่ม นี้จึงไม่สามารถกระทำทางคณิตศาสตร์และลอจิกได้

รูปภาพแสดกลุ่มรีจิสเตอร์สำรอง

กลุ่มรีจิสเตอร์ที่ใช้งานเฉพาะอย่าง

โปรแกรมเคาน์เตอร์ (PC - Program counter) โปรแกรมเคาน์เตอร์เป็นรีจิสเตอร์ขนาด 16บิท ที่เป็นตัวกำหนดตำแหน่งของโปรแกรมในขณะสภาวะการกระทำการเฟทช์โดยขณะทำ การเฟทช์ค่าที่อยู่ใน

โปรแกรมเคาน์เตอร์จะไปปรากฎอยู่ที่แอดเดรสบัสเพื่อชี้ไปยังตำแหน่งในหน่วยความจำ ให้ CPU อ่านคำสั่งมาตีความหมายค่าที่อยู่ในโปรแกรมเคาน์เตอร์จะเพิ่มค่าขึ้นได้อย่างอัตโนมัติ หลังการกระทำการเฟทช์ แต่ถ้าหาก CPU กระทำคำสั่งให้ข้ามไป ยังตำแหน่งอื่น (Jump) ค่าแอดเดรส ที่จะกระโดดข้ามนั้นจะโหลดเข้ามายังโปรแกรมเคาน์เตอร์ได้อย่างอัตโนมัติ
สแตคพอยท์เตอร์ (SP - Stack pointer) เป็นรีจิสเตอร์ที่มีขนาด 16 บิทที่ใช้สำหรับชี้ไปยังแอดเดรสชั้นบนสุดของสแตคที่อยู่ใน RAM โดยส่วนของสแตคมีลักษณะโครงสร้าง เป็นหน่วยความจำ เป็นแบบเก็บทีหลังเรียกออกก่อน (last in first out) ข้อมูลในสแตค อาจได้รับการ push หรือ pop มาจาก รีจิสเตอร์ภายในCPU ลักษณะของสแตคในที่นี้ยังเป็น ส่วนช่วยในการกระทำ interrupt และการเรียก โปรแกรมย่อย กล่าวคือ ในการ interrupt ค่าของโปรแกรมเคาน์เตอร์จะได้รับการรักษาไว้ในชั้นสแตคครั้นเมื่อโปรแกรมกลับจาก interrupt ไปกระทำยังโปรแกรมหลักก็จะนำค่าจากสแตคกลับเข้ามายังโปรแกรมเคาน์เตอร์ ใหม่ ในทำนองเดียวกัน การกระโดดไปกระทำยังโปรแกรมย่อยก็เช่นเดียวกัน ดังนั้น การกระทำในรูปของ interrupt ของ โปรแกรมย่อยสามารถ ซ้อนกันได้ไม่มีสิ้นสุด
อินเดครีจิสเตอร์ (IX,IY - index register) CPU Z-80 มีอินเดครีจิสเตอร์ขนาน 16 บิท 2 ตัว แต่ละตัวใช้ประโยชน์หลักใน การ ทำหน้าที่เป็นตัวเก็บแอดเดรสฐาน (base address) เพื่อ ทำหน้าที่อ้างแอดเดรสแบบอินเดคแอดเดรสซิ่ง (index addressing)ในโหมดของอินเดคแอดเดรส ซึ่งมีข้อมูลที่ อยู่ในอินเดครีจิสเตอร์นี้จะรวมกับข้อมูลที่ติดมากับคำสั่งอีก 8 บิท เพื่อเป็นตัวกำหนดแอดเดรสให้กับ คำสั่งข้อมูลที่ติดมากับคำสั่งนี้เราเรียกว่า displacement ซึ่งจะเก็บในรูปของตัวเลข 2's complement
อินเตอรร์รัพท์เพจแอดเดรสรีจิสเตอร์ (I-Interrupt page address register) การอินเตอร์รัพท์ ของ Z-80 มี หลายโหมดและโหมดหนึ่งที่ทำให้การอินเตอร์รัพท์ของ Z-80มีประสิทธิภาพ สูง กล่าวคือ เมื่อเกิดการอินเตอร์รัพท์ในโหมดนี้ขึ้น มันสามารถอ้างแอดเดรสโดยทางอ้อม ไปกระทำโปรแกรมใน ที่ใดก็ได้ในหน่วยความจำ โดยอาศัยค่าในรีจิสเตอร์ รวมกับค่าที่ส่งมาจากอุปกรณ์เพอริเฟอรัลอีก 8 บิท ชี้ไปยังค่าในหน่วยความจำเพื่อนำค่านั้นมาโหลดเข้าใน โปรแกรมเคาวน์เตอร์เพื่อกระทำต่อไป ด้วยวิธีการนี้เราจึงสามารถกระโดดเข้าไปทำที่ส่วนใดก็ได้ในหน่วยความจำ
รีจิสเตอร์รีเฟรชหน่วยความจำ (R-memory reflesh register) การต่อ ซีพียูกับหน่วยความจำนั้น โดย ปกติจะต่อกับหน่วยความจำชนิด static ได้โดยง่าย แต่ชนิด dynamic ที่ต้องการรีเฟรช มีราคาถูกกว่ามีความหนาแน่นสูงกว่า Z-80 ให้ข้อดีกว่าประการหนึ่งคือมันสามารถให้การ รีเฟรชหน่วยความจำได้ อย่างอัตโนมัติ โดยค่าใน R รีจิสเตอร์จะเพิ่มค่าขึ้นอีก 1 ทุกครั้งที่มีการกระทำการ fetch คำสั่ง และ ข้อมูลในรีจิสเตอร์ R นี้ จะถูกส่งออกไปยังแอดเดรสบัส ในส่วนบิทที่มีนัยสำคัญต่ำกว่าจังหวะของการส่งนี้จะเป็นจังหวะเดียวกันกับที่ซีพียู ส่งสัญญาณ รีเฟรชออกมา ผู้โปรแกรมสามารถกำหนดค่าให้กับ รีจิสเตอร์ R นี้ได้แต่ค่าในรีจิสเตอร์ นี้จะเรียกใช้โดยผู้โปรแกรมทางคำสั่งโดยตรงไม่ได้
แอคคิวมูเลเตอร์ (accumulator) และแฟลก (flag) ซีพียูจะมีรีจิสเตอร์ที่ใช้เป็นหลักในการ เป็นตัว operand สำหรับกระทำทางคณิตศาสตร์และลอจิก โดยรีจิสเตอร์หลักนี้จะมีเพียง 8 บิท เรียกว่า "แอคคิวมูเลเตอร์ (accumulator)" การกระทำในส่วนของหน่วยคณิตศาสตร์ และลอจิกย่อมเกิดเงื่อนไขได้หลายอย่างที่จะต้องแสดงสถานะภาพของเงื่อนไข

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

ซึ่ง สามารถรวมกับแอคคิวมูเลเตอร์เป็น รีจิสเตอร์ขนาด 16 บิท ได้ผู้โปรแกรมยังสามารถใช้คำสั่งในการเคลื่อนย้ายข้อมูลจาก แอคคิวมูเลเตอร์ A และแฟลก Fไปเก็บไว้ใน A' และ F' ได้ เพื่อทำให้การใช้งาน ของ A และ F มีประสิทธิภาพดียิ่งขึ้น

รูปภาพแสดงกลุ่มรีจิสเตอร์ใช้งานเฉพาะอย่าง

หน่วยคำนวณทางคณิตศาสตร์และลอจิก (ALU - arithmetic and logic unit)

การประมวลผลที่สำคัญของ CPUของคอมพิวเตอร์ยังขึ้นอยู่กับหน่วยคำนวณทางคณิตศาสตร์และ ลอจิก (ALU) ส่วน ALU นี้จะนำข้อมูลซึ่งอาจจะมาจากภายนอก CPU หรือภายใน CPU ก็ได้มา ประมวลผล การ ประมวลผลในส่วน ALU ที่

สำคัญจะประกอบด้วย การบวก (add) , การลบ (subtract) , ลอจิก AND , ลอจิก OR , ลอจิก EX-OR , เปรียบเทียบ (compare) , การเลื่อนบิททางซ้ายหรือขวา ,การเพิ่มค่า (increment) , การลดค่า (decrement) , การเซ็ทบิท (set bit) , การรีเซ็ทบิท (reset bit) , การทดสอบบิท (test bit)

รูปภาพแสดงการทำงานของ ALU ภายใน

   Z-80 CPU จะทำงานในลักษณะพื้นฐาน ที่สำคัญประกอบด้วย
การเขียน - อ่านหน่วยความจำ
การเขียน - อ่านอุปกรณ์อินพุท - เอาท์พุท
การตอบสนองต่อการอินเตอร์รัพท์
การทำงานในแต่ละไซเคิลของคำสั่งประกอบด้วยส่วนการทำงานสองจังหวะที่สำคัญ คือ สภาวะเฟทช์ (fetch) และสภาวะ execute ส่วนของสภาวะ fetchจะประกอบด้วย state ย่อย ๆ หลาย state แต่ละ state จะ synchronize กับสัญญาณนาฬิกา

เนื่องจากในแต่ละคำสั่งประกอบด้วย machine cycle หลายแบบด้วยกัน แต่machine cycle ที่ใช้ ทั้งหมด สามารถสรุปออกมาเป็นแบบอย่างได้เป็น
1. ไซเคิลการ fetch (M1)
2. ไซเคิลการเขียนหรืออ่านหน่วยความจำ
3. ไซเคิลการรับส่งข้อมูลอินพุทหรือเอาท์พุท
4. ไซเคิลการต้องการใช้บัส หรือการตอบสนองการใช้บัส
5. ไซเคิลการอินเตอร์รัพท์ และการตอบสนองต่อการอินเตอร์รัพท์
6. ไซเคิลการรับอินเตอร์รัพท์แบบนอนมาสค์เคเบิ้ล (Nonmaskable interrupt)
ไซเคิลการเฟทช์ออพโค้ด (OCF - opcode fetch)
ในสภาวะ M1 นี้ เป็นภาวะเริ่มแรกของทุกคำสั่ง ในสภาวะ M1 นี้ขอให้สังเกตจากระบบ ไดอะแกรมเวลา จะเห็นสภาวะการทำงานของ CPU ได้ดี กล่าวคือเมื่อเริ่มเข้าสู่สภาวะ fetch ข้อมูลจาก program counter จะถ่ายลงไปยัง Address bus และหลังจากครึ่ง cycleของสัญญาณ นาฬิกา CPU ก็จะส่งสัญญาณ /MREQ ซึ่งเป็น สัญญาณบอกว่า CPU ต้องการติดต่อกับหน่วย ความจำและขณะเดียวกันก็ ส่งสัญญาณ /RD บอกหน่วย ความจำว่าต้องการ /RDหรืออ่านข้อมูล ในหน่วยความจำตาม Address ที่ต้องการ และเมื่อถึงขาลงของ T2 CPU จะตรวจสอบสัญญาณ ที่ทางขา /WAIT ว่าเป็น "0" หรือไม่ ถ้าไม่ก็จะทำงานต่อแบบปกติ แต่ถ้าขา /WAIT เป็น "0" CPU จะเพิ่มสภาวะการรอ (WAIT state) เกิดขึ้น การ

อ่านข้อมูลจากหน่วยความจำในที่นี้ ถ้านำเอา สัญญาณ /MREQ และ /RD เป็นตัวอ่าน ข้อมูลที่ bus ข้อมูลก็จะมีข้อมูลที่อ่านได้ในขณะที่ /MREQ OR /RD เป็น "0" ทั้งคู่ แต่ CPU จะรับการเปิด bus นี้เข้าใน IR เพียงชั่วขณะสั้นเท่านั้น(ดูรูป) เมื่อข้อมูล จาก bus เข้า IR เรียบร้อยแล้ว ก็จบสภาวะการ fetch สัญญาณที่ขา /M1 ก็จะเป็น "1" บอกว่า fetch เสร็จ แล้ว แต่อย่างไรก็ตาม สภาวะ /M1 cycle ยังไม่หมด และ CPU จะส่งสัญญาณ ทำการ refresh หน่วยความจำ ชนิดไดนามิกส์นั่นคือ ใน Address bus จะมีข้อมูลของ address ที่ ต้องการ refresh และขา /RFSH ก็จะ บอกสภาวะว่าต้องการ refresh นั่นเอง

M1 cycle ที่มี WAIT STATES

ทุก ๆ ขาลงของ T2 จะมีการตรวจสอบที่ขา /WAIT ว่าเป็น "0" หรือไม่สมมติว่าเป็น "0" CPU จะสร้าง state การ /WAIT อีก 1 cycle โดยที่ค่าสัญญาณอื่น ๆ ไว้ดังเดิม และทุก ๆ ขาลงของ Tw ก็จะตรวจสอบขา /WAIT อีกเช่นกัน ถ้าขา

/WAIT เป็น "0" ก็จะสร้าง Tw ต่อไปอีกและเป็นเช่นนี้ เรื่องไปไม่สิ้นสุด ในขณะที่ CPU สร้างสัญญาณ Tw สัญญาณขาต่าง ๆ จะยังคงค่าเดิมไว้หมด สัญญาณต่าง ๆ เหล่านี้ได้แก่ A0-A15, /MREQ, /RD, /M1 และ /RFSH ครั้นเมื่อขาลงของ Tw

CPU ตรวจสอบสัญญาณ /WAIT พบ ลอจิก "1" มันจะเริ่ม การอ่านข้อมูลจาก bus ข้อมูลและต่อท้าย ด้วย T3 และ T4 ต่อไป

ประโยชน์ของการใช้ Tw ก็ด้วยเหตุผลในการยืดความกว้างขอสัญญาณต่าง ๆ เพื่อ synchronous หรือให้ ทำงานร่วมกับอุปกรณ์ภายนอกที่ความเร็วช้าได้ เช่น ถ้าต้องการอ่านหน่วยความจำ ที่มีความเร็วต่ำ เราจำเป็น ต้องยืดสัญญาณ /RD และ /MREQ ออกเพื่อให้ส่งไปควบคุมหน่วย ความจำได้ เราก็สร้างสัญญาณ /WAIT CPU นั่นเอง

ไซเคิลการอ่านหน่วยความจำ (MR - memory read cycle) และไซเคิลการเขียนหน่วยความจำ (MW - memory write cycle)

จากรูป แสดง diagram ของการอ่านและเขียนหน่วยความจำในการอ่านและเขียนหน่วยความจำนี้ CPU จะใช้เวลาทั้งสิ้น 3 clock cycle คือ T1,T2,T3

ในการอ่านหน่วยความจำนั้น CPU จะส่งแอดเดรสที่ต้องการอ่านเข้าสู่ address bus A0-A15 ก่อน ในตอน แรกของ machine cycle นี้หลังจากั้นต่อมาก็ส่งสัญญาณ /MREQ และ /RD ออกมาและ ทุกครั้งของขาลง ในช่วงจังหวะ T2 CPU

จะตรวจสอบขา /WAIT ว่าเป็นลอจิก "0" หรือไม่ ถ้า ไม่มี CPU ก็จะทำงานตามปกติ แต่ถ้าเป็น "0" ก็จะสร้าง Tw เพิ่มขึ้น ช่วงจังหวะที่ address bus และสัญญาณ /MREQ, /RD ไปยังหน่วยความจำจะมีข้อมูลออกจากหน่วยความจำลงมาใน data bus แล้ว แต่ CPU ยังไม่อ่าน จังหวะการอ่านของ CPU จะเกิดขึ้นในจังหวะขาลงของ T3 ช่วงการ อ่านของ CPU จะใช้เวลาสั้น ๆ เพื่อป้องกันการอ่านข้อมูลผิดพลาด คือ ผิดตำแหน่งแอดเดรสหรือ อ่านได้หลายแอดเดรสนั่นเอง
ในทำนองเดียวกันในจังหวะของ /MW ก็เช่นกันประกอบด้วย T1,T2 และ T3 (กรณีไม่มี Tw) ในที่นี้ CPU จะสร้างสัญญาณ /MREQ กับ /WR ให้ active อย่างไรก็ตาม CPUจะส่งข้อมูลออก ไปรอไว้ที่ data bus ก่อน และยาวนานกว่า

pulse การเขียน (/WR) การเขียนข้อมูล (/WR) จะใช้ เวลาเพียงสั้น ๆในจังหวะที่ข้อมูลมา รออยู่ที่ bus เรียบร้อยแล้ว

ในกรณีต้องการหน่วงเวลาการทำงานใน machine cycle เหล่านี้สามารถทำได้ด้วยการสร้างขา /WAIT ให้มี ค่าเป็น "0" ในขณะขาลงของ T2 ซึ่ง CPU จะสร้าง Twขึ้นตราบเท่าที่ขา /WAIT ยังคงเป็น "0" อยู่

ไซเคิลการเขียนเอาท์พุทและอ่านอินพุท(PW-port write and PR-port read)

ในการเขียนเอาท์พุทและอ่านอินพุทก็คล้ยคลึงกับการเขียนและอ่านหน่วยความจำนั่นเอง โดยการเปลี่ยน สัญญาณ /MREQ เป็น /IORQ เท่านั้น โดย diagram การเขียนเอาท์พุทและ อ่านอินพุทแสดงดังรูป

ข้อแตกต่างที่เห็นได้ชัดเมื่อเทียบกับการเขียนและอ่านหน่วยความจำอีกข้อหนึ่งส่วนของแอดเดรส นั้น จะแสดงเบอร์พอร์ทในส่วนของ A0-A7 เท่านั้น ในการทำงานแบบปกติ CPU จะสร้าง Tw แทรกเข้ามา 1 ลูกโดยอัตโนมัติ แม้จะไม่มีการ/WAIT ทั้งนี้เพราะช่วงจังหวะ /IORQ นั้น CPU จะสร้างในขณะ T2 และCPUจะไม่สามารถ ตรวจสอบจังหวะ /WAIT ในขณะขาลงของ T2 ได้ การตรวจสอบว่า /WAITจะเกิดขึ้น ในจังหวะของ Tw แทนนั่นเอง และถ้าหากมีการ /WAIT CPUก็จะสร้างสัญญาณ Tw ต่อมาอีก

ไซเคิลการขอใช้บัสและการตอบสนองการให้ใช้บัส (BUS REQUEST and ACKNOWLEDGE CYCLE)

จากรูป เป็น diagram เวลาของการขอใช้บัสและการตอบสนองต่อการใช้บัส การใช้บัสนั้นจะ ใช้สัญญาณ ที่ส่งเข้ามาขอทางขา /BUSRQ CPUจะทำการตรวจสอบขา /BUSRQ ในขณะ สัญญาณนาฬิกากำลังจะ เปลี่ยนจาก "0" ไปเป็น "1" ในขณะสัญญาณ state สุดท้ายของทุก ๆ Mcycle ถ้า /BUSRQ แอคตีฟ CPU จะทำการเซท address bus และ data bus ให้อยู่ในสถานะ ไตรเสตทในสัญญาณนาฬิกาลูกต่อมา และ CPU ก็จะส่งสัญญาณตอบรับการขอใช้บัส (/BUSAK) เมื่อ CPU ควบคุมไตรสเตท แล้วอุปกรณ์ภายนอกก็จะใช้บัสได้ซึ่งอาจจะเป็นกรรมวิธีการ DMA(direct memory access) หรือ การติดต่อระหว่างอุปกรณ์ I/O กับหน่วยความจำโดยตรงได้ กรณีเช่นนี้ทำให้การถ่ายข้อมูลเป็นไปได้เร็วกว่าการใช้ CPU ควบคุมโดยตรงการถ่ายเทข้อมูล ในกรณีนี้มักใช้สำหรับการถ่ายข้อมูลเป็นจำนวนมาก ขณะมีการขอใช้บัสนี้ CPU จะตรวจสอบขา /BUSRQ ทุก ๆ สเตท เช่นกัน และถ้า /BUSRQ เป็น "1" เมื่อใดในสัญญาณนาฬิกาสเตทต่อไปก็จะส่ง /BUSAK = "1" เพื่อบอกเลิกการใช้บัส และ การควบคุมไตรสเตทหมดสิ้นภาระกิจ

ในขณะการใช้บัสในกรณีนี้ CPU ไม่สามารถตอบสนองต่อการอินเตอร์รัพท์ได้ไม่ว่าจะเป็นการ อินเตอร์รัพท์ แบบ /NMI หรือ /INT ก็ตาม

ไซเคิลการรับสัญญาณอินเตอร์รัพท์และการตอบสนองต่อสัญญาณอินเตอร์รัพท์ (Interrupt request and acknowledge cycle)

จากรูป เป็นการแสดง diagram เวลาของการอินเตอร์รัพท์ CPU, CPU จะทำกรตรวจสอบสัญญาณ INT ทุก ๆ pulse สัญญาณนาฬิกาลูกสุดท้ายของทุกคำสั่งที่กระทำแต่อย่างไรก็ตามการตรวจสอบ นี้จะไม่เกิดผลหาก software ได้สั่ง DI

(Disable interrupt) ซึ่งจะทำให้อินเตอร์รัพท์ flip-flop ภาย ในไม่ได้รับการเซท นอกจากนี้ สัญญาณ /BUSRQ แอคตีฟ การอินเตอร์รัพท์ก็ไม่ได้รับการตอบสนอง เช่นกัน เมื่อการตอบสนองต่อ /INT เกิดขึ้น CPU จะสร้างสถานะพิเศษใน /M1

ต่อมา ใน สถานะพิเศษของ /M1 นี้ /IORQ จะแอคตีฟแทน /MREQ เพื่อเป็นการตอบสนองต่อการอินเตอร์- รัพท์และตอนท้ายของ /IORQ CPU จะทำการอ่านข้อมูล 8 บิท เป็น เวคเตอร์สำหรับการ อินเตอร์รัพท์จาก data bus สังเกตว่าใน

กรณีนี้ CPU จะสร้างสัญญาณ Tw สองสเตทขึ้น อย่าง อัตโนมัติ การสร้าง Tw ขึ้นมาก็เพื่อชลอเวลาให้อุปกรณ์ภายนอกตรวจสอบตัวอุปกรณ์ที่สร้าง อินเตอร์รัพท์ และ จัดลำดับความ สำคัญ (priority) ของสัญญาณที่อินเตอร์รัพท์

เรายังสามารถเพิ่มสเตทการ /WAIT ขึ้นอีกได้เพื่อให้ CPU รออุปกรณ์ที่จะส่งเวคเตอร์ ของการ อินเตอร์รัพท์ทาง data bus

ไซเคิลการตอบสนองต่อการอินเตอร์รัพท์แบบนอนมาสเคเบิ้ลอินเตอร์รัพท์ (Nonmaskable interrupt response)

จากรูป เป็น diagram เวลาของการตอบสนองต่อการอินเตอร์รัพท์แบบ nonmaskable เมื่อถึง pulse ของสัญญาณนาฬิกาลูกสุดท้ายก่อนการกระทำการจบคำสั่ง แต่ละคำสั่ง CPUจะทำการตรวจสอบ ขา /NMI และถ้า /NMI มีค่าแอคตีฟ (=0) CPU ก็จะ latch ไว้แล้วตอบสนองต่อการอินเตอร์รัพท์ ทันที การอินเตอร์รัพท์ด้วย

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

CPU จะส่งข้อมูล เดิมที่อยู่ใน program counter ไปเก็บไว้ที่ stack แล้วเซทค่า program counter เป็นค่า 0066H เพื่อ กระทำในส่วนของโปรแกรมย่อยที่ตำแหน่ง 0066H

Z-80 ซีพียูเป็นไอชีไมโครโปรเซสเซอร์ที่มีขาเพียง 40 ขาโดยหลักการแล้ว Z-80 เป็น ซีพียู ได้โดย สมบูรณ์กล่าวคือZ-80ไม่ต้องประกอบกับอุปกรณ์ประกอบอื่นที่จะแยกการทำงานเพื่อ รวมเป็นซีพียูส่วนของสัญญาณจะประกอยด้วยบัสแอดเดรส บัสข้อมูลและสัญญาณควบคุม การจัดวางขา แสดงได้ดังรูป

รายละเอียดของขาต่าง ๆ แสดงได้ดังนี้

A0 - A15
บัสแอดเดรส สัญญาณที่ออกมาจากขาไอซีเหล่านี้จะให้แอคตีฟขณะ high โดยขาเหล่านี้เป็น เอาท์พุทแบบไตรสเตท บัสแอดเดรสมีด้วยกันทั้งหมด16สายเพื่อให้ซีพียูติดต่อกับหน่วย ความจำได้มากถึง 216 = 64 K ไบท์นอกจากนี้ส่วนของ

แอดเดรสยังเป็นตัวกำหนดเบอร์ พอร์ทของอุปกรณ์อินพุท-เอาท์พุทโดยขณะที่ซีพียูกระทำคำสั่งเกี่ยวกับอินพุทหรือเอาท์พุท ค่าของแอดเดรสบัสใน 8 บิทล่าง (A0 - A7) จะแสดงค่าเบอร์พอร์ทดังนั้นเราจึงมีอุปกรณ์อินพุทหรือเอาท์พุทได้ ทั้งหมด 28 = 256 พอร์ท และในขณะช่วงเวลารีเฟทชโดยเมื่อสัญญาณรีเฟรช ปรากฎขึ้นที่ขารีเฟรช (/RFSH) ค่าในแอดเดรสบัส A0 - A7จะแสดงค่าแอดเดรสของหน่วย ความจำที่จะได้รับการกระทำการรีเฟรช
D0 - D7
บัสข้อมูล (data bus) เป็นลักษณะบัสแบบสองทิศทาง Z-80 ซีพียูมีบัสข้อมูล 8 เส้น บัสข้อมูล เป็นเส้นทางผ่านของข้อมูลระหว่าง ซีพียูกับหน่วยความจำซีพียู กับอุปกรณ์อินพุท-เอาพุทหรือการติดต่อระหว่างอุปกรณ์อินพุท-เอาท์พุทกับหน่วยความจำ
/M1
(machine cycle one) มีลักษณะเป็นแอคตีฟที่ลอจิก "0" /M1เป็นส่วนที่จะบอกให้ทราบว่าขณะนี้ ซีพียูกำลังอยู่ในสภาวะเฟทช์ ในขณะที่ซีพียูเฟทช์คำสั่งที่มีออพโค้ดสองไบท์ ส่วนของ /M1 จะสร้างขี้นขณะเฟทช์ในแต่ละไบท์ลักษณะของคำสั่งที่มีออพโค้ด สองไบท์จะขึ้นต้นด้วย CBH, DDH, EDH, FDH (H ต่อท้ายหมายถึงตัวเลขฐานสิบหก) นอกจากนี้ /M1 ยังสร้างสัญญาณร่วม กับ/IORQ เพื่อบอกสถานะการตอบรับการอินเตอร์รัพท์
/MREQ
(memory request) เป็นลักษณะไตรสเตท ให้ลอจิกแอคตีฟที่ "0" เป็นสายสัญญาณ ที่บอกให้ทราบ ว่าซีพียูต้องการเขียนหรืออ่านหน่วยความจำตามแอดเดรสที่ปรากฏอยู่ในแอดเดรสบัส
/IOREQ
(input output request) เป็นเอาท์พุทลักษณะไตรสเตทให้ลอจิกแอคตีฟที่ "0" เป็นสัญญาณที่บอก ให้ทราบว่า ซีพียูต้องการติดต่อ กับอุปกรณ์อินพุท-เอาท์พุท โดยแอดเดรสบัส 8 บิทล่างจะให้แสดงค่าเบอร์พอร์ทส่วนบัสข้อมูลจะแสดงข้อมูลที่จะมีการส่งถ่าย ระหว่างซีพียูกับ I/O นอกจากนี้ /IORQ ถ้าเกิดขึ้นพร้อมกับสัญญาณ /M1 เป็นตัวบอกถึงสถานะที่ซีพียูกำลังตอบสนอง ผลการอินเตอร์รัพท์ โดยขณะนี้ส่วนของบัสข้อมูลจะมีการส่งผ่านเข้ามาด้วยค่าของอินเตอร์รัพท์เวคเตอร์
/RD
(memory read) เป็นเอาท์พุทที่ไตรสเตทและแอคตีฟขณะลอจิก "0" /RD เป็นตัวบอกว่าขณะนี้ ซีพียูต้องการอ่านข้อมูลจากหน่วยความจำหรืออุปกรณ์ I/O
/WR
(memory write) เป็นขาเอาท์พุทแบบไตรสเตท และแอคตีฟขณะลอจิก "0" /WR
เป็นสัญญาณบอก ว่าซีพียูต้องการเขียนข้อมูลโดยจะเขียนข้อมูลในตำแหน่งที่แอดเดรสบัสกำหนดขึ้นอาจเป็นหน่วยความจำหรืออุปกรณ์ I/O ก็ได้
/RFSH
(refesh) เป็นขาเอาท์พุทแอคตีฟขณะลอจิก "0" /RFSH เป็นสัญญาณที่จะบอกให้ทราบว่าสัญญาณในแอดเดรสบัส ในส่วน A0 - A6 เป็นแอดเดรสที่จะใช้ในการรีเฟรชหน่วยความจำ ชนิดไดนามิกส์ ส่วนบิท A0 จะเป็น "0" ส่วนบิท A8 - A15 จะแสดงค่าของรีจีสเตอร์
/HALT (halt state) เป็นเอาท์พุทที่แอคตีฟด้วยลอจิก "0" สัญญาณ /HALTจะแสดงเมื่อซีพียูได้กระทำ คำสั่ง HALT และจะหยุดรอจนกว่าจะมีการอินเตอร์รัพท์หรือรีเซท ขณะที่อยู่ในช่วง HALT ซีพียูจะ เสมือนกำลังกระทำคำสั่ง NOP (no

operation) เพื่อให้เกิดไซเคิลในการทำงานเพื่อ ส่งสัญญาณไปกระทำการรีเฟรชหน่วยความจำชนิดไดนามิกส์
/WAIT
(wait) เป็นขาอินพุท จะแอคตีฟด้วยลอจิก "0" /WAITเป็นตัวกำหนดแสดงเพื่อบอกซีพียู ให้ซีพียูหยุดรอ ในกรณีที่อุปกรณ์ อินพุท-เอาท์พุท หรือหน่วยความจำไม่สามารถรับหรือ ส่งข้อมูลได้ทัน /WAIT จะเป็นตัวทำให้ซีพียู ซิงค์ได้พอดีกับ

อุปกรณ์อินพุทเอาท์พุทที่ทำ งานด้วยความเร็วช้า ๆ
/INT
(interrupt request) เป็นขาอินพุท แอคตีฟด้วยลอจิก "0" /INT เป็นสัญญาณที่สร้างขึ้นมาจาก อุปกรณ์อินพุทเอาท์พุทเพื่อต้องการที่จะอินเตอร์รัพท์ซีพียู ซีพียูจะทำการตรวจสอบสัญญาณ นี้ทุก ๆ ครั้งที่จบการกระทำแต่ละคำสั่งการตอบสนองของตัวการอินเตอร์รัพท์สามารถ ควบคุมได้ด้วย ซอฟท์แวร์ด้วยการ

เซทค่าอินเตอร์รัพท์ฟลิบฟลอบ (IFF) การตอบสนองอินเตอร์รัพท์จะเกิดได้ ยังต้องให้ /BUSRQ ไม่แอคตีฟ เมื่อซีพียูตอบสนองต่อการ อินเตอร์รัพท์ ซีพียูจะสร้างสัญญาณตอบด้วยการสร้างสัญญาณ /IORQ ระหว่างช่วงเวลา /M1

การตอบสนอง ต่อการอินเตอร์รัพท์มีแยกแยะได้ 3 แบบ ซึ่งจะอธิบายในหัวข้อการอินเตอร์รัพท์
/NMI
(nonmaskable interrupt) เป็นขาอินพุทที่จะทริกบอกซีพียูในขณะขอบพัลซ์ ขาลงการอินเตอร์รัพท์ ด้วยวิธีนี้ ซีพียูจะให้ความสำคัญสูงกว่า /INTกล่าวคือ มันจะตอบสนองและกระทำ ทันทีด้วย การเริ่มเอ็กซีคิ้ว คำสั่งในตำแหน่ง 0066H

โดยอัตโนมัติ การกระโดดไปกระทำในกรณีนี้ ซีพียูจะเก็บค่าโปรแกรมเคาร์เตอร์ เดิมไว้ในสแตค เพื่อจะได้กลับไปทำงานเดิม เมื่อเสร็จสิ้น การอินเตอร์รัพท์ได้
/RESET
(reset) เป็นขาอินพุทที่แอคตีฟด้วยลอจิก "0" การรีเซทในกรณีนี้จะมีผลดังนี้
1. ค่าของ PC มีค่าเป็น "0"
2. IFF จะได้รับการ Disable
3. รีจิสเตอร์ R จะมีค่า 00H
4. จะมีการเซทอินเตอร์รพท์โหมดมาอยู่ที่โหมด 0
ระหว่างการรีเซทสายแอดเดรสบัสและบัสข้อมูลจะได้รับการกระทำให้มีค่าอิมพีแดนสูง เพื่อแยกออกจากซีพียู ส่วนสายสัญญาณ ควบคุมจะได้รับการทำให้ เป็นสัญญาณที่ไม่แอคตีฟ การรีเฟรชจะไม่เกิดขึ้น
/BUSRQ
(bus request) เป็นขาอินพุทที่แอคตีฟด้วยลอจิก "0" /BUSRQ เป็นสัญญาณที่ส่งบอกกับซีพียู เพื่อต้องการให้ซีพียูควยคุมบัสกล่าวคือต้องการให้ซีพียูทำให้บัสแอดเดรสและบัสข้อมูลอยู่ ในสถานะอิมพีแดนข์สูง คือต้องการแยกซีพียูออกจากบัสนั้นเอง
/BUSAK
(bus acknowledge) เป็นขาเอาท์พุท แอคตีฟขณะลอจิก "0" /BUSAK เป็นสัญญาณตอบจากซีพียูว่า ซีพียูได้แยกตัวเองออกจากแอดเดรสบัสและบัสข้อมูลเรียบร้อยแล้ว
CLK(clock) สัญญาณนาฬิกาที่จะป้อนเข้าระบบ

Z-80 มีขาอินพุทสำหรับอินเตอร์รัพท์ได้ 2 ขา คือ อินเตอร์รัพท์แบบมาสเคเบิ้ล (INT) และแบบนอนมาสเคเบิ้ล (MNI)สำหรับการอินเตอร์รัพท์แบบมาสเคเบิ้ล สามารถให้ CPU กระโดดข้ามไปทำงานที่ส่วนต่าง ๆ ของโปรแกรมได้ส่วนการ อินเตอร์รัพท์แบบนอนมาสเตเบิ้ลนั้นแตกต่างกับแบบมาสเคเบิ้ลคือการอินเตอร์รัพท์แบบนี้จะเกิดขึ้นทันทีโดยที่ผู้ใช้ไม่สามารถหยุดยั้งหรือดิสเอเบิ้ลได้ด้วยชอฟท์แวร์
นอนมาสเคเบิ้ลอินเตอร์รัพท์(NON-MASKABLE INTERRUPT) การอินเตอร์รัพท์จะป้อนเข้าทางขา NMI ของซีพียูโดยที่ลอจิกของการแอคตีฟจะเกิดขึ้นด้วยลอจิก "0" เมื่อซีพียูรับสัญญาณนี้แล้ว ซีพียูจะไม่กระทำคำสั่งถัด

ไป โดยจะตอบสนองต่อการอินเตอร์รัพท์โดยการเปลี่ยนข้อมูลให้ PC เป็น 0066H เพื่อให้ภาวะการเฟทช์ครั้งต่อไปเกิดขึ้นที่แอดเดรสนี้ การตอบสนองในกรณีของนอนมาสเคเบิ้ลนี้ ซีพียูถือว่าเป็นส่วนสำคัญที่สุดที่จะต้องกระทำโดยคำสั่งทางซอฟท์แวร์หรือขบวนการอื่นใดไม่สามารถเข้ามาหยุดยั้งการอินเตอร์รัพท์ได้ การอินเตอร์รัพท์ด้วยวิธีนี้จึงมักใช้ในกรณีว่ามีเหตุการณ์สำคัญที่สุด จากหลักการทั่วไปของการอินเตอร์รัพท์ ค่าเดิมของ PC ที่ซีพียูจะกระทำต่อไปในโปรแกรมหลักจะได้รับการเก็บรักษาไว้ในสแตคและการกลับคืนสู่โปรแกรมหลักเดิมนั้นกระทำได้ด้วยคำสั่ง RETN (Return from Nonmaskable)
การอินเตอร์รัพท์แบบมาสเคเบิ้ล (Maskable Interrupt) ในการอินเตอร์รัพท์แบบนี้ ผู้ใช้ต้องอินเตอร์รัพท์ผ่านเข้ามาทางขา INT ของซีพียู เมื่อซีพียูได้รับสัญญาณนี้แล้วซีพียูจะตรวจสอบสถานะของตัวเองว่าจะตอบสนองต่อการอินเตอร์รัพท์หรือไม่ การที่จะตอบสนองหรือไม่สามารถโปรแกรมได้ด้วยซอฟท์แวร์ ดังนั้นผู้โปรแกรมจึงสามารถกำหนดสภาวะการอินเตอร์รัพท์ให้ได้ รับการตอบสนองตรงส่วนใดของโปรแกรมได้การอินเตอร์รัพท์ด้วยวิธีนี้สามารถแยกแยะการอินเตอร์รัพท์ออกเป็น 3 โหมด ซึ่งการแยกโหมดก็ทำได้ด้วยการใช้ซอฟท์แวร์หรือคำสั่งนั่นเอง โดยแยกเป็นโหมด 0 (IM0), โหมด 1 (IM1), โหมด 2 (IM2)
การอินเตอร์รัพท์โหมด 0 ในโหมดนี้ผู้ออกแบบซีพียู Z-80 ได้ออกแบบมาเพื่อให้ Z-80 ทำการตอบสนองต่อสัญญาณอินเตอร์รัพท์เหมือน 8080 ทุกประการ กล่าวคือเมื่อมีการอินเตอร์รัพท์ เกิดขึ้นและโปรแกรมทางซอฟท์แวร์ได้เซทโหมดการรับอินเตอร์รัพท์เป็นโหมด 0 (IM0) และอีนาเบิ้ลการอินเตอร์รัพท์ไว้การทำงานของซีพียูจะหยุดการเฟทช์คำสั่ง ถัดไป แต่จะตอบรับการอินเตอร์รัพท์ด้วยการส่งสัญญาณตอบรับด้วย /M1 กับ /IORQ อ่านข้อมูล 1 ไบท์ เข้ามาทางบัสข้อมูล ข้อมูล 1 ไบท์นี้ได้รับการส่งมาจาก อุปกรณ์ I/O ที่อินเตอร์รัพท์มา เมื่อซีพียูอ่านข้อมูลไบท์นี้มาซีพียูจะถือว่าเป็นออพโค้ดทันทีและจะตีความหมายในการทำงาน คำสั่งขนาด 1 ไบท์ที่เหมาะ

ในการใช้ในการอินเตอร์รัพท์ก็คือคำสั่ง RST เมื่อซีพียูเอ็กซีคิ้วคำสั่ง RSTซีพียูจะเก็บข้อมูลเดิมใน PC ไว้ที่สแตค แล้วเปลี่ยนค่า PC ใหม่ตามลักษณะของการ RST นั้น ๆดังนั้นซีพียูจะกระโดดข้ามไปทำงานตามที่ต้องการของการอินเตอร์รัพท์ได้

การตอบสนองต่อการอินเตอร์รัพท์ด้วยการส่งสัญญาณ /M1 และ /IORQ ทำการเฟทช์ข้อมูลจาก I/O มาเอ็กซีคิ้วนี้อาจทำได้โดยการให้ I/O ส่งคำสั่งอื่นที่ไม่ใช่คำสั่ง RST (คำสั่งไบท์เดียว) แต่เป็น คำสั่งหลายไบท์ เช่นคำสั่ง CALL

ซึ่งเป็นคำสั่งขนาด 3 ไบท์ โดย I/O ส่งข้อมูลขณะตอบรับการ อินเตอร์รัพท์(/M1+/IORQ) ด้วยข้อความ CDH (CALL) เมื่อซีพียูเอ็กซีคิ้วคำสั่งนี้ก็จะทราบว่าเป็นคำสั่ง CALL ซึ่งยังต้องการข้อมูลเพิ่มอีก 2 ไบท์ ซีพียูจะสร้างแมชีน ไซเคิลต่อไปในการอ่านหน่วยความจำเหมือนกระทำคำสั่ง CALL จริง ๆในการนี้เราจะต้องใช้วงจรทางฮาร์ดแวร์ประกอบเพื่อให้ I/O ส่งข้อมูลอีก 2 ไบท์ ตามไปให้ได้ซึ่งการอินเตอร์รัพท์ด้วยวิธีนี้อาจกำหนดได้ด้วยเทคนิคที่แตกต่างกันตามการออกแบบของแต่ละบุคคล
บริษัทอินเทลได้ออกแบบไอซีที่ใช้ในการควบคุมการอินเตอร์รัพท์และจัดลำดับความสำคัญในการอินเตอร์รัพท์ขึ้น เช่น IC เบอร์ 8214 การใช้เวลาในการตอบสนองต่อการอินเตอร์รัพท์ด้วยการ ส่ง /M1 และ /IORQ นี้จะกระทำเหมือนการกระทำ

ในช่วงเวลาแมชีนไซเคิล /M1 แต่ซีพียูจะใช้เวลายาวนานกว่าแมชีนไซเคิล /M1โดยปกติ โดยการเพิ่ม Tw ขึ้นก็เพื่อให้เวลาแก่อุปกรณ์ I/Oในการกระทำขบวนการเดซี่เชน (Daisy Chain) ในการจัดลำดับความสำคัญของการอินเตอร์รัพท์

โดยปกติการเซทให้อยู่ในโหมดนี้กระทำได้ด้วยการสั่งทางซอฟท์แวร์ด้วยคำสั่ง IM1และการกำหนดให้รับการอินเตอร์รัพท์ได้หรือไม่กระทำได้ด้วยคำสั่ง EI และ DIและเพื่อให้การทำงานเหมือนอยู่ในโหมดของ 8080 ทุกประการ ดังนั้นหลังจากการรีเซทซีพียู ซีพียูจะเซทตัวเองให้อยู่ในโหมด 0 นี้โดยอัตโนมัติ
การอินเตอร์รัพท์โหมด 1ในโหมดนี้ผู้โปรแกรมสามารถกำหนดได้ด้วยคำสั่ง IM1 การอินเตอร์รัพท์ในโหมด

นี้จะกระทำเหมือนกันกับนอนมาสเคเบิ้ลอินเตอร์รัพท์ทุกประการแต่จะแตกต่างกันก็เพียงการรีสตาร์ทมาที่ตำแหน่ง 0038H (กรณีนอนมาสเคเบิ้ลไปกระทำที่ 0066H) และจำนวนคาบเวลาที่ใช้ในโหมด 1 นี้มีมากกว่าในนอนมาสเคเบิ้ลทั้งนี้

เพราะในโหมดนี้ซีพียูต้องเพิ่ม Tw ขึ้นอีก 2 สเตทการอินเตอร์รัพท์ในโหมดนี้สามารถดิสเอเบิ้ลได้ด้วยซอฟแวร์
การอินเตอร์รัพท์โหมด 2 ในโหมดนี้ทำให้ Z-80 มีขีดความสามารถเกี่ยวกับการอินเตอร์รัพท์สูงขึ้นมาก

การอินเตอร์รัพท์ในโหมดนี้กำหนดได้ด้วยคำสั่ง IM2 และการจะให้ซีพียูตอบสนองหรือไม่ก็ยังใช้คำสั่งโปรแกรมได้เช่นกันโดยใช้คำสั่ง EI และ DI การกระโดดไปยังโปรแกรมอื่นในขณะเมื่อซีพียูตอบสนองต่อการอินเตอร์รัพท์ ในกรณีนี้จะไปที่ใดก็ได้ โดยใช้แอดเดรสในการกระโดดนี้ได้ถึง 16 บิท ซึ่งทำให้การอินเตอร์รัพท์ทำได้สะดวกและรวดเร็วขึ้นอีกมาก

กรรมวิธีการตอบสนองต่อการอินเตอร์รัพท์ในกรณีนี้คือ เมื่อมีสัญญาณ /INT เข้ามาและซีพียูตรวจสอบได้ในตอนสุดท้ายของคำสั่ง ซีพียูจะตอบสนองด้วยการส่ง /M1 กับ /IORQ ออกไป สัญญาณ /M1 กับ /IORQ จะเป็นตัวบอกอุปกรณ์ที่

ส่ง /INT มาให้ส่งข้อมูลขนาด 1 ไบท์เข้าทางบัสข้อมูล สำหรับในโหมดนี้ข้อมูลที่ส่งจาก I/O ขนาด 1 ไบท์ที่เข้าทางบัสข้อมูลนี้ซีพียูถือว่าเป็น เวคเตอร์ของ การอินเตอร์รัพท์ โดยข้อมูลในบิท D0 จะต้องเป็น "0" ส่วนบิทอื่นจะเป็นอะไรก็ได้ซีพียูจะนำเวคเตอร์นี้ไปเป็นข้อมูลแอดเดรสไบท์ที่มีนัยสำคัญต่ำและข้อมูลจากรีจิสเตอร์ 1 ภายในซีพียูเป็นข้อมูลไบท์ที่มีนัยสำคัญสูง เรียกหาไปยังข้อมูลในหน่วยความจำเพื่ออ่านข้อมูลในหน่วยความจำ 2 ไบท์ติดกันนั้นมาโหลดใส่ PC หรือเป็นการอ้างแอดเดรสให้ PC แบบโดยทางอ้อมนั่นเอง


สำหรับกรณีนี้จะเห็นว่าเราสามารถเซทค่าในรีจิสเตอร์ I ให้เป็นอะไรก็ได้และ I/O จะส่งข้อมูลเวคเตอร์มาประกอบรวมเพื่อบอกถึงค่าตารางในหน่วยความจำที่ต้องการ ด้วยวิธีการเช่นนี้จะทำให้การกระโดดไปยังโปรแกรมย่อยเกิดขึ้นที่ใดก็ได้
อุปกรณ์ไอซีที่ทำงานร่วมโดยใช้อินเตอร์รัพท์โหมดนี้มีหลายเบอร์ด้วยกัน เช่น Z-80PIO, Z-80CTC, Z-80SIO ฯลฯซึ่งอุปกรณ์อินเตอร์เฟสเหล่านี้สามารถส่งเวคเตอร์ให้กับซีพียูได้อย่างมีประสิทธิภาพ
การอินเตอร์รัพท์ในโหมดนี้ซีพียูต้องการเวลาถึง 19 สเตท โดยใช้ 7 สเตทใน
การเฟทช์เวคเตอร์ 6 สเตทในการเก็บข้อมูล PC เดิมในสเตท และ 6 เป็นการอ่านข้อมูลจากหน่วยความจำมายัง PC
การอีนาเบิ้ลและดิสเอเบิ้ลอินเตอร์รัพทสถานะภาพต่อการตอบสนองอินเตอร์รัพท์ ซีพียูจะทำการตรวจสอบที่ IFF หรือ

อินเตอร์รัพท์ฟลิบฟลอบในกรณีของ Z-80 จะมีฟลิบฟลอบที่แสดงสถานะภาพ ในการอินเตอร์รัพท์อยู่ 2 บิท คือ IFF1 และ IFF2 โดยทั้งสองบิทนี้จะได้รับการเกี่ยวข้องด้วยจากการกระทำของซีพียูหรือของผู้โปรแกรมโดยโปรแกรมคำสั่ง

เข้ามาเซทหรือรีเซทฟลิบฟลอบ โดยหลักการ IFF1ทำหน้าที่เป็นตัวกำหนดการอีนาเบิ้ลหรือดิสเอเบิ้ลการอินเตอร์-

รัพท์ โดยที่ IFF2 จะมีหน้าที่หลักในการเก็บข้อมูลชั่วคราวของ IFF1 ในขณะที่มีการ รีเซทซีพียูทางขารีเซท ทั้ง IFF1 และ IFF2 จะได้รับการรีเซทไปด้วย การแสดงสถานะ "0" ของ IFF1 จะเป็นการดิสเอเบิ้ลการอินเตอร์รัพท์ กล่าวคือ IFF1

= "0" ซีพียูยะไม่รับรู้ต่อการอินเตอร์รัพท์ที่เข้ามาทาง INT การเซท IFF สามารถกระทำได้ด้วยคำสั่ง EI โดยสถานะภาพของ IFF1 และ IFF2 ที่จะเปลี่ยนแปลงเนื่องจากการกระทำต่าง ๆ สรุปได้ดังตารางข้างล่างนี้

จากตารางพอสรุปได้ว่า การกำหนดอีนาเบิ้ลจะต้องทำการเซทฟลิบฟลอบ IFF1หรือกล่าวอีกนัยหนึ่ง การยอมให้เกิดการอินเตอร์รัพท์ได้ก็ต่อเมื่อซีพียูตรวจสอบ IFF1 ว่าอยู่ในสภาวะอีนาเบิ้ลหรือไม่การตรวจสอบสภาวะอีนาเบิ้ลว่าได้รับการอีนาเบิ้ลหรือดิสเอเบิ้ล ในบางกรณีทำได้โดยการตรวจสอบทางบิทพาริตี้นั่นคือ การกระทำคำสั่ง LD A, I และ LD A, R จะมีผลให้ค่าของ IFF2 ไปเก็บยังพาริตี้แฟลก
เมื่อมีการอินเตอร์รัพท์แบบ NMI ขึ้นจะเกิดสภาวะดิสเอเบิ้ลทันทีที่ IFF1 กล่าวคือมันจะได้ รับการรีเซท นั่นคือระหว่างการอินเตอร์รัพท์แบบ NMI นี้ การอินเตอร์รัพท์แบบอื่นจะเข้ามาอีกไม่ได้ ซีพียูจะไม่รับรู้ทั้งสิ้นสถานะเดิมก่อนการ อินเตอร์รัพท์แบบ NMI (สถานะการดิสเอเบิ้ลหรืออีนาเบิ้ล)จะได้รับการเก็บรักษาไว้ที่ IFF2 ซึ่งระหว่างนี้จะได้รับการตรวจสอบได้เช่นกันว่า ก่อนการเข้าไปสู่โหมด NMI สภาวะการเป็นอย่างไร และเมื่อกลับเข้าโปรแกรมหลักด้วยคำสั่ง RETN จะทำให้สถานะเดิมเก็บรักษาไว้ใน IFF1 ใหม่การตอบสนองต่อ /INT ก็จะทำให้ IFF1 และ IFF2 ได้รับการรีเซทเช่นกัน ดังนั้นเมื่อมีการ INT สัญญาณ /INT ครั้งต่อไปจะไม่สามารถได้รับการตอบ

สนองจนกว่าจะมีคำสั่ง EI /INT จึงจะได้รับการตอบสนองนั่นเอง ส่วนการเอ็กซีคิ้วคำสั่ง RETI จะไม่มีผลทำให้ IFF1 และ IFF2 เกิดการเปลี่ยนแปลง
ไดอะแกรมเวลาสำหรับการตอบสนองต่อการอินเตอร์รัพท์ของซีพียการสนองต่อการอินเตอร์รัพท์ของซีพียูมีลักษณะสำคัญที่เราจะต้องพิจารณาในแง่ของไดอะแกรมเวลา เพื่อการเชื่อมต่อกับอุปกรณ์ I/O ในแง่ทางฮาร์ดแวร์จะได้เป็นไปอย่างถูกต้อง
สรุปการตอบสนองจะเกิดตามลำดับดังนี้
1. อุปกรณ์ I/O ส่งสัญญาณอินเตอร์รัพท์มา โดยการทำให้ขา /INT อยู่ในลอจิก "0"
2. CPU จะตอบสนองต่อการอินเตอร์รัพท์ด้วยการส่ง /M1 ลอจิก "0" ก่อนเพื่อให้อุปกรณ์ I/O เตรียมจัดการเกี่ยวกับขบวนการจัดลำดับก่อน แลัว /IORQจากซีพียูจึงส่งตามมา การให้ /IORQ มาทีหลัง /M1ก็เนื่องจากให้ช่วงเวลาดีเลย์ระหว่างนี้เป็นตัวกำหนด IEI และ IEO ของการกระทำเดซีเชน เมื่อ /IORQ ออกไปที่ I/O

และถ้า IEI ของอุปกรณ์นั้นเป็นลอจิก "1" ตัว I/O นั้นก็จะส่งเวคเตอร์เข้ามาทางบัสข้อมูล และซีพียูจะใช้ /IORQ และ /M1 เป็นพัลซ์สั่งอ่านเข้าทางบัสข้อมูลและการทำเดซีเชน อุปกรณ์ที่ส่งอินเตอร์รัพท์ได้ จะให้ IEO เป็นลอจิก "0" เพื่อป้อน

เข้า IEI ของตัวอื่นเป็นการบล็อกการส่งเวคเตอร์จาก I/O ตัวอี่น
3. การเคลียร์อินเตอร์รัพท์ โดยปกติอุปกรณ์I/O จะแอคตีฟในการส่งอินเตอร์รัพท์ ได้ต้องให้ IEI = 1 และ IEO = 0 ดังนั้นเมื่อเสร็จสิ้นการกระทำการอินเตอร์รัพท์ แล้วสถานะของการ I/O จะต้อง เคลียร์ตัวเองได้ นั้นคือเมื่อมีการกระทำคำสั่ง

RETI (ED 4D) ก็จะมีการบอกให้อุปกรณ์ I/O ทราบว่าจบสิ้นการอินเตอร์รัพท์

แล้ว เพื่อทำให้ IEO เป็น "1" เพื่อการอีนาเบิ้ลตัวI/O ที่มีความสำคัญน้อยกว่า ความสัมพันธ์ของ /INT, /NMI และ /BUSRQ
ไดอะแกรมเวลาข้างล่างนี้เป็นไดอะแกรมการจัดลำดับการทำงานภายใน ในการตรววสอบการอินเตอร์รัพท์ทั้งแบบ /INT และ /NMI รวมทั้งขบวนการขอใช้บัส /BUSRQ โดยมีลักษณะการทำงานที่น่าสนใจดังนี้
1. การตรวจสอบ /INT และ /NMI ซีพียูจะทำการตรวจสอบทุก ๆไซเคิลสุดท้ายของสัญญาณนาฬิกาของแต่ละคำสั่ง
2. /BUSRQ จะได้รับการตรวจสอบทุก ๆ ตอนสุดท้ายของแมชีนไซเคิล
3. เมื่อ CPU อยู่ในสภาวะ DMA จะไม่ยอมรับรู้การขอ /INT หรือ /NMI
4. การจัดการตอบสนองจะเป็นไปตามลำดับดังนี้ /BUSRQ /NMI หรือ /INT

หน้าแรก