ปัจจุบันด้วยวิวัฒนาการด้านไมโครคอนโทรลเลอร์ที่พัฒนาไปอย่างก้าวไกล มีผลิตภัณฑ์ของค่ายต่างๆ ได้พัฒนาสินค้าของตนออกสู่ตลาดเพื่อให้ผู้สนใจได้เลือกใช้งานกันได้อย่างมากมาย และเพิ่มจำนวนผู้สนใจในวงกว้างมากขึ้นไม่จำกัดเฉพาะคนที่ต้องมีความรู้หรือเรียนมาเฉพาะทางด้านอิเล็กทรอนิกส์เท่านั้น เพราะด้วยเทคโนโลยีของคอมพิวเตอร์ปัจจุบันทำให้มีผู้สนใจสามารถศึกษาและใช้งานไมโครคอนโทรลเลอร์เหล่านั้นได้อย่างง่ายดายกว่าแต่ก่อน
ด้วยความที่ปัจจุบันมันมีตัวเลือกให้ใช้งานอย่างมากมาย บางครั้งก็ทำให้เกิดความสับสนว่างานแบบใดควรจะนำ CPU หรือ Controller ของผู้ผลิตค่ายใดประสิทธิภาพสูงแค่ไหนมาใช้กับงานที่เราต้องการ
แต่หากย้อนไปเมื่อสักกว่ายี่สิบปีก่อนนั้นการแข่งขันของผู้ผลิตจากค่ายต่างๆ ไม่ได้มีมากมายเหมือนปัจจุบันและผู้พัฒนา Controller board ในบ้านเราก็มีเพียงไม่กี่เจ้าและผู้พัฒนาเจ้านั้นๆ ก็มักจะเลือกชิพไอซีของค่ายใดค่ายหนึ่งมาพัฒนาเป็นสินค้าหลักของตัวเอง ดังนั้นคนที่เรียนหรือสนใจที่จะนำ Controller board มาใช้งานจึงไม่ยากที่จะหาข้อมูลอ้างอิงเพื่อทำความเข้าใจและเลือกว่าสมควรจะศึกษาใช้งาน Controller board ของค่ายใดเป็นหลัก
ผมเองสมัยเรียนช่างเทคนิค ก็ได้รู้จักและศึกษา CPU Z80 ของ ZILOG มีตำราให้ซื้ออ่านไม่มากนัก จำได้ว่าเป็นเล่มปกสีดำๆ ของอาจารย์ ยืน ภู่วรวรรณ์ สมัยนั้นด้วยความเป็นเด็ก อ่านมันอยู่หลายสิบรอบกว่าจะเข้าใจว่าการ Fetch หรือ Execute ของระบบสัญญาณมันมีความหมายว่าอย่างไร เรียกว่าอ่านตำราศึกษาตั้งแต่ ปวช. จนทำความเข้าใจและเขียนโปรแกรมเป็นแล้วมาทำเป็นโครงงานส่งอาจารย์ได้ตอนเรียน ปวส.
ส่วน CPU 8051 (MCS-51) ซึ่งเป็นไมโครคอนโทรลเลอร์ของค่าย INTEL ซึ่งสมัยเรียนไม่มีความรู้มากนัก แต่ก็เริ่มมีเห็นลงเป็นบทความบ้างเล็กน้อยในหนังสือวารสารอิเล็กทรอนิกส์เซมิคอนดักเตอร์ของสำนักพิมพ์ซีเอ็ด จนเมื่อเรียนจบได้เข้าไปทำงานในโรงงานผลิตอุปกรณ์สื่อสารของ LG ทำให้ได้ศึกษาและเล่นกับ MCS-51 อย่างลึกซึ้ง และตอนนั้นผู้พัฒนาในบ้านเราก็เริ่มทำบอร์ดที่ใช้ MCS-51 ออกมาวางตลาดคู่กับ Z80 ให้เลือกใช้งานมากขึ้น
ผมเองเป็นลูกค้าของบริษัท ETT และ SILA RESEARCH อยู่เป็นประจำ (ประจำในที่นี้หมายถึงติดตามอ่านบทความหรือสินค้าใหม่ๆ อยู่เสมอๆ แต่เรื่องการอุดหนุนซื้อสินค้ามาทดลองเล่นหรือใช้งานก็มีบ้าง ไม่ได้หมายความว่าซื้อเสียทุกอย่างนะครับ ไม่มีตังค์หรอกครับ5+) และนอกจากซื้อบอร์ดต่างๆ มาทดลองเล่นแล้วก็มักซื้อพวกหนังสือหรือคู่มือจากทั้งสองร้านนี้มาเก็บไว้อ่านเป็นข้อมูลศึกษาด้วยเสมอ
มีบทความหนึ่งจากหนังสือ APNOTE ของร้าน SILA RESEARCH ที่เขียนอธิบายความแตกต่างของ CPU 2 ค่ายนี้เปรียบเทียบให้เห็นภาพได้อย่างชัดเจน ถึงแม้ว่าปัจจุบันอาจจะไม่มีใครเล่นหรือศึกษา CPU (MCU) ของสองค่ายนี้กันแล้ว แต่ก็อยากขอเอาบทความนี้มาลงให้ได้อ่านเผื่อว่าจะเป็นประโยชน์สำหรับผู้สนใจหรือผู้ที่ต้องการทบทวนความรู้เก่าๆ ดังนี้ครับ
ในบรรดาชิพไมโครโปรเซสเซอร์หรือไมโครคอนโทรลเลอร์ ที่มีใช้อยู่ในปัจจุบันและพบเห็นเป็นส่วนใหญ่จะเป็นของบริษัท INTEL และ ZILOG ส่วน MOTOROLA นั้นมีการนำมาใช้งานกันน้อยมาก ซึ่งในที่นี้จะกล่าวถึงเฉพาะไมโครโปรเซสเซอร์ ขนาด 8 บิทของ INTEL และ ZILOG เท่านั้น
ชิปไมโครโปรเซสเซอร์ CPU อาจแบ่งออกได้ 2 ประเภทคือ MICROPROCESSOR และ MICRO CONTROLLER ไมโครโปรเซสเซอร์ประกอบด้วยหน่วยควบคุม (Control Unit) และหน่วยคำนวนทางคณิตศาสตร์ และลอจิก (ALU: ARITHMETIC AND LOGIC UNIT) เป็นต้น ส่วนไมโครคอนโทรลเลอร์ ประกอบด้วย Control Unit, ALU หน่วยความจำ (Memory), อินพุท/เอาท์พุทพอร์ท (I/O Port) เป็นต้น ซึ่งอาจจะกล่าวได้ว่าไมโครโปรเซสเซอร์ ก็คือส่วนหนึ่งของไมโครคอนโทรลเลอร์นั่นเอง
ในบรรดาชิพไมโครโปรเซสเซอร์ขนาด 8 บิทของ INTEL มีชิพที่เป็นไมโครโปรเซสเซอร์ ได้แก่เบอร์ 8080, 8085 และไมโครคอนโทรลเลอร์เบอร์ 8048 (MCS48), 8051(MCS51) ส่วนของ ZILOG นั้นมีไมโครโปรเซสเซอร์ ขนาด 8 ฺบิทเพียงเบอร์เดียวคือ Z80 CPU ตัวเก่งของ ZILOG นั้นออกแบบมาเพื่อต้องการให้ใช้กับคำสั่งที่มีอยู่เดิมของ 8080 ของ INTEL หรือกล่าวคือครอบคลุมคำสั่งของ 8080 ได้หมดทุกคำสั่ง และที่เหนือกว่านั่นก็คือคำสั่งพิเศษที่เพิ่มขึ้น จากเดิมแค่ 78 คำสั่ง (ใน 8080) เป็น 158 คำสั่ง รีจิสเตอร์ภายในที่เพิ่มขึ้นทั้ง 8 บิทและ 16 บิท ชุดคำสั่งที่เป็นข้อดีของ Z80 ก็คือเป็นคำสั่งที่ใช้กระทำกับข้อมูลเป็น Block ซึ่งสามารถนำไปใช้ได้ดีกับระบบที่ต้องมีฐานข้อมูล (data base) ส่วนทางด้านสถาปัตยกรรมของ Z80 สามารถอ้างแอดเดรสของ ROM/RAM ได้ 64K byte ต่อกับ I/O พอร์ทได้ 256 พอร์ท และสามารถรับสัญญาณอิเตอร์รัพท์ได้ 2 แหล่งเท่านั้น คือ NMI และ INT
ส่วน INTEL ก็มี CPU ตัวเก่งเหมือนกันคือเบอร์ 8051 (MCS-51) เป็นไมโครคอนโทรลเลอร์ขนาด 8 บิท มีชุดคำสั่งทั้งหมด 111 คำสั่ง มีรีจิสเตอร์ขนาด 8 บิทให้ใช้ได้ถึง 4 bank (bank ละ 8 ตัว R0-R7) และรีจิสเตอร์ B ใช้ในคำสั่งคูณและหาร ชุดคำสั่งของ 8051 นี้มีข้อดีตรงที่แต่ละคำสั่งใช้เวลาการทำงานสั้น และที่เด่นชัดมากก็คือชุดคำสั่งที่กระทำเกี่ยวกับบิททั้งหมด ซึ่งให้ความคล่องตัวมากกว่า ส่วนทางด้านสถาปัตยกรรมของ 8051 นั้นภายใน CPU นอกจากจะมี Control Unit และ ALU เหมือนที่มีใน Z80 แล้วยังประกอบไปด้วย หน่วยความจำ ROM ภายในขนาด 4K byte, หน่วยความจำ RAM ภายในขนาด 128 byte, ไทเมอร์/เคาน์เตอร์ขนาด 16 บิท 2 แชนแนล, อินพุท/เอาร์พุทพอร์ท 32 บิท (4 พอร์ท), พอร์ทอนุกรม (Serial port) 1 ชุด, สาทารถรับสัญญาณอิเตอร์รัพได้ถึง 6 แหล่ง (IE0, TF0, IE1, TF1, RI&TI), สามารถอ้างแอดเดรสของหน่วยความจำโปรแกรม (program memory) ได้ถึง 64K byte และสามารถอ้างแอดเดรสของหน่วยความจำข้อมูล (data memory) ได้ 64K byte เช่นกัน ส่วน I/O พอร์ทนั้นใน 8051 จะใช้เทคนิค Memory map I/O ซึ่งก็คือการใช้แอดเดรสของหน่วยความจำบางส่วนเป็นแอดเดรสของ I/O พอร์ท
CPU | 8051 | Z80 |
CLOCK | 12 MHz | 4 MHz |
INSTRUCTION SET | 111 คำสั่ง | 158 คำสั่ง |
PROGRAM MEMORY (ROM) | 64K byte | รวมกันทั้ง ROM และ RAM |
DATA MEMORY (RAM) | 64K byte | ไม่เกิน 64K byte |
I/O PORT (8 bit) | Memory map I/O 4K byte | 256 Port |
INTERNAL ROM | 4K byte | ไม่มี |
INTERNAL RAM | 128K byte | ไม่มี |
INTERNAL I/O PORT | 32 I/O Line (4 port) | ไม่มี |
TIMER/COUNTER | 16 bit 2 channel | ไม่มี |
SERIAL PORT | Full Duplex | ไม่มี |
CLOCK OSCILLATOR | อยู่ในชิพ | ไม่มี |
INTERRUP | 6 Source 2 Level Interrupt Priority | 2 Source |
ตารางเปรียบเทียบคุณสมบัติของ 8051 กับ Z80
จากคุณสมบัติที่กล่าวมาทั้งหมดของ Z80 และ 8051 นั้นพอจะสรุปขอบเขตการใช้งานและความแตกต่างของ CPU ทั้งสองได้คร่าวๆ คือ
Z80 นั้นเป็นชิพไมโครโปรเซสเซอร์ ซึ่งมีชุดคำสั่งมากมาย และมีรจิสเตอร์ให้ใช้มากด้วย ทำให้สะดวกในการใช้งานแต่บางครั้งก็สร้างความสับสนได้ไม่น้อยเลยทีเดียว เพราะทำให้ไม่รู้ว่า จะใช้คำสั่งใดกับรีจิสเตอร์ตัวใดดี อีกทั้งสวนฮาร์ดแวร์ของ Z80 นั้น ระบบพื้นฐานที่ต่อใช้งานได้จะต้องประกอบด้วยชิพไอซีอย่างน้อยอีก 5 ตัวคือ ROM, RAM, I/O port, Decoder, Clock oscillator ทำให้ไม่เหมาะกับระบบควบคุมขนาดเล็ก เพราะสิ้นเปลืองเนื้อที่รวมทั้งค่าใช้จ่าย และเนื่องจากระบบบัสของ Z80 เป็นแบบแยก Data bus และ Address bus ออกจากกันซึ่งทำให้สะดวกในการ Interface แต่ในด้านเสถียรภาพของระบบแล้ว ทำให้ระบบสามารถถูกรบกวนจากสัญญาณ ทั้งจากภายนอกและภายใน CPU เองได้มาก ดังนั้นงานที่เหมาะสมจะนำ Z80 ไปใช้งานส่วนใหญ่จะเป็นงานที่เกี่ยวข้องกับฐานข้อมูลที่มีความสลับซับซ้อนมาก และยังเหมาะกับระบบควบคุมขนาดค่อนข้างใหญ่ และจำเป็นต้องมีระบบ Watch dog เข้ามาร่วมด้วย เพื่อเพิ่มเสถียรภาพการทำงานให้ดีขึ้น และสามารถรีเซ็ทให้ระบบทำงานใหม่ได้เมื่อระบบเกิดการ hang อันเนื่องมาจากสัญญาณรบกวน
8051 เป็นชิพไมโครคอนโทรลเลอร์ มีชุดคำสั่งที่เอื้ออำนวยต่อการใช้งานในระดับได้ดีเลิศ ซึ่งเหมาะสำหรับงานควบคุมโดยเฉพาะ แต่ละคำสั่งจะใช้เวลาในการทำงานไม่เกิน 2 usec (ที่ Clock 12 Mhz) ทำให้โปรแกรมที่เขียนขึ้นมาทำงานได้อย่างรวดเร็วมาก ส่วนฮาร์ดแวร์ของ 8051 นั้น ระบบพื้นฐานที่ต่อใช้งานได้นั้นไม่จำเป็นต้องต่อชิพไอซีอื่นใดเพิ่มเติม เพราะภายใน CPU 8051 นี้มีทั้ง ROM, RAM ในตัวอยู่แล้ว และมี I/O port, Serial port, Timer/Counter ซึ่งสามารถนำไปใช้งานได้อย่างกว้างขวาง อีกทั้ง Data และ Address ใช้ Bus ร่วมกัน ซึ่งอาจจะทำให้ไม่สะดวกต่อการขยายระบบหรือต่อหน่วยความจำหรือ I/O พอร์ทภายนอก เพราะต้องมีชิพไอซีอีก 1 ตัวไว้ทำหน้าที่ Latch address แต่ด้วยวิธีนี้ที่มีการเปลี่ยนแปลงทั้ง Data และ Address อยู่ตลอดเวลา อีกทั้งเนื้อที่การใช้งานของ Stack ถูกจัดให้อยู่ในหน่วยความจำ RAM ภายใน CPU รวมทั้ง Clock oscillator ก็มีอยู่ในตัว CPU ทำให้ 8051 มีอัตราการเสียงต่อสัญญาณรบกวนลดลง ซึ่งมีผลทำให้ระบบมีเสถียรภาพดีเยี่ยม โดยในบางงานระบบ Watch dog อาจไม่มีความจำเป็น แต่หากต้องการความมั่นใจสูงยิ่งขึ้นก็สามารถสร้างระบบ Watch dog ขึ้นมาโดยไม่ต้องต่อชิพไอซีเพิ่มเติมแต่อย่างใด โดยใช้ Timer/Counter ที่มีอยู่ภายในมาใช้งานแทนและที่สำคัญ สามารถต่อหน่วยความจำได้สูงสุด (ROM และ RAM) ถึง 128K byte ส่วน I/O พอร์ทนั้นสามารถขยายได้มากมาย (เกิน 256 พอร์ท) เพราะใช้เทคนิค Memory map I/O ดังนั้นจะเห็นได้ว่าระบบควบคุมที่ใช้ 8051 เป็น CPU นั้นสามารถทำงานได้คล่องตัวกว่า เสถียรภาพดีกว่า มีขนาดเล็กกระทัดรัด และประหยัดค่าใช้จ่ายด้วย
(ขอบคุณข้อมูลบางส่วนจากบทความจากหนังสือ APNOTE ของบริษัท ศิลารีเสิร์ช จำกัด)