วันศุกร์ที่ 7 ธันวาคม พ.ศ. 2555

3G

3G คืออะไร

    3G หมายถึงรุ่นที่ 3 ของเทคโนโลยีโทรศัพท์เคลื่อนที่ (เซลลูลาร์) รุ่นที่ 3 นี้ ตามชื่อที่เรียกตามหลังสองรุ่นก่อนหน้านี้

เทคโนโลยี 1 จี เริ่มต้นในช่วงต้นทศวรรษ 1980 ประมาณปี พ.ศ.2523 ด้วยเครือข่ายโทรศัพท์เซลลูลาร์แอมป์ (AMPS ย่อจาก Advanced Mobile Phone) ที่รองรับเสียงแบบอะนาล๊อกบนแถบความถี่ 800 เมกกะเฮิร์ซ เหมือนกับการกระจายเสียงวิทยุทั่วไป
เทคโนโลยี 2 จี เกิดขึ้นในทศวรรษ 1990 ประมาณปี พ.ศ.2533 ผู้ให้บริการโทรศัพท์มือถือใช้เทคโนโลยีรองรับเสียงในระบบดิจิตอล ซึ่งมีสองเทคโนโลยี 1) เทคโนโลยี ซีดีเอ็มเอ (CDMA ย่อจาก Code Division Multiple Access) ที่สามารถเรียกได้มากถึง 64 สายต่อช่องบนแถบความถี่ 800 เมกกะเฮิร์ซ มีการใช้ในสหรัฐและแบบที่ฮัท์ชใช้อยู่ในประเทศไทย 2) เทคโนโลยีจีเอสเอ็ม (GSM ย่อจาก Global System for Mobile) ซึ่งสามารถเรียกได้ 8 สายต่อช่องสัญญาณ บนแถบความถี่ 800 ถึง 1800 เมกกะเฮิร์ซ
The International Telecommunications Union (ITU) กำหนด มาตรฐานโทรศัพท์เคลื่อนที่3จี คือ IMT-2000 เพื่ออำนวยการเติบโต เพิ่มแถบความกว้างความถี่ และสนับสนุนโปรแกรมประยุกต์หลากหลาย ตัวอย่าง GSM สามารถไม่เพียงเสียง แต่รวมถึงข้อมูลสวิตช์วงจรที่อัตราความเร็วสูงถึง 14.4 Kbps แต่สนับสนุนการประยกต์มัลติมีเดีย 3จีต้องส่งมอบข้อมูลสวิตช์แพคเกตด้วยประสิทธิภาพดี ที่ความเร็วสูงกว่า
อย่างไรก็ตาม ในช่วงยกระดับจาก 2 จี เป็น 3 จี ผู้ให้บริการโทรศัพท์ได้ปฏิรูปเครือข่าย พร้อมกับแผน “ปฏิวัติ” เครือข่ายโทรศัพท์เคลื่อนที่ใหม่ ซึ่งได้นำไปสู่ก่อตั้ง 3GPP (3rd Generation Partnership Project) และ 3GPP2 (3rd Generation Partnership Project 2)
3rd Generation Partnership Project (3GPP) ก่อตั้งในปี 1998 เพื่อพัฒนาเครือข่าย 3 จี จาก GSM เทคโนโลยีที่พัฒนาคือ
      - General Packet Radio Service (GPRS) เสนอความเร็วสูงถึง 114 กิโลบิตต่อวินาที
      - Enhanced Data Rates for Global Evolution (EDGE) เสนอความเร็วสูงถึง 384 กิโลบิตต่อวินาที
      - UMTS Wideband CDMA (WCDMA) เสนอความเร็วรับข้อมูลสูงถึง 1.92 เมกกะบิตต่อวินาที
      - High Speed Downlink Packet Access (HSDPA) เพิ่มความเร็วรับข้อมูลสูงถึง 14 เมกกะบิตต่อวินาที
      - LTE Evolved UMTS Terrestrial Radio Access (E-UTRA) มีเป้าหมายที่ 100 เมกกะบิตต่อวินาที

  GPRS มีให้ในปี 2543 ตามด้วย EDGE ในปี 2546 เทคโนโลยีนี้บางครั้งเรียกว่า 2.5 จี เพราะไม่ได้เสนออัตราข้อมูลหลายเมกะบิต (multi-megabit) EDGE ได้รับการแทนที่โดย HSDPA (และหุ้นส่วนอัพลิงค์ HSUPA) ตามรายงานของ 3GPP กล่าวว่า HSDPA มี 166 เครือข่ายใน 75 ประเทศเมื่อสิ้นปี 2550 LTE E-UTRA ซึ่งเป็นขั้นไปของ GSM จะสามารถนำมาใช้ได้ในปี 2551
