วันพุธที่ 6 กุมภาพันธ์ พ.ศ. 2556

วิธีการติดตั้ง Windows 7





วิธีการลง Windows 7 ละเอียดทุกขั้นตอนฉบับสมบูรณ์






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


System Requirements สำหรับ Windows 7 (สเปคเครื่องคอมพิวเตอร์สำหรับ Windows 7)

Windows 7 มีความต้องการระบบขั้นต่ำดังนี้

• CPU: ความเร็ว 1 GHz 32-bit (x86) หรือ 64-bit (x64) ซีพียู

• Memory: หน่วยความจำอย่างน้อย 1 GB สำหรับเวอร์ชัน 32-bit และ 2 GB สำหรับเวอร์ชัน 64-bit

• Disk space: พื้นที่ฮาร์ดดิสก์อย่างต่ำ 16 GB สำหรับเวอร์ชัน 32-bit และ 20 GB สำหรับเวอร์ชัน 64-bit

• Graphics: รองรับ DirectX 9 และ Windows Display Driver Model 1.0 หรือสูงกว่า สำหรับการใช้งาน Aero theme

• Other: DVD-R/W Drive, Internet access (สำหรับดาวน์โหลด Windows 7 และ Update)


มาเริ่มกันเลยกับวิธีการลง Windows 7


• ขั้นตอนแรกใส่แผ่น Windows 7 แล้วกด Enter 1 ครั้งหรือกดรัวๆก็ได้เพื่อความแน่ใจ





• สำหรับขั้นตอนนี้ให้เลือกตามภาพเลยนะครับ





• จากนั้นให้กด Install now คือติดตั้งเดี๋ยวนี้





• โดยตรงนี้ให้เราเลือก OS ที่เราจะลงนะครับโดยมีแบบ x86(32bit) , x64(64bit) ให้ทำการเลือกได้เลยให้ตรงกับสเปคของคอมพิวเตอร์





• ขั้นตอนนี้ให้เราติ๊กถูกที่ช่องตามภาพนะครับ หน้าจอนี้คือยอมรับเงื่อนไขของตัวโปรแกรม Windows 7





• หากต้องการลง Windows ใหม่ให้เลือก Cubtom (advanced) หากต้องการอัพเดต Windows ให้กดที่ Upgrade





• ขั้นตอนนี้สำคัญนะครับจะเป็นกรเลือกไดรฟ์ในการลงนะครับส่วนมากจะเลือกลงใน Disk 0 ก็คือ Drive C นั้นเองหากกดผิดข้อมูลที่อยู่ในไดรฟ์อื่นก็จะหายนะครับก่อนจะกดควรดูให้ดีก่อน





• ขั้นตอนนี้ให้เราเลือก Disk 0 และคลิกที่ Drive options (advanced) จากนั้นก็เลือก Format หลังจากนั้นตรวจสอบให้ดีนะครับว่าเป็นไดรฟ์ที่เอาไว้ลง Windows จริง ๆ หลังจากนั้นกด NEXT





• ส่วนหน้านี้อาจจะนานหน่อยนะครับ ยังไงก็ต้อง รอ สู้ ๆ อีกนิดก็จะเสร็จแล้ว





• อันนี้เป็นการตั้งชื่อคอมพิวเตอร์ของคุณจะตั้งว่าอะไรก็ได้เหมือนบทความ Windows xp ที่ผมเคยอธิบายไว้





• ส่วนหน้านี้จะเป็นหน้าตั้ง USER กับ PASS ของ Accout นะครับหากไม่ต้องการตั้งให้กดข้ามขั้นตอนไปเลย





• หน้านี้ให้เราใส่ KEY ที่ได้มากับแผ่นนะครับจะอยู่ข้างๆกล้องหรืออยู่บนแผ่นหรืออยู่ในแผ่นเลยลองเช็คดูนะครับ





• ขั้นตอนนี้ให้เราเลือก Use recommended Setting เพื่อเป็นการ Update Patch windows ของวินโดว์นะครับ แล้วก็รอต่อไปจะเสร็จแล้วอีกนิดเดียว ^^





• หน้านี้ให้เราเลือกโซนเวลานะครับโดยให้เลือกเป็น UTC +07:00 Bangkok แล้วเลือกวันที่ของวันนี้และเวลาปัจจุบันของวันนี้





• ส่วนหน้านี้ให้เราเลือกเป็น Public network หลังจากนั้นรอรีบูทเครื่องอีกทีเพื่อเข้าวินโดว์





• เสร็จแล้วนะครับสำหรับการลงวินโดว์ 7 ขอให้โชคดีกับการลงนะครับ


วิธีการติดตั้ง Windows 8


วิธีติดตั้ง Windows 8 แบบ Clean Install ลง Win 8 ง่ายๆไม่ง้อช่าง


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





วันนี้ผมจะมานำเสนอวิธีการลง Windows 8 แบบ Clean Install ก็คือแบบล้างเครื่องหรือฟอร์แมตฮาร์ดดิสก์ใหม่กันเลย....มาตามดูครับ


ในที่นี้ผมจะใช้วิธีการติดตั้งจากแผ่น DVD ของ Windows 8 นะครับ


1.ก่อนอื่นใส่แผ่นติดตั้งลงในเครื่องอ่านดีวีดีของคอมพิวเตอร์ ทำการบูตเครื่องให้ไปตั้งไบออสของเครื่องให้บูตจากแผ่นดีวีดีเป็นอันดับแรกซึ่งการเข้าไบออสนั้นส่วนมาก ถ้าเป็นคอมพิวเตอร์ตั้งโต๊ะก็จะกดปุ่ม Del ส่วนแลปทอปก็จะกดปุ่ม F2ให้ดูที่คู่มือของแต่ละเครื่องก็แล้วกัน


เมื่อเครื่องบูตขึ้นมาจนเห็นคำว่า Press any key to boot from CD or DVD... ให้กด ENTER เลยครับ





2.ปล่อยให้เครื่องทำงานไปจนได้จนปรากฎดังภาพ ให้คลิกเลือกรายการตามนี้
Language to install : English
Time and currency format : Thai(Thailand)
Keyboard or input method : ตัววินโดวส์จะเลือกให้เป็น Thai เพราะเห็นว่า Time and currency formatตั้งเป็น Thai ให้เราเลือกกลับมาเป็น US ก่อน เหตุผลเพราะเมื่อติดตั้งเสร็จหน้าล็อกออนเข้าระบบจะเป็นภาษาไทย เราอาจงงได้ในการกรอกชื่อผู้ใช้และพาสเวิร์ด





3.ในหน้าต่าง Windows Setup ให้คลิก Install now เพื่อเริ่มการติดตั้ง Windows 8





4.ในหน้าต่าง License terms คลิกถูก I accept the term license จากนั้นคลิก Next





5.ในหน้าต่าง Which type of installation do you want? ให้เลือกเป็น Custom: Install Windows only (advanced)





6.ในหน้าต่าง Where do you want to install Windows? ให้เลือกฮาร์ดดิสก์หรือพาร์ติชันที่ต้องการติดตั้ง (ในที่นี้เลือก Drive 0) เสร็จแล้วคลิก Next


ข้อควรจำในขั้นตอนนี้
ขั้นตอนนี้เราเลือก Drive ที่จะลง Windows8 ส่วนมาก จะลงใน Disk/Drive 0 นะครับ ก็คือ Drive C: ของWindows เรานั้นเอง ระวังให้ดีอย่าลงผิดไดร์ฟนะ ในกรณีที่มีพาร์ติชันมากกว่า 1 พาร์ติชัน



ในการ Format Windows ข้อมูลจะหายเฉพาะที่ Drive C นะครับ



สำหรับเครื่องที่มี Windows XP , Windows 7 แล้วจะลงใหม่เป็น Windows 8


1.ให้ทำการ Format Drive ที่เป็นวินโดวส์ตัวเก่าก่อน โดยทำการกด Drive options (advanced) จากนั้นเลือก ไดร์ฟของวินโดวส์เก่าแล้วคลิก Format... ย้ำอีกทีดูดีๆนะครับ ถ้าผิดไดร์ฟข้อมูลในไดร์ฟหายหมดนะ


2. จากนั้นก็เลือก Drive/disk ที่เรา Format ไปจากข้อที่ผ่านมา จากนั้นกด Next



สำหรับเครื่องที่เพิ่งซื้อมาใหม่หรือฮาร์ดดิสก์ลูกใหม่


1 ให้เราทำการกด Drive options จากนั้นเลือกฮาร์ดดิสก์แล้วคลิก New เพื่อทำการแบ่งพาร์ติชันวินโดวส์ให้แบ่งมาสัก80 -100 GB ก็พอ ( 1GB = 1024 MB)


2 จากนั้น ก็แบ่งส่วนที่เหลือไว้ให้กับ Drive D , E ตามความเหมาะสม


3 ต่อมาให้เลือกไดร์ฟที่จะให้ลงวินโดวส์ โดยทำการคลิกบน Drive/Disk แล้วคลิก Next





7.ระบบจะเริ่มทำการติดตั้ง Windows 8 โดยจะดำเนินการขั้นตอนต่างๆ ของวินโดวส์ตามนี้ Copying Windows files, Getting files ready for installation, Installing features, Installing updates และ Finishing upให้รอจนการติดตั้งแล้วเสร็จ ก็ประมาณ 15 - 20 นาที ขึ้นอยู่กับเครื่องว่าแรงขนาดไหน





