บทที่ 1 ไมโครคอนโทรลเลอร์และการใช้งาน

Download Report

Transcript บทที่ 1 ไมโครคอนโทรลเลอร์และการใช้งาน

บทที่ 1
ไมโครคอนโทรลเลอร์ และการใช้ งาน
เทอดศักดิ์ ลิ่วหาทอง
สาขาวิชาอิเล็กทรอนิกส์
สถาบันเทคโนโลยีพระจอมเกล้ าเจ้ าคุณทหาร
ลาดกระบัง
ตัวอย่างการประยุกต์ใช้งานไมโครคอนโทรลเลอร์
• การประยุกต์ใช้ งานในรถยนต์
– ควบคุมการทางานของเครื่ องยนต์เพื่อประหยัดน ้ามัน และลดการปล่อยก๊ าซ
พิษ
– ควบคุมการทางานภายในรถยนต์เพื่อเพิ่มความปลอดภัยและความ
สะดวกสบายให้ แก่ผ้ ขู บั และผู้โดยสาร
ตัวอย่างการประยุกต์ใช้งานไมโครคอนโทรลเลอร์
• การประยุกต์ใช้ ในการสื่อสารแบบแบบไร้ สาย เช่นการสื่อสารแบบ
Bluetooth หรื อ Zigbee
• เพื่อเพิ่มความสะดวกในการรับส่งข้ อมูลระหว่างอุปกรณ์อิเล็กทรอนิกส์
เครื่ องใช้ ไฟฟ้า และเซนเซอร์ ตา่ งๆ เช่นโทรทัศน์ เครื่ องวัดอุณหภูมิ เป็ น
ต้ น
ตัวอย่างการประยุกต์ใช้งานไมโครคอนโทรลเลอร์
• ควบคุมเครื่ องใช้ ไฟฟ้าภายในบ้ าน
– ควบคุมการทางานของเครื่ องปรับอากาศ เพื่อให้ เครื่ องปรับอากาศสามารถ
ทางานได้ อย่างมีประสิทธิภาพและประหยัดค่าไฟ
– ควบคุมการทางานของเครื่ องซักผ้ า หรื อกาต้ มกาแฟ เพื่อให้ ใช้ งานได้ สะดวก
และเพิ่มฟั งก์ชนั การทางาน
– ควบคุมการทางานของเครื่ องตรวจจับควัน เพื่อเพิ่มประสิทธิภาพในการ
ตรวจจับควันไฟ
ตัวอย่างการประยุกต์ใช้งานไมโครคอนโทรลเลอร์
• ควบคุมการทางานของเครื่ องจักรที่อณ
ุ หภูมิสงู
– ทาให้ เครื่ องจักรทางานได้ อย่างมีประสิทธิภาพและมีความเชื่อถือสูง
ตัวอย่างการประยุกต์ใช้งานไมโครคอนโทรลเลอร์
• ควบคุมอุปกรณ์ที่ใช้ ติดต่อกับมนุษย์
– ปั จจุบนั อุปกรณ์อิเล็กทรอนิกส์สามารถทางานหลายอย่างแต่มีขนาดเล็กลง
– เช่นโทรศัพท์มือถือที่มีขนาดเล็กลงแต่ทางานได้ มากขึ ้น อย่างใช้ เล่นเกมส์ หรื อ
ใช้ ตอ่ อินเตอร์ เน็ต
– หรื อโทรทัศน์รุ่นใหม่ที่สามารถดูหนัง 3 มิติ และใช้ ตอ่ อินเตอร์ เน็ตได้
– ดังนันอุ
้ ปกรณ์เหล่านี ้จึงต้ องการเครื่ องมือที่ใช้ ติดต่อกับมนุษย์ที่ดีกว่าเดิมเช่น
จอสัมผัส หรื อ Wii Remote เป็ นต้ น
ตัวอย่างการประยุกต์ใช้งานไมโครคอนโทรลเลอร์
• ควบคุมแหล่งจ่ายกาลังงานแบบฉลาด
– ปั จจุบนั แหล่งจ่ายกาลังงานไฟฟ้าต้ องการการควบคุมที่มีความซับซ้ อนเช่น
• เปิ ด/ปิ ดเครื่ องได้ อตั โนมัติเมื่อเกิดเหตุฉกุ เฉิน
• สามารถควบคุมแรงดัน จากัดแรงดัน จากัดกระแส หรื อจากัดอุณหภูมิได้ แบบ
อัตโนมัติ
ตัวอย่างการประยุกต์ใช้งานไมโครคอนโทรลเลอร์
• ควบคุมระบบแสงสว่าง
– ควบคุมการปิ ดเปิ ดไฟแบบอัตโนมัติ เช่นปิ ดเปิ ดตามเวลาที่ตงไว้
ั ้ หรื อปิ ดเปิ ด
เมื่อมีคนเดินเข้ ามาในห้ อง
– ใช้ ตรวจสอบการปิ ดเปิ ดไฟ แบบทางไกลผ่านระบบอินเตอร์ เน็ต หรื อ
โทรศัพท์มือถือ
ตัวอย่างการประยุกต์ใช้งานไมโครคอนโทรลเลอร์
• ควบคุมเครื่ องจักรในโรงงานอุตสาหกรรม
– ควบคุมการปิ ดเปิ ด หรื อความเร็วของเซอร์ โวมอเตอร์
– ตรวจสอบสัญญาณจากเซนเซอร์ ตา่ งๆ
ตัวอย่างการประยุกต์ใช้งานไมโครคอนโทรลเลอร์
• ควบคุมเครื่ องมือทางการแพทย์
– ใช้ ควบคุมการทางานของเครื่ องมือทางการแพทย์ตา่ งๆเช่น เครื่ องวัด
สัญญาณหัวใจ เครื่ องวัดความดัน เครื่ องวัดปริมาณน ้าตาลในเลือด
โครงสร้างของระบบไมโครโปรเซสเซอร์
• ระบบไมโครโปรเซสเซอร์ ประกอบด้ วย
– หน่วยประมวลผลกลาง (Central Processor Unit : CPU)
– หน่วยความจา (Memory)
– อุปกรณ์ตอ่ พ่วง (Peripheral Device)
– บัส (Bus)
– วงจรถอดรหัส (Decoder)
– Oscillator
– วงจรรี เซ็ท (Reset)
โครงสร้างของระบบไมโครโปรเซสเซอร์
D0…Dd
D0…Dd-1
A0…Aa
A0…Aa-1
Oscillator
Memory
RD
WR
Reset
Reset
Circuit
Decoder
Chip Enable Signal
CPU
www.kmitl.ac.th/~klthurds
Peripheral
Device
โครงสร้างของระบบไมโครโปรเซสเซอร์
หน่ วยประมวลผลกลาง (CPU)
• เป็ นหัวใจของระบบไมโครโปรเซสเซอร์ หน้ าที่ของ CPU มีดงั นี ้
– ส่งสัญญาณควบคุมการทางานของระบบไมโครโปรเซสเซอร์ ทงหมด
ั้
– ทางานตามคาสัง่ ที่เขียนไว้ ในโปรแกรม
– ประมวลผลทางคณิตศาสตร์ และตรรกศาสตร์
– รับส่งข้ อมูลระหว่าง CPU กับหน่วยความจาและอุปกรณ์ตอ่ พ่วง
โครงสร้างของระบบไมโครโปรเซสเซอร์
หน่ วยประมวลผลกลาง (CPU)
• โครงสร้ างของ CPU ประกอบด้ วย
– Arithmetic Logic Unit (ALU) ทาหน้ าที่คานวณทางคณิตศาสตร์
(+-*/) และตรรกศาสตร์ (AND, OR, XOR, SHIFT, ROTATE)
– Register ชนิดต่างๆ ทาหน้ าที่เก็บ Data และ Address ที่ CPU ใช้
ในระหว่างการคานวณ
– Control Unit ทาหน้ าที่ควบคุมการทางานของ CPU ให้ เป็ นไปตาม
คาสัง่ ต่างๆที่เก็บไว้ ในโปรแกรม
– ระบบ Bus ภายใน ทาหน้ าที่รับส่ง Data, Address และสัญญาณ
ควบคุมภายใน CPU
External
Buffer Data Bus
MUX กาหนด
BUF
Register ตัวที่ Data
ค่า Status ของ Flag สามารถนาไปใช้ ผลลัพธ์ของคาสั่งส่ วน
สามารถติ
ดต่อกับ
Multiplex
Control
Temporary ่อนไข หรื อความAccumulator Flag
ในการตรวจสอบเงื
Data
Bus
ได้
ช่ใหญ่
องทาง
จะถูกนามาเก็บไว้
MUX ทาการ MUX
Unit
Register านวณเช่น เกิด Over Register Register
ผิดพลาดในการค
Register
Input ใน
ของACC เสมอ
ช่องทาง
เลือก
Flow (OV=1), มีตวั Data
ทด (C=1)
ใช้งาน
ALU
Data
TMP
ACC FLAG
Input ของ
Register ตัว
ไป Relative
INST REG ที่ตทัอ้ ว่งการน
R0Address
Data
ช่องทาง Output
ALU
า
ออกไปที่ Flag
หรื อนาไปบวกกั
บค่าทีบ่อยูใ่ น …
ข้อมูลมาเก็
ช่
อ
งทาง
Output
Address
ค่า Address
Register
ALU Status
DECODER
Registerdจาก
ก่อนAddress
ถูกส่ งไปที
่ R7ถูก ออกไปที่ Data Bus
ทางหนึ่งค่Data
า Address จะถูกส่ งออกไป
Increase
Register
DPTR
ส่ งไปที
่
Address
Bus
ทั
น
ที
Data
Address Bus
Arithmetic
Full ่อติดต่อหน่วยความจ
ภายนอกเพื
า ใน
SP
Internal
Logic
CONTROLLER
Adder
Buffer
บางครั้งอาจจะมีการส่ งกลัExternal
บไปเก็บไว้
+1
PC
Address
Address
+
Address
Bus
Unit
SEQUENCER
ใน Address Register
ด้
วย Bus
Address
External BUF
Address Internal
Buffer
Control
Bus
Control Bus
BUF
Internal
Data Bus
โครงสร้างของ CPU
ขั้นตอนการทางานของ CPU
1.
2.
3.
4.
Fetch ดึงคาสัง่ และข้อมูลจากหน่วยความจา
Decode ถอดรหัสคาสัง่
Execute ทางานตามคาสัง่ ที่ถอดรหัสได้
Keep Result เก็บผลลัพธ์ที่ได้
Fetch
BUF 28H
MUX
INST REG
DECODER
CONTROLLER
SEQUENCER
R0
…
R7
DPTR
SP
+1 0001H 0000H
PC
ค่าที่ได้รับจากหน่วยความจาจะถูก
ส่ งไปเก็บไว้ใFLAG
น Instruction
Register
TMP
ACCเพื่อใช้ในการถอดรหัส
ทุกครั้งที่เปิ ดเครื่ อง PC จะมี ค่า Address ถูก
ค่ค่าาProgram
เป็Address
น 0000H
เสมอ เป็ดังนนั้นส่ งออกไปภายนอก
Counter
ถู
ก
ด้านที่กลับมาเก็บไว้ALU
ใน Program Counter
CPU
จึทีง่เริใช้่ มเก็ต้่ บนค่ทาางานที
่ เพื่อติดต่อ
Register
ส่
ง
ออกไปที
Address
จะเพิ่มค่าขึ้นมา 1 เพื่อเตรี ยมพร้อมสาหรับ
0000H
ทุาสั
กBus
ครั
ดเครื่ อง หน่วยความจา
้ ง่จทีะ่เปิFetch
Address
ของค
ง
ที
่
การ Fetch ครั้งต่อไป
ซึ่ งจะแยกเป็ น 2 ทาง ทางหนึ่ง
ถูก0000H
ส่ งออกไปภายนอก CPU
อีกทางหนึ่งจะย้อนกลับไปเข้า
Program Counter อีกครั้งหนึ่ง
BUF
BUF
Decoder
วงจร Decoder ไม่สามารถรั
บค่า 28H จาก Data Bus ได้
โดยตรงเนื่องจากวงจร Decoder ต้องใช้เวลาในการ
ทางาน และ Data Bus ไม่สามารถรักษาค่า 28H ไว้
ตลอดการทางานได้ จึงจาเป็ นต้องมี Instruction
Register เพืMUX
่อเก็บค่า 28H ไว้ให้กบั วงจร Decoder
INST
28HREG
ถอดรหั
สแล้กวาลั28H
= ADD A,R0
Decoder
R0งถอดรหัสที่เก็บไว้
เป็ในนคInstruction
าสั่ง…ขนาด Register
1 byte
ADD A,R0
DECODER
CONTROLLER
SEQUENCER
+1
R7
DPTR
SP
0001H
PC
TMP ACC
BUF
FLAG
ALU
BUF
BUF
Execute
BUF
MUX
INST
28HREG
DECODER
ADD A,R0
CONTROLLER
SEQUENCER
Controller Sequencer
R0 ทาหน้าที่ควบคุม
34H
การทางานของ
… CPU ให้เป็ นไปตาม
คาสั่งนต่าค่างๆ
ที่วพR7
งจร
Decoder
ถอดรหัสได้
า
ผลลั
ธ์
ท
่
ี
ไ
ด้
ไ
ป
ดึนงาค่
ค่าาทีใน
่เก็บACC.
ใน R0และ
ดังตัเก็วบอย่ไว้าDPTR
งของค
าสั่ง ADD A,R0
ในนACC
ไปใส่
TMP.TMP.
มาบวกกั
Reg.
SP
+1
0001H
PC
TMP
ACC
34H 98H
ALU
CCH
C=0
FLAG
Z=0
OV=1
บวกกันได้ CCH
ไม่มีตวั ทด (C=0)
ไม่เท่ากับ 0 (Z=0)
แต่เกิด Over Flow (OV=1)
BUF
BUF
Fetch คาสัง่ ถัดไป
BUF 24H
MUX
INST
28HREG
DECODER
CONTROLLER
SEQUENCER
TMP
ACC
34H CCH
R0
…
R7
DPTR
SP
+1 0002H 0001H
PC
C=1
FLAG
Z=0
OV=1
ALU
Fetch คาสั่งถัดไป
0001H
www.kmitl.ac.th/~klthurds
BUF
BUF
Decoder
BUF
INST
24HREG
ADD A,#xx
DECODER
CONTROLLER
SEQUENCER
ถอดรหัสแล้ว 24H = ADD A,#xx เป็ น
MUX
คาสั่งขนาด 2 byte ให้นาค่า xx ซึ่ งเก็บไว้
ACC
34H CCH
ใน byte ที่ 2 ไปบวกกับ ACC ดังนั้นTMP
R0
ก่อนที่จะ Execute จึงต้อง Fetch ค่า xx
…
จากหน่R7วยความจาเสี ยก่อน
+1
C=1
FLAG
Z=0
OV=1
ALU
DPTR
SP
0002H
PC
BUF
www.kmitl.ac.th/~klthurds
BUF
Fetch ค่า Operand ของ ADD A,#xx
BUF 44H
MUX
INST
28HREG
ADD
DECODER
ADDA,#44H
A,#xx
CONTROLLER
SEQUENCER
TMP
ACC
34H CCH
R0
…
R7
DPTR
SP
+1 0003H 0002H
PC
C=1
FLAG
Z=0
OV=1
รอหน่วยความจาส่ งค่ากลับ
ALU
0002H
www.kmitl.ac.th/~klthurds
BUF
BUF
Execute
BUF
MUX
INST
REG
44H
DECODER
ADD A,#44
CONTROLLER
SEQUENCER
R0
…
าค่
พR7ธ์INST.
ที่ได้ไป
ดึงนาค่ใน
าทีา่ACC
เผลลั
ก็บใน
นาค่
และ TMP.
เก็บไว้DPTR
ใน ACC
REG. ไปใส่
TMP.
มาบวกกั
น Reg.
SP
+1
PC
TMP
ACC
44H CCH
34H
ALU
10H
C=1
FLAG
Z=0
OV=0
OV=1
บวกกันได้ 10H
มีตวั ทด (C=1)
ไม่เท่ากับ 0 (Z=0)
ไม่เกิด Over Flow (OV=0)
BUF
www.kmitl.ac.th/~klthurds
BUF
เมื่อหน่วยความจาได้รับ
RD และ CE
วงจร Decoder สัได้ญรญาณ
ับสัญญาณ
Address, MREQ
จากาเอาค่
CPU มาท
า Address
ก็จะน
าของ
การถอดรหัสว่า CPU ต้องการติ
Busดต่อ
กับหน่วยความจาตัวใด จากนั้นก็จะ
ไปถอดรหัสเพื่อหาตาแหน่ง
ส่ งสัญญาณ CPU
CE (Chip
Enable)
ไปไปให้
ส่
ง
สั
ญ
ญาณ
RD
อาตั
มูลวทีในหน่
วยความจา
D0-D7
กระตุน้ หน่วของข้
ยความจ
่
CPU
หน่วยความจาเพื
า าส่ งค่า 28H
หน่่อวบอกว่
ยความจ
ระยะเวลาที
่หงน่่ งข้ออก
วอหรื
ยความจ
าใช้
ต้องการติ
อต้ให้อAddress
ทางาน
CPU
ค่ดาต่Address
งการดึ
ที่สออกไปที
มูลอณ
าแหน่
่ ตData
Busงเพืของ
่อ
ในการถอดรหั
สมูงงกลั
เราเรี
ย
กว่
า
Address
มาจาก CPU
ที่ถูกข้ส่จะส่
งอส่ไปแล้
ว
บ
ไปให้
CPU
ลที่ตCEอ้ งการ
Access Time
RD RD ต่อไปยังขา Address
WR
0000H
A0-A15
ของหน่วยความจา
28H
Address Decoder
Fetch
D0-D7
Address หรื อตาแหน่งของ
ข้อมูลที่ตอ้ งการ
CE
RD RD
WR
0001H
A0-A15
24H
Address Decoder
Fetch
โครงสร้างของระบบไมโครโปรเซสเซอร์
หน่ วยประมวลผลกลาง (CPU)
• เราสามารถแบ่งชนิดของ CPU ตามสถาปั ตยกรรมของ CPU หรื อ
แบ่งตามทฤษฎีที่ใช้ ในการออกแบบ CPU
– Single Instruction Single Data Stream (SIMD) เป็ นการ
ออกแบบ CPU ให้ สามารถทางานได้ ครัง้ ละ 1 คาสัง่ และคาสัง่ แต่ละคาสัง่
สามารถคานวณข้ อมูลได้ เพียง 1 ชุด เป็ นสถาปั ตยกรรมแบบที่ง่ายที่สดุ
ไมโครคอนโทรลเลอร์ ทวั่ ไปเช่น MCS51, PIC จะออกแบบ CPU แบบ
SISD
โครงสร้างของระบบไมโครโปรเซสเซอร์
หน่ วยประมวลผลกลาง (CPU)
– Multiple Instruction Single Data Stream (MISD) เป็ น
การออกแบบให้ ในการทางานแต่ละครัง้ CPU สามารถใช้ หลายๆคาสัง่
สามารถคานวณข้ อมูลเพียงชุดเดียว CPU แบบนี ้ไม่เป็ นที่นิยมใช้ กนั
– Single Instruction Multiple Data Stream (SIMD) เป็ น
การออกแบบ CPU ให้ สามารถทางานได้ ครัง้ ละ 1 คาสัง่ โดยที่แต่ละคาสัง่
สามารถคานวณข้ อมูลได้ หลายๆชุดพร้ อมกัน เหมาะสาหรับงานที่ต้องการ
การคานวณทางคณิตศาสตร์ จานวนมากเช่นการประมวลผลภาพ CPU
แบบ SIMD คือ Pentium III, Pentium 4, Core 2 Duo,
Core i3, i5, i7 เป็ นต้ น
โครงสร้างของระบบไมโครโปรเซสเซอร์
หน่ วยประมวลผลกลาง (CPU)
– Multiple Instruction Multiple Data Stream
(MIMD) เป็ นการออกแบบ CPU ให้ สามารถทางานได้ ครัง้ ละหลาย
คาสัง่ โดยแต่ละคาสัง่ จะคานวณข้ อมูลคนละชุด แยกออกจากกัน CPU
แบบนี ้กาลังเป็ นที่นิยมมากในปั จจุบนั เนื่องจากสามารถประมวลผลข้ อมูล
จานวนมากได้ อย่างรวดเร็ว และมีความยืดหยุน่ สูงกว่า CPU แบบอื่นๆ
โครงสร้างของระบบไมโครโปรเซสเซอร์
หน่ วยประมวลผลกลาง (CPU)
– Complex Instruction Set Computing (CISC) เป็ นการ
ออกแบบ CPU ให้ มีคาสัง่ Assembly ให้ เลือกใช้ จานวนมาก และคาสัง่
แต่ละคาสัง่ จะมีการทางานที่ซบั ซ้ อน
ข้ อดี
• เขียนโปรแกรมได้ ง่าย และโปรแกรมมีขนาดเล็ก เนื่องจากมีคาสัง่ ให้ เลือกใช้ เยอะ
• สามารถออกแบบ CPU รุ่นใหม่ที่เข้ ากันได้ กบั CPU รุ่นเก่า ทาให้ สามารถนาเอา
โปรแกรมที่เคยเขียนไว้ มาใช้ งานบน CPU รุ่นใหม่ได้ โดยไม่ต้องเขียนโปรแกรมใหม่
ข้ อเสีย
• คาสัง่ แต่ละคาสัง่ ใช้ เวลาในการทางานหลายรอบสัญญาณนาฬิกา
โครงสร้างของระบบไมโครโปรเซสเซอร์
หน่ วยประมวลผลกลาง (CPU)
– Reduce Instruction Set Computing (RISC) เป็ นการ
ออกแบบ CPU ให้ วงจรดิจิตอลของคาสัง่ Assembly แต่ละคาสัง่
สามารถทางานเสร็จภายใน 1 รอบสัญญาณนาฬิกา
ข้ อดี
• โปรแกรมสามารถทางานได้ อย่างรวดเร็วเทียบกับ CPU ชนิด CISC
ข้ อเสีย
• เนื่องจากต้ องการออกแบบวงจรของคาสัง่ ให้ ทางานได้ เร็ว ดังนันจึ
้ งต้ องใช้ วงจรขนาด
ใหญ่ ดังนัน้ CPU ประเภทนี ้จึงมีคาสัง่ ให้ เลือกใช้ น้อย
โครงสร้างของระบบไมโครโปรเซสเซอร์
หน่ วยประมวลผลกลาง (CPU)
• เนื่องจากต้ องการออกแบบวงจรคาสัง่ ให้ สามารถทางานเสร็จภายใน 1 รอบ
สัญญาณนาฬิกา ดังนันจึ
้ งไม่สามารถออกแบบวงจรสาหรับคาสัง่ ที่มีการทางาน
หลายขันตอนได้
้
ยกตัวอย่างเช่น การออกแบบวงจรสาหรับการคูณ
var1 = var1*var
ถ้ าเป็ น CPU แบบ RISC จะต้ องแบ่งคาสัง่ คูณออกเป็ น 3 ขันตอนคื
้
อ
1.
2.
3.
reg1 = var1, reg2 = var2
นาค่า var1 และ var2 ที่เก็บไว้ ในหน่วยความจามาพักไว้ ในรี จิสเตอร์ reg1 และ
reg2 ภายใน CPU
reg1 = reg1*reg2
คานวณค่าของ reg1*reg2 และนาไปเก็บไว้ ใน reg1
var1 = reg1
นาค่าใน reg1 ไปเก็บไว้ ใน var1
โครงสร้างของระบบไมโครโปรเซสเซอร์
หน่ วยประมวลผลกลาง (CPU)
• โปรแกรมที่เขียนสาหรับ CPU แบบ RISC จะมีขนาดใหญ่กว่าแบบ CISC
• CPU แบบ RISC เขียนโปรแกรมยากกว่า CPU แบบ CISC
• การออกแบบ CPU รุ่นใหม่ให้ เข้ ากันได้ กบั CPU รุ่นเก่าทาได้ ยาก ดังนันใน
้
บางครัง้ ถ้ าต้ องการเปลี่ยนไปใช้ CPU รุ่นใหม่จาเป็ นจะต้ องเขียนโปรแกรมใหม่
ทังหมด
้
โครงสร้างของระบบไมโครโปรเซสเซอร์
หน่ วยความจา (Memory)
– ทาหน้ าที่เก็บโปรแกรมและข้ อมูล
– หน่วยความจาสามารถแบ่งออกได้ เป็ น
• Read Only Memory (ROM) เป็ นหน่วยความที่อ่านได้ เพียงอย่างเดียว
ไม่สามารถเขียนได้ (การเขียนข้ อมูลลงใน ROM จะต้ องใช้ วงจรที่ทาหน้ าที่เฉพาะ
สาหรับเขียนข้ อมูลลงใน ROM) แต่โปรแกรมหรื อข้ อมูลที่เก็บไว้ ใน ROM จะไม่
สูญหายไปถ้ าไม่มีไฟเลี ้ยงต่ออยู่ เหมาะสาหรับใช้ เก็บโปรแกรม หรื อข้ อมูลที่ไม่
ต้ องการให้ สญ
ู หายไปเมื่อปิ ดไฟเลี ้ยง
• Random Access Memory (RAM) เป็ นหน่วยความจาที่อ่านและเขียน
ได้ ข้ อเสียคือข้ อมูลที่เก็บไว้ จะหายไปถ้ าไม่มีไฟเลี ้ยงต่ออยู่ เหมาะสาหรับเก็บข้ อมูลที่
ถูกประมวลผลโดยโปรแกรม
โครงสร้างของระบบไมโครโปรเซสเซอร์
ประเภทของ ROM
– ROM สามารถแบ่งออกเป็ นชนิดที่สร้ างโดยเทคโนโลยี Bipolar คือ
Mask ROM และ PROM และชนิดที่สร้ างโดยเทคโนโลยี Mask
ROM, PROM, EPROM, EEPROM
– ROM เป็ นหน่วยความจาที่ข้อมูลหรื อโปรแกรมที่เก็บไว้ ใน ROM จะถูก
เขียนมาจากโรงงาน ไม่สามารถเขียนเองได้ เหมาะสาหรับการผลิตเป็ น
จานวนมากๆ เนื่องจากราคาถูก
โครงสร้างของระบบไมโครโปรเซสเซอร์
ประเภทของ ROM
– PROM (Programmable ROM) เป็ นหน่วยความจาที่สามารถ
เขียนเองได้ โดยเซลล์ที่ใช้ เก็บข้ อมูลแต่ละบิตจะมีฟิวส์อยู่ เซลล์ที่ยงั มีฟิวส์ตอ่
อยูจ่ ะมีโลจิกเป็ น 1 แต่ถ้าฟิ วส์ขาดไปจะมีโลจิกเป็ น 0
PROM ที่ผลิตมาจากโรงงานจะมีโลจิกเป็ น 1 ทุกบิต เราสามารถเขียน
ข้ อมูล โดยการป้อนพัลส์แรงดันสูงเข้ าไป เพื่อทาให้ ฟิวส์ของเซลล์ที่ต้องการ
ให้ มีโลจิกเป็ น 0 ขาด
PROM จะสามารถเขียนโปรแกรมได้ เพียงครัง้ เดียว ดังนันในบางครั
้
ง้ เรา
จะเรี ยกว่า One-Time Programmable Non-Volatile
Memory
โครงสร้างของระบบไมโครโปรเซสเซอร์
ประเภทของ ROM
– EPROM (Erasable Programmable ROM) ปรับปรุงจาก
PROM ให้ สามารถลบข้ อมูลที่เก็บไว้ ได้
EPROM จะมีช่องหน้ าต่าง เมื่อต้ องการลบข้ อมูลจะต้ องฉายแสง UV
ความเข้ มสูงผ่านช่องหน้ าต่างนี ้ ซึง่ จะทาให้ เซลล์ทกุ เซลล์มีโลจิกกลับไปเป็ น
1
เมื่อเขียนโปรแกรมลงไปใน EPROM และต้ องการนา
EPROM ไปใช้ งาน จะต้ องปิ ดช่องหน้ าต่างไม่ให้ แสง
รอดผ่านเข้ าไปได้
โครงสร้างของระบบไมโครโปรเซสเซอร์
ประเภทของ ROM
– EEPROM (Electrically Erasable Programmable
ROM) เป็ น PROM ที่สามารถลบข้ อมูลโดยใช้ พลั ส์แรงดันสูง จึงใช้ งาน
ง่ายกว่า EPROM
– Flash Memory เป็ น EEPROM ชนิดพิเศษที่สามารถเก็บข้ อมูลได้
มากกว่า EEPROM สามารถลบและเขียนใหม่ได้ เร็วกว่า และจานวนครัง้
ในการลบและเขียนใหม่มีมากกว่า EEPROM
โครงสร้างของระบบไมโครโปรเซสเซอร์
ประเภทของ RAM
– Static RAM (SRAM) เป็ น RAM ที่แต่ละเซลล์
จะใช้ PMOS 2 ตัวและ NMOS 2 ตัวมาต่อกัน
เป็ น Latch ที่ใช้ เก็บข้ อมูลและ NMOS อีก 2 ตัวในการ
อ่านและเขียนข้ อมูล
ข้ อดีคือสามารถทางานได้ รวดเร็ว และข้ อมูลที่เก็บไว้ ในแต่ละเซลล์จะไม่สญ
ู
หายถ้ ายังจ่ายไฟเลี ้ยงให้
ข้ อเสียคือ เนื่องจากแต่ละเซลล์ใช้ MOS ทังหมด
้
6 ตัว ดังนันจึ
้ งเปลือง
พื ้นที่และกินไฟมาก จึงไม่สามารถสร้ าง SRAM ที่มีความจุสงู ได้
โครงสร้างของระบบไมโครโปรเซสเซอร์
ประเภทของ RAM
– Dynamic RAM (DRAM) เป็ น RAM ที่แต่ละ
เซลล์จะใช้ ตวั เก็บประจุในการเก็บข้ อมูล และ NMOS
1 ตัวสาหรับอ่านและเขียนข้ อมูล ดังนันเซลล์
้
จงึ มีขนาด
เล็กกว่า SRAM
ข้ อดีคือสามารถสร้ าง DRAM ที่มีความจุสงู ได้
ข้ อเสียคือ เนื่องจากใช้ ตวั เก็บประจุในการเก็บข้ อมูล ดังนันการเขี
้
ยนข้ อมูลจึง
ทาได้ ช้ากว่า SRAM และตัวเก็บประจุมีกระแสรั่วไหลทาให้ มีการคายประจุ
อยูต่ ลอดเวลา ดังนันข้
้ อมูลที่เก็บไว้ มีการสูญหายได้ จึงต้ องมีการ Refresh
ข้ อมูลตลอดเวลา
โครงสร้างของระบบไมโครโปรเซสเซอร์
ประเภทของ RAM
DRAM มีอยู่หลายชนิดคือ
1.
2.
3.
4.
5.
Fast Page Mode DRAM (FPM DRAM) เป็ น DRAM ที่เก่าที่สดุ ที่ยงั คง
มีขายอยู่ในปั จจุบนั
Extended Data Output RAM (EDO RAM) พัฒนามาจาก FRM
DRAM ใช้ ในคอมพิวเตอร์ ที่ใช้ Pentium MMX และ Pentium Pro
Synchronous DRAM (SDRAM) เป็ นการพัฒนาให้ ทางานได้ เร็วขึ ้น ใช้ ใน
คอมพิวเตอร์ ที่ใช้ Pentium II และ Pentium III
Double Data Rate Synchronous DRAM (DDR SDRAM) พัฒนา
จาก SDRAM ให้ ทางานได้ เร็วกว่า 2 เท่า
Rambus DRAM (RDRAM) เป็ น RAM ที่แตกต่างจาก RAM อื่นๆ สามารถ
ทางานได้ อย่างรวดเร็ว แต่มีราคาแพงและมีการใช้ งานที่ซบั ซ้ อน จึงไม่เป็ นที่นิยมเท่ากับ
SDRAM และ DDR SDRAM
โครงสร้างของระบบไมโครโปรเซสเซอร์
อุปกรณ์ตอ่ พ่วง (Peripheral Device)
• เป็ นอุปกรณ์ใดๆที่ตอ่ กับระบบไมโครโปรเซสเซอร์ เพื่อทาให้ ระบบ
ไมโครโปรเซสเซอร์ ทางานให้ เกิดประโยชน์ เช่น เมาส์, คีย์บอร์ ด, จอ
LCD, เซนเซอร์ วดั อุณหภูมิ, มอเตอร์ , เครื่ องจับเวลา เป็ นต้ น
CPU
ROM
RAM
ADC
Port Mapped I/O
Address Bus
Data Bus
Control Bus
LCD
Encoder
DAC
โครงสร้างของระบบไมโครโปรเซสเซอร์
• อุปกรณ์ตอ่ พ่วงสามารถแบ่งออกเป็ นหลายชนิดคือ
– อุปกรณ์ตอ่ พ่วงทางด้ าน Output หมายถึงอุปกรณ์ที่รับข้ อมูลจาก CPU
เพื่อไปทางานบางอย่างเช่น จอ LCD, เซอร์ โวมอเตอร์ และลาโพง
CPU
ROM
RAM
ADC
Port Mapped I/O
Address Bus
Data Bus
Control Bus
LCD
Encoder
DAC
โครงสร้างของระบบไมโครโปรเซสเซอร์
– อุปกรณ์ตอ่ พ่วงทางด้ าน Input หมายถึงอุปกรณ์ที่วดั การทางานเช่น
Encoder ที่ใช้ วดั ความเร็วหรื อตาแหน่งของมอเตอร์ หรื อวัดสภาพแวด เช่น
เซนเซอร์ วดั อุณหภูมิ แล้ วนาข้ อมูลที่วดั ได้ สง่ กลับไปให้ CPU เพื่อไป
ประมวลผล
CPU
ROM
RAM
ADC
Port Mapped I/O
Address Bus
Data Bus
Control Bus
LCD
Encoder
DAC
โครงสร้างของระบบไมโครโปรเซสเซอร์
• อุปกรณ์ตอ่ พ่วงบางตัวไม่สามารถเชื่อมต่อกับระบบไมโครโปรเซสเซอร์
ได้ โดยตรง จาเป็ นต้ องมีวงจรพิเศษที่ใช้ เชื่อมต่อระหว่างอุปกรณ์ตอ่ พ่วง
กับระบบไมโครโปรเซสเซอร์
CPU
ROM
RAM
ADC
Port Mapped I/O
Address Bus
Data Bus
Control Bus
LCD
Encoder
DAC
โครงสร้างของระบบไมโครโปรเซสเซอร์
• เซนเซอร์ วดั อุณหภูมิแบบอนาลอก จะแปลงอุณหภูมิเป็ นแรงดัน
อนาลอก แรงดันนี ้ไม่สามารถป้อนให้ กบั CPU ได้ โดยตรง ดังนันจึ
้ ง
จาเป็ นต้ องมีวงจรที่แปลงสัญญาณอนาลอกให้ เป็ นสัญญาณดิจิตอล
(ADC) ก่อนส่งให้ กบั CPU Digital Analog
CPU
ROM
RAM
ADC
Port Mapped I/O
Address Bus
Data Bus
Control Bus
LCD
Encoder
DAC
โครงสร้างของระบบไมโครโปรเซสเซอร์
ROM
RAM
3 เฟส AC
CPU
ADC
Port Mapped I/O
Address Bus
Data Bus
Control Bus
ข้ อมูลตาแหน่ ง
และความเร็ว
• เซอร์ โวมอเตอร์ แบบ AC 3 เฟส ต้ องการแรงดันไฟ AC 3 เฟสเพื่อ
ควบคุมตาแหน่งและความเร็วของการหมุนมอเตอร์ ดังนันจึ
้ งต้ องมีวงจร
ขับมอเตอร์ เพื่อเปลี่ยนข้ อมูลตาแหน่งและความเร็วที่ได้ มาจาก CPU
ให้ เป็ นแรงดันไฟ AC 3 เฟสที่มอเตอร์ ต้องการ
LCD
Encoder
DAC
โครงสร้างของระบบไมโครโปรเซสเซอร์
• ระบบไมโครโปรเซสเซอร์ จาเป็ นต้ องมีวงจรแปลงสัญญาณดิจิตอลเป็ น
สัญญาณอนาลอก (DAC) ก่อนป้อนให้ กบั ลาโพง
CPU
ROM
RAM
ADC
Port Mapped I/O
Address Bus
Data Bus
Control Bus
Digital
LCD
Encoder
Analog
DAC
โครงสร้างของระบบไมโครโปรเซสเซอร์
• เนื่องจากระบบไมโครโปรเซสเซอร์ อาจจะมีอปุ กรณ์ตอ่ พ่วงมากกว่า 1
ตัว ดังนันจึ
้ งจาเป็ นต้ องวงจร Port Mapped I/O เพื่อใช้ เลือก
อุปกรณ์ตอ่ พ่วงที่ระบบไมโครโปรเซสเซอร์ ต้องการติดต่อด้ วย
CPU
ROM
RAM
ADC
Port Mapped I/O
Address Bus
Data Bus
Control Bus
LCD
Encoder
DAC
โครงสร้างของระบบไมโครโปรเซสเซอร์
Bus
• คือสายรับส่งสัญญาณระหว่าง CPU กับหน่วยความจาและอุปกรณ์
ต่อพ่วง เพื่อรับส่งข้ อมูล หรื อเพื่อควบคุมการทางานของหน่วยความจา
และอุปกรณ์ตอ่ พ่วง
CPU
ROM
RAM
ADC
Port Mapped I/O
Address Bus
Data Bus
Control Bus
LCD
Encoder
DAC
โครงสร้างของระบบไมโครโปรเซสเซอร์
Bus
• Data Bus
– เป็ นบัสแบบ 2 ทิศทาง (Bidirectional Bus) ใช้ ในการรับหรื อส่งข้ อมูล
ระหว่าง CPU กับหน่วยความจาและอุปกรณ์ตอ่ พ่วง
– ขนาดของ Data Bus (D0-Dd-1) เป็ นตัวกาหนดขนาดของข้ อมูลที่ใช้ ใน
การรับส่งข้ อมูลในแต่ละครัง้ และส่วนใหญ่จะหมายถึงขนาดของข้ อมูลที่
CPU สามารถประมวลผลในแต่ละคาสัง่ Assembly ตัวอย่างเช่น PIC
หรื อ MCS51 มี Data Bus ขนาด 8 bit (D0-D7) จะรับส่งข้ อมูล
และประมวลผลข้ อมูลได้ ครัง้ ละ 8 bit หรื อ 1 Byte
โครงสร้างของระบบไมโครโปรเซสเซอร์
Bus
• Address Bus
– เป็ นบัสแบบทิศทางเดียว (Unidirectional Bus) ใช้ ในการส่ง
Address ของหน่วยความจาหรื ออุปกรณ์ตอ่ พ่วงที่ CPU ต้ องการติดต่อ
ด้ วย
– ข้ อมูลในหน่วยความจาทุก Byte และอุปกรณ์ตอ่ พ่วงทุกตัวจะมี
Address เฉพาะของตัวเอง เมื่อ CPU ต้ องการอ่านหรื อเขียน
หน่วยความจา หรื อต้ องการรับส่งข้ อมูลกับอุปกรณ์ตอ่ พ่วง ก็จะส่ง
Address ของข้ อมูลหรื อของอุปกรณ์ตอ่ พ่วงออกไปที่ Address Bus
โครงสร้างของระบบไมโครโปรเซสเซอร์
Bus
• Address Bus
– ขนาดของ Address Bus (A0-Aa-1) เป็ นตัวกาหนดขนาดสูงสุดของ
หน่วยความจาหรื อจานวนอุปกรณ์ตอ่ พ่วงที่ CPU สามารถติดต่อได้
ตัวอย่างเช่น
MCS51 มี Address Bus ขนาด 16 bit สามารถติดต่อ
หน่วยความจาขนาด 216 = 64 kByte
PIC 18F8722 มี Address Bus ขนาด 21 bit สามารถติดต่อ
หน่วยความจาขนาด 221 = 2 MByte
โครงสร้างของระบบไมโครโปรเซสเซอร์
Bus
• Control Bus
– เป็ นบัสที่ใช่สง่ สัญญาณควบคุมการทางานของหน่วยความจา และอุปกรณ์ตอ่
พ่วง เช่น PIC 18F8722 มีสญ
ั ญาณ Control ดังต่อไปนี ้
• /OE เป็ นสัญญาณควบคุมการอ่านหน่วยความจา
• /WRH, /WRL เป็ นสัญญาณควบคุมการเขียนหน่วยความจาด้ าน Byte สูง
และด้ าน Byte ต่าตามลาดับ
• /CE เป็ นสัญญาณกระตุ้นการทางานของหน่วยความจา
ไมโครโปรเซสเซอร์และไมโครคอนโทรลเลอร์
• ระบบไมโครโปรเซสเซอร์ ที่ต้องใช้ ไอซีหลายๆตัว เช่น CPU,
Memory, I/O Port นันเหมาะส
้
าหรับระบบใหญ่ๆ เช่น
คอมพิวเตอร์ ตงโต๊
ั ้ ะ หรื อโน๊ ตบุค็
• เนื่องจากต้ องใช้ IC หลายๆต้ ว ทาให้ ไม่สามารถนาไปประยุกต์ใช้ กบั
เครื่ องใช้ ไฟฟ้าขนาดเล็กเช่น เครื่ องต้ มกาแฟ โทรทัศน์ โทรศัพท์
• อุปกรณ์พวกนี ้ส่วนใหญ่ไม่ต้องการ CPU ที่มีความเร็วสูงหรื อ
Memory ขนาดใหญ่ หรื อต่อกับอุปกรณ์ตอ่ พ่วงจานวนมาก
ไมโครโปรเซสเซอร์และไมโครคอนโทรลเลอร์
• แต่ต้องการระบบควบคุมการทางานที่มีขนาดเล็ก ราคาถูก แต่เน้ นที่
I/O Port ที่นาไปใช้ งานได้ ง่าย ไม่ต้องต่ออุปกรณ์เสริมจานวนมาก มี
ระบบสื่อสาร มีนาฬิกาจับเวลา ฯลฯ
• จึงมีการออกแบบ IC ที่รวมเอาระบบไมโครโปรเซสเซอร์ ทงหมดอยู
ั้
่
ภายใน หรื อเรี ยกว่า ไมโครคอนโทรลเลอร์
ไมโครโปรเซสเซอร์และไมโครคอนโทรลเลอร์
• ไมโครคอนโทรลเลอร์ ทวั่ ไปในปั จจุบนั ประกอบด้ วย
– CPU
– Program Memory (ROM) และ Data Memory (RAM)
– Parallel I/O Port
– Serial Port
– ADC
– Timer
ไมโครคอนโทรลเลอร์เบอร์ต่างๆ
ไมโครคอนโทรลเลอร์เบอร์ต่างๆ
ไมโครคอนโทรลเลอร์เบอร์ต่างๆ
ตัวเลข, ข้อมูล, โปรแกรม
• เนื่องจากวงจรภายในของ
Microprocessor
หรื อ
Microcontroller สร้ างจากวงจร Digital ซึง่ มี
สถานะการทางานเพียง 2 สถานะเท่านันคื
้ อ 0 หรื อ 1 ทาให้ การ
ทางานทุกอย่างมีพื ้นฐานอยูบ่ นเลขฐาน
2
การศึกษา
Microcontroller จึงหนีไม่พ้นที่จะต้ องมีความรู้เกี่ยวกับ
การใช้ งาน การประมวลผลทางคณิตศาสตร์ และการประมวลผล
ทางตรรกศาสตร์ ของเลขฐาน 2
www.kmitl.ac.th/~klthurds
เลขฐาน 2
• เลขฐาน 2 ก็เหมือนกับเลขฐานอื่น เช่น เลขฐาน 8, 16 หรื อ 10
ที่มนุษย์ร้ ูจกั กันดี หน้ าที่ของมันคือใช้ แสดงค่าที่เราต้ องการ
• ตัวอย่างเช่นถ้ าเราต้ องการเขียนค่า สามร้ อยสี่สิบห้ า เรา
อาจจะเขียนได้ หลายวิธีเช่น
เลขฐาน
2
เลขฐาน
8
101011001B
5318
159H
เลขฐาน 16
345D
เลขฐาน 10
www.kmitl.ac.th/~klthurds
ตารางเทียบค่าเลขฐาน 2
เลขฐาน 2
0000B
0001B
0010B
0011B
เลขฐาน 16
เลขฐาน 10
เลขฐาน 2
เลขฐาน 16
เลขฐาน 10
การเขี
การเขียนเลขฐาน 10 8H
0Hยนเลขฐาน 2
0D
1000B
จะต้ องลงท้ ายด้ วยอักษร การเขี
b ยนเลขฐาน 16จะต้ องลงท้ ายด้ วยอักษร d
หรื
อ B ทุกครัง้ จะต้ องลงท้
หรื1001B
อhD หรื อจะไม่เขียนก็ได้ 9H
1H
1D ายด้ วยอักษร
หรื อ H ทุกครัง้
และถ้2D
าตัวอักษรตัวแรก1010B
2H
0AH
คือ A-F จะต้ องใส่
0 3D
ข้ างหน้ าทุกครัง้ 1011B
3H
0BH
ตัวอย่างการใส่
4D 0 ข้ างหน้ า1100B
เลขฐาน 16 เมื่อเลขข้ างหน้ า
สุด5D
เป็ น A-F
1101B
0100B
4H
0101B
5H
0110B
6H
6D
0111B
7H
7D
8D
9D
10D
11D
0CH
12D
0DH
13D
1110B
0EH
14D
1111B
0FH
15D
www.kmitl.ac.th/~klthurds
การใช้งานเลขฐาน 2 ใน Microprocessor
•
•
•
•
Machine Code
ASCII Code
EBCDIC
คีย์บอร์ ดพิเศษ
www.kmitl.ac.th/~klthurds
Machine Code ของ Assembly
• ADD A,@R0 26H
• ADD A,#54H 24 54H
30 80 FDH
• JNB P0.0,LOOP
www.kmitl.ac.th/~klthurds
กลับ
ASCII (American Standard Code for
Information Interchange)
• เป็ นรหัสขนาด 8 bit เพื่อใช้ แทนตัวอักษรต่างๆ จานวน 256
ตัวอักษรเช่น a, @ หรื อการทางานบางอย่างเช่น backspace เพื่อ
ใช้ ในคอมพิวเตอร์
• ในตอนแรก ASCII ถูกออกแบบมาเพื่อใช้ แสดงตัวอักษรภาษาอังกฤษ
เท่านัน้ ต่อมาเมื่อคอมพิวเตอร์ ถกู นาไปใช้ ในประเทศต่างๆเช่นไทย ก็ได้
มีการเปลี่ยนอักษรบางตัวที่ไม่ได้ ใช้ ให้ ใช้ แสดงอักษรในประเทศนัน้
• ข้ อเสียของ ASCII คือไม่สามารถแทนอักษรของทุกภาษาในโลกได้
ปั จจุบนั จึงได้ พฒ
ั นารหัส UNICODE ซึง่ มีขนาด 16 bit ซึง่
สามารถแทนตัวอักษรได้ ทงหมด
ั้
65536 ตัวอักษร
www.kmitl.ac.th/~klthurds
กลับ
ASCII CODE
www.kmitl.ac.th/~klthurds
ASCII CODE
www.kmitl.ac.th/~klthurds
กลับ
EBCDIC (Extended Binary
Coded Decimal Interchange
Code)
• เป็ นรหัสแทนตัวอักษรที่ถกู พัฒนาขึ ้นโดยบริษัท IBM เพื่อใช้ กบั
Punched Card ในตอนต้ น
• ในปั จจุบนั ยังคงมีใช้ อยูใ่ นเครื่ อง Mainframe
www.kmitl.ac.th/~klthurds
กลับ
EBCDIC
www.kmitl.ac.th/~klthurds
กลับ
IBM Scan Code
www.kmitl.ac.th/~klthurds
กลับ
IBM Scan Code
• ปกติเมื่อกดคีย์ปกติเช่น a-z หรื อ ก-ฮ คีย์บอร์ ดจะส่งรหัส ASCII
กลับมาให้ คอมพิวเตอร์
• แต่เมื่อมีการกดคีย์พิเศษ เช่น ALT-A คีย์บอร์ ดจะส่งรหัสขนาด 16
bit ที่เรี ยกว่า Scan Code มาให้ คอมพิวเตอร์ แทน
www.kmitl.ac.th/~klthurds
กลับ
การแบ่งขนาดของตัวเลข
ระบบคอมพิวเตอร์ มีการแบ่งขนาดของตัวเลขต่างๆออกเป็ นหลายระดับคือ
• BIT
•
•
•
•
NIBBLE
BYTE
WORD
DWORD
www.kmitl.ac.th/~klthurds
Bit
• Bit หมายถึงข้ อมูลขนาด 1 bit ใช้ แทน
– ตัวเลข 0 หรื อ 1
– จริง หรื อ เท็จ
– เปิ ด หรื อ ปิ ด
– ซ้ าย หรื อขวา
– เท่ากับ หรื อไม่เท่ากับ
www.kmitl.ac.th/~klthurds
Nibble
• หมายถึงข้ อมูลขนาด 4 bit ใช้ แทนเลขฐาน 16 หรื อเลข BCD 1 ตัว
เลขฐาน 2
เลขฐาน 16
BCD
เลขฐาน 2
เลขฐาน 16
BCD
0000
0H
0
1000
8H
8
0001
1H
1
1001
9H
9
0010
2H
2
1010
0AH
N/A
0011
3H
3
1011
0BH
N/A
0100
4H
4
1100
0CH
N/A
0101
5H
5
1101
0DH
N/A
0110
6H
6
1110
0EH
N/A
0111
7H
7
1111
0FH
N/A
www.kmitl.ac.th/~klthurds
BYTE
High NIBBLE
Low NIBBLE
• เป็ นข้ อมูลขนาด 8 bit ประกอบด้ วย 2 NIBBLE
b7 b6 b5 b4 b3 b2 b1 b0
LSB (Least Significant Bit)
บิทที่มีความสาคัญน้ อยที่สดุ
MSB (Most Significant Bit)
บิทที่มีความสาคัญมากที่สดุ
www.kmitl.ac.th/~klthurds
ความเสี ยหายของข้อมูล
• ในการสื่อสารรับส่งข้ อมูลระยะไกลเช่นในระบบ LAN หรื อ
Internet อาจมีสญ
ั ญาณรบกวนทาให้ ข้อมูลที่ได้ รับเกิดการ
ผิดพลาดขึ ้นได้
• หรื อข้ อมูลที่เก็บไว้ ในหน่วยความจา เกิดเสียหาย ณ ตาแหน่งที่ใช้ เก็บ
ข้ อมูล
• แผ่น VCD ที่ใช้ เก็บหนังมีรอยขูดขีด
www.kmitl.ac.th/~klthurds
ผิดพลาดในบิทที่ 0
• สมมติให้ ข้อมูลที่แท้ จริงมีขนาด 8 bit มีคา่ เท่ากับ 57
0011 1001b
• ถ้ าเกิดความเสียหายในบิทที่ 0 จะทาให้ ข้อมูลมีคา่ เปลี่ยนเป็ น 56
0011 1000b
• ค่าของข้ อมูลที่เสียหายเปลี่ยนไปเท่ากับ 1 จะเห็นว่าค่าเปลี่ยนไปน้ อย
มากเราจึงถือว่าบิทนี ้มีความสาคัญน้ อยที่สดุ
www.kmitl.ac.th/~klthurds
ผิดพลาดในบิทที่ 4
• สมมติให้ ข้อมูลที่แท้ จริงมีขนาด 8 bit มีคา่ เท่ากับ 57
0011 1001b
• ถ้ าเกิดความเสียหายในบิทที่ 4 จะทาให้ ข้อมูลมีคา่ เปลี่ยนเป็ น 41
0010 1001b
• ค่าของข้ อมูลที่เสียหายเปลี่ยนไปเท่ากับ 16 จะเห็นว่าค่าเปลี่ยนไปมาก
ของบิทที่ 0 บิทที่ 4 จึงมีความสาคัญมากกว่าบิทที่ 0
www.kmitl.ac.th/~klthurds
ผิดพลาดในบิทที่ 7
• สมมติให้ ข้อมูลที่แท้ จริงมีขนาด 8 bit มีคา่ เท่ากับ 57
0011 1001b
• ถ้ าเกิดความเสียหายในบิทที่ 7 จะทาให้ ข้อมูลมีคา่ เปลี่ยนเป็ น 185
1011 1001b
• ค่าของข้ อมูลที่เสียหายเปลี่ยนไปเท่ากับ 128 จะเห็นว่าค่าเปลี่ยนไป
มากที่สดุ ดังนันบิ
้ ทที่ 7 จึงมีความสาคัญมากที่สดุ
www.kmitl.ac.th/~klthurds
WORD
LSB
• เป็ นข้ อมูลขนาด 16 bit ประกอบด้ วย 2 BYTE หรื อ 4 NIBBLE
b15 b14 b13 b12
b3 b2 b1 b0
MSB
b11 b10 b9 b8
b7 b6 b5 b4
HIGH BYTE
LOW BYTE
www.kmitl.ac.th/~klthurds
DWORD (double word)
MSB
• เป็ นข้ อมูลขนาด 32 bit ประกอบด้ วย 4 BYTE หรื อ 8 NIBBLE
b31 b30 b29 b28 b27 b26 b25 b24 b23 b22 b21
b20 b19 b18 b17 b16
b15 b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b4 LSB
b3 b2 b1 b0
www.kmitl.ac.th/~klthurds
เลขจานวนเต็ม
• ในระบบ Microprocessor เราสามารถนาเอาข้ อมูล ขนาด 8,
16 หรื อ 32 bit มาแสดงแทนเลขจานวนเต็มได้ 3 ชนิดคือ
1. Signed Integer : เลขจานวนเต็มแบบมีเครื่ องหมาย ใช้ แสดง
เลขจานวนเต็ม บวก ศูนย์ และ ลบ
2. Unsigned Integer : เลขจานวนเต็มแบบไม่มีเครื่ องหมาย ใช้
แสดงเลขจานวนเต็ม บวก และ ศูนย์ เท่านัน้
3. BCD (Binary Code Decimal)
www.kmitl.ac.th/~klthurds
Signed Integer
• Signed Integer เป็ นข้ อมูลขนาด 8 bit, 16 bit หรื อ 32 bit ที่มี
การคิดแบบ 2’s complement สามารถใช้ แทนเลขจานวนเต็มบวก
ลบ และ ศูนย์
• 2’s complement เป็ นข้ อมูลที่ประกอบด้ วย 2 ส่วนคือ บิทข้ อมูล
(Data Bit) และ บิทเครื่ องหมาย (Signed Bit)
• บิทข้ อมูลใช้ แสดงค่าของเลขจานวนเต็ม
• บิทเครื่ องหมายใช้ แสดงเครื่ องหมาย บวก หรื อ ลบ ของตัวเลข
• ถ้ า บิทเครื่ องหมายเป็ น 0 ใช้ แทนเลขจานวนเต็มบวก หรื อ ศูนย์
• ถ้ า บิทเครื่ องหมายเป็ น 1 ใช้ แทนเลขจานวนเต็มลบ
www.kmitl.ac.th/~klthurds
Signed Bit
2’s Complement
Data Bit
• ตัวอย่างข้ อมูล 2’s complement ขนาด 8 bit
Data Bit
b7 b6 b5 b4 b3 b2 b1 b0
• ข้ อมูล 2’s complement ขนาด 16 bit
b15 b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b4
b3 b2 b1 b0
• จะเห็นว่Signed
าข้ อมูBitลแบบ 2’s complement ใช้ MSB เป็ นบิท
เครื่ องหมายเสมอไม่วา่ ข้ อมูลจะมีขนาดเท่าไหร่ก็ตาม
• และใช้ บทิ ที่เหลือเป็ นบิทข้ อมูล
www.kmitl.ac.th/~klthurds
การคิดเลขแบบ 2’s Complement
• ในกรณีที่บทิ เครื่ องหมายเป็ น 0
x = b15 b14 b13 b12
b11 b10 b9 b8 b7 b6 b5
b
x
2 1bb0    2  b     2  b 
4  2 bb3 b2b
• ตัวอย่างเช่น
x=0110 0001 1000 0001
14
0
1
0
14
1
n
14
n
n 0
x   214  1   213  1   28  1   27  1   20  1
 24961
