การติดต่อแบบอนุกรมอาจจะแบ่งตามรูปลักษณะได้ 3 แบบ
1.แบบซิมเพล็กซ์ ( Simplex
) ข้อมูลไหลได้ทางเดียวเท่านั้น บางครั้งก็เรียกว่าการส่งทิศทางเดียว ( Unidirentional
data bus )
2.แบบฮาล์ฟดูเพล็กซ์ (
Half duplex ) ข้อมูลสามารถส่งได้ทั้งสองสถานี แต่จะต้องผลัดกันส่งและผลัดกันรับ
จะส่งและรับพร้อมกันไม่ได้
3.แบบฟูลดูเพล็กซ์ ( Full
duplex ) ทั้งสองสถานีสมารถรับและส่งได้ในเวลาเดียวกัน
รูปที่ 4
การส่งแบบฟูลดูเพล็กซ์และฮาล์ดูเพล็กซ์ ไม่ขึ้นอยู่กับจำนวนของสายในการติดต่อ
บางครั้งคำว่า ทูไวร์ ( two wire ) หรือสองเส้น และโฟร์ไวร์ ( four wire )
หรือ 4 เส้น ใช้ในการบรรยายถึงลักษณะการสื่อสารข้อมูล ซึ่งอาจจะทำให้เข้าใจ
และฮาล์ฟดูเพล็กซ์ สายโทรศัพท์ทั่วไปเป็นแบบ 2 เส้น ส่วนในสายที่เป็นแบบเช่า
( Lease line ) นั้นส่วนมากจะเป็น 4 เส้น
ความเร็วในการถ่ายโอนข้อมูลแบบอนุกรม
ความเร็วในการถ่ายโอนข้อมูลแบบอนุกรม หน่วยวัดเป็นบิตต่อวินาที ( bps ) หน่วยที่เรียกบรรยายถึงการเปลี่ยนแปลงของสัญญาณใน
1 วินาที เรียกว่าบอดเรต ( Baud rate ) หรืออัตราบอด หลายคนยังเข้าใจสับสนระหว่างอัตราบอดและอัตราบิต
( bit rate ) การเปลี่ยนแปลงของสัญญาณ 1 ครั้ง อาจจะแสดงถึงการส่งข้อมูลแบบอนุกรมมากกว่า
1 บิต ถ้าเขียนในรูปของสมการทางคณิตศาสตร์เราก็จะได้
อัตราบิต
( bit rete ) = อัตราบอด ( baud rate ) * ( บิตใน 1 บอด )
การสื่อสารแบบอะซิงโครนัส
การส่งแบบอะซิงโครนัสนี้ พัฒนามาจากการส่งโทรพิมพ์ในสมัยก่อน ลักษณะของสัญญาณแสดงไว้ในรูปที่
2.6 เพื่อเพิ่มกลไกในการรับส่งอย่างถูกต้อง สัญญาณอะซิงโครนัส จะประกอบด้วยบิตเริ่มต้นหรือบิตสตาร์ต
( Start ) และบิตสิ้นสุดหรือบิตสต๊อป ( Stop bit )
รูปที่ 5
ขณะที่สถานะของการส่งเป็นแบบว่าง ( Idle ) คือยังไม่มีสัญญาณส่งออกมาจะมีสัญญาณหรือมีแรงดัน
( หรือกระแส ) ตลอดเวลา เพื่อความแน่ใจว่าฝ่ายรับยังติดต่ออยู่กับฝ่ายส่ง
เมื่อเริ่มจะส่งข้อมูล สัญญาณของอะซิงโครนัสจะเป็น 0 หนึ่งช่วงสัญญาณนาฬิกา
บิตนี้เรียกว่า สตาร์ทบิต ตามหลังของสตาร์ตบิตก็จะเป็นข้อมูลสำหรับ 1 ตัวอักษร
ซึ่งอาจจะมีขนาดตั้งแต่ 5 บิต จนถึง 8 บิต โดยบิตที่มีค่าน้อยที่สุด ( LSB
) จะถูกส่งออกมาก่อนไล่ไปจนถึงบิตที่มีค่ามากที่สุด ( MSB ) การเข้ารหัสอักขระนี้ส่วนมากจะนิยมใช้รหัส
ASCII แรกเริ่มที่เดียวในงานของโทรพิมพ์เขาใช้รหัส Baudot ซึ่งใช้ 5 บิต ในการแทนอักขระ
1 ตัว ตามหลังข้อมูลก็จะเป็นพาริตี้บิต ซึ่งอาจจะใช้หรือไม่ใช้ก็ได้ พาริตี้บิตทำหน้าที่เป็นตัวตรวจสอบความถูกต้องของสัญญาณที่ได้รับ
พาริตี้บิตอาจจะเป็นแบบคู่ ( Even ) หรือแบบคี่ ( Odd ) หมายความว่าถ้าหากเป็นพาริตี้บิตคู่
จำนวนบิตที่เป็น 1 ในช่วงบิตข้อมูลกับบิตพาริตี้รวมแล้วจะต้องเป็นจำนวนคู่
ผู้ส่งจะต้องทำหน้าที่ตรวจสอบข้อมูลแล้วใส่พาริตี้บิตเอง ฝ่ายรับเมื่อรับแล้วก็ต้องตรวจสอบดูว่าเป็นจริงดังสถานการณ์ที่ตั้งเอาไว้หรือไม่
หากผิดพลาดก็หมายความว่าสัญญาณที่รับนั้นผิดพลาดไปจากสถานีส่งส่งออกมา ทั้งนี้ทั้งนั้นจะต้องผิดเป็นจำนวนคี่เท่านั้น
คือผิดไป 1 บิต 3 บิต หรือ 5 บิต พร้อมกันจึงจะตรวจสอบได้ว่าผิด มองเห็นง่าย
ๆ ว่าถ้าผิดเป็นจำนวนคู่ ผลรวมของจำนวนหนึ่งก็ยังเป็นคู่อยู่ดี ทั้งนี้ทั้งนั้นไม่ได้หมายความว่าพาริตี้คี่
( Odd Parity ) จะตรวจสอบการผิดพลาดเป็นจำนวนคี่ ความจริงแล้วตรวจสอบความผิดพลาดได้เหมือนกับพาริตี้คู่
( Even Parity ) แต่แทนที่จะตรวจสอบดูว่าสัญญาณที่รับเข้ามีจำนวนคู่ ก็ตรวจสอบดูว่ามีจำนวนคี่หรือเปล่า
อย่างไรก็ตามโอกาสที่จะผิดพลาด 2 บิตพร้อมกันมีน้อยมาก
ย้อนกลับมาดูสัญญาณอะซิงโครนัสใหม่ หลังจากบิตพาริตี้แล้วก็จะต้องมีสต๊อปบิต
ซึ่งเป็น 1 ความกว้างของสต๊อปบิตอาจจะเป็น 1, 1.5, หรือ พัลส์ของสัญญาณนาฬิกา
แล้วแต่ผู้รับและผู้ส่งจะตกลงใช้กันเอง การเริ่มใช้พอร์ตอนุกรม ( ทางออกอนุกรม
) จึงจำเป็นจะต้องตั้งค่าต่าง ๆ สำหรับเป็นการส่งแบบอนุกรมอันได้แก่
1. ความเร็วในการส่ง
2. ความยาวรหัส 1 อักขระ
3. บิตตรวจสอบ
4. จำนวนสต๊อปบิต
ในการส่งโทรพิมพ์หรือโทรเลขเมื่อก่อนนี้ใช้ความเร็วแค่ 70 บอด และ 110 บอด
สำหรับคอมพิวเตอร์ความเร็วในการส่งมีให้เลือกตั้งแต่ 110, 200, 300, 1200,
2400, 4800, 9600 บอด และสูงไปกว่านั้น เนื่องจากมี IC หลายเบอร์ทำหน้าที่รับส่งแบบอะซิงโครนัสให้ใช้
การส่งแบบอนุกรมจึงสะดวกสบายสำหรับคนออกแบบพอร์ตอนุกรม จะเห็นว่ากลไกในการซิงโครนัสของการสื่อสารอะซิงโครนัส
มีลักษณะเป็นไปทีละตัวอักขระ จำนวนพัลส์ของสัญญาณที่ส่งออกยังมีบางส่วนใช้ในการควบคุมการส่งอยู่อันได้แก่
บิตสตาร์ต บิตสต๊อป และบิตพาริตี้ ทำให้ความเร็วการส่งอักขระต่อวินาทีน้อยลงไป
การส่งสัญญาณด้วยความเร็ว 300 บอด สำหรับการเข้ารหัส 7 บิต ไม่ได้หมายความว่าส่งได้
300 หาร ด้วย 7 อักขระต่อวินาที
การส่งข้อมูลแบบอะซิงโครนัสที่มีการแมตช์ความเร็ว
เราได้กล่าวถึงการถ่ายโอนข้อมูลจากแบบอนุกรมจากอุปกรณ์เครื่องหนึ่งไปยังอีกเครื่องหนึ่ง ซึ่งอาจจะเป็นเครื่องคอมพิวเตอร์หรืออุปกรณ์สื่อสารชนิดอื่น โดยสมมติฐานว่าความเร็วในการเปลี่ยนสัญญาณจากขนานเป็นอนุกรมได้เร็วพอ และฝ่ายรับเปลี่ยนจากอนุกรมเป็นขนานแล้วนำไปแสดงบนจอ พิมพ์ออกที่เครื่องพิมพ์ หรือเก็บไว้ในดิสต์ทันทีได้ทันเวลาด้วยความเร็วในแต่ละการทำงานเท่ากันทั้งฝ่ายรับและฝ่ายส่ง ไม่มีการหน่วงเวลาหรือการอินเตอร์รัพต์ระหว่างกลาง อย่างไรก็ตามสมมติฐานนี้ย่อมไม่เป็นความจริง ฝ่ายส่งทำหน้าที่ส่งอย่างเดียวแต่ฝ่ายรับอาจต้องทำหน้าที่หลายอย่าง เช่น รับ แสดงผล เก็บ พิมพ์ เป็นต้น ความเร็วของฝ่ายรับหากไม่เพียงพอที่จะทำหลายอย่างให้ทันกับฝ่ายส่ง ( แน่นอนย่อมขึ้นอยู่กับความเร็วในการส่ง ) ก็จำเป็นจะต้องมีกลไกในการควบคุมการถ่ายโอน เทคนิคในการควบคุมความเร็วในการส่งมีอยู่หลายรูปแบบซึ่งอาจจะแบ่งออกได้เป็น 2 ลักษณะ คือส่งข้อมูลบอกการออนออฟการทำงาน ( on - off data flow toggle ) และหาที่เก็บข้อมูลชั่วคราวหรือสร้างบัฟเฟอร์ ( Temporary data storage mechanism )
การควบคุมการส่งเมื่อความเร็วในการทำงานของฝ่ายรับและฝ่ายส่งไม่เท่ากัน
เนื่องจากการใช้ภาษาในระดับสูงเขียนเป็นโปรแกรมสำหรับการควบคุมการทำงานของการถ่ายโอนข้อมูลแบบอนุกรม อาจจะใช้เวลามากกว่าที่จะรับข้อมูลเข้ามาได้ทันกับสถานีส่งข้อมูลมา จำเป็นจะต้องมีวิธีการควบคุมไม่ให้เกิดการสูญหายของข้อมูลที่สถานีส่งส่งมา วิธีการดังกล่าวนี้มีอยู่หลายวิธีคือ
การมีบัฟเฟอร์ในการสื่อสารข้อมูล
บัฟเฟอร์สำหรับการสื่อสารก็คือหน่วยความจำในคอมพิวเตอร์ซึ่งแบ่งแยกออกมาจากหน่วยความจำหลักสำหรับเก็บพักข้อมูลในการติดต่อชั่วคราว
บัฟเฟอร์สำหรับการสื่อสารนี้ส่วนมากใช้สำหรับฝ่ายรับเท่านั้น เนื่องจากฝ่ายรับจำเป็นต้องตามฝ่ายส่งให้ทัน
ถ้าหากฝ่ายรับใช้ภาษาแอสเซมบลี้ควบคุม มีความเร็วพออาจไม่จำเป็นต้องใช้บัฟเฟอร์สำหรับการสื่อสารเนื่องจากภาษาแอสเซมบลี้มีความเร็วสูง
ข้อมูลที่จัดส่งให้คอมพิวเตอร์ที่เป็นฝ่ายรับ ส่วนมากจะอ่านมาจากแฟ้มที่บันทึกไว้ในดิสค์
หากพิจารณาระหว่างการส่งข้อมูลออก ข้อมูลที่อ่านมาจากดิสค์จะมีลักษณะเป็นกลุ่มได้รับการนำมาสู่บัฟเฟอร์
การอ่านแต่ละกลุ่มดำเนินไปจนกระทั่งบัฟเฟอร์เต็ม การอ่านจะหยุดลงจนกระทั่งบัฟเฟอร์ถูกส่งออกไปหมดในลักษณะของเข้าก่อนออกก่อน
ข้อมูลก็จะถูกอ่านออกมาใส่ในบัฟเฟอร์ส่งอีกครั้ง โดยปกติบัฟเฟอร์ส่งจะมีขนาด
255 ตัวอักษร หรือประมาณ 3 บรรทัดของ 80 อักษร
บัฟเฟอร์รับของฝ่ายรับมีผลกระทบต่อการรับ - ส่งข้อมูลมากกว่าบัฟเฟอร์ส่ง บัฟเฟอร์รับทำหน้าที่เช่นเดียวกับบัฟเฟอร์ส่ง
แต่ทิศทางของการไหลของข้อมูลอยู่ในทางตรงกันข้าม ฝ่ายรับรับข้อมูลเข้ามาเก็บไว้ในบัฟเฟอร์รับก่อนจนกว่าโปรแกรมควบคุมการสื่อสารจะนำข้อมูลออกไปจากบัฟเฟอร์รับเพื่อไปแสดงหรือพิมพ์หรือเก็บไว้ในแฟ้มก็แล้วแต่
ขอเพิ่มเติมอีกนิดว่าในระบบควบคุมการทำงานของไมโครคอมพิวเตอร์ อย่างเช่น IBM
PC มีกลไกบัฟเฟอร์รับส่งนี้ไว้อยู่ โปรแกรมในระดับสูงจึงเพียงแต่ทำหน้าที่ดึงเอาข้อมูลจากบัฟเฟอร์นี้ไปใช้
เราจะเห็นได้ชัดถึงความจำเป็นในการใช้บัฟเฟอร์เมื่อความเร็วในการส่งสูงเกินกว่า
600 บอด ภาษาในระดับสูง เช่นภาษาเบสิกไม่สามารถที่จะรับข้อมูลจากพอร์ตอนุกรมได้ทันแน่
ๆ ระบบควบคุมการทำงานจึงถูกออกแบบมาเพื่อการสื่อสารข้อมูล โดยการใช้อินเตอร์รัพต์เข้าช่วยเมื่อมีข้อมูลเข้ามาที่พอร์ตอนุกรมเมื่อไร
ระบบควบคุมจะอินเตอร์รัพต์การทำงานเพื่อดึงข้อมูลไปใส่ในบัฟเฟอร์รับทันที
เพื่อไม่ให้ข้อมูลที่รับหายไปก่อนเมื่อมีตัวใหม่ส่งมาทับที่พอร์ตอนุกรม
หน้าที่ของโปรแกรมควบคุมการรับส่งก็คือการอ่านข้อมูลจากบัฟเฟอร์รับไปใช้ เมื่อถูกอ่านจากบัฟเฟอร์รับไปแล้ว
ตัวที่อ่านออกไปก็จะหายไปจากบัฟเฟอร์ ลองนึกภาพดูจะเห็นว่าฝ่ายหนึ่งคือระบบควบคุมการทำงาน
( OS ) รับข้อมูลจากพอร์ตอนุกรมใส่บัฟเฟอร์ อีกฝ่ายหนึ่งคือโปรแกรมควบคุมการรับส่งดึงข้อมูลออกจากบัฟเฟอร์
เปรียบเสมือนคนหนึ่งตักน้ำใส่ตุ่มอีกคนหนึ่งตักออกจากตุ่ม ถ้าฝ่ายที่ตักออกมีความเร็วมากกว่า
ตุ่มก็จะมีโอกาสแห้ง ในทางตรงกันข้ามถ้าฝ่ายตักออกช้ากว่าฝ่ายตักเข้าโอกาสที่จะล้นตุ่มก็ย่อมจะมี
ในทางสื่อสารเรียกว่าบัฟเฟอร์รับโอเวอร์โฟล์ว ( Receive buffer overflow )
การไหลล้นดังกล่าวทำให้ข้อมูลที่ได้รับหายไป โปรแกรมที่เขียนด้วยภาษาแอสเซมบลี้สามารถทำงานได้เร็ว
และอาจไม่จำเป็นต้องใช้บัฟเฟอร์สำหรับการรับส่งเลยก็ได้ แต่ถ้าหากเขียนด้วยภาษาเบสิกจำเป็นจะต้องมีบัฟเฟอร์อย่างน้อย
1024 ไบต์ สำหรับการสื่อสารที่ความเร็วไม่เกิน 600 บอด
หน้า 1 | 2
| 3 | 4 | 5
| 6 | 7 | 8
| 9 |
| home | menu
| เทคโนโลยี |
1 : 08 : 2541