Z80 Microprocessor · สอบกลางภาค

อาจารย์บอกข้อสอบมาแล้ว
เหลือแค่ทำให้เป็น

เว็บนี้ไล่เนื้อหาตามข้อสอบทั้ง 6 ข้อ ทีละข้อ ว่าต้องรู้อะไรบ้าง มี animation ให้เห็นภาพ แล้วปิดท้ายด้วยโจทย์หลักตามที่อาจารย์ประกาศ พร้อมตัวอย่างเพิ่มอีกข้อละ 5 ตัวอย่างและเฉลยเต็ม

// โพสต์จากอาจารย์
  1. จงวาดรูปการออกแบบต่อประสานกับหน่วยความจำและอุปกรณ์ I/O ดังกล่าว พร้อมทั้งขาที่อยู่ ข้อมูล และสัญญาณที่เกี่ยวข้องมาทั้งหมด (25 คะแนน)
  2. จงอธิบายรายละเอียดเพื่อแสดงการเข้าถึงจากตำแหน่งจาก Z80 ไปยังชิปอุปกรณ์แต่ละตัวมาอย่างละเอียด โดยอธิบายด้วยว่าการต่อแบบนี้ก่อให้เกิด Memory Foldback หรือไม่อย่างไร (20 คะแนน)
  3. จงเขียนโค้ด Z80 Assembly ………. (20 คะแนน)
  4. จงหา Opcode และ Address ของโค้ดแต่ละคำสั่งในข้อที่ 3 (25 คะแนน)
  5. จงวาด Timing Diagram ของคำสั่งที่ใช้ในการติดต่อหน่วยความจำ และอุปกรณ์ I/O รวม 4 Instruction Cycles พร้อมคำอธิบายมาอย่างละเอียด โดยให้กำหนดค่าข้อมูลอื่น ๆ ที่เกี่ยวข้องเองตามความเหมาะสม (20 คะแนน)
  6. จงทำซ้ำข้อที่ 2 สำหรับการออกแบบระบบใหม่โดยออกแบบให้เริ่มด้วยหน่วยความจำแบบ RAM และตามด้วย ROM ทันที (10 คะแนน)

ปล. มีชีท Instruction Set ให้

มีข้อมูลเพิ่มจากปีที่แล้ว — อ่านก่อนวางแผน

ปีที่แล้วสอบ 3 ข้อ 80 คะแนน: Assembly (30) · Delay (20) · Timing Diagram (30) โดยข้อ Delay มาจาก Lab 3 ตรง ๆ และห้องสอบ ห้ามใช้เครื่องคิดเลข
ปีนี้ 6 ข้อ 120 คะแนน และข้อ 3 เขียนว่า “จงเขียนโค้ด Z80 Assembly ……….” — จุดไข่ปลานั้นยังไม่บอก จึงควรเตรียมโจทย์หน่วงเวลาไว้ด้วย

ดูข้อสอบปีที่แล้ว + ข่าวจากรุ่นพี่ ⏱ เฉลยโจทย์ Delay

อ่านโครงข้อสอบให้ขาดก่อน

ข้อ 1 → 2 → 6 คือ โจทย์ฮาร์ดแวร์ชุดเดียวกัน (วาดวงจร → วิเคราะห์ → สลับ RAM/ROM) ส่วนข้อ 3 → 4 → 5 คือ โจทย์ซอฟต์แวร์ชุดเดียวกัน (เขียนโค้ด → หา opcode → วาด timing) แปลว่าถ้าออกแบบวงจรในข้อ 1 ให้ดี ๆ และเขียนโค้ดในข้อ 3 ให้ “แตะทั้ง memory และ I/O” อีก 4 ข้อจะไหลตามมาเอง รวม 120 คะแนน แต่จริง ๆ คิดแค่ 2 เรื่อง

ไล่ทีละข้อ

ข้อ 1 · 25 คะแนน
วาดวงจรต่อประสาน Memory + I/O

ขา Z80 ทุกกลุ่ม, โครงสร้างชิปหน่วยความจำ, การสร้าง MEMRD/MEMWR/IORD/IOWR, วิธี decode ด้วย logic gate และ 74LS138, latch/buffer สำหรับพอร์ต I/O

พร้อมผังวงจรเต็ม + เช็กลิสต์เก็บคะแนน
ข้อ 2 · 20 คะแนน
วิเคราะห์การเข้าถึง + Memory Foldback

ไล่ address จาก Z80 ไปถึงชิปทีละบิต, สูตรนับภาพซ้ำ 2^(16−n−k), full vs partial decoding และเครื่องมือให้ลองพิมพ์ address ดูว่าชิปไหนตอบ

มีเครื่องมือ interactive + แผนที่หน่วยความจำ
ข้อ 3 · 20 คะแนน
เขียนโค้ด Z80 Assembly

Register set, flag, addressing mode, กลุ่มคำสั่งที่ออกสอบบ่อย และแพตเทิร์นสำเร็จรูป: อ่านพอร์ต → เก็บ RAM → ส่งออกพอร์ต, ลูปหน่วงเวลา, บวก/ลบเลข

มี assembler ให้ลองพิมพ์โค้ดได้ทันที
ข้อ 4 · 25 คะแนน
หา Opcode และ Address

อ่านชีท Instruction Set ให้เป็น (คอลัมน์ 76 543 210), ตารางรหัส r/dd/qq/cc, prefix DD FD ED CB, การนับ address และคิด displacement ของ JR/DJNZ

