วันจันทร์ที่ 9 มีนาคม พ.ศ. 2552

เขียนโปรแกรมเพื่อรับค่าเกี่ยวกีับข้อมูลของ Hardware [C#]

เป็นการใช้ WMI ในการช่วยเพื่อเข้าถึงข้อมูลและคุณลักษณะของ Hardware

ก่อนอื่ทำการแอด referrence ไปที่ Windows Management DLL โดยการไปที่
Project->Add Reference แล้วเลือกที่ System.Management

เริ่มทำการเขียนโปรแกรมเ
พื่อรับข้อมูลของ Hardware อย่างง่ายๆเช่น ชื่อของ ไดร์ว CD rom

ก่อนอื่นทำการแอด namespace ที่ต้องการใช้งาน
using System.Management;
using System.Management.Instrumentation;

ในส่วนของการดึงข้อมูลออกมานั้นเราต้องส่ง Query เข้าไปให้โดยรุปแบบของ
Query ก็จะคล้ายๆของ SQL
เช่นถ้าต้องการชื่อของ CD-rom Drive
ก็ให้เขียน Query ดังนี้

"Select Name from Win32_CDROMDrive"

แล้วสร้าง Object ของ คลาส

ManagementObjectSearcher
โดยใส่ Query ข้างต้นเป็น ค่าพารามิเตอให้กับ Constructor ของคลาส

ManagementObjectSearcher searcher = 
new
ManagementObjectSearcher("Select Name from Win32_CDROMDrive");

เมื่อเราสร้าง qurey ได้แล้วจากนั้นก็จะใช้ foreach ในการช่วยเข้าถึงข้อมูลของ Drive ในแต่ละ Drive

foreach(ManagementObject cdrom in searcher.Get())
{
Console.WriteLine("CD-ROM Name: {0}", cdrom.GetPropertyValue("Name"));
}

ฟังชันก์ GetPropertyValue ต้องการชื่อของข้อมูลที่เราต้องการเป็นพารามิเตอ ในตัวอย่างข้างต้นก็คือ Name
แต่มีข้อจำกัดอยู่ที่ เราต้องใส่ชื่อของข้อมูลที่ต้องการไว้ใน Query string ด้วย

ตัวอย่าง Code


using System;
using System.Management;
using System.Management.Instrumentation;

namespace ConsoleApplication1
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("Select Name from Win32_CDROMDrive");
foreach(ManagementObject cdrom in searcher.Get())
{
Console.WriteLine("Name: {0}\n",
cdrom.GetPropertyValue("Name"));
}
}
}
}





สามารถหาข้อมูลเพิ่มเติมได้ที่
http://msdn.microsoft.com/library/en-us/wmisdk/wmi/wmi_classes.asp

OFDM

1.บทนำ

การสื่อสารWirelessbroadband ถูกพัฒนาขึ้นมาเพื่อตอบสนองความต้องการของผู้ใช้ไม่ว่าจะเป็นธุรกิจขนาดเล็ก หรือตามบ้านในการส่งข้อมูลดิจิตอลที่มีคุณภาพสูง เช่นข้อมูลภาพและเสียง การมัลติเพล็กซ์โดยการแบ่งความถี่สัญญาณพาหะตั้งฉากซึ่งกันละกัน (Orthogonal Frequency Division Multiplex: OFDM) เป็นวิธีการมอดูเลตที่ถูกพัฒนาขึ้นมาเพื่อใช้ในการส่งผ่านข้อมูลความเร็วสูง ในสายมาก่อน การนำเสนอนี้จะเป็นจะนำเสนอแนวคิดของ OFDM และการพัฒนาการที่ถูกนำมาใช้ในการส่งผ่านข้อมูลในการสื่อสาร Wireless broadband

2.ความเป็นมา OFDM

OFDM แม้จะเป็นหนึ่งในมาตรฐานทางเทคนิคที่แตกแขนงออกมาจากเทคโนโลยี Spread Spectrum ก็ตาม แต่ก็ถือว่ามีการรับส่งข้อมูลแบบเป็นการมอดูเลตที่ใช้สัญญาณพาหะหลายสัญญาณ (Multi-carrier modulation: MCM ) เป็นเทคนิคที่ทำให้ช่องสื่อสารถูกแบ่งออกเป็นย่อยๆ โดยแต่ละส่วนจะเป็นช่องย่อยๆ ที่อิสระจากกันซึ่ง MCM ไม่ได้เป็นเทคโนโลยีที่ใหม่พราะว่ามันเกิดขึ้นเมื่อตั้งแต่ พ.ศ.2498 และถูกนำมาใช้โดยห้องปฏิบัติการโทรศัพท์เบลล์ (Bell Telephone La-oratories’ ) ในปี พ.ศ. 2508 เทคนิค OFDM ถูกนำไปประยุกต์ใช้ในกิจการสื่อสารทางทหาร ด้านระบบสื่อสารผ่านความถี่สูง (HF) เช่นระบบ KINEPLEX ของบริษัท วิทยุคอลลินส์ และระบบโทรพิมพ์ที่ใช้การเลื่อนความถี่ ย่านแคบของเวสเทริน อิเล็คทริก (Western Electric) เป็นต้น