องค์กรที่สอง 3rd Generation Partnership Project 2 (3GPP2) ได้รับการก่อตั้งเพื่อช่วยผู้ให้บริการโทรศัพท์อเมริกาเหนือและเอเซียในการปรับแปลง CDMA2000 ไปสู่ 3 จี เทคโนโลยีที่ 3GPP2 พัฒนาคือ
      - One Times Radio Transmission Technology (1xRTT) เสนอความเร็วสูงถึง 144 กิโลบิตต่อวินาที
      - Evolution – Data Optimized (EV-DO) เพิ่มความเร็วรับข้อมูลสูงถึง 2.4 เมกกะบิตต่อวินาที
      - EV-DO Rev. A เพิ่มความเร็วรับข้อมูลสูงถึง 3.1 เมกกะบิตต่อวินาที และลดซ่อนเร้นอยู่ภายใน
      - EV-DO Rev. B สามารถใช้ 2 ถึง 5 ช่อง แต่ละการรับข้อมูลสูงถึง 4.9 เมกกะบิตต่อวินาที
      - Ultra Mobile Broadband (UMB) ตั้งเป้าหมายให้ถึง 288 เมกกะบิตต่อวินาทีในการรับข้อมูล

1xRTT มีให้ในปี 2545 ตามด้วย EV-DO Rev. 0 เชิงพาณิชย์ในปี 2547 อีกครั้ง 1xRTT ได้รับการอ้างเป็น “2.5จี” เพราะสิ่งนี้รองรับขั้นการปรับแปลงไปสู่ EV-DO มาตรฐาน EV-DO ได้รับการขยายสองเท่า ซึ่ง Revision A ออกมาใช้ในปี 2549 และกำลังถูกแทนที่โดยผลิตภัณฑ์ที่ใช้ Revision B ที่เพิ่มอัตราข้อมูลโยการส่งผ่านหลายช่อง UMB ที่เป็นเทคโนโลยีต่อไปของ 3GPP2 อาจจะไม่แพร่หลาย เพราะโอเปอร์เรเตอร์ CDMA กำลังวางแผนปฏิรูป LTE แทน
ตามความจริง LTE และ UMB มักจะได้รับการเรียกว่า เทคโนโลยี 4จี (fourth generation) เพราะเพิ่มความเร็วดาวน์ลิงค์ตามลำดับของขนาด ป้ายนี้คือ มาก่อนกำหนดเล็กน้อยเพราะ การสร้าง “4จี” ยังไม่เป็นมาตรฐาน ITU กำลังพิจารณาคู่แข่ง สำหรับการสรุปในมาตรฐาน 4G IMT-Advanced รวมถึง LTE, UMB และ WiMAX II เป้าหมายของ 4จี รวมถึง อัตราข้อมูลอย่างน้อย 100 Mbps การส่งผ่าน OFDMA การส่งมอบแพคเกตสวิตช์ของเสียง ข้อมูล และมัลติมีเดียต่อเนื่องบนฐาน IP

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

CPLD


การทำงานของ CPLD

