โมดูล 2/5 · สัปดาห์ 4–6 · 27 ชม.

สถาปัตยกรรมคอมพิวเตอร์

UAT 105 เทคโนโลยีดิจิทัลและเครือข่าย

เวลาเรียนประมาณ 90 นาทีร่าง รอตรวจปรับปรุงล่าสุด 26 กันยายน 2569

บทเรียน

เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ

  1. อธิบายส่วนประกอบของคอมพิวเตอร์แบบ von Neumann และวงจรดึง ถอด และทำคำสั่ง
  2. อธิบายลำดับชั้นหน่วยความจำและ interrupt ในระบบที่ต้องตอบสนองทันเวลา
  3. เปรียบเทียบตัวควบคุมการบินกับคอมพิวเตอร์ภารกิจบนโดรน
  4. เลือกบัส UART, I²C, SPI หรือ CAN ให้เหมาะกับอุปกรณ์ และคำนวณความจุของบัสและพื้นที่เก็บข้อมูล

ความรู้พื้นฐานที่ควรมี: UAT 105 โมดูล 1

ทำไมต้องรู้

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

คอมพิวเตอร์แบบ von Neumann

คอมพิวเตอร์เกือบทุกเครื่องตั้งแต่ไมโครคอนโทรลเลอร์ในตัวควบคุมการบินไปจนถึงเซิร์ฟเวอร์คลาวด์ มีส่วนประกอบหลักเหมือนกัน

  • หน่วยประมวลผลกลาง (CPU) ประกอบด้วย หน่วยควบคุม ที่อ่านและถอดคำสั่ง หน่วยคำนวณและตรรกะ (ALU) ที่สร้างจากวงจรบวกและเกตในโมดูล 1 และ รีจิสเตอร์ หน่วยความจำขนาดเล็กมากที่เร็วที่สุด
  • หน่วยความจำ เก็บทั้งคำสั่งของโปรแกรมและข้อมูล
  • อุปกรณ์รับส่ง (I/O) เช่น เซนเซอร์ ตัวขับมอเตอร์ และวิทยุ
  • บัส สายสัญญาณที่เชื่อมทุกส่วน แบ่งเป็นบัสที่อยู่ บัสข้อมูล และบัสควบคุม
กล่อง CPU ด้านซ้ายมีหน่วยควบคุม ALU รีจิสเตอร์และนาฬิกา ด้านขวามีหน่วยความจำที่เก็บทั้งคำสั่งและข้อมูล และอุปกรณ์รับส่งเช่นเซนเซอร์ มอเตอร์ วิทยุ ด้านล่างเป็นบัสที่อยู่ ข้อมูล และสัญญาณควบคุมเชื่อมทุกส่วน
ภาพที่ 1 สถาปัตยกรรมแบบ von Neumann

CPU ทำงานเป็นรอบซ้ำไม่รู้จบ คือ ดึงคำสั่ง (fetch) จากหน่วยความจำ ถอดความหมาย (decode) แล้ว ทำคำสั่ง (execute) จังหวะของรอบถูกกำหนดด้วย สัญญาณนาฬิกา (clock) ความถี่นาฬิกา 480 MHz หมายถึง 480 ล้านจังหวะต่อวินาที

จำนวนบิตของบัสที่อยู่กำหนดว่าชี้ตำแหน่งหน่วยความจำได้กี่ตำแหน่ง ระบบ 32 บิตชี้ได้ ตำแหน่ง ถ้าตำแหน่งละ 1 ไบต์ก็คือ 4 GiB

clock_hz = 480e6
print(f"clock period {1e9 / clock_hz:.3f} ns")
print(2**32, "addresses =", 2**32 / 2**30, "GiB")
clock period 2.083 ns
4294967296 addresses = 4.0 GiB

ลำดับชั้นหน่วยความจำและ interrupt

หน่วยความจำที่เร็วมีราคาแพงและจุได้น้อย จึงจัดเป็นลำดับชั้น ตั้งแต่ รีจิสเตอร์ ใน CPU (เร็วที่สุด จุน้อยที่สุด) → แคช (cache) → RAM หน่วยความจำหลักที่ข้อมูลหายเมื่อปิดไฟ → หน่วยเก็บถาวร เช่น flash, SD card หรือ SSD ซึ่งจุได้มากแต่ช้าที่สุด โปรแกรมที่ทำงานเร็วจะพยายามใช้ข้อมูลในชั้นบนให้มากที่สุด