8.เมื่อ Windows 8 ติดตั้งเรียบร้อย เครื่องจะรีสตาร์ท 1 ครั้ง





9.หลังจากทำการติดตั้งแล้วเสร็จ Windows จะทำการรีสตาร์ทเครื่อง 1-2 รอบ จากนั้นจะปรากฏหน้าต่างPersonalize ให้ทำการเลือกสีของ Background และกำหนดชื่อเครื่องคอมพิวเตอร์โดยใส่ชื่อที่ต้องการในช่อง PC name เสร็จแล้วคลิก Next





10.ขั้นตอนการ Settings ให้เราเลือก Use Express Settings เพื่อทำการตั้งค่าระบบแบบด่วน





11.ในหน้าต่าง Sign in to your PC ให้คลิก Sign in without a Microsoft account แล้วคลิก Next


** ในขั้นตอนนี้จะมีวิธีการ Sign in to your PC อยู่ 2 วิธี ได้แก่ Email Address และ Sign in without a Microsoft account สำหรับในที่นี้ผมขอให้เลือก Sign in without a Microsoft account เพราะสะดวกกว่า ส่วนEmail Address เราต้องต่ออินเตอร์เน็ตและต้องมีอีเมลของ outlook.com หรือ Hotmail.com อยู่ก่อนแล้ว ซึ่งเราสามารถสร้างได้ภายหลังที่เข้าใช้วินโดวส์แล้วก็ได้ **





12.หน้าต่างต่อมาให้คลิก Local account





13.ต่อมาให้กำหนดชื่อผู้ใช้ในช่อง User name แล้วกำหนดรหัสผ่านที่ต้องการ 2 ครั้ง ในช่อง Password และReenter password จากนั้นข้อความช่วยจำรหัสผ่านในช่อง Password hint แล้วคลิก Finish





14.ระบบจะทำการจัดเตรียมระบบตามการตั้งค่า





15.ระบบแนะนำการใช้งานเบื้องต้นจากหน้านี้ก็จะเข้าหน้า Lock on Screen





16.เมื่อมาถึงหน้า Lock on Screen คุณก็พร้อมใช้งาน Windows 8 ได้แล้ว





จบแล้วครับสำหรับการติดตั้ง Windows 8 แบบ Clean Install ผมคิดว่าคงไม่ยากเกินไปสำหรับผู้ที่ต้องการจะเรียนรู้ในติดตั้งระบบวินโดวส์ด้วยตนเอง ไม่ต้องไปง้อใครหรือเสียตังส์ให้กับช่างคอมพิวเตอร์

ไอซีตั้งเวลา 555

                         ไอซีตั้งเวลา 555 (555 Timer IC )                                                               


                ไอซีตั้งเวลา 555 เป็นไอซีที่ทำหน้าที่กำเนิดสัญญาณตามเวลาที่ออกแบบไว้ โดยสามารถกำหนดได้ด้วยตัวอุปกรณ์ภายนอก ไอซีตั้งเวลา 555 สามารถกำเนิดสัญญาณ อะสเตเบิ้ล (Astable) โมโนสเตเบิล (Monostable) และประยุกต์ใช้งานด้านอื่นๆ ที่เกี่ยวกับการตั้งเวลาได้ดี
ไอซีตั้งเวลา 555 วงจรตั้งเวลาที่มีความเที่ยงตรงค่อนข้างสูง จำเป็นต้องใช้วงจรโมโนสเตเบิล ซึ่งส่วนมากนิยมใช้ไอซีเบอร์ 74121,74122,74123 อย่างไรก็ตาม การควบคุมการจุดชนวน(Trigger) ของสัญญาณอินพุตไอซีตระกูล 74  สามารถกระทำได้ยาก และมีเงื่อนไขมาก แต่ถ้าการหน่วงเวลานานกว่าครึ่งนาที และโหลดต้องการกระแสจะต้องใช้เวลาเบอร์ 555
                ในการใช้งานของวงจรโมโนสเตเบิล (Monostable) จะแบ่งเป็น 2 สภาวะ คือสภาวะที่คงที่ และสภาวะที่ไม่คงที่ โดยปกติวงจรโมโนสเตเบิล จะอยู่ในสภาวะคงที่ จนกว่าจะมีสัญญาณจุดชนวนเข้ามากระตุ้น จากนั้นเอาท์พุตจะเปลี่ยนสภาวะจากเดิม เกิดการหน่วงเวลาด้วยค่าของเวลาที่แน่นอน และกลับเข้าสู่สภาวะปกติเช่นเดิม
                ไอซีที่นิยมนำมาสร้างเป็นวงจรตั้งเวลาได้ดีที่สุดเบอร์หนึ่งคือ ไอซีเบอร์ 555 เพราะมีคุณสมบัติในการหน่วงเวลาที่ดี และนานพอสมควร

1.  คุณสมบัติของไอซี 555 แต่ละขา
                1.1 ขา1 กราวด์(Ground)
                1.2 ขา 2 ทริกเกอร์ (Trigger) เป็นขาที่มีความไวหรือแรงดันที่มีค่า 1/3 ของแหล่งจ่าย Vcc และจะเกิดการจุดชนวนของอินพุต ทำให้เอาท์พุตเปลี่ยนจากระดับต่ำเป็นระดับสูง โดยทั่วไปความกว้างของพัลซ์ที่จะมาจุดชนวนอินพุตได้นั้นต้องมีค่าเวลามากกว่า 1 uS ขึ้นไป   หลังจากจุดชนวนอินพุตแล้ว ทำให้เกิดการหน่วงเวลาของสัญญาณหลายไมโครวินาที ซึ่งจะทำให้ได้ค่าความกว้างต่ำสุดมีค่า 10 uS ขนาดของแรงดันที่เหมาะในการจุดชนวนนี้ มีค่าระหว่าง + Vcc และกราวด์ สำหรับกระแสจุดชนวนที่ต้องการนั้นมีค่า 500 uA
                1.3 ขา 3  เอาท์พุต (Output) แรงดันเอาท์พุตที่เกิดขึ้นสำหรับเอาท์พุตระดับสูง มีศักย์ไฟฟ้าต่ำกว่า +Vcc ประมาณ 1.7 v สำหรับเอาท์พุตระดับต่ำนั้น จะขึ้นอยู่กับแล่งจ่ายไฟที่ป้อน   เช่น   ที่ +Vcc= 5 V เอาท์พุต ระดบต่ำจะมีค่าประมาณ 0.25V ที่ 5 mA และที่ +Vcc =15V เอาท์พุตระดับต่ำจะมีค่าประมาณ 2 V ที่ 100mA
1.4 ขา 4 รีเซต (Reset) เมื่อต้องการให้เอาต์พุตอยู่ในระดับต่ำ ต้องป้อนศักย์ไฟฟ้าที่ขานี้ประมาณ 0.7 V โดยกระแสซิงก์มีค่า 0.1 mA ค่าของเวลาประวิงในการทำให้เอาต์พุตเปลี่ยนเป็นระดับต่ำมีค่า 0.5 ตS ซึ่งค่านี้เป็นค่าเป็นค่าต่ำสุดของความกว้างของพัลส์ที่จะมาควบคุมขานี้ ในกรณีทีไม่ต้องการใช้ขานี้ก็ควรต่อเข้ากับ +VCC

                                                                        

1.5 ขา 5 กระแสซิงก์ ที่เข้ามาขานี้สามารถรับได้ใกล้เคียงกับเอาต์พุต ดังนั้นค่าแรงดันที่มีค่า 2/3 +VCC ซึ่งเป็นแรงดันระดับสูงที่ใช้ในการเปรียบเทียบ ปกติในการทำงานขานี้จะไม่ถูกใช้แต่ควรใช้ตัวเก็บประจุค่า 0.01ตF ต่อลงกราวด์เพื่อไม่ให้ถูกรบกวนจากสัญญาณรบกวนขณะทำงาน
1.6 ขา 6 เทรสโฮล (Threshold) ถ้าศักย์ไฟฟ้าที่ขานี้สูงถึง 2/3 ของ+ Vcc จะเป็นระดับที่มีความไวต่อการเปลี่ยนแปลง คือจะทำให้สภาวะเอาท์พุตเปลี่ยนแปลงจากระดับสูงและระดับต่ำ
1.7 ขา 7 ดิสชาร์จ (Discharge) ขานี้ต่อกับขาคอลเล็กเตอร์ ของทรานซิสเตอร์ซึ่งอยู่ภายในตัวไอซี โดยขาอิมิเตอร์ต่อวงกราวด์ ทรานซิสเตอร์นี้จะทำหน้าที่กำหนดเวลาของระดับเอาท์พุต ถ้าเอาท์พุตอยู่ในระดับต่ำ ทรานซิสเตอร์นี้จะมีความต้านทานต่ำ ในขณะที่ทรานซิสเตอร์มีความต้านทานต่ำ ตัวเก็บประจุจะสามารถคายประจุผ่านทรานซิสเตอร์นี้ได้
                1.8 ขา 8 ไฟเลี้ยง (+Vcc) ต้องการแหล่งจ่ายไฟตรงที่มีศักย์บวก มีค่าอยู่ระหว่าง 5 โวลท์ ถึง 15 โวลท์ แม้ว่าจะทำงานในช่วงแรงดันที่ต่างกัน แต่ละช่วงของเวลาทำงานที่เปลี่ยนไปยังคงมีค่าน้อยมาก คือ ร้อยละ 0.1 ต่อการเปลี่ยนแปลงแรงดัน 1 โวลท์
                การทำงานของวงจรทั้งแบบโมโนสเตเบิล (Monostable) และแบบอะสเตเบิล (Astable)ทรานซิสเตอร์ตัวนี้จะทำหน้าที่เป็นสวิตซ์ เพื่อควบคุมการเก็บประจุและคายประจุ ตัวต้านทานและตัวเก็บประจุเป็นตัวกำหนดเวลาเมื่อทรานซิสเตอร์ทำงานในภาวะอิ่มตัวศักย์ไฟฟ้าที่ขา 7 นี้ มีค่า 100 mA ที่กระแสซิงก์ 5 mA หรือน้อยกว่า เมื่อทรานซิสเตอร์ทำงานสภาวะออฟ จะมีกระแสไหลผ่านขา 7 นี้ประมาณ 20 nA คุณสมบัติของขา 7 นี้เป็นตัวจำกัดค่าของตัวเก็บประจุและตัวต้านทาน คือจะต้องมีค่าไม่มากจนเกินไป เพราะกระแสที่รั่วไหลผ่านตัวต้านทานมาประจุ (Charge) ที่ตัวเก็บประจุ ต้องมีค่ามากกว่ากระแสรั่วไหลของทรานซิสเตอร์(Transistor)