ต้นแบบของการมอดูเลตที่ใช้สัญญาณพาหะหลายสัญญาณมีการทดลองใช้ โดยการกำเนิดจำนวนสัญญาณพาหะจากวงจรกำเนิดความถี่ ที่เป็นอิสระจากกัน ซึ่งเครื่องรับรองต้องการวงจรกรองแถบความถี่ผ่านย่านแคบ เพื่อใช้แยกแยะสัญญาณพาหะออกจากกันก่อนที่จะทำการดีมอดูเลต ทั้งนี้การใช้งานสมัยนั้นระบบค่อนข้างจะใหญ่ เทอะทะ ราคาแพง และอาจจะไม่สามารถ นำมาใช้กับงานในปัจจุบันได้ ในช่วงไม่กี่ปีที่ผ่านมา DOCSIS ซึ่งมีการทำงานแบบ MCM ถูกพัฒนาขึ้นในอเมริกาเหนือ และถูกตรวจสอบโดยสหภาพโทรคมนาคมนานาชาติ (ITU ) ในเดือนมีนาคม พ.ศ. 2541 โดย DOCSISถูกพัฒนาขึ้นมาเป็นมาตรฐานสำหรับการส่งข้อมูลดิจิตอลความเร็วสูงบน เครือข่ายสายการเพิ่มขึ้นอย่างรวดเร็วของการติดต่อสื่อสารด้วยสัญญาณดิจิตอล บวกกับการที่มีการสร้างไอซีที่มีความเร็วสูง ดังที่เราเห็นการเพิ่มขึ้น ของความเร็วซีพียูที่มีขายในบ้านเรา รวมทั้งมีการนำเอาการแปลฟาสท์ฟูเรียร์ (Fast Fourier Transform : FFT) มาประยุกต์ใช้ ทำให้ความเป็นไปได้ในการพัฒนา OFDM กลับมาใช้ในงานปัจจุบันสูง ซึ่งแท้จริงแล้ว OFDM กลายมาเป็นสิ่งที่น่าสนใจมากขึ้นเมื่อมีการนำเอา FFT มาใช้ในการกำเนิดสัญญาณพาหะที่มีลักษณะตั้งฉากกัน (orthogonal carriers)

2.1ความหมาย ของ MCM

MCM เป็นหลักการของการส่งข้อมูลดิจิตอลโดยทำการแบ่งข้อมูลทั้งหมดเป็นจำนวน ข้อมูลขนาดใหญ่ที่ขนานกัน (โดยทั่วไป กลุ่มของข้อมูลแต่ละชุดจะมากกว่า 500 บิต) ซึ่งแต่ละกลุ่มจะมีการส่งผ่านข้อมูลที่ความเร็วต่ำๆ แต่เมื่อทำการส่งผ่านข้อมูลขนานกันไปโดยการรำแต่ละกลุ่มข้อมูลย่อยมามอดูเลต กับสัญญาณพาหะย่อย แต่ละสัญญาณพาหะย่อยจะจับจองแถบความถี่ในการส่งเพียงส่วนน้อยและจะมีการทับ ซ้อนกันเฉพาะสัญญาณพาหะที่อยู่ติดกันเท่านั้น ยิ่งเพิ่มจำนวนของสัญญาณพาหะย่อยมากขึ้นเท่าไหร่ยิ่งส่งข้อมูลได้มากขึ้น และมีปัญหาเกี่ยวกับการลดทอนสัญญาณน้อยลง อย่างไรก็ตามจำนวนของสัญญาณพาหะในทางปฏิบัติถูกจำกัดโดยข้อจำกัดของกระบวน การกรองความถี่, ช่วงเวลาในการคำนวณ, แถบความถี่ที่มีอยู่ภายในช่องสื่อสารและความถี่ดอปเปอร์(Doppler) ในกรณีใช้การสื่อสารไร้สาย

รูปที่ 1 แสดงหลักการทำงานของ MCM( ปราโมทย์ อนันต์วราพงษ์,2545)

3. ความหมายของ OFDM

OFDM ย่อมาจาก Orthogonal Frequency Division Multiplex เป็นรูปแบบของ MCM สมัยใหม่ที่มีการเพิ่มความหนาแน่นของสัญญาณพาหะย่อยและการซ้อนทับสัญญาณพาหะ ที่อยู่ติดกัน ซึ่งเป็นเทคนิคการมอดูเลชั่นแบบหลายคลื่นพาหะ (Multiple Carrier Modulation) และเป็นรูปแบบของการสื่อสารแบบขนาน แตกต่างจากมาตรฐาน Spread Spectrum ทั่วไปที่ใช้แถบความถี่เดียวสำหรับรับส่งข้อมูลช่องเดียว

OFDM เป็นเทคโนโลยีการเข้ารหัสในชั้น Physical Layer สำหรับถ่ายทอด สัญญาณผ่านทางคลื่นวิทยุ ซึ่งกระบวนการนี้จะเป็นการแบ่งสัญญาณ ความถี่ออกเป็นหลาย ๆ เซ็กเมนต์ และในแต่ละเซ็กเมนต์จะมีความถี่ เฉพาะตัวด้วยรหัสที่ต่างกัน ซึ่งจะทำให้สามารถรองรับความจุได้มากกว่า คลื่นวิทยุในความถี่เดียวกัน ซึ่งโดยทั่วไปแล้ว OFDM ถูกใช้อยู่ในคลื่น ความถี่ 2.4 GHz ISM ซึ่งเป็นคลื่นความถี่มาตรฐานสำหรับมาตรฐาน เครือข่าย IEEE 802.11g ในขณะที่ IEEE 802.11a ถูกเลือกให้คลื่น ความถี่ที่ 5 GHz UNII (Unlicensed National Information Infrastructure)