ตัวควบคุมการบินต้องตอบสนองเหตุการณ์ทันที เช่น เมื่อ IMU มีค่าใหม่พร้อม ถ้าให้ CPU วนถามอุปกรณ์ตลอดเวลา (polling) จะเสียรอบเปล่า จึงใช้ interrupt คืออุปกรณ์ส่งสัญญาณขัดจังหวะ CPU ให้หยุดงานปัจจุบันชั่วคราวไปทำงานสั้น ๆ ที่เร่งด่วนก่อน ระบบปฏิบัติการแบบเวลาจริง (real-time OS) เช่น NuttX ที่ PX4 ใช้ ช่วยจัดลำดับความสำคัญของงานให้งานควบคุมการบินไม่ถูกงานอื่นขวาง

คอมพิวเตอร์สองตัวบนโดรน

โดรนสมัยใหม่มักแยกงานให้คอมพิวเตอร์สองชนิด

ตัวควบคุมการบิน (flight controller)คอมพิวเตอร์ภารกิจ (companion computer)
ตัวอย่างPixhawk 6XRaspberry Pi 5
หน่วยประมวลผลSTM32H753 Arm Cortex-M7 480 MHzBroadcom BCM2712 Arm Cortex-A76 4 แกน 2.4 GHz
หน่วยความจำflash 2 MB, RAM 1 MBLPDDR4X 1–16 GB
ระบบปฏิบัติการreal-time OS (NuttX)Linux
หน้าที่อ่านเซนเซอร์ ประมาณสถานะ ควบคุมมอเตอร์ประมวลผลภาพ AI วางแผนภารกิจ สื่อสารเครือข่าย
จุดเด่นตอบสนองแน่นอนทันเวลาคำนวณได้มาก มีซอฟต์แวร์ให้เลือกมาก

ตัวควบคุมการบินมี RAM เพียง 1 MB แต่เพียงพอเพราะทำงานเฉพาะทาง ส่วน Raspberry Pi 5 เร็วกว่าหลายเท่าแต่ Linux ไม่รับประกันเวลาตอบสนอง จึงไม่ควรให้ควบคุมมอเตอร์โดยตรง คอมพิวเตอร์ทั้งสองคุยกันด้วย MAVLink ผ่าน UART หรือ Ethernet

ตัวควบคุมการบิน STM32H753 480 MHz อยู่กลาง รับข้อมูลจาก IMU และบารอมิเตอร์ทาง SPI จาก GNSS ทาง UART และวิทยุ telemetry ทาง UART ส่งสัญญาณ PWM หรือ DShot ไปยัง ESC และมอเตอร์ และคุยกับคอมพิวเตอร์ภารกิจ Raspberry Pi 5 ด้วย MAVLink ผ่าน UART หรือ Ethernet คอมพิวเตอร์ภารกิจรับภาพจากกล้องทาง USB หรือ CSI
ภาพที่ 2 คอมพิวเตอร์สองตัวบนโดรนและบัสที่เชื่อม

บัสสื่อสารบนบอร์ด

บัสจำนวนสายลักษณะใช้กับ
UART2 (TX, RX)ไม่มีสัญญาณนาฬิการ่วม สองฝ่ายต้องตั้ง baud rate เท่ากัน จุดต่อจุดGNSS, วิทยุ telemetry, คอมพิวเตอร์ภารกิจ
I²C2 (SDA, SCL)ต่ออุปกรณ์หลายตัวบนสายเดียวด้วยที่อยู่ ความเร็วปานกลางเข็มทิศ, เซนเซอร์วัดระยะ, จอเล็ก
SPI4 ขึ้นไปมีนาฬิการ่วม เร็ว สายเลือกอุปกรณ์แยกต่อตัวIMU, บารอมิเตอร์, หน่วยความจำ
CAN2 (สายคู่บิดเกลียว)ส่งแบบผลต่างแรงดัน ทนสัญญาณรบกวน มีลำดับความสำคัญของข้อความESC และ GNSS แบบ DroneCAN

UART แบบ 8N1 ส่งหนึ่งไบต์ด้วยบิตเริ่ม 1 บิต ข้อมูล 8 บิต และบิตหยุด 1 บิต รวม 10 บิต ที่ 57600 baud จึงส่งได้ไม่เกิน 5760 ไบต์ต่อวินาที

ตัวอย่างที่ 1 วิทยุ telemetry ส่งตำแหน่งได้กี่ครั้งต่อวินาที