ข้อนี้คะแนนเยอะที่สุด — เป็นข้อที่เก็บง่ายที่สุดด้วย
ข้อ 5 · 20 คะแนน
วาด Timing Diagram 4 Instruction Cycles

M1 / Memory Read / Memory Write / I/O Read / I/O Write ครบทุกแบบ พร้อมไดอะแกรมที่กดเล่นได้ ไล่ทีละขอบสัญญาณว่าเกิดอะไรตอนไหน

มี animation เดินทีละ T-state
ข้อ 6 · 10 คะแนน
ออกแบบใหม่ RAM ก่อน แล้ว ROM

ทำซ้ำข้อ 2 กับผังใหม่ + ประเด็นสำคัญที่คนพลาดกันหมด: Z80 reset แล้วเริ่มที่ 0000H เสมอ ถ้าเอา RAM ไปวางตรงนั้นจะเกิดอะไรขึ้น

10 คะแนนที่ได้ฟรีถ้าเข้าใจข้อ 2

อีกสี่หน้าที่ควรเปิด

โจทย์จริงปีที่แล้ว · 20 คะแนน
⏱ โปรแกรมหน่วงเวลา (Delay)

ปีที่แล้วออกเป็นข้อ 2 เต็ม ๆ และมาจาก Lab 3 ตรง ๆ — จุดไข่ปลาใน “จงเขียนโค้ด Z80 Assembly ……….” ของปีนี้มีโอกาสสูงที่จะเป็นข้อนี้ มีเฉลย 1 ms @ 2 MHz ทีละขั้น พร้อมเครื่องมือออกแบบลูปให้ได้ T-state ตรงเป๊ะ

สมการเดียวใช้ได้ทุกโจทย์ + เครื่องคำนวณ
ข่าวกรอง
ข้อสอบปีที่แล้ว + สิ่งที่รุ่นพี่บอก

กระดาษข้อสอบจริงปีที่แล้ว (3 ข้อ 80 คะแนน), กติกาห้องสอบที่กระทบการเตรียมตัว (ห้ามใช้เครื่องคิดเลข), คำบอกเล่าจากรุ่นพี่ 2 คนพร้อมระดับความน่าเชื่อถือ และแผนบริหารเวลาในห้องสอบ

เทียบปีที่แล้ว ↔ ปีนี้ ทีละข้อ
ตรวจสอบแล้ว
จุดที่สไลด์กับหนังสือเรียนผิด

รวบรวมจุดที่เอกสารในคอร์สคลาดเคลื่อน เทียบกับ Zilog Z80 CPU User Manual (UM0080) และ datasheet ตัวจริง พร้อมลิงก์อ้างอิงทุกข้อ — อ่านก่อนสอบจะได้ไม่ตอบตามที่ผิด

21 จุด พร้อมแหล่งอ้างอิง
พกเข้าห้องสอบในหัว
สรุปแผ่นเดียว

ตารางสัญญาณ machine cycle, T-state ของคำสั่งที่ใช้บ่อย, รหัส register, สูตร foldback, ขนาดชิป ↔ จำนวนสาย address, ลำดับขั้นตอบข้อสอบ

อ่านรอบสุดท้ายก่อนเข้าห้อง

สิ่งที่ต้องจำให้ได้ก่อนอย่างอื่น

สัญญาณควบคุมทั้งหมด

Active LOW ทุกตัว — M1 MREQ IORQ RD WR RFSH ตอบข้อสอบต้องขีดเส้นบนเสมอ

ความยาว machine cycle

M1 = 4 T · Memory R/W = 3 T · I/O R/W = 4 T (Z80 แทรก Tw ให้เองเสมอ)

สูตรนับภาพซ้ำ

จำนวนภาพ = 216 − n − k
n = สาย address ที่เข้าชิป, k = สายที่ใช้ decode

รูปเกตที่ต้องวาด

ทุกเกตเป็น NAND ที่มีวงกลมขาเข้า ไม่ใช่ AND เปล่า — MEMRD = NAND(MREQ⚬, RD⚬)

I/O ใช้ address กี่เส้น

decode ที่ A0–A7 (256 พอร์ต) แต่ A8–A15 ไม่ว่าง — มีค่า A หรือ B อยู่

Z80 เริ่มทำงานที่ไหน

RESET → PC = 0000H เสมอ ⇒ ตำแหน่งนั้นต้องเป็น ROM (คือหัวใจของข้อ 6)

ใช้เว็บนี้ยังไง

  1. อ่านหัวข้อ “ต้องรู้อะไรบ้าง” ของแต่ละข้อก่อน เนื้อหาเรียงตามลำดับที่ต้องใช้จริงตอนตอบ ไม่ได้เรียงตามบท
  2. เล่นกับ animation ให้เห็นภาพ โดยเฉพาะ timing diagram ในข้อ 5 กับเครื่องมือ foldback ในข้อ 2 — สองอันนี้เข้าใจแล้วจะไม่ลืม
  3. ทำโจทย์หลักก่อนดูเฉลย โจทย์หลักคือข้อที่อาจารย์ประกาศมาตรง ๆ เฉลยพับไว้อยู่ ให้ลองเองก่อน
  4. ค่อยไล่ตัวอย่างเพิ่มอีก 5 ข้อ แต่ละข้อเปลี่ยนตัวเลข/ขนาดชิป/พอร์ต เพื่อให้ชินกับการคิด ไม่ใช่การจำ
  5. ปิดท้ายด้วยหน้า “สไลด์ผิด” กันตอบตามเอกสารที่คลาดเคลื่อนแล้วเสียคะแนนฟรี