2. วงจรอะสเตเบิลโดยใช้ไอซี 555


    t1 = 0.693(Rt1+Rt2)Ct                 t2 = 0.693Rt2Ct
    T = 0.693(Rt1+2Rt2)Ct

    เมื่อ         t1 = ช่วงเวลาที่มีค่ามาก (ON)                        t2 = ช่วงเวลาที่มีค่าน้อย (OFF)
                    T = เวลารวมทั้งหมด (t1+t2)


3. การทำงานของวงจร
1. เมื่อป้อนแหล่งจ่าย +VCC เข้าวงจรจะมีกระแสไฟฟ้าส่วนหนึ่งไหลผ่าน Rt1และ Rt2 มาประจุที่ Ct ทำให้แรงดันที่ตกคร่อม Ct  มีค่าสูงขึ้นจนถึง 1/3  ของแหล่งจ่าย +Vcc ขา 2 ซึ่งมีความไวต่อแรงดันนี้   จะจุดชนวน ( Trigger ) ทำให้เอาท์พุต เปลี่ยนจากระดับต่ำ ( Low ) เป็นระดับสูง ( High )  ทันที
2. แรงดันที่ตกคร่อม Ct จะมีค่าสูงขึ้นเรื่อยจนมีระดับแรงดัน  2/3 ของแหล่งจ่าย +Vcc ขา 6 ซึ่งมีความไวต่อแรงดันนี้  จะตรวจจับทำให้เอาท์พุท เปลี่ยนจากระดับสูงเป็นระดับต่ำและเป็นผลทำให้ขา 7 มีความต้านทานต่ำ  Ct จะคายประจุผ่าน Rt2  ที่ต่ออยู่กับขา 6 มีความไวต่อระดับของศักย์ไฟฟ้าขนาดนี้ด้วย  จึงทำให้เอาท์พุท เปลี่ยนจากระดับต่ำเป็นระดับสูงอีกครั้ง
3. การที่เอาต์พุต  ( Output ) เปลี่ยนจากระดับของศักย์ไฟฟ้าต่ำเป็นระดับสูงทำให้ขา 7 มีความต้านทานสูงตัวเก็บประจุ Ct ประจุผ่าน Rt1 และ Rt2  ใหม่อีกครั้งซึ่งทั้งหมดนี้ก็เป็นหนึ่งรอบของการทำงาน 

4. การเลือกใช้ตัวต้านทานและตัวเก็บประจุในวงจรตั้งเวลา
                1. กำหนด Rt ไม่ให้มีค่าต่ำกว่า 10k เพราะต้องการประหยัดพลังงานและไม่ต้องการให้ความกว้างของพัลซ์แคบเกินไป
                2. ค่าต่ำสุดของตัวเก็บประจุมีค่า 100 PF  นั้นกำหนดขึ้นมาเพื่อป้องกันผลที่อาจจะเกิดจากความจุค้าง
                3. ค่าสูงสุดของ Rt กำหนดจากระแสรั่วไหลของเทรสโฮล (Treshole) รวมกับกระแสรั่วไหลที่ขาดิสชาร์จ (Dischage) และกระแสรั่วไหลของตัวเก็บประจุดังนั้นการกำหนดค่าของ Rt ต้องทำให้กระแสไหลผ่านมีค่ามากกว่ากระแสเทรสโฮล รวมกับกระแสรั่วไหลที่ขาดิสชาร์จ และกระแสรั่วไหลที่ตัวเก็บประจุอย่างน้อย 1 เท่า (สำหรับวงจรที่ต้องการความเที่ยงตรงสูงควรมีค่ามากกว่า 100 เท่า)
                4. ค่าสูงสุดของตัวเก็บประจุถูกจำกัดอยู่ที่ค่ากระแสรั่วไหลไม่ใช่ค่าความจุ แต่ค่าของกระแสรั่วไหลนั้นขึ้นอยู่กับชนิดของตัวเก็บประจุและการใช้งานด้วย โดยทั่วไปตัวเก็บประจุที่มีค่าของกระแสรั่วไหลต่ำ สามารถมีค่าได้สูงถึง 1000 uF
                5. สำหรับงานโดยทั่วไป สัมประสิทธิ์ต่ออุณหภูมิของตัวต้านทานที่ใช้ควรใช้อยู่ในช่วง 200 ถึง 500 ppm/C ทั้งชนิดคาร์บอนและคาร์บอนฟิล์ม ใช้ค่าผิดพลาด  ถึง ร้อยละ10
                6. สำหรับงานที่ต้องการความเที่ยงตรงสูง ตัวต้านทานควรใช้ชนิดฟิล์มโลหะ ที่มีค่าความผิดพลาด  ถึงร้อยละ 5 สัมประสิทธิ์ต่ออุณหภูมิมีค่า 25 ถึง 100 ppm/C
                7. โดยทั่วไปตัวต้านทานที่ใช้มักมีค่าอยู่ระหว่าง 100 โอห์ม ถึง 1 เมกะโอห์ม แต่ถ้าต้องการใช้ค่าความต้านทานสูงมากกว่านั้น ควรใช้ตัวต้านทานที่มีความแน่นอนละเสถียรภาพต่ออุณหภูมิดี ซึ่งหาได้ยากและราคาแพง
              8. ตัวต้านทานที่ใช้กำหนดค่าเวลา ควรหลีกเลี่ยงการใช้ตัวต้านทานชนิดปรับค่าได้ โดยเฉพาะอย่างยิ่งแบบคาร์บอน ถ้าจำเป็นต้องใช้ให้อยู่ในช่วงแคบๆ เพราะว่ามีค่าสัมประสิทธิ์ต่ออุณหภูมิสูง ในกรณีที่ต้องการให้ปรับได้ช่วงกว้าง ควรใช้ตัวต้านทานชนิดปรับค่าได้แบบเซอร์เมต แต่ถ้าใช้ตัวต้านทานชนิดนี้จะมีค่าความต้านทานต่ำ ในกรณีแหล่งจ่ายไฟมีค่ามาก ไม่ควรให้ตัวต้านทานชนิดนี้รับพลังงานเกิน 1 ใน 5 ของอัตรากำลังที่จะทนได้
                9. ตัวเก็บประจุไม่ควรใช้ขนาดใหญ่ และควรใช้ค่าผิดพลาดไม่เกินร้อยละ 5 มีกระแสรั่วไหลต่ำ มีสัมประสิทธิ์ต่ออุณหภูมิต่ำ และไดอิเล็กตริกมีการดูดกลืนดี
                ตัวเก็บประจุที่มีกระแสรั่วไหลต่ำนั้น สามารถประจุไฟฟ้าจากแหล่งจ่ายกระแสคงที่ ที่มีค่า 1 uA ได้ ซึ่งหมายความว่ากระแสรั่วไหลของตัวเก็บประจุเอง มีค่าน้อยกว่าแหล่งจ่ายกระแสที่จ่ายให้ตัวเก็บประจุ ซึ่งจะต้องน้อยกว่าตลอดเงื่อนไขของแรงดันขณะทำงาน
                10. ตัวเก็บประจุจะต้องสามารถประจุและคายประจุได้ เมื่อปลายขั้วทั้งสองต่อถึงกัน  ไดอิเล็กตริกต้องไม่เก็บพลังงานค้างขณะทำการประจุ ซึ่งถ้ามีการเก็บพลังงานไว้หลายเปอร์เซ็นต์แล้ว จะเป็นผลเสียในการตั้งเวลา คือเวลาที่ตั้งจะไม่เริ่มจากศูนย์  ควรหลีกเลี่ยงการใช้ตัวเก็บประจุที่มีไดอิเล็กตริกดูดกลืนสูง ในวงจรตั้งเวลาซึ่งรวมทั้งตัวเก็บประจุชนิดกระดาษ,เซรามิคและไมก้าบางชนิด ซึ่งมีการดูดกลืนของไดอิเล็กตริกสูงถึงร้อยละ 3 ถึง 5 ตัวเก็บประจุที่ควรใช้ ได้แก่ พลาสติกฟิล์ม , โพลี่สไตรีน ,โพลี่คาบอเนต สำหรับตัวเก็บประจุชนิดโพลี่คาบอเนตมีการดูดกลืนของไดอิเล็กตริกน้อยกว่าร้อยละ 1 และตัวเก็บประจุชนิดโพลี่สไตรีน หรือ พารลี่รีน จะมีการดูดกลืนของไดอิเล็กตริกน้อยกว่าร้อยละ0.1 สำหรับตัวเก็บประจุที่มีไดอิเล็กตริกแบบเทฟลอนยิ่งเหมาะกับวงจรตั้งเวลา แต่ราคาค่อนข้างแพง
                       10.1โพลี่สไตรีน(Polystyrene) ถือว่าเป็นไดอิเล็กตริกที่ดีที่สุด เมื่อเทียบกับความเชื่อถือและราคา แต่มีข้อจำกัด คือ สามารถใช้กับอุณหภูมิที่ไม่เกินกว่า 85 องศา และค่าตัวเก็บประจุไม่เกิน 1 uF ค่าความผิดพลาดไม่เกินร้อยละ 1 ค่าสัมประสิทธิ์ต่ออุณหภูมิเป็นเชิงเส้น ซึ่งทำให้สามารถทำการชดเชยโดยใช้เทอร์มิสเตอร์ได้ถ้าจำเป็น
                      10.2 พาลี่รีน (Palyrene) เป็นตัวเก็บประจุที่มีไดอิเล็กตริกเหมือนยูเนี่ยนคาร์ไบต์ มีค่าตั้งแต่ 0.001uF ค่าผิดพลาดไม่เกินร้อยละ 1 ค่าผิดพลาดร้อยละ 0.5 ค่าสัมประสิทธิ์ต่ออุณหภูมิเป็นเชิงเส้นมีค่า 20030 ppm/C ใช้งานที่อุณหภูมิ -55 c ถึง 125 c
                      10.3 โพลี่คาบอเนต (Polycabonate) เป็นตัวเก็บประจุที่สามารถให้ค่าความจุได้หลาย 10uF ค่าสัมประสิทธิ์ต่ออุณหภูมิไม่เป็นเชิงเส้นเท่ากับตัวเก็บประจุชนิดโพลี่สไตรีน หรือพาลี่รีน ซึ่งไม่สามารถชดเชยได้ง่าย สำหรับการทำงานในช่วงอุณหภูมิ 0c ถึง 70 c ไม่จำเป็นต้องทำการชดเชย ค่าผิดพลาดของตัวเก็บประจุชนิดนี้ ร้อยละ 1
                11. ตัวเก็บประจุชนิดอิเล็กโทรลิตริก (Electrolytic Capacitor) ไม่ควรใช้เนื่องจากมีค่าผิดพลาดมากเสถียรภาพไม่ดี ยกเว้นจะใช้ในวงจรที่ไม่ต้องการความแน่นอน แทนตาอิเล็กโทรลิติก (Tanta Electroly Capacitor) สามารถใช้งานในวงจรตั้งเวลาได้ดี แต่ต้องอยู่ในช่วงอุณหภูมิ 0 ถึง 50 c การทำงานอาศัยแรงดัน จะช่วยควบคุมกระแสรั่วไหลสำหรับตัวเก็บประจุชนิดนี้เพราะกระแสของตัวเก็บชนิดนี้ มีค่าหลายไมโครแอมป์ ซึ่งจำเป็นต้องลดช่วงของการใช้งานของตัวต้านทานลง