OFDM สร้างขึ้นมาเพื่อใช้งานสำหรับระบบสื่อสารไร้สายแบบเคลื่อนที่แบนด์กว้าง (Broad band) มีอัตราการส่งข้อมูลสูงๆ เช่น ระบบ LAN แบบไร้สาย (Wireless LAN) ระบบอินเตอร์เน็ตความเร็วสูงแบบไร้สาย (Wireless high speed internet) ระบบกระจายเสียงแบบดิจิตอล (Digital Audio Broadcasting) หรือ DAB และระบบกระจายสัญญาณโทรทัศน์แบบดิจิตอล (Digital Television) หรือ DTV เป็นต้น

3.1.ความตั้งฉากซึ่งกันและกัน ใน OFDM

ความตั้งฉากซึ่งกันและกัน (Orthogonality) คือ “การเกี่ยวข้องกันเป็นมุมฉากหรือมีส่วนประกอบเป็นมุมฉาก” ความตั้งฉากซึ่งกันและกันมีความสัมพันธ์กันของเวกเตอร์ 2 เส้นในช่องว่างอาจจะตัดกันเป็นมุมฉากรูปเรขาคณิตก็ได้ ดังนั้นสัญญาณที่ตั้งฉากซึ่งกันและกันหมายความว่าสถานะของสัญญาณเป็นอิสระ จากกัน ตัวอย่างเช่น การมอดูเลตสัญญาณทางความถี่ (FM) และทางขนาด (AM) บนสัญญาณพาหะเดียวกัน (ในระบบ FM สเตอริโอ) สามารถแยกสัญญาณทั้งสองออกจากกัน โดยปราศจากการรบกวนซึ่งกันและกัน ซึ่งเราสามารถเรียกสัญญาณทั้งสองนี้ว่า “ความตั้งฉากซึ่งกันและกัน” สมมุติว่าในระบบสื่อสารใช้การมอดูเลตแบบเลื่อนความถี่ (FSK) โดยสัญญาณไบนารี่ กำหนดในบิต “ 0” แทนที่ด้วยความถี่หนึ่งที่เลือนออกไป สัญญาณการมอดูเลตนี้สามารถแยกออกจากกันด้วยวงจร กรองความถี่ 2 ชุด ทีสามารถปรับเลือกความถี่ทั้งสองได้ วงจรกรองความถี่สำหรับบิต “ 1” จะไม่ตอบสนองกับสัญญาณบิต “ 0” และในทำนองเดียวกันในกรณีของวงจรกรองความถี่สำหรับบิต “ 0” เราเรียกวงจรเมดูเลตแบบเลือนความถี่ว่า การจัดการสัญญาณไบนารี่ให้ตั้งฉากซึ่งกันและกัน ใน OFDM ความตั้งฉากซึ่งกันและกันเป็นการนำเอาสัญญาณพัลล์มาทำเป็นสัญญาณพาหะ ซึ่งทำให้สเปคตรัมของสัญญาณพาหะแต่ละตัวมีค่าสัญญาเป็นศูนย์ที่กลางแถบความ ถี่ของแต่ละสัญญาณพาหะในระบบ ทั้งนี้ทำให้แต่ละสัญญาณพาหะย่อยสามารถแยกออกจากลุ่มโดยปราศจากการสอดแทรก หรือรบกวนจากสัญญาณพาหะย่อยอื่นๆ ดังนั้นสัญญาณพาหะย่อยสามารถจัดวางไว้ใกล้มากที่สุดเท่าที่จะทำได้ในทาง ทฤษฎี

3.2.การแปลงฟูเรียร์และการแปลงกลับฟูเรียร์ ของ OFDM

