ซิงโคนัส กับ อะซิงโคนัส ต่างกันอย่างไร ? (ฉบับเข้าใจคนเดียว)

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

พื้นฐานเรื่องการสื่อสาร

การสื่อสารจะแบ่งเป็น 3 ส่วน คือ ผู้ส่ง สาร และผู้รับสาร สมมุตว่าเราต้องการคุยกับเพื่อนของเรา เรื่องที่จะคุยคือสาร ตัวเราคือคนที่จะส่งสาร และเพื่อนของเราก็คือผู้รับสาร สิ่งสำคัญประการแรกเมื่อเราจะส่งสาร เรามักจะเช็คกันก่อนว่าผู้รับสารเขาพร้อมหรือยัง (เพื่อนติดคุยอยู่ไหม เพื่อนจะฟังเราไหม) แล้วเราจึงเริ่มการส่งสาร โดยอาจจะเอ่ยชื่อเขาออกไป เช่น “เห้ย เพื่อน !” เพื่อให้ผู้รับสาร (เพื่อนของเรา) เตรียมตัวที่จะรับสารจากเราไป จากนั้นเราจึงส่งสารออกไป เช่น “เมื่อวานกุไปเที่ยวบ้านแฟนมา” ด้วยความที่เพื่อน(ผู้รับสาร)อาจจะไม่แน่ใจว่าเราพูดจบหรือยัง หรือบอกสิ่งที่ต้องการมาหมดแล้วใช่ไหม เพื่อนอาจจะถามกลับว่า “แค่นี้?” แล้วเรา (ผู้สงสาร) จึงตอบกลับไป “เออ”

จากเหตุการณ์จำลองขั้นต้น สามารถแยกขั้นตอนการสื่อสารได้ดังนี้

  1. เช็คว่าผู้รับสารพร้อมไหม – (เพื่อนติดคุยอยู่ไหม เพื่อนจะฟังเราไหม)
  2. หาจังหวะ หรือทำอะไรบางอย่างเพื่อบอกว่าจะส่งสาร – (เอ่ยชื่อเขาออกไป)
  3. ส่งสารจนหมด – (“เมื่อวานกุไปเที่ยวบ้านแฟนมา”)
  4. (อาจจะ) บอกให้รู้ว่าสารที่จะส่งหมดแล้ว – (ถามมา ตอบกลับไป “เออ”)

ต่อมาเรามาดูกันว่าขั้นตอนเหล่านี้หากแปลงเป็นภาษาคอม ฯ หรือภาษาด้านการสื่อสารในระบบคอมพิวเตอร์ เขาจะเรียกขั้นตอนเหล่านี้ว่าอะไร (ศัพท์ไม่ชัวร์นะครับ)

  1. Ready – เช็คว่าผู้รับสารพร้อมไหม
  2. Start – หาจังหวะ หรือทำอะไรบางอย่างเพื่อบอกว่าจะส่งสาร – (เอ่ยชื่อเขาออกไป)
  3. Data – ส่งสารจนหมด
  4. Stop – บอกให้รู้ว่าสารที่จะส่งหมดแล้ว

นอกจากนี้ยังมีศัพท์ที่ใช้เรียกแทนตัวผู้รับ – ผู้ส่ง ดังนี้

  • Master – ผู้ส่ง
  • Slave – ผู้รับ

Master สามารถมีได้คนเดียว แต่ Slave สามารถมีได้หลายคน (ลองนึกถึงตอนที่มีผู้ส่งหลายคนพยามตะโกนสิ่งที่ตัวเองต้องการออกมา ผู้รับก็จะฟังไม่รู้เรื่อง แยกไม่ออกว่าใครเป็นใคร แต่ถ้ามีคนพูดคนเดียว แล้วมีผู้ฟังหลายคน อันนี้ได้ เพราะการฟังไม่ส่งผลให้ข้อมูลเปลี่ยนแปลง หรือมีน้ำหนักเปลี่ยนไป)