5. ไอซีเบอร์ 555 ที่ใช้ในการค้า
              ไอซีเบอร์ 555 ที่ใช้ในทางการค้าจะใช้ทำงานในช่วงอุณหภูมิระหว่าง 0 0 C ถึง 70 0C   ในการตั้งเวลาอย่างง่ายโดยใช้วงจรโมโนสเตเบิ้ล      หาคาบเวลาโดยใช้สมการ  T  =  1.1 RtCt   ซึ่งจะมีค่าความผิดพลาดร้อยละ  1  ( ไม่รวมค่าความผิดพลาดอันเกิดจาก Rt , Ct )    ส่วนวงจรอะสเตเบิ้ลมีค่าความผิดพลาดประมาณร้อยละ 2 สำหรับวงจรโมโนสเตเบิ้ล    ผลจากการเปลี่ยนแปลงอุณหภูมิทำให้เวลาผิดพลาดไป 50 ppm/0C  หรือร้อยละ 0.005/0C    ส่วนวงจรอะสเตเบิ้ลผิดพลาดประมาณ  150 ppm/0C   และผลของการเปลี่ยนแปลงแรงดันที่ป้อนให้กับวงจรสามารถทำให้เวลาผิดพลาดไปร้อยละ 0.1/V   กระแสเอาต์พุตทั้งซิงก์และซอร์สมีค่า  20 mA     ไอซีเบอร์ 555  นี้กินกระแสประมาณ 3 mA  ที่  5 V หรือ 10 mA ที่ 15 V ( ไม่รวมกระแสโหลด )
               อย่างไรก็ตามยังมีไอซีเบอร์ 755   ซึ่งมีไอซีตั้งเวลาแบบซีมอส     สามารถใช้แทนไอซีตั้งเวลาเบอร์ 555 ได้โดยตรงในวงจรเกือบทั้งหมด     แต่มีข้อดีเหนือกว่าไอซีเบอร์ 555 ดังนี้
               1. กินไฟน้อยกว่ามาก  คือ  ดึงกระแสในภาวะปกติไม่มากกว่า  0.3 mA ( 555 ดึงกระแสไม่มากกว่า  15 mA )
                2. ใช้ได้กับแรงดันไฟเลี้ยงได้กว้างมาก  คือ  จาก +2 V  ถึง +18 V ( 555 ใช้ได้กับ +4.5 V ถึง +15 V )
                3. ใช้งานเป็นวงจรอะสเตเบิ้ล ( Astable )  ได้กับความถี่สูง   ได้ไม่น้อยกว่า 500 KHZ
                4. อินพุตทั้งหมดเช่น  ขาทริกเกอร์ ( Tigger ) ขารีเซต ( Reset )  ขาเทรสโฮล ( Tresshold)  ดึงกระแสน้อยมาก  คือ  เพียงประมาณ 0.02  เท่านั้น ( 555 ถึงประมาณ  2 )  จึงทำให้ใช้ค่าความต้านทานและตัวเก็บประจุในส่วนตั้งเวลาได้สูงมาก    ดังนั้นจึงสามารถออกแบบวงจรตั้งเวลาได้นานกว่า 555 ธรรมดามาก
                5. ระหว่างการเปลี่ยนแปลงสภาวะของเอาต์พุต ( Output )  จะดึงกระแสเสิร์จจากแหล่งจ่ายไฟน้อยมาก  คือ  เพียง 2 – 3 mA  เท่านั้น    ดังนั้นจึงไม่จำเป็นต้องมีตัวเก็บประจุต่อที่ขา 5 และคร่อมไฟเลี้ยงเพื่อรักษาแรงดันให้คงที่ดังเช่น  วงจร 555 ทั่วๆไป    จึงสามารถประหยัดตัวเก็บประจุไปได้ 2 ตัวเลยทีเดียว   และไม่เกิดสัญญาณไปรบกวนมาก                                                อย่างไรก็ตามเวลาใช้งานไอซี 555   ก็ต้องระวังเช่นเดียวกับไอวีซีมอสอื่นๆ  คือ  อย่าให้แรงดันอินพุต ( V )  ที่ขาต่างๆ  ในภาวะใดๆ มีค่าสูงกว่าแรงดันไฟเลี้ยงที่กับตัวไอซีเกินกว่า  0.3 V  และไม่ต่ำกว่า - 0.3 V    มิฉะนั้นไอซีจะเสียหายได้และถ้าเป็นไปได้ควรเปิดไฟเลี้ยงวงจรไอซีเบอร์นี้ไว้ก่อนจะป้อนแรงดันอินพุตเข้าที่ขาต่างๆ ของไอซีด้วย   

วันพฤหัสบดีที่ 6 ธันวาคม พ.ศ. 2555

การเขียนภาษา VHDL


ภาษา VHDL (1)

ความซับซ้อนและขนาดของระบบดิจิตอลในปัจจุบันได้เพิ่มมากขึ้นทุกขณะ ส่งผลให้มีการนำคอมพิวเตอร์เพื่อช่วยใน การออกแบบหรือ CAD มาใช้ในขบวนการออกแบบฮาร์ดแวร์เพิ่มขึ้นเช่นกัน อีกทั้งอุปกรณ์และวิธีการ ออกแบบใหม่ๆ ก็ถูกพัฒนาขึ้นมาเพื่อช่วยอำนวยความสะดวกให้กับนักออกแบบมากขึ้นด้วย สำหรับภาษาบรรยายอุปกรณ์ฮาร์ดแวร์ (HDL : Hardware Description Language) ก็เป็นเครื่องมืออย่างหนึ่งที่ได้รับการพัฒนามาอย่างต่อเนื่อง เพื่อช่วยให้การปรับปรุงขบวนการออกแบบระบบดิจิตอลเป็นไปอย่างมีประสิทธิภาพ