CPLD เป็นคำย่อมาจาก Complex Programmable Logic Device หมายถึงเป็นชิพไอซีที่สามารถสร้างวงจรลอจิกทั้งแบบ Combination และ Sequential ได้โดยการออกแบบโดยใช้คอมพิวเตอร์ และโปรแกรมลงไปบนตัวชิพโดยใช้มาตรฐานการโปรแกรมแบบ JTAG Programmer
อุปกรณ์ที่มีลักษณะคล้ายกันนี้ได้แก่
GAL (GAL : Gate Array Logic) เป็นชิพที่ใช้โปรแกรมวงจรลอจิกได้เฉพาะวงจร Combination โปรแกรมโดยเครื่องโปรแกรมโดยเฉพาะ โปรแกรมได้เพียงครั้งเดียว หากผิดไม่สามารถแก้ไขได้ ขาอินพุท และเ อ้าท์พุทถูกกำหนดไว้ตายตัวไม่สามารถเปลี่ยนได้ มีจำนวนลอจิกเกต
น้อย ใช้แทนวงจรที่มีขนาดเล็กไม่ซับซ้อน
PAL (PAL : Programmable Array Logic) เป็นชิพที่ใช้โปแกรมสร้างวงจรลอจิกที่ซับซ้อนมากขึ้นกว่า GAL โดยมีทั้งตัว Logic gate ต่าง ๆ และ ตัว Flip – flopที่สามารถออกแบบวงจรที่ผสมระหว่าง Combination logic และ Sequential logic การโปรแกรมมีเครื่องมือที่สามารถออกแบบและโปรแกรมผ่านทางคอมพิวเตอร์ได้ ส่วนขา I/O ยังถูกบังคับไม่สามารถใช้สลับกันได้ แต่การโปรแกรมไม่สามารถทำซ้ำได้มากนัก
ส่วน CPLD เป็นชิพที่ใช้ออกแบบวงจรขนาดใหญ่ที่สามารถออกแบบโดยเขียนเป็นโปรแกรมภาษา HDL ได้ ใช้เทคโนโลยีการเก็บรักษาวงจรแบบ Flash ที่สามารถคงสถานะของวงจรที่ฝังอยู่ประมาณ 20 – 40 ปี สามารถโปรแกรมซ้ำได้ประมาณมากกว่า 10000 ครั้ง ขา I/O เป็นแบบเอนกประสงค์โดยสามารถกำหนดให้ เป็นอินพุท และเอ้าพุทแบบต่าง ๆ ได้ มีจำนวนลอจิกเกตที่สามารถกำหนดให้เป็นเกต อะไรก็ได้ เริ่มตั้งแต่ 800 ตัวและ Flip-flop 36 ตัว ไปจนถึง เป็นแสน ๆ เกต
และ Flip-flop หลายพันตัว ที่สามารถรองรับการออกแบบวงจรขนาดใหญ่ ๆ และซับซ้อนมาก ๆ ได้
FPGA (FPGA : Filled Programmable Gate Array) เป็นชิพที่ใช้ออกแบบวงจรที่มีขนาดใหญ่มาก ๆ และมีความซับซ้อนของระบบสูงมากเท่าที่มีอยู่ปัจจุบัน ที่ใช้ในการพัฒนาออกแบบหน่วยประมวลผล (CPU) ขนาดใหญ่ ๆ ได้ โดยมีจำนวนลอจิกเกตและ Flip-flop นับล้าน ๆ ตัว มีจำนวนขา I/O ตั้งแต่หลายสิบไปจนถึงหลายร้อยขา การโปรแกรมและการรักษาวงจรใช้เทคโนโลยีแบบ Volantine เช่นเดียวกับโครงสร้างหน่วยความจำ RAM คือต้องโปรแกรมแล้วต้องมีไฟเลี้ยงตัวชิพอยู่ตลอดเวลา หากไฟดับวงจรจะหายไปทันที ดังนั้นในการออกใช้งาน จะต้องมี Flash memory สำหรับเก็บค่าสถานะของวงจรต่อพ่วงอยู่เสมอ โดยขณะที่โปรแกรม เราต้องโปรแกรมค่า Config. ลงใน Flash ด้วย การทำงานคือ เมื่อเปิดไฟเลี้ยงตัวชิพ ข้อมูล Config.วงจรจาก Flash จะถูกโหลดมาสร้างเป็นวงจรตามที่โปรแกรมไว้และทำงานได้ทันที ด้วยเทคโนโลยีนี้ FPGA จึงสามารถใช้งานได้เหมือนกันกับ
2
CPLD และที่สำคัญ CPLD และ FPGA สามารถใช้โปรแกรมที่เป็นเครื่องมือในการพัฒนาออกแบบวงจรตัวเดียวกัน
ตัวอย่าง รายละเอียดคุณสมบัติของ CPLD ตระกูล XC9500 ของ XILINX
3
จากตัวอย่างคุณสมบัติ และตารางทั้งสอง ของ CPLD ส่วนที่เป็นสาระสำคัญที่ควรรู้เพื่อนำไปเป็นข้อมูลเบื้องต้นในการออกแบบได้แก่
1. CPLD สามารถใช้งานความถี่สูงถึง 125 MHz ใช้งานที่แรงเคลื่อน 5 V และ 3.3 V
2. ขา I/O สามารถขับกระแสได้ ถึง 24 mA ทั้ง Sink และ Source
3. CPLD แต่ละเบอร์สามาถเลือก จำนวน I/O ตาม Package ได้ ตามตารางใน Table 2
4. เราสามารถเลือกขนาดของ CPLD ได้ตามตารางใน Table 1 ซึ่งแต่ละเบอร์จะมีจำนวนลอจิกเกตใช้งาน (Usable Gates) และจำนวน Register หรือจำนวน Flip-flop ที่แตกต่างกัน
5. การเชื่อมต่อการใช้งานด้านอินพุท กับเอ้าพุท ที่มีขนาดแรงเคลื่อน 5 V เท่ากันตามรูป (a) และที่มีแรงเคลื่อน 3.3 V ตามรูป (b) จะต้องต่อไฟเลี้ยงขา VCCINT และ VCCIO ที่ค่าแตกต่างกัน
4
โครงสร้างทางสถาปัตยกรรมของ CPLD
ในชิพ CPLD ตระกูล XC9500 ของ XILINX ทุกตัวประกอบด้วยวงจรที่เป็นส่วนการทำงาน ได้แก่ Function Blocks (FBs) และ I/O Blocks (IOBs) ซึ่งทั้งสองส่วนจะถูกเชื่อมต่อกันภายในโดยการทำงานในส่วนของวงจรที่เรียกว่า Fast CONNECT switch matrix ซึ่งวงจรส่วนนี้เป็นลิขสิทธิ์Fเฉพาะของผู้ผลิต วงจรส่วนนี้จะทำงานโดยข้อมูลโปรแกรมที่มาจากส่วนวงจร In-System Programming Controller วงจรส่วน Fast CONNECT switch matrix จะทำงานร่วมกับ Function Blocks ทำให้เกิดวงจรลอจิกตามที่ได้ออกแบบและโปรแกรมเข้าไว้ ในชิพ CPLD แต่ละตัวจะมีFunction Block หลายชุด โดยแต่ละชุดจะมีสายสัญญาณการโปรแกรมลอจิกจาก Fast CONNECT switch matrix เป็นอินพุทจำนวน 36 เส้น และเอ้าพุทจำนวน 18 เส้น ในแต่ละ Function Block
ภายในจะประกอบด้วยวงจรส่วนที่เรียกว่า Macrocells จำนวน 18 ชุด ภายในวงจร Macrocell จะประกอบด้วยวงจรรีจิสเตอร์ หรือ ฟลิบ-ฟล็อบ ที่สามารถประกอบกันเป็นวงจรรีจิสเตอร์ หรือ เค้าเตอร์ได้ ส่วนวงจรในส่วนที่เรียกว่า I/O Blocks จะทำหน้าที่เป็นตัวเชื่อมต่อกับขา I/O ของตัวชิพโดย
สามารถโปรแกรมให้แต่ละขาเป็น Input / Output หรือ Bi-direction และสามารถกำหนด Slew rate
ได้ด้วย
รูปที่ 1 แสดงโครงสร้างของชิพ CPLD ตระกูล XC9500 ของ XILINX
5
โครงสร้างของ Function Block
แต่ละ Function Block ประกอบด้วย Macrocell จำนวน 18 ชุดโดยแต่ละชุดจะทำงานเป็นอิสระไม่ขึ้นต่อกัน วงจรส่วนนี้สามารถจะโปรแแกรมให้สร้างได้ทั้ง Combination Logic หรือ Sequential Logic วงจร Programmable AND-Array ทำหน้าที่นำเอาสายสัญญาณที่มาจาก Fast CONNECT switch matrix มาทำให้เป็นสัญญาณ True และ complement รวมเป็น 72 เส้นสัญญาณ
ส่งไปยังวงจร Product Term Allocators และต่อไปยัง Macrocell ทั้ง 18 ตัว ตามรูปที่ 2
รูปที่ 2 แสดงโครงสร้างของ Function Block
โครงสร้างของ Macrocell
ในแต่ละ Macrocell ที่อยู่ภายใน Function Block จะประกอบด้วยส่วนการทำงานที่เรียกว่า Product Term จำนวน 5 ชุดที่ต่อสัญญาณมาจาก AND-Array สำหรับใช้เป็นข้อมูลลอจิกปฐมภูมิ
(ได้แก่ OR และ XOR Gates) ที่จะนำมาสร้างเป็นวงจรลอจิกประเภท Combination หรือเป็นวงจรควบคุมทางของวงจร Register รวมทั้งสัญญาณ Clock, Set / Reset และสัญญาณ Enable ต่าง ๆ
ในส่วนของ Macrocell register โปรแกรมสามารถจะกำหนดให้เป็นฟลิบ-ฟล็อบแบบต่าง ๆ ได้ เช่น
D-Flip-flop, T-Flip-flop หรืออาจกำหนดให้เป็นตัวผ่าน กรณีที่เป็นวงจรประเภท Combination ใน
การกำหนดสัญญาณ Set/Reset ให้ฟลิบ-ฟล็อบ สามารถกำหนดให้เป็นได้ทั้งแบบ Synchronous และ
6
Asynchronous operation และเป็นได้ทั้ง Individual และ Global operation และการทำงานขณะเริ่มเปิดไฟเข้าเลี้ยงวงจร ฟลิบ-ฟล็อบ จะถูกกำหนดให้ผู้ใช้พร้อมจะโหลดข้อมูลเข้าได้ (หากไม่ได้กำหนดเป็นอย่างอื่น
รูปที่ 3 แสดงโครงสร้างภายในของ Macrocell ของ CPLD ตระกูล XC 9500
รูปที่ 4 แสดงสายสัญญาณ Global
ที่ต่อตรงเข้าไปยัง Macrocell
7
โครงสร้างของ Fast CONNECT Switch Matrix
วงจรของ Fast CONNECT Switch Matrix จะมีสายสัญญาณเชื่อมต่อไปยัง Function Block (FB) โดยใน Function Block หนึ่ง ๆ จะมีสายจาก Fast CONNECT Switch Matrix จำนวน 36 เส้น วงจร Fast CONNECT Switch Matrix จะมีลักษณะเป็นวงจร Wired-AND การทำงานของวงจรจะเป็นตัวป้อนกลับเข้าไปยังวงจรในส่วน Function Block เพื่อสร้างเป็นวงจรลอจิกเมื่อถูกโปรแกรม ตามที่ได้ออกแบบวงจรไว้
รูปที่ 5 แสดงการทำงานในส่วนของ Fast CONNECT Switch Matrix
โครงสร้างของวงจรในส่วนของ I/O Block
I/O Block (IOB) เป็นวงจรด่านสุดท้ายที่ต่อเชื่อมจาก Macrocell ไปยังขา I/O ของตัวชิพ วงจรในส่วนของ I/O Block จะประกอบด้วยส่วนสำคัญ 5 ส่วน คือ Input Buffer ทำหน้าที่รับและปรับสภาพสัญญาณลอจิกที่ป้อนเข้าที่ขา I/O ของ CPLD Output Buffer ทำหน้าที่ควบคุมการส่งค่า
8
สัญญาณลอจิกออกทางขา I/O ของ CPLD วงจรส่วนนี้สามารถควบคุมค่า Slew Rate และ ค่า Global Tri-state (GTS) และ Output Enable (OE)ที่ต่อสัญญาณควบคุมมาจาก Product Term ได้โดยตรง
ที่ขา I/O ยังมีวงจรควบคุม Pull-up Resistor ซึ่งต่ออยู่กับ VCCIO ซึ่งมีหน้าที่กำหนดให้ขา I/O เกิด
Pull-up ให้เป็นลอจิก High เพื่อป้องกันสัญญาณรบกวนขณะที่มีการโปรแกรมตัวชิพ และวงจร User-
Programmable Ground มีไว้เพื่อให้ผู้ใช้งานโปรแกรมให้ลงกราวด์ กรณีที่ขาI/Oไม่ได้ถูกใช้งาน
รูปที่ 6 รูปแสดงวงจรในส่วนของ I/O Block และ Global Tri-State
9
การโปรแกรมตัวชิพ CPLD
ชิพ CPLD ตระกูล XC9500 สามารถทำการโปรแกรมได้ในขณะมีไฟเลี้ยงวงจร และวงจรทำงานอยู่ได้ ซึ่งเรียกว่า In – System Programming โดยใช้มาตรฐาน Protocol JATAG แบบ 4 ขั้ว
เป็นไปตามมาตรฐาน IEEE 1149.1 Boundary-Scan (JTAG) โดยสามาถโปรแกรมซ้ำได้มากกว่า 10000 ครั้ง
ลำดับชั้นความปลอดภัยของการออกแบบ
ชิพ CPLD ตระกูล XC9500 สามารถป้องกันข้อมูลโปรแกรมไว้ได้อย่างสมบูรณ์ ทั้งอ่านและเขียน ซึ่งผู้ใช้สามารถกำหนดได้โดยการเซ็ตค่า read security bits และ write security bits ตาม
ตารางในรูปที่ 6 ผใช้สามรถกำหนดได้โดยขณะที่อยู่ใน JTAG Program ู้
รูปที่ 6 แสดงระดับการกำหนดระดับป้องกันข้อมูลโปรแกรมทั้งอ่านและเขียน
คุณสมบัติขณะเริ่มทำงาน ( Power- Up Characteristics )
คุณสมบัติขณะเริ่มทำงานของ CPLD ตระกูล XC9500 ที่ใช้แรงเคลื่อน 5 V เมื่อเริ่มจ่ายไฟเข้าเลี้ยงตัวชิพ CPLD วงจรภายในจะถูกควบคุมให้อยู่ในภาวะสงบจนแรงเคลื่อนมีระดับถึงระดับความปลอดภัย(Safe Level Voltage) ประมาณ 3.8 V ในระดับนี้ ค่า Pull-Up Resister จะถูกยกเลิก และ
รีจิสเตอร์ทุกตัวในวงจรจะถูกกำหนดค่าที่ตั้งไว้ตามที่โปรแกรมไว้(Initialized) เวลาในการใช้ในการเริ่มทำงานปรกติหลังจากเริ่มจ่ายไฟเลี้ยงจะใช้เวลาประมาณ 100 - 300 ไมโครวินาที ทั้งนี้ขึ้นอยู่กับขนาดหรือ เบอร์ชิพ โดยเริ่มตั้งแต่ XC9536 ไปจนถึง XC95288
10
รูปที่ 7 กราฟแสดงคุณสมบัติภาวะเริ่มทำงาน ( Power- Up Characteristics )
และภาวะการหยุดทำงาน
เครื่องมือที่ใช้ในการพัฒนาและออกแบบวงจร ( Development System Support)
ในการพัฒนาและออกแบบวงจรลอจิกที่จะใช้โปรแกรมลงตัวชิพ CPLD ตระกูล XC9500
เราใช้โปรแกรม XILINX Foundation และ XILINX Web Pack ซึ่งจะรองรับการออกแบบได้ทั้งการเขียนเป็นวงจร Schematic และการใช้โปรแกรมภาษา ABEL-HDL และ VHDL นอกนั้นยังรองรับการใช้ภาษา Verilog และการเขียนเป็น State Diagram อีกด้วย สำหรับในเอกสารเล่มนี้จะเน้นการใช้ภาษา ABEL-HDL เป็นหลักเนื่องจากเป็นภาษาที่มีโครงสร้างคล้ายกันกับภาษาปาสคาล และภาษาซี
ตัวอย่าง ภาษาที่ใช้ในการเขียนโปรแกรมเพื่อออกแบบวงจรลอจิก

ภาษา VHDL


ภาษา VHDL 

               ความซับซ้อนและขนาดของระบบดิจิตอลในปัจจุบันได้เพิ่มมากขึ้นทุกขณะ ส่งผลให้มีการนำคอมพิวเตอร์เพื่อช่วยใน การออกแบบหรือ 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 เช่นกัน