ข้อความ GLOBAL_POSITION_INT มีข้อมูล 28 ไบต์ บวกส่วนหัวและ CRC ของ MAVLink 2 อีก 12 ไบต์ (ไม่ลงนาม) รวมไม่เกิน 40 ไบต์ต่อเฟรม

baud = 57600
bytes_per_s = baud / 10
frame_bytes = 28 + 12
print(bytes_per_s, "byte/s")
print(bytes_per_s / frame_bytes, "GLOBAL_POSITION_INT frames/s at most")
5760.0 byte/s
144.0 GLOBAL_POSITION_INT frames/s at most

ตัวเลขนี้เป็นเพดานทางทฤษฎีของสายเส้นเดียว ในงานจริงสายนี้ต้องแบ่งให้ข้อความอื่นอีกหลายชนิด ทั้ง HEARTBEAT ATTITUDE และ SYS_STATUS และต้องเผื่อช่วงที่สัญญาณรบกวนทำให้ข้อความเสีย จึงต้องเลือกอัตราข้อความให้เหลือช่องว่างไว้

พื้นที่เก็บข้อมูลและความเร็วการเขียน

โดรนสำรวจบันทึกทั้ง log การบินและวิดีโอ ต้องคำนวณทั้ง ความจุ (เก็บได้นานเท่าใด) และ ความเร็วเขียน (เขียนทันข้อมูลที่ไหลเข้าหรือไม่) SD Association กำหนด Video Speed Class โดยตัวเลขบนสัญลักษณ์บอกความเร็วเขียนต่ำสุด เช่น V30 คือ 30 MB/s

ตัวอย่างที่ 2 การ์ด V30 ขนาด 128 GB รับวิดีโอได้ไหม

สมมติกล้องบันทึกวิดีโอ 4K ที่อัตราบิต 150 Mbit/s และตัวควบคุมการบินเขียน log 50 kB/s

log_rate_bytes = 50_000
print(log_rate_bytes * 3600 / 1e6, "MB of log per hour")

video_mbps = 150
video_mb_per_s = video_mbps / 8
print(video_mb_per_s, "MB/s needed, fits V30:", video_mb_per_s <= 30)

card_gb = 128
minutes = card_gb * 1e9 * 8 / (video_mbps * 1e6) / 60
print(f"{minutes:.1f} min of video on {card_gb} GB")
180.0 MB of log per hour
18.75 MB/s needed, fits V30: True
113.8 min of video on 128 GB

วิดีโอต้องการ 18.75 MB/s ต่ำกว่าเพดานขั้นต่ำ 30 MB/s ของ V30 จึงเขียนทัน และการ์ด 128 GB บันทึกได้ประมาณ 114 นาที ซึ่งพอสำหรับแบตเตอรี่หลายชุด ถ้ากล้องตั้งอัตราบิตสูงขึ้น เช่น 300 Mbit/s (37.5 MB/s) ต้องใช้การ์ดชั้น V60 ขึ้นไป

ปฏิบัติการประจำโมดูล

ปฏิบัติการ: สำรวจคอมพิวเตอร์และบัส

  1. อ่านหน้าเอกสาร Pixhawk 6X ใน PX4 user guide จดชื่อพอร์ตทุกพอร์ตพร้อมชนิดบัส (UART, I²C, CAN, SPI ภายใน) แล้วเทียบกับภาพที่ 2
  2. บน Raspberry Pi หรือคอมพิวเตอร์ Linux ใช้คำสั่ง lscpu และ free -h ดูจำนวนแกน ความถี่ และ RAM แล้วเทียบกับตัวควบคุมการบิน
  3. เปิด SITL ตามหน่วยความรู้ “เตรียมคอมพิวเตอร์สำหรับ Drone Simulator” แล้วดูว่า CPU และ RAM ของเครื่องถูกใช้ไปเท่าใดขณะจำลอง
  4. คำนวณงบข้อมูลของวิทยุ telemetry 57600 baud ถ้าต้องส่ง HEARTBEAT 1 Hz, ATTITUDE 10 Hz และ GLOBAL_POSITION_INT 4 Hz ใช้ความจุไปกี่เปอร์เซ็นต์ (หาขนาดข้อมูลแต่ละข้อความจาก MAVLink common.xml)

ข้อผิดพลาดที่พบบ่อย