การออกแบบระบบดิจิตอล

ในการออกแบบระบบดิจิตอล เริ่มตั้งแต่การกำหนดแนวความคิดเบื้องต้นจนกระทั่งได้ออกมาเป็นอุปกรณ์ฮาร์ดแวร์ ที่ใช้งานได้จะต้องผ่านขั้นตอนต่างๆ มากมาย และในแต่ละขั้นตอนผู้ออกแบบจะต้องตรวจสอบผลลัพธ์ในแต่ละขั้น ก่อนเข้าสู่กระบวนการออกแบบในขั้นต่อไป รูปที่ 5.1 แสดงขั้นตอนปกติที่ใช้ในการออกแบบระบบดิจิตอลทั่วไป ขั้น แรกผู้ออกแบบจะกำหนดแนวความคิดในการออกแบบแล้วทำการพัฒนาให้สามารถนำมาใช้ได้อย่างสมบรูณ์ ซึ่งภาย ในขั้นตอนนี้ผู้ออกแบบจำเป็นต้องสร้างรูปแบบระบบในเชิงพฤติกรรมขึ้นมาตรวจสอบซึ่งอาจจะเป็นผังงานแสดงแบบหรือ รหัสคำสั่งเทียม (Pseudo code) ก็ได้






รูปที่ 5.1 แสดงขั้นตอนการออกแบบระบบดิจิตอล


ขั้นตอนต่อไปเป็นการออกแบบระบบเส้นทางของข้อมูล ผู้ออกแบบจะกำหนดส่วนประกอบของรีจิสเตอร์และวงจรลอจิก ที่จำเป็นทั้งหมดเพื่อนำมาประกอบเป็นระบบที่สมบรูณ์ โดยแต่ละองค์ประกอบสามารถเชื่อมต่อกันด้วยบัสหนึ่งหรือสอง ทิศทาง (Unidirectional or Bidirectional Bus) ส่วนกระบวนการในการควบคุมการเคลื่อนย้ายข้อมูลระหว่าง รีจิสเตอร์และวงจรลอจิกจะขึ้นอยู่กับพฤติกรรมของระบบที่กำหนดไว้ดังรูปที่ 5.2






รูปที่ 5.2 การออกแบบระบบเส้นทางของข้อมูล



ขั้นตอนถัดมาเป็นการออกแบบวงจรลอจิก ซึ่งจะเกี่ยวข้องกับการนำเกทดิจิตอลพื้นฐานและฟลิปฟลอป (flip-flop) มาประกอบเป็นอุปกรณ์ย่อยต่างๆ เช่น รีจิสเตอร์เก็บข้อมูล บัสวงจรลอจิก และส่วนควบคุมฮาร์ดแวร์ ซึ่งผลลัพธ์ ที่ได้ในขั้นตอนนี้จะเป็นเครือข่ายของการโยงใยระหว่างเกทและ ฟลิปฟลอปนั่นเองการออกแบบในขั้นตอนถัดไป เป็นการเปลี่ยนเครือข่ายการโยงใยที่ได้จากขั้นตอนที่แล้วให้เป็นลำดับของทรานซิสเตอร์ (Transistor List) และ Layout ซึ่งขั้นตอนนี้จะเกี่ยวข้องโดยตรงกับการจัดวางทรานซิสเตอร์หรือไลบรารีเซลล์เพื่อ แทนเกทและฟลิปฟลอปต่างๆและในขั้นตอนสุดท้ายจะเป็นการส่งระบบที่ออกแบบไว้ไปทำการเจือสารที่โรงงานเพื่อผลิตออกมาเป็น วงจรรวมในที่สุด


ประวัติความเป็นมาของภาษา VHDL

VHDL ย่อมาจากคำว่า VHSIC Hardware Description Language (VHSIC : Very High Speed Integrated Circuit) เป็นภาษาโปรแกรมระดับสูง (High Level Language) ที่ใช้สำหรับการออกแบบฮาร์ด แวร์ในระบบดิจิตอล ตัวของภาษาสามารถบรรยายพฤติกรรมการทำงานในรูปของลำดับชั้น (Hierarchy) และ สามารถเขียนได้หลายรูปแบบ ด้วยเหตุผลนี้จึงทำให้ภาษา VHDL เป็นเครื่องมือที่ใช้ออกแบบตั้งแต่ขั้นตอนบนสุด คือ แนวความคิดที่จะแก้ปัญหา ลงไปทีละขั้นจนถึงขั้นตอนของการสร้างวงจรจริง และตัวภาษาก็เปิดโอกาสให้วิศวกร ได้พัฒนาและจำลองการทำงานของรูปแบบฟังก์ชันการทำงานของวงจรอย่างสังเขป โดยยังไม่ต้องคำนึงถึงรายละเอียดเกี่ยวกับโครงสร้างวงจรจริง นอกจากนั้น VHDL ยังเป็นภาษาที่สนับสนุนลักษณะต่างๆ ของระบบดิจิตอลที่มี ความซับซ้อนได้ทั้งหมด ดังนั้น VHDL จึงเป็นภาษาที่น่าสนใจในการศึกษาและนำไปใช้งานเป็นอย่างยิ่ง วิวัฒนาการของภาษา VHDL เริ่มต้นประมาณปี ค.ศ. 1981 เมื่อกระทรวงกลาโหมสหรัฐอเมริกา หรือ DoD (Department of Defense) ได้พยายามปรับปรุงอุปกรณ์อิเล็กทรอนิกส์และคอมพิวเตอร์ที่ใช้ในกิจการทางทหาร ให้มีความทันสมัยมากขึ้น ประกอบกับเทคโนโลยีทางด้านไมโครอิเล็กทรอนิกส์มีการพัฒนาไปอย่างรวดเร็วดังจะเห็นได้ จากการนำวงจรดิจิตอลหลายๆ วงจรมาทำการผลิตอยู่บนแผ่นซิลิกอนที่มีพื้นที่เพียง 1 - 2 ตารางเซนติเมตรเท่านั้น ซึ่ง เป็นผลให้ประสิทธิภาพในการทำงานของวงจรสูงขึ้นตลอดจนความน่าเชื่อถือ ในการทำงานและความคงทนต่อสภาพ แวดล้อมสูง แต่เนื่องจากในขณะนั้นขั้นตอนของการออกแบบ การผลิต และการตรวจสอบวงจรต้นแบบ เป็นขบวนการที่ ต้องใช้วิศวกร และเวลาในดำเนินการมาก ฉะนั้นทาง DoD จึงจัดตั้งโครงการขึ้นมาเพื่อศึกษาวิธีการที่ช่วยในการพัฒนา วงจรอิเล็กทรอนิกส์ โดยเฉพาะอย่างยิ่งวงจรระบบดิจิตอล ให้สามารถนำไปผลิตได้เร็วขึ้น ซึ่งโครงการดังกล่าวมีชื่อว่า "Very High Speed Integrated Circuits" หรือ VHSIC โดยในระยะแรกนั้นโครงการนี้ถือเป็นความลับทาง ด้านความมั่งคงของประเทศ และอยู่ภายใต้ความควบคุมดูแลของ United States International Traffic and Arms Regulations (ITAR) สำหรับมาตรฐานของภาษาที่ใช้บรรยาย พฤติกรรมวงจรหรือฮาร์ดแวร์ของระบบ สำหรับโครงการ VHSIC ที่ DoDได้ให้ไว้สามารถสรุปได้ดังนี้


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

- สามารถนำไปใช้เป็นเอกสารประกอบโครงการได้

- ต้องเป็นภาษาที่เขียนขึ้นสำหรับใช้จำลองการทำงานของวงจร


ฉะนั้นภาษาดังกล่าวนี้จึงจัดเป็นภาษาโปรแกรมระดับสูง เช่นเดียวกับภาษาปาสคาล หรือภาษาซี ซึ่งในทางวิศวกรรม ภาษาที่ใช้ในการออกแบบฮาร์ดแวร์นี้เรียกว่า "Hardware Description Language" หรือ HDL


ในตอนเริ่มแรกนั้น DoD ได้มอบหมายให้บริษัทไอบีเอ็ม เท็กซัสอินสตูเมนท์ และอินเตอร์เมทริกซ์ เป็นผู้ศึกษาและพัฒนา โครงการ ซึ่งการดำเนินงานเป็นไปอย่างต่อเนื่อง จนกระทั่งในปี ค.ศ.1985 ทาง ITAR ได้ยกเลิกข้อจำกัดในการถ่ายทอด เทคโนโลยีทางทหารออกจากโครงการนี้ ดังนั้นภาษา VHDL จึงเริ่มเป็นที่รู้จักกันโดยทั่วไป และประมาณปี ค.ศ. 1987 IEEE ได้ทำการกำหนดมาตรฐานของภาษานี้เป็น IEEE 1076-1987 และมีชื่อเรียกว่า VHDL ซึ่งมาตรฐานนี้ได้รับ การปรับปรุงจนเป็นมาตรฐาน IEEE 1076-1993 หรือ VHDL 1993 เนื่องจากในขณะนั้น DoD เป็นลูกค้ารายใหญ่ ของอุตสาหกรรมอิเล็กทรอนิกส์และคอมพิวเตอร์ ดังนั้นจึงมีผู้รับโครงการต่างๆ จาก DoD ไปดำเนินการวิจัยและพัฒนา เป็นจำนวนมาก และเพื่อให้ทุกโครงการอยู่ในมาตรฐานเดียวกันหมด ดังนั้นทาง DoD จึงได้กำหนดว่า ทุกๆ โครงการต้อง เขียนอยู่ในรูปของภาษา VHDLเท่านั้น ซึ่งทำให้ DoD สามารถนำโครงการเหล่านี้ไปจำลองกับเครื่องคอมพิวเตอร์ได้ หลายๆระบบ