ฟักช์ชั่นทางคณิตศาสตร์ของการแปลงฟูเรียร์เปรียบได้กับแท่งปริซึมที่กระจาย แสงสีเขาออกเป็นแทบสีที่เป็นส่วนประกอบของแสงสีขาว การแปลงฟุเรียร์นั้นใช้สำหรับแยกสัญญาณออกเป็นส่วนประกอบทางความถี่ของ สัญญาณนั้นๆซึ่งที่จริงแล้วการแปลงฟูเรียร์สามารถใช้การแก้ปัญหาที่หลากหลาย โดยการวิเคราะห์องค์ประกอบทางความถี่ของสัญญาณในระบบนั้นๆ การจัดการกับสัญญาณดิจิตอลในระบบOFDเป็นวิธีการหนึ่งในการประยุกต์ใช้งานของ การแปลงฟูเรียร์การแปลงฟูเรียร์เป็นเทคนิคทางคณิตศาสตร์สำหรับแปลงฟังช์ชั่น ที่มีแกนในเชิงเวลาเป็นฟังชั่นที่มีแกนในเชิงความถี่โดยอยู่บนพื้นฐานที่ ฟังช์ชั่นนั้นๆ จะต้องเป็นฟังชช์รายคาบด้วย ซึ่งจะแตกออกเป็นสมการแปลงฟูเรียร์ การแปลงฟูเรียร์เป็นการแยกหรือสลายรูปคลื่นหรือฟังช์ชั่นออกเป็นสัญญาณ ลักษณะซายย์ที่มีความถี่จ่างกันและขนาดแรงดันต่างกัน ซึ่งผลรวมของสัญญาณซายน์เหล่านี้เมื่อนำมารวมกันทางเฟสแล้วจะได้รูปคลื่น ดั้งเดิมที่นำมาแยก ดังนั้นสัญญาณที่มีการเปลี่ยนแปลงตามเวลาอาจจะเปลี่ยนเป็นนิพจน์ของผลรวมรูป คลื่นซายน์และโคซายน์ได้ ตัวอย่างเช่น ในการส่งสัญญาณดิจิตอลกับการส่งอนุกรมของสัญญาณซายน์จะมีผลลัพธ์เหมือนกัน นั้นคือ การแปลงฟูเรียร์เป็นการแปลงสัญญาณจากแกนเวลาเป็นแกนความถี่โดยจะจัดเป็น นิพจน์ของอนุกรมสัญญาณความถี่เป็นองค์ประกอบ ส่วนการแปลงกลับฟูเรียร์เป็นกระบวนการที่ตรงข้ามกันคือแปลงสัญญาณที่อยู่ใน แกนความถี่ให้อยู่ในรูปแบบแกนเวลา ส่วนการแปลงฟาสฟูเรียร์ (FFT) จะทำให้การคำนวณการแปลงฟูเรียร์และการแปลงกลับฟูเรียร์ของกลุ่มข้อมูลทั้ง ค่าจริง (Real) และค่าเชิงซ้อน (complex) สามารถทำได้อย่างรวดเร็ว สัญญาณซายน์ที่มีช่วงเวลาที่มีค่าจำกัด (T) สามารถแปลงเป็นสัญญาณสมมูลซิง (Sinc Pulse: โดยสัญญาณซิ้งคือสัญญาณ sinx/x) บนแกนความถี่ดังแสดงในรูป

รูปที่ 2 แสดงการแปลงฟูเรียร์อย่างรวดเร็วของสัญญาณที่ทำการมอดูเลตกับสัญญาณพาหะย่อย

( หนังสือOFDM เทคโนโลยีการมัลติเพล็กในระบบสื่อสารยุคใหม่)

ซึ่งสัญญาณซิ้งจะมีจุดตัดแกน x ทุกๆ ช่วงเวลา 1/T เมื่อ T เป็นช่วงเวลาชองจำนวนสัญญาณบนแกนเวลา ดังนั้นถ้าสัญญาณพาหะย่อยมีช่วงห่างซึ่งกันและกันเท่ากับ 1/T ค่าสูงสุดจะเกิดขึ้นทุกๆ จุดตัดแกน x ทั้งนี้เนื่องจากการทับซ้อนกันของสัญญาณเหล่านี้จะไม่รบกวนซึ่งกันและกัน หรือในอีกทำนองหนึ่งอาจกล่าวได้ว่าสัญญาณมีการรักษาความตั้งฉากซึ่งกันและ กัน แนวคิดดังกล่าวแสดงไว้ในดังรูป

รูปที่ 3 แสดงการมัลติเพล็กซ์อนุกรมของสัญญาณบนแกนความถี่

( หนังสือOFDM เทคโนโลยีการมัลติเพล็กในระบบสื่อสารยุคใหม่)

4.หลักการทำงานของระบบ OFDM

โดยพื้นฐานแล้ว OFDM เป็นเทคนิคการมัลติเพล็กซ์โดยการแบ่งความถี่ เมื่อช่องความถี่ถูกแบ่งออกเป็นความถี่ขนาดเล็กๆ N ช่องแต่ละช่องมีขนาดเท่ากับขนาดของสัญลักษณ์ (bit rate) ดิจิตอล ซึ่งทำให้สัญญาณพาหะย่อยเหล่านี้มีความตั้งฉากซึ่งกันละกัน ทางด้านส่งสัญญาณดิจิตอลความเร็วสูงที่ถูกแบ่งออกเป็นกลุ่มข้อมูลที่ความ เร็วต่ำลงจำนวนสิบหรือร้อยกลุ่ม ซึ่งแต่ละกลุ่มข้อมูลย่อยทีมีความเร็วต่ำกว่า จะถูกนำไปมอดูเลตกับสัญญาณพาหะย่อยทั้งหมดส่งขนาดกันออกไป รูปแบบในการมอดูเลตสัญญาณพาหะย่อยที่นิยมทั่วไปได้แก่ QAM, 16QAM หรือ 64QAM เป็นต้น ใน OFDM กลุ่มของข้อมูลจะถูกแปลงให้อยู่ในรูปขนานกัน โดยการมอดูเลตกับสัญญาณพาหะย่อย ดังนั้นพวกมันจะกลายเป็นสัญญาณบนแกนความถี่ ในการที่จะแปลงกลับมาเป็นสัญลักษณ์บนแกนเวลาอีกครั้งนั้นทำได้โดย การใช้การแปลงกลับฟาสท์ฟูเรียร์ (FFT) โดยที่สัญลักษณ์ทางแกนเวลาเหล่านี้จะถูกมัลติเพล็กซ์เข้าด้วยกันเป็นอนุกรม ของสัญญาณ และสัญญาณที่ได้ทางเอาต์พุตของ IFFT จะถูกส่งบนความถี่ที่เหมาะสมในระบบสื่อสัญญาณ ในระบบ OFDM แต่ละสัญญาณพาหะย่อยจะถูกทำให้รูปร่างมีความตั้งฉากซึ่งกันละกันกับสัญญาณ พาหะย่อยอื่นๆด้วยวิธีการจัดการสัญญาณในลักษณะนี้ทำให้แม้แต่สัญญาณพาหะย่อย ที่อยู่ใกล้กันซ้อนทับกันก็ไม่ก่อให้เกิดการรบกวนซึ่งกันละกัน ดังนั้นในระบบนี้จึงไม่ต้องการแถบป้องกัน (Guard Band) ระหว่างแต่ละช่องสื่อสารย่อย ทำให้ช่องสื่อสารระหว่างแต่ละสัญญาณพาหะย่อยมีความแคบที่สุดเท่าที่จะทำได้ ซึ่งในระบบนี้จะให้ประสิทธิภาพในการใช้แถบความถี่สูงสุด ความสัมพันธ์ระหว่างทุกสัญญาณพาหะย่อยในระบบ OFDM จะต้องถูกควบคุมอย่างระมัดระวังเพื่อรักษาให้มีลักษณะของความตั้งฉากซึ่งกัน และกันการแปลงกลับฟาสท์ฟูเรียร์เป็นการแปลงที่มีประสิทธิภาพสูงมากและเป็น วิธีการขั้นต้นอย่างง่ายๆ ที่