ระวัง

  • ใช้ความถี่นาฬิกาเทียบความเร็วข้ามสถาปัตยกรรม CPU ต่างตระกูลทำงานต่อจังหวะได้ไม่เท่ากัน
  • ให้คอมพิวเตอร์ Linux ควบคุมมอเตอร์โดยตรง Linux ไม่รับประกันเวลาตอบสนอง
  • ต่อ TX เข้า TX สาย UART ต้องไขว้ TX ของฝั่งหนึ่งเข้า RX ของอีกฝั่ง และต้องตั้ง baud rate ตรงกัน
  • ลืมบิตเริ่มและบิตหยุด UART 57600 baud ไม่ได้ส่ง 7200 ไบต์ต่อวินาที แต่ได้เพียง 5760
  • ดูเฉพาะความจุการ์ด ความเร็วเขียนไม่พอทำให้วิดีโอขาดตอนแม้การ์ดยังว่าง

สรุป

  • คอมพิวเตอร์แบบ von Neumann มี CPU หน่วยความจำ I/O และบัส CPU ทำงานเป็นรอบดึง ถอด และทำคำสั่ง ตามจังหวะนาฬิกา
  • หน่วยความจำจัดเป็นลำดับชั้นจากเร็วแต่เล็กไปช้าแต่ใหญ่ ส่วน interrupt ช่วยให้ตอบสนองเหตุการณ์ทันเวลา
  • ตัวควบคุมการบินเน้นความแน่นอนของเวลา คอมพิวเตอร์ภารกิจเน้นกำลังคำนวณ ทั้งสองคุยกันด้วย MAVLink
  • เลือกบัสให้เหมาะกับอุปกรณ์ และคำนวณทั้งความจุและความเร็วของบัสและหน่วยเก็บข้อมูลก่อนบิน

แบบฝึกตรวจความเข้าใจ

  1. CPU ที่นาฬิกา 200 MHz มีคาบนาฬิกากี่นาโนวินาที
  2. บัสที่อยู่ 16 บิตชี้ตำแหน่งหน่วยความจำได้กี่ตำแหน่ง
  3. UART 115200 baud แบบ 8N1 ส่งได้สูงสุดกี่ไบต์ต่อวินาที
  4. ทำไมตัวควบคุมการบินจึงใช้ real-time OS แทน Linux
  5. กล้องบันทึกวิดีโอ 100 Mbit/s การ์ด 64 GB บันทึกได้นานกี่นาที
เฉลย
  1. ns
  2. ตำแหน่ง
  3. byte/s
  4. เพราะต้องรับประกันว่างานควบคุมการบินทำเสร็จทันเวลาทุกรอบ Linux ไม่รับประกันเวลาตอบสนองแบบนั้น
  5. วินาที หรือประมาณ 85.3 นาที

สรุปสูตรสำคัญ

คาบของสัญญาณนาฬิกา
จำนวนที่อยู่ของบัสที่อยู่ n บิต
อัตราไบต์ของ UART แบบ 8N1
เวลาบันทึกที่การ์ดความจุ C รองรับ

แหล่งอ้างอิงหลัก

  1. Harris, S. L., & Harris, D. (2021). Digital design and computer architecture: RISC-V edition. Morgan Kaufmann.
  2. PX4 Autopilot. Holybro Pixhawk 6X. PX4 user guide. link
  3. Raspberry Pi Ltd. Raspberry Pi 5 product specifications. link
  4. SD Association. Speed class standards for video recording. link
  5. MAVLink Development Team. Packet serialization. MAVLink developer guide. link
  6. Kurose, J. F., & Ross, K. W. (2025). Computer networking: A top-down approach (9th ed.). Pearson. link

อ่านเพิ่มเติม

ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล

ในชั้นเรียน / ภาคสนาม

ปฏิบัติการในห้องแล็บหรือภาคสนามตามใบงาน พร้อม checklist ความปลอดภัย

หลักฐานการเรียนรู้: ใบงานที่ผ่านการตรวจและผล quiz

แบบทดสอบประจำโมดูล

แบบทดสอบนี้ใช้ตรวจความเข้าใจ (formative) ไม่ใช่การสอบเก็บคะแนน

โดเมนความรู้: การเขียนโปรแกรมและเทคโนโลยีดิจิทัล · การวางแผนภารกิจ การบิน และการจำลอง · การควบคุม ออโตไพลอต และการนำทาง · อากาศยาน โครงสร้าง และการออกแบบ · การติดตั้ง บำรุงรักษา และการทดสอบ · ไฟฟ้า อิเล็กทรอนิกส์ และระบบกำลัง