ข้อกำหนด

DoD ได้ตั้งข้อกำหนดสำหรับภาษา VHDL ในเดือนมกราคมปี ค.ศ.1983 ไว้ดังนี้
1. ลักษณะทั่วไป
DoD ได้กำหนดให้ VHDL เป็นภาษาสำหรับการออกแบบและบรรยายของฮาร์ดแวร์ ซึ่งหมายถึงความสามารถ ในการอธิบายและออกแบบในระดับสูง การจำลอง (Simulation) การสังเคราะห์ (Synthesis) และการทดสอบ (Testing) นอกจากนั้น VHDL ยังถูกกำหนดไว้สำหรับการบรรยายฮาร์ดแวร์ตั้งแต่ระดับบนซึ่งก็คือระบบจนถึง ระดับเกทอีกด้วย เนื่องจากในการทำงานของระบบดิจิตอลนั้น ทุกๆ องค์ประกอบภายในระบบไม่ว่าเล็กหรือใหญ่ จะทำงานไปพร้อมๆ กัน ซึ่งในเรื่องของความพร้อมเพรียงในการทำงานนี้ก็ถือเป็นข้อกำหนดที่สำคัญอย่างหนึ่งของ VHDL ด้วยเช่นกัน (สำหรับในภาษาที่ใช้ในการบรรยายฮาร์ดแวร์นั้นความพร้อมเพรียงจะหมายถึงทุกๆ คำสั่ง องค์ประกอบ เกทหรือวงจรลอจิกจะถูกนำมาปฏิบัติทั้งหมด ดังนั้นในที่สุดแล้วก็จะดูเหมือนว่าได้มีการปฏิบัติไป พร้อมๆ กัน)


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


3. ไลบรารี
VHDL ได้สนับสนุนการมีไลบรารีเพื่อระบบการจัดการที่ดี ผู้ออกแบบสามารถกำหนดลักษณะและการทำงานของ อุปกรณ์พื้นฐานไว้ในระบบไลบรารี หรือจะใช้ไลบรารีที่ระบบได้จัดเตรียมไว้แล้วก็ได้ โมเดลและการบรรยายที่ถูก ต้องควรจัดเก็บไว้ในไลบรารีหลังจากที่ได้ผ่านการคอมไพล์เรียบร้อยแล้วเพื่อให้ผู้ออกแบบคนอื่นๆ สามารถนำไป ใช้ได้ด้วย


4. ลำดับคำสั่ง
แม้ว่าการปฏิบัติคำสั่งหรือกระบวนการโดยพร้อมเพรียงกันจะเป็นคุณสมบัติที่สำคัญของ VHDL ก็ตาม ตัวภาษา เองก็ยังมีการจัดเตรียมลักษณะการควบคุมแบบลำดับคำสั่งไว้ให้ด้วย เมื่อผู้ออกแบบได้กำหนดหน้าที่และองค์ประกอบ ที่ทำงานพร้อมกันของระบบไว้เรียบร้อยแล้ว ผู้ออกแบบยังสามารถบรรยายหน้าที่การทำงานซึ่งเป็นรายละเอียดภายใน ของแต่ละองค์ประกอบได้ในลักษณะเดียวกับการเขียนโปรแกรมที่ประกอบด้วยโครงสร้างแบบ case, if - then - else และ loop ทั่วๆ ไปได้ การบรรยายแบบลำดับคำสั่งทำให้การออกแบบหน้าที่การทำงานของอุปกรณ์กระทำได้ สะดวกและง่ายขึ้น อย่างไรก็ตามโครงสร้างทั้งหมดของ VHDL ก็ยังคงเป็นการทำงานแบบพร้อมเพรียงกันเช่นเดิม


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


6. ชนิดของข้อมูล
VHDL สามารถกำหนดชนิดของข้อมูลไม่เพียงแต่ชนิด BIT และ BOOLEAN เท่านั้น แต่ยังสามารถกำหนดชนิด ของข้อมูลเป็นจำนวนเต็ม จำนวนจริง จุดทศนิยม และชนิดลำดับการนับ (Enumerate Type) หรือแม้แต่ชนิดของ ข้อมูลที่ผู้ออกแบบกำหนดขึ้นมาเองก็ได้


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


8. การควบคุมเวลา
VHDL อนุญาตให้ผู้ออกแบบสามารถกำหนดเวลาในการส่งผ่านข้อมูลหรือสัญญาณได้ตามต้องการ การตรวจสอบ การออกแบบเกทหรือการหน่วงเวลาก็สามารถกระทำได้โดยการกำหนดช่วงเวลาที่แน่นอนหรือกำหนดให้มีการรอคอย เหตุการณ์ (Event) นอกจากนี้ก็ยังสามารถกำหนดรูปแบบของสัญญาณนาฬิกาได้อีกด้วย


9. การกำหนดแบบโครงสร้าง
การกำหนดโครงสร้างขององค์ประกอบต่างๆ สามารถกระทำได้ในทุกระดับของการออกแบบ โดยการกำหนดโครง สร้างขององค์ประกอบร่วมที่เกิดจากองค์ประกอบย่อยซึ่งแตกต่างกันหรือ เหมือนกันก็เป็นข้อกำหนดอย่างหนึ่งของ VHDL เช่นกัน

การเขียนโปรแกรม


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


1.1 ขั้นตอนวิธีการทางคอมพิวเตอร์ (computer algorithms)

ก่อนที่เราจะเขียนโปรแกรมคอมพิวเตอร์ภาษาใดภาษาหนึ่งเพื่อแก้ปัญหาทางคอมพิวเตอร์ เราควรศึกษาขั้นตอนวิธีการทางคอมพิวเตอร์ เพื่อให้เกิดความรู้ความเข้าใจที่ถูกต้องตามขั้นตอนวิธีดังนี้

1) การวิเคราะห์งาน (job analysis)

2) การเขียนผังงานโปรแกรม (program flowcharting)

3) การเขียนโปรแกรม (programming)

4) การทดสอบ และแก้ไขโปรแกรม (testing and editing program)

5) การจัดทำเอกสารประกอบ และการบำรุงรักษาโปรแกรม (documentation and maintenance program)


1.1.1 การวิเคราะห์งาน (job analysis) ในการวิเคราะห์งานเราจะต้องกำหนดจุดประสงค์ของการวิเคราะห์งาน และขั้นตอนวิธีการวิเคราะห์งานแต่ละอย่างให้ได้ ซึ่งงานแต่ละอย่างมีรายละเอียดดังนี้

1.1.1.1 จุดประสงค์ของการวิเคราะห์งาน

ในการวิเคราะห์งานแต่ละอย่างมีจุดประสงค์ของการวิเคราะห์งานที่สำคัญดังนี้

1. เพื่อหาวัตถุประสงค์ของการเขียนโปรแกรม

2. เพื่อหารูปแบบผลลัพธ์ที่ต้องการ

3. เพื่อหาข้อมูลนำเข้าที่ต้องใส่เข้าไปในโปรแกรม

4. เพื่อหาตัวแปรที่จำเป็นต้องใช้ในโปรแกรม

5. เพื่อหาขั้นตอนวิธีการทำงานของโปรแกรม

1.1.1.2 ขั้นตอนวิธีการวิเคราะห์งาน

ในการวิเคราะห์งานแต่ละอย่างมีขั้นตอนวิธีการวิเคราะห์งานที่สำคัญดังนี้

1) การหาวัตถุประสงค์ของการเขียนโปรแกรม

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

2) การหารูปแบบผลลัพธ์ที่ต้องการ

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

3) การหาข้อมูลนำเข้าที่ต้องใส่เข้าไปในโปรแกรม

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


ตัวอย่างที่ 1.1 ผลลัพธ์ที่ต้องการ คือ พื้นที่สามเหลี่ยมมุมฉากข้อมูลนำเข้าที่ต้องใส่เข้าไปในโปรแกรมคือ

1) สูตรคำนวณพื้นที่สามเหลี่ยมมุมฉาก

พื้นที่สามเหลี่ยมมุมฉาก = ? x ฐาน x สูง

2) ความยาวของฐานและความสูงของรูปสามเหลี่ยม

4) การหาตัวแปรที่จำเป็นต้องใช้ในโปรแกรม

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

5) การหาขั้นตอนวิธีการทำงานของโปรแกรม


การหาขั้นตอนวิธีการทำงานของโปรแกรมจะขึ้นอยู่กับลักษณะของการแก้ปัญหา ดังนั้นนักเขียนโปรแกรมที่มีความชำนาญในระดับหนึ่งแล้วจะสามารถหาขั้นตอนวิธีการทำงานของโปรแกรมได้โดยไม่ยาก แต่สำหรับผู้ที่เริ่มต้นศึกษาการเขียนโปรแกรม ควรหาขั้นตอนวิธีการทำงานของโปรแกรมตามคำแนะนำโดยเรียงตามลำดับดังนี้


ขั้นตอนวิธีการทำงานของโปรแกรมที่แนะนำ