www.kmitl.ac.th/~klthurds
การคิดเลขแบบ 2’s Complement ต่อ
• ในกรณีที่บทิ เครื่ องหมายเป็ น 1 แสดงว่าข้ อมูลเป็ นเลขจานวนเต็มลบ
ถ้ าต้ องการทราบค่าจะต้ องแปลงข้ อมูลให้ เป็ นเลขจานวนเต็มบวก
เสียก่อน โดยใช้ วิธี 2’s complement ดังมีขนตอนดั
ั้
งนี ้
1. กลับบิทของข้ อมูลทุกบิทให้ เป็ นค่าตรงข้ าม
2. นาค่าที่ได้ จากข้ อที่ 1 มาบวกด้ วย 1
3. นาค่าที่ได้ จากข้ อที่ 2 ไปหาคานวณหาค่าในเลขฐาน 10 ตามวิธีปกติ
ตามสมการ
x    2  b0    2  b1  
0
1
14

  2  b14      2n  bn 
 n0

14
www.kmitl.ac.th/~klthurds
ตัวอย่างการคิด 2’s complement เมื่อบิท
เครื่ องหมายเป็ น 1
• 1101 1101
• ขันตอนที
้
่1
1 1 0 1
0 0 1 0
1 1 0 1
0 0 1 0
www.kmitl.ac.th/~klthurds
ตัวอย่างการคิด 2’s complement เมื่อบิท
เครื่ องหมายเป็ น 1 ต่อ
• ขันตอนที
้
่2
0 0 1 0
0 0 1 0
0 0 1 0
+ 1
0 0 1 1
www.kmitl.ac.th/~klthurds
ตัวอย่างการคิด 2’s complement เมื่อบิท
เครื่ องหมายเป็ น 1 ต่อ
• ขันตอนที
้
่3
1 1 0 1
1 1 0 1 =
- 0 0 1 0
www.kmitl.ac.th/~klthurds
0 0 1 1
การบวกเลข Signed Integer
+ กับ +ได้ +
0 1 0 1
0 0 0 1
1 1 0 1
9 3
+
+
1 1 0 1
2 9
=
=
1 0 1 0
1 2 2
Carry Flag = 0
0 0 1 1 1
ไม่มีตวั ทดจากบิทที่ 6
www.kmitl.ac.th/~klthurds
การบวกเลข Signed Integer + กับ ได้ +
0 1 0 1
1 1 1 0
1 1 0 1
9 3
+
+
0 0 1 1
- 2 9
=
=
0 0 0 0
6 4
Carry Flag = 1
1 0 1 0 0
มีตวั ทดจากบิทที่ 6
www.kmitl.ac.th/~klthurds
การบวกเลข Signed Integer + กับ ได้ 1 0 1 0
0 0 0 1
0 0 1 1
- 9 3
+
+
1 1 0 1
2 9
=
=
0 0 0 0
- 6 4
Carry Flag = 0
0 1 1 0 0
ไม่มีตวั ทดจากบิทที่ 6
www.kmitl.ac.th/~klthurds
การบวกเลข Signed Integer - กับ ได้ 1 0 1 0
1 1 1 0
0 0 1 1
- 9 3
+
+
0 0 1 1
- 2 9
=
=
0 1 1 0
- 1 2 2
Carry Flag = 1
1 1 0 0 0
มีตวั ทดจากบิทที่ 6
www.kmitl.ac.th/~klthurds
การบวกเลข Signed Integer + กับ +
ได้ 0 1 0 1
0 0 1 1
1 1 0 1
9 3
+
+
1 0 1 1
5 9
=
=
1 0 0 0
- 1 0
5 4
2
Carry Flag = 0
0 1 0 0 1
มีตวั ทดจากบิ
Signed
Bitท=ที่ 61
www.kmitl.ac.th/~klthurds
การบวกเลข Signed Integer - กับ ได้ +
1 0 1 0
1 1 0 0
0 0 1 1
- 9 3
+
+
0 1 0 1
- 5 9
=
=
1 0 0 0
- 1 0
5 4
2
Carry Flag = 1
1 0 1 1 0
ไม่
มีตวั ทดจากบิ
Signed
Bit ท=ที0่ 6
www.kmitl.ac.th/~klthurds
Over Flow
• จากตัวอย่างที่ผา่ นมาจะเห็นว่า การบวกเลขจานวนเต็มบวกกับเลข
จานวนเต็มบวกด้ วยกันไม่ จาเป็ นจะต้ องได้ ผลลัพธ์ออกมาเป็ นเลข
จานวนเต็มบวก
• หรื อการบวกเลขจานวนเต็มลบกับเลขจาวนเต็มลบ ก็ไม่ จาเป็ น
จะต้ องได้ ผลลัพธ์ออกมาเป็ นเลขจานวนเต็มลบ
• การคานวณแล้ วได้ ผลลัพธ์ผิดพลาดดัง 2 ตัวอย่างสุดท้ ายนี ้เราเรี ยกว่า
การเกิด Over Flow
www.kmitl.ac.th/~klthurds
สาเหตุของ Over Flow
• Over Flow เกิดได้ จาก 2 สาเหตุคือ
1. มีตวั ทดจากบิทที่ 6 ไปยังบิทที่ 7 แต่ Carry Flag เป็ น 0 เกิดใน
กรณีที่นาเลขจานวนเต็มบวก 2 ตัวมาบวกกัน แล้ วได้ ผลลัพธ์เป็ นเลข
จานวนเต็มลบ สาเหตุเกิดจากผลลัพธ์มีคา่ มากกว่าค่าสูงสุดที่
Signed Integer สามารถเก็บได้
2. ไม่มีตวั ทดจากบิทที่ 6 ไปยังบิทที่ 7 แต่ Carry Flag เป็ น 1 เกิดใน
กรณีที่นาเลขจานวนเต็มลบ 2 ตัวมาบวกกัน แล้ วได้ ผลลัพธ์ เป็ นเลข
จานวนเต็มบวก สาเหตุเกิดจากผลลัพธ์มีคา่ ต่ากว่าค่าต่าสุดที่
Signed Integer สามารถเก็บได้
www.kmitl.ac.th/~klthurds
ขอบเขตของตัวเลข Signed Integer
• ถ้ าให้ x เป็ นตัวเลข Signed Integer ขนาด N บิท เรา
สามารถคานวณหาขอบเขตของค่าที่ x สามารถแสดงได้ จากสมการ
 2 N 1  x  2 N 1  1