สามารถทำให้เรามั่นใจได้ว่าสัญญาณพาหะที่สร้างขึ้นมามีความตั้งฉากซึ่งกัน และกัน หลังจากการมอดูเลตแบบ OFDM จะมีการสอดแทรกช่วงแถบป้องกันแคบๆ เพื่อลดสัญญาณรบกวนระหว่างสัญลักษณ์ (Inter symbol Inter-ference : ISI) ที่เกิดจากสัญญาหลายเส้นทาง (multi-path) เราเรียกแถบป้องกันแคบๆ นี้ว่า การเสริมไซคลิก (Cyclic prefix)

รูปที่ 4 แสดงบล็อกไดอะแกรมตัวส่ง OFDM( ปราโมทย์ อนันต์วราพงษ์,2545)

เครื่องรับจะดำเนินกระบวนการตรงกันข้ามกับเครื่องส่ง ในเครื่องส่ง ในเครื่องรับจะใช้การแปลงฟาสท์ฟูเรียร์แปลงสัญญาณที่อยู่บนแกนเวลาไปเป็นแถบ ความถี่สมมูลย์ ดังรูปการแสดงบล็อกไดอะแกรม

รูปที่ 5 แสดงบล็อกไดอะแกรมรับ OFDM

( ปราโมทย์ อนันต์วราพงษ์,2545)

4.1.การเสริมสร้างไซคลิก

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

รูปที่ 6 แสดงการเสริมสร้างไซคลิก ( ปราโมทย์ อนันต์วราพงษ์,2545)

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

4.2.เวกเตอร์ใน OFDM

สายอากาศแบบไดเวอซิตี้ ( diversity ) ถูกนำมาทดสอบสำหรับแก้ปัญหาอันเนื่องมาจากผลกระทบจากสัญญาณหลายเส้นทาง ซึ่งในระบบ OFDM จะใช้สปาเชียล ( spatial ) ไดเวอซิตี้ซึ่งเรียกว่า การมัลติเพล็กซ์โดยการแบ่งความถี่ที่สัญญาณพาหะตั้งฉากซึ่งกันและกันทาง เวคเตอร์ ( Vector OFDM : VOFDM ) VOFDM ใช้สายอากาศ สปาเชียลไดเวอซิตี้เพื่อนำประโยชน์ของการรับสัญญาณวิทยุหลายทิศทางที่มีเฟส และขนาดต่างกันมาเป็นข้อดี โดยการรวมสัญญาณเหล่านี้เข้าด้วยกันเพื่อเพิ่มความน่าเชื่อถือในการรับ สัญญาณแบบไม่เป็นเส้นตรง ( non-line-of-sight ) ที่เครื่องรับจะมีสายอากาศ 2 ชุด ทำหน้าที่รับสัญญาณจากเส้นทางที่ต่างกันและทำการรวมเข้าด้วยกันเพื่อให้ได้ อัตราส่วนของสัญญาณต่อสัญญาณรบกวนสูงที่สุดเท่าที่จะเป็นไปได้ ระบบการทำงานของบริษัทซิสโก้ ( Cisco ) ได้ออกแบบให้ VOFDM ทำการทดสอบและรวมแต่ละสัญญาณที่รับเข้ามาจากสายอากาศเข้าด้วยกัน จากนั้นวิเคราะห์สัญญาณพาหะย่อยทีละสัญญาณและใช้ข้อมูลที่ได้มาทำการสร้าง กลับเป็นแต่ละสัญญาณพาหะย่อยที่มีอัตราส่วนของสัญญาณรบกวนต่อสัญญาณสอดแทรก ที่สูงขึ้น ผลที่ตามมาคืออัตราการผิดพลาดของข้อมูลลดลง

4.3.การปรับแต่งการมอดูเลตใน OFDM