5.1) เริ่มต้นทำงาน

5.2) กำหนดค่าเริ่มต้นให้กับตัวแปร

5.3) พิมพ์หัวรายงาน (ถ้ามีรายงาน)

5.4) รับข้อมูลเข้าทีละเรคอร์ด

5.5) ตรวจสอบข้อมูลว่าเป็นชุดสุดท้ายหรือไม่

5.5.1 ถ้าเป็นข้อมูลชุดสุดท้าย ให้ไปทำงานข้อ 5.11

5.5.2 ถ้าไม่ใช่ข้อมูลชุดสุดท้าย ให้ทำงานข้อต่อมา (ข้อ 5.6)

5.6) คำนวณผลลัพธ์

5.7) เปรียบเทียบผลลัพธ์ (ถ้ามี)

5.8) เพิ่มค่าตัวแปรสะสม (ถ้ามี)

5.9) พิมพ์ค่าผลลัพธ์ทีละเรคอร์ด

5.10) ย้อนกลับไปทำงานข้อ 5.4

5.11) พิมพ์สรุป (ถ้ามี)

5.12) จบการทำงาน



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

การเขียนผังงานโปรแกรม (program flowcharting)

สำหรับหัวข้อการเขียนผังงานโปรแกรมจะประกอบด้วยเนื้อหาที่สำคัญดังนี้คือ ความหมายของผังงาน ประเภทของผังงาน สัญลักษณ์มาตรฐานที่ใช้เขียนผังงานโปรแกรม หลักการเขียนผังงานโปรแกรม และขั้นตอนการเขียนผังงานโปรแกรม ดังรายละเอียดต่อไปนี้

1.1.2.1 ความหมายของผังงาน

“ผังงาน” (flowchart) ทางคอมพิวเตอร์ หมายถึง แผนภาพที่เขียนขึ้นโดยใช้สัญลักษณ์มาตรฐาน เพื่อแสดงขั้นตอนวิธีการทำงานของโปรแกรม หรือระบบงานที่ต้องการ

1.1.2.2 ประเภทของผังงาน

ผังงานสามารถจำแนกออกได้ 2 ประเภท คือ

1) ผังงานระบบ (system flowchart) หมายถึง ผังงานที่แสดงถึงขั้นตอนวิธีการทำงานของระบบงานใดระบบหนึ่ง ซึ่งในผังงานระบบจะแสดงให้เห็นถึงสื่อที่ใช้รับข้อมูล บันทึกข้อมูล วิธีการประมวลผล ขั้นตอนการทำงานและความสัมพันธ์ของส่วนต่าง ๆ ในระบบงานอย่างกว้าง ๆ เพื่อให้เห็นภาพรวมของระบบงานใดระบบงานหนึ่ง เช่น











รูปที่ 1.1 ผังงานระบบแสดงการตัดเกรด

ที่มา : กรรณิการ์ กมลรัตน์, 2547.

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








รูปที่ 1.2 ผังงานโปรแกรมแสดงรายละเอียดการทำงานของโปรแกรมสำหรับตัดเกรด

ที่มา : เฉลิมพล ทัพซ้าย, 2530 : 29.




1.2.1.3 สัญลักษณ์มาตรฐานที่ใช้เขียนผังงานโปรแกรม

สถาบันมาตรฐานแห่งชาติของสหรัฐอเมริกา (American National Standard Institute) และองค์การระหว่างประเทศว่าด้วยการมาตรฐาน (International Organization for Standardization) ได้ร่วมกันกำหนดสัญลักษณ์มาตรฐานที่ใช้เขียนผังงานโปรแกรม

โดยในเอกสารเล่มนี้จะนำเสนอสัญลักษณ์ที่นิยมนำมาใช้เขียนผังงานโปรแกรม ดังต่อไปนี้

1. สัญลักษณ์ Process

Process



ความหมายของ Process คือ การกำหนดค่าหรือการคำนวณค่า


2. สัญลักษณ์ Decision




ความหมายของ Decision คือ การทดสอบเงื่อนไขหรือเปรียบเทียบเงื่อนไข เพื่อตัดสินใจทำงานอย่างใดอย่างหนึ่งตามที่ต้องการ




3. สัญลักษณ์ Start/ Stop program หรือ Terminal Interrupt



ความหมายของสัญลักษณ์ คือ การเริ่มต้นโปรแกรม หรือการสิ้นสุดการทำงานของโปรแกรม หรือหยุดการทำงานชั่วคราว




4. สัญลักษณ์ Input / Output




ความหมายของสัญลักษณ์ คือ การรับข้อมูล (input) หรือการแสดงผลลัพธ์ (output) โดยไม่ได้ระบุสื่อที่ใช้


5. สัญลักษณ์ Display




ความหมายของสัญลักษณ์ คือ การแสดงผลลัพธ์ทางจอภาพ



6. สัญลักษณ์ Document




ความหมายของสัญลักษณ์ คือ การพิมพ์ผลลัพธ์ออกทางกระดาษพิมพ์







7. สัญลักษณ์ Manual Input




ความหมายของสัญลักษณ์ คือ การรับข้อมูลหรือคำสั่งผ่านทางคีย์บอร์ด






8. สัญลักษณ์ Manual Operation




ความหมายของสัญลักษณ์คือการรับข้อมูลหรือแสดงผลลัพธ์โดยไม่ระบุสื่อ






9. สัญลักษณ์ Connector





Connector

ความหมายของสัญลักษณ์ คือ แสดงจุดเชื่อมต่อจากที่หนึ่งไปยังอีกที่หนึ่งของผังงาน โดยที่จุดเชื่อมต่อนี้อยู่ในหน้าเดียวกัน





10. สัญลักษณ์ Off page Connector



Off page Connector

ความหมายของสัญลักษณ์ คือ แสดงจุดเชื่อมต่อจากที่หนึ่งไปยังอีกที่หนึ่งของผังงาน โดยที่จุดเชื่อมต่อนี้อยู่ต่างหน้ากัน






11. สัญลักษณ์ flow line and arrowheads




ความหมายของสัญลักษณ์ คือ แสดงทิศทาง การทำงานของผังงาน โดยใช้ลูกศร เป็นตัวกำหนดทิศทาง การทำงานของผังงาน






12. สัญลักษณ์ Punched Card



ความหมายของสัญลักษณ์คือการรับข้อมูลหรือแสดงผลลัพธ์บนบัตรเจาะรู




การเขียนโปรแกรม (programming)

ในหัวข้อเรื่องการเขียนโปรแกรมจะกล่าวถึงเนื้อหา 2 ส่วน คือความหมายของโปรแกรมคอมพิวเตอร์ และภาษาคอมพิวเตอร์ดังมีรายละเอียดต่อไปนี้


1.1.3.1 ความหมายของโปรแกรมคอมพิวเตอร์

โปรแกรมคอมพิวเตอร์ (computer program) หมายถึง ชุดของคำสั่งที่เขียนขึ้นเพื่อสั่งให้คอมพิวเตอร์ทำงานตามที่ต้องการ ส่วนการเขียนโปรแกรม (programming) หมายถึง การเขียนชุดคำสั่งด้วยภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่ง เพื่อให้คอมพิวเตอร์ทำงานตามโปรแกรมที่เราเขียนขึ้น


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


1.1.3.2 ภาษาคอมพิวเตอร์

ภาษาคอมพิวเตอร์ (computer language) หมายถึง ภาษาที่สามารถนำมาใช้เขียนโปรแกรมคอมพิวเตอร์ได้ ซึ่งแต่ละภาษามีรายละเอียดดังต่อไปนี้


1) ภาษาเครื่อง (machine language)

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


ตัวอย่างที่ 1.18 แสดงคำสั่งของภาษาเครื่องมีดังนี้

ถ้าเราต้องการสั่งให้เครื่องทำงานตามคำสั่ง 9 + 3 แสดงได้ดังนี้

การบวกแทนด้วยรหัส 10101010

เลข 9 เปลี่ยนเป็นเลขฐานสอง 00001001

เลข 3 เปลี่ยนเป็นเลขฐานสอง 00000011

ดังนั้น คำสั่ง 9 + 3 เขียนเป็นภาษาเครื่องได้ดังนี้

00001001 10101010 00000011






2) ภาษาแอสเซมบลี (assembly language)

ภาษาแอสเซมบลีหรือจะเรียกชื่ออีกอย่างว่าภาษาระดับต่ำ ซึ่งเป็นภาษาคอมพิวเตอร์ที่พัฒนาขึ้นมาเพื่อให้ผู้เขียนโปรแกรมสามารถเขียนโปรแกรมติดต่อกับคอมพิวเตอร์ได้ง่ายกว่าภาษาเครื่อง ส่วนการเขียนคำสั่งในภาษาแอสเซมบลีจะใช้คำย่อของภาษาอังกฤษและอ้างถึงตำแหน่งที่อยู่ภายในคอมพิวเตอร์เป็นส่วนใหญ่ ได้แก่ MOVE, DC, DS, CL10 เป็นต้น ผู้ที่ต้องใช้ภาษาแอสเซมบลีส่วนมากจะเป็นวิศวกรคอมพิวเตอร์ ดังนั้นภาษาแอสเซมบลีจึงไม่เหมาะกับผู้เริ่มต้นเขียนโปรแกรม


