สถาปัตยกรรมคอมพิวเตอร์
UAT 105 เทคโนโลยีดิจิทัลและเครือข่าย
บทเรียน
เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ
- อธิบายส่วนประกอบของคอมพิวเตอร์แบบ von Neumann และวงจรดึง ถอด และทำคำสั่ง
- อธิบายลำดับชั้นหน่วยความจำและ interrupt ในระบบที่ต้องตอบสนองทันเวลา
- เปรียบเทียบตัวควบคุมการบินกับคอมพิวเตอร์ภารกิจบนโดรน
- เลือกบัส UART, I²C, SPI หรือ CAN ให้เหมาะกับอุปกรณ์ และคำนวณความจุของบัสและพื้นที่เก็บข้อมูล
ทำไมต้องรู้
โดรนหนึ่งลำมีคอมพิวเตอร์อย่างน้อยหนึ่งตัวที่ต้องอ่านเซนเซอร์หลายร้อยครั้งต่อวินาทีและสั่งมอเตอร์ให้ทันเวลา ถ้าเลือกบอร์ดผิด ต่อสายผิดบัส หรือใช้การ์ดหน่วยความจำที่เขียนไม่ทัน ภาพจะกระตุกหรือ log หาย และอาจร้ายแรงถึงระบบควบคุมตอบสนองช้าจนเสียการทรงตัว การเข้าใจสถาปัตยกรรมคอมพิวเตอร์ช่วยให้อ่านสเปกบอร์ดออก และออกแบบระบบที่มีทรัพยากรพอ
คอมพิวเตอร์แบบ von Neumann
คอมพิวเตอร์เกือบทุกเครื่องตั้งแต่ไมโครคอนโทรลเลอร์ในตัวควบคุมการบินไปจนถึงเซิร์ฟเวอร์คลาวด์ มีส่วนประกอบหลักเหมือนกัน
- หน่วยประมวลผลกลาง (CPU) ประกอบด้วย หน่วยควบคุม ที่อ่านและถอดคำสั่ง หน่วยคำนวณและตรรกะ (ALU) ที่สร้างจากวงจรบวกและเกตในโมดูล 1 และ รีจิสเตอร์ หน่วยความจำขนาดเล็กมากที่เร็วที่สุด
- หน่วยความจำ เก็บทั้งคำสั่งของโปรแกรมและข้อมูล
- อุปกรณ์รับส่ง (I/O) เช่น เซนเซอร์ ตัวขับมอเตอร์ และวิทยุ
- บัส สายสัญญาณที่เชื่อมทุกส่วน แบ่งเป็นบัสที่อยู่ บัสข้อมูล และบัสควบคุม
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 6X | Raspberry Pi 5 |
| หน่วยประมวลผล | STM32H753 Arm Cortex-M7 480 MHz | Broadcom BCM2712 Arm Cortex-A76 4 แกน 2.4 GHz |
| หน่วยความจำ | flash 2 MB, RAM 1 MB | LPDDR4X 1–16 GB |
| ระบบปฏิบัติการ | real-time OS (NuttX) | Linux |
| หน้าที่ | อ่านเซนเซอร์ ประมาณสถานะ ควบคุมมอเตอร์ | ประมวลผลภาพ AI วางแผนภารกิจ สื่อสารเครือข่าย |
| จุดเด่น | ตอบสนองแน่นอนทันเวลา | คำนวณได้มาก มีซอฟต์แวร์ให้เลือกมาก |
ตัวควบคุมการบินมี RAM เพียง 1 MB แต่เพียงพอเพราะทำงานเฉพาะทาง ส่วน Raspberry Pi 5 เร็วกว่าหลายเท่าแต่ Linux ไม่รับประกันเวลาตอบสนอง จึงไม่ควรให้ควบคุมมอเตอร์โดยตรง คอมพิวเตอร์ทั้งสองคุยกันด้วย MAVLink ผ่าน UART หรือ Ethernet
บัสสื่อสารบนบอร์ด
| บัส | จำนวนสาย | ลักษณะ | ใช้กับ |
|---|---|---|---|
| UART | 2 (TX, RX) | ไม่มีสัญญาณนาฬิการ่วม สองฝ่ายต้องตั้ง baud rate เท่ากัน จุดต่อจุด | GNSS, วิทยุ telemetry, คอมพิวเตอร์ภารกิจ |
| I²C | 2 (SDA, SCL) | ต่ออุปกรณ์หลายตัวบนสายเดียวด้วยที่อยู่ ความเร็วปานกลาง | เข็มทิศ, เซนเซอร์วัดระยะ, จอเล็ก |
| SPI | 4 ขึ้นไป | มีนาฬิการ่วม เร็ว สายเลือกอุปกรณ์แยกต่อตัว | IMU, บารอมิเตอร์, หน่วยความจำ |
| CAN | 2 (สายคู่บิดเกลียว) | ส่งแบบผลต่างแรงดัน ทนสัญญาณรบกวน มีลำดับความสำคัญของข้อความ | 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 ขึ้นไป
ปฏิบัติการประจำโมดูล
ปฏิบัติการ: สำรวจคอมพิวเตอร์และบัส
- อ่านหน้าเอกสาร Pixhawk 6X ใน PX4 user guide จดชื่อพอร์ตทุกพอร์ตพร้อมชนิดบัส (UART, I²C, CAN, SPI ภายใน) แล้วเทียบกับภาพที่ 2
- บน Raspberry Pi หรือคอมพิวเตอร์ Linux ใช้คำสั่ง
lscpuและfree -hดูจำนวนแกน ความถี่ และ RAM แล้วเทียบกับตัวควบคุมการบิน - เปิด SITL ตามหน่วยความรู้ “เตรียมคอมพิวเตอร์สำหรับ Drone Simulator” แล้วดูว่า CPU และ RAM ของเครื่องถูกใช้ไปเท่าใดขณะจำลอง
- คำนวณงบข้อมูลของวิทยุ 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
- เลือกบัสให้เหมาะกับอุปกรณ์ และคำนวณทั้งความจุและความเร็วของบัสและหน่วยเก็บข้อมูลก่อนบิน
แบบฝึกตรวจความเข้าใจ
- CPU ที่นาฬิกา 200 MHz มีคาบนาฬิกากี่นาโนวินาที
- บัสที่อยู่ 16 บิตชี้ตำแหน่งหน่วยความจำได้กี่ตำแหน่ง
- UART 115200 baud แบบ 8N1 ส่งได้สูงสุดกี่ไบต์ต่อวินาที
- ทำไมตัวควบคุมการบินจึงใช้ real-time OS แทน Linux
- กล้องบันทึกวิดีโอ 100 Mbit/s การ์ด 64 GB บันทึกได้นานกี่นาที
เฉลย
- ns
- ตำแหน่ง
- byte/s
- เพราะต้องรับประกันว่างานควบคุมการบินทำเสร็จทันเวลาทุกรอบ Linux ไม่รับประกันเวลาตอบสนองแบบนั้น
- วินาที หรือประมาณ 85.3 นาที
สรุปสูตรสำคัญ
| คาบของสัญญาณนาฬิกา | |
| จำนวนที่อยู่ของบัสที่อยู่ n บิต | |
| อัตราไบต์ของ UART แบบ 8N1 | |
| เวลาบันทึกที่การ์ดความจุ C รองรับ |
แหล่งอ้างอิงหลัก
- Harris, S. L., & Harris, D. (2021). Digital design and computer architecture: RISC-V edition. Morgan Kaufmann.
- PX4 Autopilot. Holybro Pixhawk 6X. PX4 user guide. link
- Raspberry Pi Ltd. Raspberry Pi 5 product specifications. link
- SD Association. Speed class standards for video recording. link
- MAVLink Development Team. Packet serialization. MAVLink developer guide. link
- Kurose, J. F., & Ross, K. W. (2025). Computer networking: A top-down approach (9th ed.). Pearson. link
อ่านเพิ่มเติม
ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล
ระบบดิจิทัลและสถาปัตยกรรมคอมพิวเตอร์
เตรียมคอมพิวเตอร์สำหรับ Drone Simulator
ออกแบบและประกอบรวมระบบโดรน
ในชั้นเรียน / ภาคสนาม
ปฏิบัติการในห้องแล็บหรือภาคสนามตามใบงาน พร้อม checklist ความปลอดภัย
หลักฐานการเรียนรู้: ใบงานที่ผ่านการตรวจและผล quiz