เพื่อให้การทำงานง่ายขึ้นต่อระบบ MCM ส่วนใหญ่จะใช้เทคนิคการมอดูเลตแบบคงที่สำหรับทุกสัญญาณพาหะย่อย ในระบบที่ใช้เทคนิคนี้จะต้องเลือกประเภทของดิจิตอลมอดูเลต ( digital modulation ) สำหรับสัญญาณพาหะย่อยที่ได้ยอมรับอัตราการผิดพลาดของข้อมูล (Bit error rate) ได้ ภายใต้สภาวะของช่องสื่อสารที่แย่ที่สุดโดยทั่วไปจะเลือกใช้ BPSK หรือ QPSK ที่ 1 หรือ 2 บิต/วินาที/เฮิรตซ์ตามลำดับ ในการส่งข้อมูลจากแหล่งข้อมูลหนึ่งไปยังหลายๆ ปลายทางของระบบ OFDM อาจจะทำได้โดยการเปลี่ยนแปลงเทคนิคทางมอดูเลตทั้งนี้ขึ้นอยู่กับคุณภาพของ สัญญาณสามารถรับได้ที่ปลายทางประเภทของการมอดูเลตที่นิยมใช้ประกอบด้วย BPSK, QPSK, 8PSK, 16QAM, หรือ 64QAM เช่นถ้าสถานีปลายทาง สามารถรับสัญญาณที่มีอัตราส่วนของสัญญาณรบกวนต่ำควรเลือกใช้การมอดูเลตแบบ QPSKจะดีกว่าแบบอื่นๆเพราะว่าทำให้ประสิทธิภาพในการรับ-ส่งข้อมูลได้ดีอย่าง ไรก็ตามการเลือกใช้เทคนิคการมอดูเลตแต่ละแบบยังขึ้นอยู่กับสภาวะแถบความถี่ ที่ใช้ในการส่งอีกด้วย

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

5.การเลื่อนหายของความถี่ที่เลือก (Frequency selective fading)

ในระบบแถบกว้างเช่น OFDM ผลกระทบจากการเคลื่อนที่หลายเส้นทางของความถี่ที่ต่างกัน (หรือสัญญาณพาหะย่อยใน OFDM ) จะแตกต่างกัน เพื่อให้เราเข้าใจลักษณะการเลื่อนหายของความถี่ที่เลือก เรามาลองพิจารณาสิ่งที่เกิดขึ้นกับความถี่ (สัญญาณพาหะย่อย) 2 ความถี่บนแถบความถี่ที่ใช้นำข่าวสารมาจาก เครื่องส่งไปยังเครื่องรับ ถ้าความถี่ทั้งสองอยู่ใกล้ซึ่งกันและกัน ดังนั้นความแตกต่างของเส้นทางที่เคลื่อนที่จะมีผลต่อกับความถี่ทั้งสองใกล้ เคียงกัน ทำให้การเปลี่ยนแปลงขนาดและเฟสใกล้เคียงกันมาก อย่างไรก็ตามถ้าความถี่ทั้งสองอยู่ห่างกันออกไปทำให้ความสัมพันธ์ระหว่าง ความถี่ทั้งสองแย่ลงเพราะว่าการเลื่อนของเฟสตามแต่ละเส้นทางจะต่างกันมาก ซึ่งการลดลงของความสัมพันธ์ของความถี่จะขึ้นอยู่กับค่าหน่วงเวลาระหว่าง สัญญาณที่รับเข้ามาจากเส้นทางที่ต่างกันดังนั้นการที่หลายๆ ความถี่พาหะมาจับจองอยู่บนแถบความถี่เดียวกันมากจนทำให้ความเปลี่ยนแปลงแต่ ละความถี่เกิดความแตกต่างกันมากจะทำให้สัญญาณผิดพลาดได้ ดังนี้เพราะว่าขนาดและเฟสของความถี่ที่จะประกอบกันเป็นสัญญาณข่าวสารที่ เครื่องรับจะไม่เหมือนกันกับที่เป็นในเครื่องส่ง ปรากฏการณ์นี้เรียกว่า การเลื่อนหายของความถี่ที่เลือก (Frequency selective fading) ในสภาวะแวดล้อมที่คลื่นวิทยุมีการเดินทางหลายเส้นทาง การเลื่อนหายของความถี่ที่เลือกสามารถส่งผลต่อการเปลี่ยนแปลงอย่างสูงต่อ กำลังงานที่เครื่องรับรับได้สำหรับช่องสื่อสารที่ไม่มีสัญญาณจากเส้นทางโดย ตรงจากการเครื่องส่ง การเลื่อนหายของคลื่นวิทยุเหล่านี้อาจสูงถึง 30dB ผลที่ตามมาคืออัตราส่วนของสัญญาณต่อสัญญาณรบกวนลดลงและข้อมูลที่ได้รับมี ความผิดพลาดมากขึ้น แต่เนื่องจากข้อมูลถูกส่งไปกับสัญญาณพาหะย่อยที่แยกจากกันดังนั้นการแก้ไข ข้อผิดพลาดของข้อมูลในแต่ละสัญญาณพาหะย่อยอาจจะใช้วิธีการตรวจสอบและแก้ไข ข้อผิดพลาดที่ปลายทาง (Forward error detection and correction)

6.การป้องกันผลกระทบจากการเคลื่อนที่ของสัญญาณหลายเส้นทาง