ตัวอย่างที่ 1.19 แสดงคำสั่งของภาษาแอสเซมบลีมีดังนี้

ถ้าเราต้องการสั่งให้เครื่องทำงานตามคำสั่ง 9 + 3 แสดงได้ดังนี้

MOV AX, 9

MOV BX, 3

ADD AX, BX


3) ภาษาระดับสูง (high level language)

ภาษาระดับสูงเป็นภาษาที่ผู้เขียนโปรแกรมสามารถเข้าใจได้ง่ายกว่าภาษาแอสเซมบลีและภาษาเครื่อง ทั้งนี้ก็เพราะการเขียนคำสั่งของภาษาระดับสูงมีลักษณะเป็นภาษาอังกฤษ ซึ่งอ่านแล้วเข้าใจได้ง่ายกว่าภาษาแอสเซมบลี เช่น ใช้คำว่า READ, WRITE, PRINT, COMPUTE เป็นต้น ตัวอย่างของภาษาระดับสูงได้แก่ ภาษาฟอร์แทรน (FORTRAN), ภาษาโคบอล (COBOL), ภาษาเบสิก (BASIC), ภาษาปาสคาล (PASCAL) และภาษาซี (C) เป็นต้น ซึ่งแต่ละภาษามีประวัติพอสังเขปดังต่อไปนี้
ภาษาฟอร์แทรน (FORTRAN ย่อมาจาก FORmula TRANslator) พัฒนาโดยบริษัท IBM ระหว่างปี ค.ศ.1954 ถึง ค.ศ.1957 ภาษานี้ใช้สำหรับการพัฒนาโปรแกรมประยุกต์ด้านวิทยาศาสตร์และวิศวกรรมศาสตร์ ที่ต้องใช้ในการคำนวณสมการคณิตศาสตร์ที่ซับซ้อน ปัจจุบันภาษาฟอร์แทรนยังเป็นที่นิยมใช้ ในการพัฒนาโปรแกรมด้านวิทยาศาสตร์และวิศวกรรมศาสตร์
ภาษาโคบอล (COBOL ย่อมาจาก Common Business Oriented Language) พัฒนาขึ้นในปี ค.ศ.1959 เป็นภาษาที่พัฒนาขึ้นมาเพื่อใช้ในการพัฒนาโปรแกรมประยุกต์ด้านธุรกิจและการค้า ปัจจุบันโปรแกรมที่ใช้ในด้านธุรกิจจำนวนมากยังเป็นโปรแกรมที่พัฒนามาจากภาษาโคบอล
ภาษาเบสิก (BASIC ย่อมาจาก Beginners All-purpose Symbolic Instructional Code) เป็นภาษาที่พัฒนาขึ้นโดยมีจุดประสงค์เพื่อให้ผู้เริ่มต้นพัฒนาโปรแกรมสามารถเรียนรู้และเข้าใจการพัฒนาโปรแกรมอย่างง่าย ภาษาเบสิกเป็นภาษาคอมพิวเตอร์ภาษาแรกที่ใช้เครื่องไมโครคอมพิวเตอร์


ภาษาคอมพิวเตอร์ที่พัฒนาขึ้นในยุคแรก ยังมีข้อจำกัดในการที่จะพัฒนาโปรแกรมขนาดใหญ่ ทั้งนี้เนื่องจากภาษาคอมพิวเตอร์เหล่านั้นขาดโครงสร้างที่ดี ทำให้การพัฒนาโปรแกรมที่มีขนาดใหญ่และมีความซับซ้อนเป็นไปได้ยาก ในช่วงต้นปี ค.ศ.1970 จึงมีภาษาคอมพิวเตอร์ที่เป็นภาษาเชิงกระบวนการ (Procedural หรือ Structural Language) เกิดขึ้น ภาษาคอมพิวเตอร์ประเภทนี้จะมีความยืดหยุ่นในการพัฒนาโปรแกรม ทำให้สามารถแก้ไขและบำรุงรักษาได้ง่าย เนื่องจากโปรแกรมถูกแยกออกเป็นส่วน ๆ ภาษาคอมพิวเตอร์ที่เป็นภาษาเชิงกระบวนการที่สำคัญคือ
ภาษาปาสคาล (Pascal) พัฒนาโดย Niclaus Wirth ในปี ค.ศ.1971 โดยมีจุดประสงค์เพื่อใช้ในการสอนการเขียนโปรแกรมภาษาเชิงกระบวนการ ในมหาวิทยาลัย แต่เนื่องจากภาษาปาสคาลไม่มีคุณลักษณะที่จะสนับสนุนการพัฒนาโปรแกรมด้านธุรกิจและอุตสาหกรรมจึงไม่ได้รับความนิยมมากนัก
ภาษาซี (C) พัฒนาขึ้นในช่วงเดียวกับภาษาปาสคาล โดยนักวิจัยที่ห้องปฏิบัติการ AT&T Bell ซึ่งได้นำเอาจุดเด่นของภาษา BCPL และภาษา B มาใช้และได้เพิ่มคุณลักษณะและชนิดข้อมูลอื่นเข้ามาด้วย เดิมภาษาซีถือว่าเป็นภาษาคอมพิวเตอร์ที่สำคัญในการพัฒนาโปรแกรมบนระบบปฏิบัติการยูนิกส์ (Unix) ซึ่งเป็นภาษาคอมพิวเตอร์ที่สามารถสร้างโปรแกรมประยุกต์ที่ทำงานได้รวดเร็วมาก เมื่อเทียบกับภาษาคอมพิวเตอร์อื่น ๆ


4) ภาษาระดับสูงมาก (very high level language)

ภาษาระดับสูงมาก บางครั้งเรียกว่า Fourth Gerneration Languages (4GLs) เป็นภาษาที่มีลักษณะสำคัญ คือ ผู้เขียนโปรแกรมไม่ต้องบอกวิธีการทำงานโดยละเอียด เพียงแต่ระบุคำสั่งให้ทำงานสั้น ๆ ให้ภาษาระดับสูงมากเข้าใจก็เพียงพอ ส่วนวิธีการคำนวณหรือการทำงานภาษาระดับสูงมากจะเป็นผู้จัดการเองทั้งสิ้น บางครั้งเรียกว่า non-procedure language

ตัวอย่างภาษาระดับสูงมาก ได้แก่ ภาษา SQL (Structured Query Langauge) ซึ่งนิยมใช้กันในซอร์ฟแวร์พัฒนาระบบจัดการฐานข้อมูล เช่น ORACLE เป็นต้น


5) ภาษาระดับธรรมชาติ (natural language)

ภาษาธรรมชาติจะเกี่ยวข้องกับระบบฐานความรู้ (knowledge based system ) และกฎอ้างอิง (inference rules) เพียงแต่ผู้ใช้ภาษาธรรมชาติป้อนคำถามผ่านเข้าไปในคอมพิวเตอร์ที่มีภาษาธรรมชาติก็จะทำการวิเคราะห์คำถามแล้วไปค้นหาคำตอบจากระบบฐานความรู้ที่เก็บไว้

ตัวอย่างของภาษาธรรมชาติ ได้แก่ ภาษา PROLOG และภาษา LISP (List Processing Language)


1.1.4 การทดสอบ และแก้ไขโปรแกรม (testing and editing program)

หลังจากที่เราเขียนโปรแกรมเสร็จแล้ว ขั้นตอนต่อไป คือ การทดสอบโปรแกรมที่เขียนขึ้นซึ่งอาจพบความผิดพลาดได้ 2 ชนิด ดังนี้

1) ความผิดพลาดทางไวยากรณ์ภาษา (syntax error) เป็นความผิดพลาดที่เกิดจากการเขียนคำสั่งของภาษาคอมพิวเตอร์ผิด ตัวอย่างเช่น คำสั่ง printf( ) ในภาษา C ต้องเขียนด้วยตัวอักษรตัวเล็ก แต่เขียนเป็น PRINTF( ) เป็นต้น โดยส่วนมากความผิดพลาดทางไวยากรณ์ จะถูกตรวจสอบพบเมื่อมีการแปลโปรแกรม (compile) ให้เป็นภาษาเครื่อง ซึ่งเราสามารถแก้ไขโดยการเขียนคำสั่งให้ถูกต้องตามไวยากรณ์ของภาษานั้น ๆ


2) ความผิดพลาดทางตรรกะ (logical error) เป็นความผิดพลาดที่เกิดจากการลำดับการทำงานผิดหรือป้อนสูตรคำนวณผิด ตัวอย่างเช่น ต้องการหาค่า X = X + Y แต่ป้อนสูตรเป็น X = X * Y อย่างนี้ เป็นต้น วิธีการตรวจหาความผิดพลาดแบบนี้ คือ ตรวจสอบการคำนวณผลลัพธ์ของโปรแกรมว่าตรงกับผลลัพธ์ที่คำนวณด้วยมือหรือเครื่องคิดเลขหรือไม่ ถ้าไม่ตรงกันแสดงว่าเกิดความผิดพลาดทางตรรกะขึ้น วิธีการแก้ไขก็คือ การแก้ไขสูตรให้ถูกต้อง หรือแก้ไขลำดับการทำงานให้ถูกต้อง

ดังนั้น จะเห็นได้ว่าผู้เขียนโปรแกรมจะต้องทำการทดสอบโปรแกรมและแก้ไขโปรแกรมให้สามารถทำงานได้ตามที่ต้องการ