• ดังนัน้ x สามารถแสดงเลขจานวนเต็มได้ ในช่วง
 128  x  127 ถ้ า x มีขนาด 8 bit
ถ้ า x มีขนาด 16 bit
 32768  x  32767
 2147483648  x  2147483647
ถ้ า x มีขนาด 32 bit
www.kmitl.ac.th/~klthurds
การเลือกขนาดของ Signed Integer
• การเลือกขนาดของข้ อมูลที่ใช้ เก็บ Signed Integer จะต้ อง
พิจารณาจาก 2 เงื่อนไขคือ
1. ขนาดของข้ อมูลจะต้ องทาให้ ไม่เกิด Over Flow
2. ความเร็วในการคานวณ
• ถ้ าเราเลือกข้ อมูลขนาดเล็กเกินไป อาจจะทาให้ ผลลัพธ์ในการคานวณ
เกิด Over Flow ได้ ทาให้ การคานวณผิดพลาด แต่ถ้าเราเลือก
ข้ อมูลขนาดใหญ่เกินไป ก็จะทาให้ โปรแกรมคานวณได้ ช้าลงโดยไม่
จาเป็ น
www.kmitl.ac.th/~klthurds
Unsigned Integer
• Unsigned Integer เป็ นข้ อมูลขนาด 8 bit, 16 bit หรื อ 32 bit
ที่ไม่คดิ แบบ 2’s complement สามารถใช้ แทนเลขจานวนเต็มบวก
และ ศูนย์ เท่านัน้
• เนื่องจากไม่คดิ แบบ 2’s complement ดังนันข้
้ อมูลจึงประกอบด้ วย
บิทข้ อมูล (Data Bit) เพียงอย่างเดียว
• ตัวอย่าง Unsigned Integer ขนาด 8 bit
บิทข้ อมูล
b7 b6 b5 b4 b3 b2 b1 b0 บิทข้ อมูล
• ตัวอย่าง Unsigned Integer ขนาด 16 bit
b15 b14 b13 b12
b11 b10 b9 b8 b7 b6 b5 b4
b2 b1 b0
www.kmitl.ac.th/~klthurds
b3
การคานวณค่า Unsigned Integer
• ในกรณีที่บทิ เครื่ องหมายเป็ น 0
x = b15 b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b4
b
bb1 b0  2  b     2  b     2  b 
x
3 b22 
• ตัวอย่างเช่น
x=1110 0001 1000 0001
15
0
1
0
15
1
n
15
n 0
n
x   215  1   214  1   213  1   28  1   27  1   20  1
 57729