การสอดแทรกระหว่างสัญลักษณ์ (Inter-symbol Interference:ISI) เป็นที่ทราบกันอยู่แล้วว่าคลื่นวิทยุจะเดินทางในอากาศด้วยอัตราความเร็ว 186000 ไมล์ต่อวินาที หรือ 5.2 มิลลิวินาทีต่อไมล์ จากรูปที่ 7 จะเห็นว่ามีการสะท้อนของคลื่นวิทยุจากตึก,เนินเขา,หรือสิ่งกีดขวางอื่นๆแต่ ล่ะเส้นทางที่คลื่นวิทยุเดินทางซึ่งมีระยะทางต่างกันสามารถเดินทางมาที่ เครื่องรับเวลาแตกต่างกันเพียงเล็กน้อย ทำให้สัญญาณที่รับเข้ามามีขนาดและเฟสต่างกันไปด้วยในระบบสื่อสัญญาณดิจิตอล รูปร่างของสัญญาณพัลส์(ดิจิตอล)จะถูกทำให้เป็นสัญลักษณ์ที่เหมาะสำหรับการ ส่งโดยทำการมอดูเลตกับสัญญาณพาหะ ซึ่งในระบบแถบกว้าง( broadband )จะมีการส่งบิตข้อมูล ที่ความเร็วสูงและบิตข้อมูลเหล่านี้จะถูกวางไว้ใกล้กันบนแกนเวลา ดังนั้นที่เครื่องรับสัญลักษณ์เหล่านี้จะมีความสัมพันธ์กับค่าหน่วงเวลาของ คลื่นวิทยุของสัญลักษณ์ถัดไปเข้ามาสอดแทรก การสอดแทรกประเภทนี้เรียกว่า การสอดแทรกระหว่างสัญลักษณ์ หรือ ISI ปัญหาของ ISI ทำให้การแยกสัญญาณข่าวสารดั้งเดิมออกมาเป็นไปได้ยากมาก ในระบบ OFDM จะทำการแบ่งสัญญาณข้อมูลความเร็วสูงหนึ่งชุดออกเป็นสิบหรือเป็นร้อยชุดที่มี ความเร็วต่ำลง จากนั้นทำการส่งข้อมูลชุดย่อยเหล่านี้ขนานกันออกไปโดยการใช้สัญญาณพาหะย่อย ดังนั้นอัตราความเร็วบิตของแต่ล่ะช่องย่อยจะต่ำลงซึ่งแต่ละสัญลักษณ์จะมี ช่วงเวลาในการตอบสนองที่นานขึ้นทั้งนี้ต้องการให้นานกว่าช่วงเวลาที่หน่วง จากสัญญาณหลายเส้นทางช่วงเวลาระหว่างสัญลักษณ์ที่นานขึ้นนี้เองทำให้ความ สัมพันธ์ของสัญลักษณ์กับเวลาที่หน่วงของคลื่นวิทยุที่สะท้อนเข้ามาที่ เครื่องรับจะไปอยู่ในช่วงเวลาป้องกันและจะไม่สามรถสอดแทรกเข้าสัญลักษณ์ถัด ไปที่รับเข้ามา ทำให้ OFDM ทนทานต่อปัญหาการสอดแทรกของสัญญาณหลายเส้นทาง

ตัวอย่างเช่น สมมุติให้ระบบมีอัตราการส่งข้อมูล R เท่ากับ 4Mb/s และสมมุติให้สภาพแวดล้อมมีการหน่วงเวลาสูงสุดเป็น 55ms เราจะได้ช่วงเวลาระหว่างสัญลักษณ์เป็น T=1/R=0.25ms สำหรับกรณีที่ส่งด้วยสัญญาณพาหะเดี่ยวสัญลักษณ์ที่เกิดจากการสะท้อนที่เข้า มาถึงภายในเวลา 55ms จะก่อให้เกิดการสอดแทรกกับสัญลักษณ์ที่ตามาอีก 220 ตัว (ISI ของ 55/0.25 = 220) ซึ่งการกำจัดการสอดแทรกดังกล่าวในเครื่องรับทำได้ยากมากที่นี้ลองให้ระบบมี สัญญาณพาหะย่อยจำนวน 1024 ตัว อัตราของข้อมูลที่เข้ามามอดูเลตสำหรับแต่ล่ะสัญญาณพาหะย่อยจะประมาณ 3.9 kb/s และช่วงเวลาระหว่างสัญลักษณ์จะเป็น T=1/R=256ms ดังนั้น

สัญลักษณ์ที่เกิดจากการสะท้อนที่เข้ามาถึงภายในเวลา 55 ms จะไม่ก่อให้เกิดปัญหาแทรกสอดกับสัญลักษณ์ที่ตามมาอีก นี่เป็นเหตุผลหนึ่งว่าทำไม MCM จึงได้รับความนิยมมากขึ้น



วันอังคารที่ 16 ธันวาคม พ.ศ. 2551

การ Compile kernel และ การเพิ่ม System Call ให้กับ Kernel


ทดลองทำใน Ubuntu 8.04

ก่อนอื่นทำการเปลี่ยน source.list ให้ตัว apt ก่อนโดยใช้
Source.list ของ มหาวิทยาลัยเกษตรแทนเนื่องจากเป็น linkภายในประเทศเพื่อความรวดเร็วในการดาวโหลดไฟล์ที่จำเป็นต่างๆ

โดยเริ่มเเรกเเข้าไปที่เวปไซต์