ขอให้จดจำศัพท์เหล่านี้ไว้ก่อนนะครับ เพราะความแตกต่างของ ซิงโคนัส กับ อะซิงโคนัส เราจะใช้ศัพท์พวกนี้ในการอธิบาย

การสื่อสารแบบซิงโคนัส

การสื่อสารแบบนี้ จะใช้สายไฟ 1 เส้น ในการบอกจังหวะของขั้นตอนการสื่อสารทั้งหมด และมีขาส่งข้อมูลแยกออกไป ตัวอย่างเช่น การสื่อสารแบบ I2C จะมีขา SDA และ SCL ในจังหวะ Start ขา SDA จะถูกดึงลงมาเป็นลอจิก 0 จากนั้นขา SCL จึงถูกดึงลงมาเป็นลอจิก 0 ตามด้วย ในเวลาที่อาจจะห่างกันพอสมควร จากนั้นจึงเริ่มส่งข้อมูลตามรูปแบบของบัส เมื่อข้อมูลหมดแล้ว จึงเริ่มขั้นตอน Stop ด้วยการดึงขา SDA ให้เป็นลอจิก 0 ขณะที่ปลดปลอยให้ขา SCL ให้เป็น 1 แล้วขา SDA จึงปลดปล่อยให้เป็นลอจิก 1 ตาม ถือเป็นอันจบการสื่อสาร

การสื่อสารในระบบคอมพิวเตอร์มักไม่มีขั้นตอน Ready เพราะมองว่าผู้ส่งสาร (Master) มีเพียงคนเดียวเท่านั้น ดังนั้นผู้รับสาร (Slave) ก็เอี้ยวหู ฟังค้างไว้เลยว่าผู้ส่งสารจะเริ่มส่งสารเมื่อไร

การสื่อสารแบบอะซิงโคนัส

การสื่อสารแบบนี้ จะไม่มีจังหวะมากำกับ แต่จะมีการตกลงจังหวะกันไว้ล่วงหน้า และจะรับรู้ได้ต่อเมื่อมีการเริ่มต้นการสื่อสารแล้ว ยกตัวอย่างการสื่อสารแบบอนุกรมบัส 1-wire ของ DHT11 (เชื่อว่าผู้อ่านอาจจะเดาว่าผมจะยกตัวอย่างบัส UART เหมือนตำราอื่น ๆ แต่สำหรับผมที่ชอบความแปลกใหม่แล้วนั้น … )

บัส 1-wire ของ DHT11 นั้น จะเริ่มสื่อสารด้วยการดึงสัญญาณขา DATA ลงเป็นลอจิก 0 เป็นเวลามากกว่า 18mS แล้วจึงปลดปล่อยให้เป็นลอจิก 1 จากนั้นรอ DHT11 ตอบสนองกลับมา โดยจะรับรู้ได้จาก DHT11 ดึงขา DATA ลงมา โดยใช้เวลาประมาณ 80uS เป็นตัวบอกว่า DHT11 รับรู้แล้วว่าต้องการข้อมูล แล้วจึงเริ่มขั้นตอนการส่งข้อมูลต่อไป สำหรับการสื่อสารแบบ 1-wire ของ DHT11 จะไม่มีจังหวะจบการสื่อสาร แต่เมื่อส่งข้อมูลมาครบ 41 บิต จะถือว่าจบการสื่อสารทันที (นับจำนวนข้อมูล มาเป็นจังหวะ Stop)

สรุปง่าย ๆ

การสื่อสารแบบซิงโคนัส -> มีสายไฟอย่างน้อย 2 เส้น จังหวะต่าง ๆ กำหนดโดยสายไฟเส้นใดเส้นหนึ่ง

การสื่อสารแบบอะซิงโคนัส -> มีสายไฟเส้นเดียว จังหวะต่าง ๆ มีการตกลงกันไว้ล่วงหน้า และมักใช้เวลาเป็นตัวกำหนดจังหวะรับ – ส่งข้อมูล

ดังนั้น อาจจะสรุปสั้นกว่านี้ว่า ใช้สายไฟหลายเส้น กับ ใช้สายไฟเส้นเดียว ละมั้งครับ (^_^)