www.kmitl.ac.th/~klthurds
บวกเลข Unsigned Integer
0 1 0 1
0 0 1 1
0 1 0 0 1
1 1 0 1
9 3
+
+
1 0 1 1
5 9
=
=
1 0 0 0
1 5 2
www.kmitl.ac.th/~klthurds
บวกเลข Unsigned Integer ต่อ
0 1 1 0
1 1 0 0
1 0 0 1 0
0 1 0 0
1 0 0
+
+
1 0 0 0
2 0 0
=
=
1 1 0 0
3 4
0 0
www.kmitl.ac.th/~klthurds
ขอบเขตของตัวเลข Unsigned
Integer
• ถ้ าให้ x เป็ นตัวเลข Unsigned Integer ขนาด N บิท เรา
สามารถคานวณหาขอบเขตของค่าที่ x สามารถแสดงได้ จากสมการ
0  x  2N 1
• ดังนัน้ x สามารถแสดงเลขจานวนเต็มได้ ในช่วง
• 0  x  255 ถ้ า x มีขนาด 8 bit
• 0  x  65535
ถ้ า x มีขนาด 16 bit
• 0  x  4294967295 ถ้ า x มีขนาด 32 bit
www.kmitl.ac.th/~klthurds
BCD (Binary Code Decimal)
• วงจรคานวณทางคณิตศาสตร์ ภายใน ALU สามารถคานวณได้ เฉพาะ
ข้ อมูลที่เป็ นเลขฐาน 2 เท่านัน้ ดังนันจึ
้ งเหมาะสาหรับเลข Signed
Integer หรื อ Unsigned Integer ซึง่ เป็ นเลขฐาน 2
• แต่ในบางครัง้ เมื่อต้ องมีการติดต่อกับมนุษย์เช่นการแสดงผลเป็ นตัวเลข
หรื อรับข้ อมูลตัวเลขจากคีย์บอร์ ด (User Interface) การใช้ เลข
Unsigned Integer หรื อ Signed Integer เนื่องจากมนุษย์
คุ้นเคยกับเลขฐาน 10
• จึงได้ มีการพัฒนาระบบเลข BCD ซึง่ เป็ นเลขฐาน 2 ที่ใช้ แสดงเลขฐาน
10
www.kmitl.ac.th/~klthurds
รู ปแบบการแสดงเลข BCD
• เลข BCD ใช้ ข้อมูลขนาด 1 NIBBLE เพื่อแสดงเลขฐาน 10 ขนาด
1 หลัก
• ในแต่ละ NIBBLE จะสามารถค่าได้ ตงแต่
ั ้ 0-15 แต่เมื่อนามาใช้
แสดงเลข BCD จะใช้ คา่ เพียง 0-9 เท่านัน้ ส่วนค่าตังแต่
้ 10-15
ไม่ได้ ใช้
• ถ้ าต้ องการแสดงเลขฐาน 10 จานวน N หลัก ก็จะต้ องใช้ ข้อมูลขนาด
N NIBBLE
www.kmitl.ac.th/~klthurds
ตัวอย่างการใช้งานข้อมูลขนาด 8 bit
เลขฐาน 2
Unsigned Integer
Signed Integer
BCD
0000 0000B
0
0
0
0000 0001B
1
1
1
0110 0010B
98
98
62
1001 0011B
147
-109
93
0011 1100B
60
60
N/A
1011 0101B
181
-75
N/A
www.kmitl.ac.th/~klthurds
การบวกเลข BCD
0 1 1 0
0 0 1 0
1 0 0 0
0 1 0 0
6 4
+
+
0 0 1 0
2 2
=
=
0 1 1 0
8 6
www.kmitl.ac.th/~klthurds
การบวกเลข BCD ต่อ
0 1 1 0
0 1 0 0
1 0 1 0
0 1 0 0
6 4
+
+
1 0 0 0
4 8
=
=
1 1 0 0
1 C
A
1 H
2
www.kmitl.ac.th/~klthurds
Decimal Adjust
1 0 1 0
0 1 1 0
1 0 0 0 1
1 1 0 0
AC H
+
+
0 1 1 0
6 6 H
=
=
0 0 1 0
1 1 2
www.kmitl.ac.th/~klthurds