http://mirror1.ku.ac.th
แล้วโหลด source ดังภาพ
หลังจาก โหลด เสร็จเเล้ว จะได้ ไฟล์ source.list ที่อยู่บนหน้าจอ Desktop
ทำการเปลี่ยนระดับสิทธิการใช้งานให้เป็น root โดยใช้คำสั้ง

su แล้วตามด้วย Password

ใช้คำสัง
mv .../Desktop/source.list /etc/apt
[โดย ... นั้นจะเเล้วแต่ว่า Path ของแต่ละคนจะตั้งว่าอย่างไร ]
สั้ง ให้ ทำการ Update ดวยคำสั้ง
apt-get update

หลังจากนั้นทำการ ดาวโหลด ซอสโค็ดของลินุกมาทำการติดตั้งด้วยคำสั้ง

apt-get install linux-source

ติดตั้ง package ที่จำเป็นสำหรับการ คอมไพล์ kernel ด้วยคำสั้ง

aptitude install kernel-package libncurses5-dev fakeroot wget bzip2

ทำการ แตกไฟล์ไปไว้ที่ /usr/src ด้วยคำสั่ง

cd /usr/src
tar xjf linux-2.6.20.15.tar.bz2 // ขึ้นอยู่กับ เวอชั้นของ kernel ที่ ดาวโหลดมา
ln –s linux-2.6.20.15 linux
cd /usr/src/linux

ทำการ Config kernel โดยคำสั้ง

make menuconfig

เริ่มทำการ build kernel ใหมาโดยใช้คำสั้ง

make-kpkg clean

fakeroot make-kpkg --initrd –-append-to-version=-custom kernel_image kernel_headers


จากนั้นติดตั้ง kernel ที่ได้จากการ build ข้างต้นด้วยคำสั้ง

dpkg –i linux-image-2.6.20.15-custom_2.6.20.15-custom-10.00.Custom_i386.deb
dpkg –i linux-headers-2.6.20.15-custom_2.6.20.15-custom-10.00.Custom_i386.deb

จากนั้น Reboot ระบบใหม่
แล้วเลือก ใช้ kernel อันใหม่ จาก boot menu



--------------------------------------------
ส่วนการจะเพิ่ม System Call ให้กับ kernel นั้นสามารถทำได้โดยก่อนที่จะ build kernel นั้น
ให้ เขียน System call ที่ต้องการก่อน ขอยกตัวอย่างง่ายๆดังต่อไปนี้

#include
asmlinkage long sys_mycall(int i, int j) {
return(i+j);
}

Source ภาษา C ข้างต้นนั้นเป็น ตัวอย่างของ System call อย่างง่ายที่
สามารถ รับค่าจำนวนเต็มสองจำนวนแล้ว ส่งผลลัพธ์ที่ได้จากการ + ไปให้กับโปรแกรมที่เรียกใช้มัน
หลังจากนั้น save เป็น file ที่ชื่อว่า mycall.c

เพิ่ม “.long sys_mycall” ต่อท้าย ไฟล์
usr/src/linux/arch/i386/kernel/syscall_table.S


และจากไฟล์
/usr/src/linux/include/asm-i386/unistd.h
เพิ่ม
#define __NR_mycall
โดย Last_System_Call_Num นั้นเป็นหมายเลขของ System Call สุดท้ายที่อยู่ในไฟล์ unistd.h

เพิ่ม "asmlinkage long sys_mycall(int i, int j);" ต่อท้ายไฟล์/usr/src/linux/include/linux/syscalls.h

เพิ่ม /usr/src/linux/Makefile ที่ข้อความว่า core-y += ต่อท้ายในบันทัดเดียวกัน ว่า /mycall
ได้ผลลัพธ์ ประมาณ
core-y += kernel/ mm/ fs/ ipc/ security/ crypto/ block/ mycall/

สร้าง directoryใหม่ชื่อว่า mycall ที่ /usr/src/linux/
แล้วนำไฟล์ mycall.c เข้ามาใส่ไว้



แล้วสร้างไฟล์ที่ชื่อว่า
makefile
ไว้ที่/usr/src/linux/mycall
โดยเนื้อหาใน ไฟล์นี้คือ

########## Start of Makefile ##########
obj-y := mycall.o
########## End of Makefile ##########

แล้วก็ทำการ build kernel ตามปกติ
โดยสามารถลอง ทดสอบ System call อันใหม่ได้โดยใช้ โค๊ดโปรแกรมด่านล่าง

#include
#include
#define __NR_mycall
long mycall(int i, int j) {
return syscall(__NR_mycall, i, j);
};
int main() {
printf(“%d\n”, mycall(10, 20));
return 0;
}

วันอาทิตย์ที่ 14 ธันวาคม พ.ศ. 2551

Kill Process in C#

บางทีเราก็อาจจะต้องการเขียนโปรแกรมเพื่อปิด Process ที่เราไม่ต้องการ
นี้เป็นแนวทางหนึ่งในหลายๆ วิธีครีบ

เราใช้ประโยชน์จาก Class System.Diagnostics.Process

Process[] processList = Process.GetProcesses(); // To get all Processes that Currently Running

System.Diagnostics.Process.EnterDebugMode(); // ทำให้ Thread ที่ใช้ งานคำสั้งนี้สามารถใช้คำสั้งเพื่อติดต่อกับ OS ได้


processList[IndexOfProcessWhichYouWantedToTerminate].kill();