WWW.THAI ELEC CLUB.COM








Author Topic: FPGA คือ อะไร  (Read 1078 times)

0 Members and 1 Guest are viewing this topic.

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 696
    • View Profile
    • Email
FPGA คือ อะไร
« on: 21/04/2016 [15:08:07] »
Advertisement




FPGA และ VHDL คืออะไร


FPGA ย่อมาจาก Field Programmable Gate Array เป็นวงจรรวมทางดิจิตอลที่คุณสามารถโปรแกรมวงจรหรือฟังค์ชันการทำงานลงไปภายในตัวชิฟได้เอง เหมาะสำหรับการออกแบบวงจรและการออกแบบชิฟต้นแบบของวงจรทางดิจิตอล ข้อดีคือ ง เปรียบเทียบกับการออกแบบวงจรดิจิตอลโดยการใช้ IC Gates หรือใช้ IC TTL หลายๆตัวบนแผ่น PCB เราสามารถออกแบบวงจร การเชื่อมต่อและคุณสมบัติต่างๆด้วย Software ได้ จากนั้นเมื่อทดลอง Simulate ได้ผลน่าพอใจแล้วจึงโปรแกรมลงบนชิฟ FPGA จะเห็นว่าการแก้ไขทำได้ง่าย เพียงแก้บน Software (เสมือนอุปกรณ์ดิจิตอลของคุณอยู่ในรูปของ Software แก้ไขง่ายและแลกเปลี่ยนกันใช้ได้) และทำการโปรแกรมใหม่ (โปรแกรมซ้ำได้) ลดความยุ่งยากจากการเปลี่ยนอุปกรณ์ใหม่ การนำ IC จำนวนมากมาต่อกัน การออกแบบ PCB ใหม่ และความผิดพลาดที่อาจเกิดขึ้นได้จากลายวงจร ลดการเกิดสัญญาณรบกวนจากการออกแบบ PCB และการใช้อุปกรณ์มากๆได้ ง เปรียบเทียบกับการออกแบบโดย ASIC การออกแบบวงจรรวม (IC) ต้นแบบโดย ASIC พัฒนาได้ยาก เนื่องจากการแก้ไขวงจรแต่ละครั้งหมายถึงการเริ่มต้นขบวนการใหม่ทั้งหมด เช่น การออกแบบ Layout และการทำบน Silicon wafer เป็นต้น รวมถึงทรัพยากรทั้ง Hardware และ Software ในการออกแบบมีราคาแพง ดังนั้น การนำ FPGA ไปช่วยในการออกแบบทำให้การพัฒนาและการแก้ไขทำได้สะดวกและประหยัดขึ้น

การออกแบบทำได้โดยเขียนวงจร Schematics ประกอบกับการเขียนภาษาอธิบายลักษณะพฤติกรรมหรือ Hardware Description Language (ฟังเข้าใจยากครับ ที่จริงก็คือเขียนวงจรกับเขียนโปรแกรมประกอบครับ) จากนั้นทำการสังเคราะห์และโปรแกรมลงบนชิพ FPGA ด้วย Software เช่น MAX+PLUS II ผู้ใช้สามารถออกแบบและแก้ไขวงจรได้ง่าย จะเห็นว่า เทคโนโลยี FPGA จะช่วยให้นักศึกษาและผู้ที่สนใจสามารถออกแบบ IC ของตนเองได้ นอกจากนี้เมื่อนักออกแบบสร้าง IC ของตนเองขึ้นมาแล้ว ยังสามารถป้องกันการลอกเลียนแบบได้อีกด้วย

VHDL ย่อมาจาก VHSIC Hardware Description Language (VHSIC : Very High Speed Integrated Circuit) เป็นภาษาโปรแกรมระดับสูง(High Level Language) ที่ใช้สำหรับการออกแบบฮาร์ดแวร์ในระบบดิจิตอล ตัวของภาษาสามารถบรรยายพฤติกรรมการทำงานในรูปของลำดับชั้น (Hierarchy) และสามารถเขียนได้หลายรูปแบบ ภาษา VHDL เป็นมาตาฐาน IEEE ซึ่งหมายความว่าเป็นภาษามาตรฐานที่สามารถใช้กับผู้ผลิตชิฟ CPLD/FPGA ได้ทุกราย


นอกจาก VHDL แล้วยังมีภาษาอื่นอีกหรือไม่

ที่จริงและยังมีภาษาที่สามารถใช้ในการออกแบบ FPGA อีกหลายภาษา ที่น่าสนใจคือ AHDL ของบริษัท Altera Corporation ซึ่งจะทำให้การใช้ชิพ CPLD/FPGA ของ Altera Corporation มีประสิทธิภาพมากขึ้น นอกจากนี้ยังมีภาษา Verilog จากบริษัท Cardence ซึ่งเป็นยักษ์ใหญ่ในวงการ IC Design

 
โปรแกรม MAX+PLUS II คืออะไร หาได้ที่ไหน

โปรแกรม MAX+PLUS II เป็นโปรแกรมของบริษัท Altera Corporation ซึ่งใช้สำหรับการออกแบบ การสังเคราะห์ และการโปรแกรมลงบนชิฟ นั่นคือผู้ออกแบบสามารถทำทุกขั้นตอนด้วยโปรแกรม MAX+PLUS II โปรแกรมเดียว ผู้ที่สนใจสามารถดาวโหลดได้จาก www.altera.com ขนาดประมาณ 50 MBytes และในชุดพัฒนา/ชุดทดลอง CPLD/FPGA ของบริษัท ASTRON LOGIC R&D ทุกชุดจะแนบโปรแกรม MAX+PLUS II Baseline ให้ไปด้วย

 
ข้อดีของ CPLD/FPGA มีอะไรบ้าง

การพัฒนาต้นแบบและการแก้ไขวงจรภายหลังทำได้ง่ายไม่ยุ่งยาก เพียงแก้ไขวงจรที่ได้ออกแบบในโปรแกรม MAX+PLUS II และทำการโปรแกรมใหม่บนชิฟ ก็จะได้ชิฟตามคุณสมบัติใหม่ที่ได้ออกแบบ และสามารถโปรแกรมซ้ำได้หลายครั้ง

 
CPLD และ FPGA ต่างกันอย่างไร

CPLD ย่อมาจาก Complex Programmable Logic Device ซึ่งเทคโนโลยีที่ใช้จะเหมือนกับ EEPROM ทำให้มีความจุของเกทต่ำ โดยทั่วไปจะน้อยกว่า 20,000 เกท แต่ข้อดีของ EEPROM Based FPGA คือสามารถเก็บข้อมูลที่โปรแกรมลงไปได้โดยไม่จำเป็นต้องมีไฟเลี้ยง และในการโปรแกรมจะใช้ทรานซิสเตอร์ 1 ตัวต่อ 1 บิท ซึ่งการโปรแกรมสามารถทำได้ประมาณ 10,000 ครั้ง
FPGA ย่อมาจาก Field Programmable Gate Array ใช้เทคโนโลยีในการโปรแกรมเหมือนกับ SRAM (Static RAM) ทำให้สามารถโปรแกรมซ้ำได้โดยไม่จำกัดจำนวนครั้ง นอกจากนี้ยังมีความจุของเกทในระดับปานกลางถึงสูงมาก (ประมาณ 10,000 – 1,000,000 เกท) ซึ่งข้อดีของ SRAM Based FPGA คือใช้เวลาในการโปรแกรมน้อย (ระดับ nsec) การโปรแกรมทำได้ง่ายเทียบได้กับการเขียน SRAM ทั่วไป และเหมาะสำหรับการออกแบบวงจรที่มีความสลับซับซ้อน ส่วนข้อเสียคือไม่สามารถเก็บโปรแกรมในภาวะที่ไม่มีไฟเลี้ยงได้ ดังนั้น FPGA ชนิดนี้จึงมักใช้ควบคู่กับ ROM เพื่อเก็บโปรแกรมและทำการโหลดโปรแกรมลงในตัวชิพในขณะที่เริ่มต้นใช้งาน
ข้อสังเกตประการหนึ่งคือ CPLD จะมีความจุต่ำกว่า FPGA รวมถึงมีคุณสมบัติพิเศษอื่นๆน้อยกว่า เช่น ไม่มี RAM เป็นต้น ดังนั้นในการใช้งานออกแบบวงจรที่ซับซ้อนจึงแนะนำว่าควรใช้ FPGA จะเหมาะสมกว่าและควรศึกษาข้อมูลของ FPGA แต่ละตระกูลด้วยเนื่องจากมักจะมีคุณสมบัติพิเศษต่างกัน ข้อมูลความแตกต่างของ CPLD และ FPGA เพิ่มเติมสามารถศึกษาจากบทความของบริษัทฯที่ www.astronlogic.com

ชุดทดลอง/ชุดพัฒนา CPLD ของ ASTRON LOGIC R&D ได้แก่
o WIZARD PLD-A01 / WIZARD PLD-A02 / WIZARD PLD-A03
o EAZY PLD-DEV01 / EAZY PLD-DEV02 / EAZY PLD-LAB01
ชุดทดลอง/ชุดพัฒนา FPGA ของ ASTRON LOGIC R&D ได้แก่
o WIZARD FLEX-A01 / WIZARD FLEX-D01
o POWER ACEX1K-10 / POWER ACEX1K-30 / POWER ACEX1K-50


จะทำอย่างไรในเมื่อ FPGA ไม่สามารถแบ็กอัพวงจรที่ออกแบบได้
ทางบริษัท Altera Corporation ได้มีอุปกรณ์ Configurable device หรือก็คืออุปกรณ์ที่นักออกแบบสามารถแบ็กอัพวงจรที่ได้ออกแบบไว้ได้โดยไม่ต้องมีไฟเลี้ยง โดยปกติจะวางอุปกรณ์ Configurable device และ FPGA อยู่บนแผ่น PCB เดียวกัน จากนั้นเมื่อนำระบบที่ได้ออกแบบไปใช้งานที่อื่น ระบบจะเริ่มต้นด้วยการให้ตัว Configurable device จะส่งวงจรที่แบ็กอัพไว้ไปให้ตัว FPGA อีกทีซึ่งเปรียบเสมือนตัว FPGA รับการโปรแกรมจาก Computer นั่นเอง ระบบก็จะทำงานตามวงจรที่ได้ออกแบบไว้ อุปกรณ์ Configurable device มี 2 ประเภทหลักคือแบบ โปรแกรมได้ครั้งเดียว (One time programming : OTP) และโปรแกรมได้หลายครั้ง

Configurable device แบบโปรแกรมได้ครั้งเดียว เช่น EPC1213, EPC1441 และ EPC1 ของ Altera โดยการโปรแกรมจะมีชุดโปรแกรมต่างหาก
Configurable device แบบโปรแกรมได้หลายครั้ง เช่น EPC2, EPC4, EPC8 และ EPC16 ของ Altera การโปรแกรมลงบน Configurable device ประเภทนี้จะคล้ายคลึงกับการโปรแกรมลงบนตัว FPGA นั่นเอง ชุดพัฒนา POWER ACEX1K Series ของ ASTRON LOGIC R&D ซึ่งมีให้เลือก 3 รุ่นนั้น ได้ออกแบบให้สามารถใส่ Configurable device (Socket PLCC20) ได้ทั้ง 2 แบบ ได้เพื่ออำนวยความสะดวกให้แก่ผู้ใช้งาน โดยหาก Configurable device เป็นแบบโปรแกรมได้หลายครั้ง (เช่น EPC2) จะสามารถโปรแกรมด้วยชุดพัฒนา POWER ACEX1K Series ผ่าน JTAG Connector ได้เลย




สามารถใช้ CPLD/FPGA ออกแบบวงจรอนาลอกได้หรือเปล่า


ไม่ได้ครับ FPGA ใช้ได้เฉพาะการออกแบบวงจรทางดิจิตอลเท่านั้น อย่างไรก็ตามในระบบส่วนใหญ่ ส่วนประกอบสำคัญหรือก็คือส่วนที่เป็น “ส่วนตัดสินใจ” มักจะเป็นส่วนของดิจิตอล ดังนั้นจะเห็นว่าเราสามารถประยุกต์ใช้เทคโนโลยี CPLD/FPGA ได้ในเกือบทุกๆระบบ

 
VHDL มีประโยชน์อย่างไรในการออกแบบวงจร

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

 
ยากไหมที่จะเริ่มต้นในการศึกษา VHDL

ไม่ยากเลยครับ สำหรับคนที่คิดจะเริ่มต้นใช้ VHDL มีส่วนคล้ายกับภาษา Pascal ที่ทุกคนรู้จักดี คุณก็อาจจะเริ่มจากทำตามการทดลองใน หนังสือ "เปิดโลก FPGA กับ Wizard PLD-A01" ประกอบกับชุดทดลอง WIZARD PLD-A01 หรือ WIZARD FLEX-A01 จะทำให้คุณเริ่มมองภาพออกในการที่จะไปประยุกต์ใช้งาน VHDL เพื่อออกแบบวงจรดิจิตอล นอกจากนี้ยังสามารถ Download Tutorial เพิ่มเติมได้จาก www.astronlogic.com ข้อดีอีกอย่างของ VHDL คือผู้ที่จะออกแบบวงจรทางดิจิตอลด้วยภาษา VHDL ไม่จำเป็นต้องมีความรู้ทางด้านฮาร์ดแวร์ แค่รู้ลักษณะโครงสร้างของวงจรที่ต้องการ แค่นั้นก็สามารถใช้ VHDL ออกแบบวงจรได้แล้ว

 
IP Core คืออะไร แลกกันใช้ได้ด้วยหรือ
IP Core คือ โมดูลที่เราออกแบบให้ทำงานอย่างใดอย่างหนึ่ง ซึ่งเมื่อ Compile เสร็จแล้วจะเรียกว่า IP Core จะเปรียบเสมือน Library ในการเขียนโปรแกรมทั่วไปนั่นเอง จะเห็นว่าเราสามารถแลกเปลี่ยน Library กันใช้ได้ เช่น ในภาษา C มีการ include “xxx.h” ที่จริงก็คือการเรียก Library “xxx” เราไม่ต้องมาเขียนฟังก์ชั่นที่อยู่ใน “xxx” เอง เนื่องจากอาจมีผู้อื่นสร้างมาให้แล้ว เช่น stdio.h เป็นต้น (คำอธิบายเปรียบเทียบกับการเขียนภาษา C เป็นการอธิบายอย่างคร่าวๆ)

IP Core ก็เช่นกัน เช่น หากเราออกแบบ IP Core เพื่อแปลง BCD ไปเป็น 7-Segment และเราสามารถแจกจ่าย IP Core ดังกล่าวให้ผู้อื่นเพื่อเอาไปใช้ได้ เราสามารถสรุปได้ว่าการสร้าง IP Core คือการสร้างอุปกรณ์ย่อยตัวหนึ่ง ซึ่งเราสามารถแลกเปลี่ยนกับเพื่อนเราได้แทนที่จะต้องมาเสียเวลาออกแบบเอง เหมือนว่าเรามีอุปกรณ์นั่นในรูปของ Software นั่นเอง จะโปรแกรมลง CPLD/FPGA ไหนก็ได้ ประหยัด สะดวก ยืดหยุ่น ต่อการพัฒนา ปัจจุบันบน Internet ได้มีการแลกเปลี่ยน IP Core กันอย่างแพร่หลายและทาง ASTRON LOGIC R&D ได้มีการสร้าง IP Core ฟรีแจกจ่ายให้แก่ผู้ที่สนใจทั่วไป

อยากให้นักออกแบบทุกท่านมีส่วนร่วมโดยช่วยกันนำ IP Core ของคุณมาแลกเปลี่ยนกันใช้เพื่อประโยชน์ต่อวงการออกแบบ FPGA บ้านเราครับ ร่วมด้วยช่วยกันที่ support@astronlogic.com เพื่อแจกจ่าย IP Core ของท่านบน www.astronlogic.com


เค้าวัดความจุของ CPLD/FPGA กันอย่างไร
จากอดีตเราใช้ “gates” แทนความจุที่ใช้ใน PLD ต่อมาเมื่อมีการเพิ่มคุณสมบัติพิเศษ ฟังก์ชั่นพิเศษต่างๆ เช่น Embedded memory และ Carry chains แต่ผู้ขายบอกจำนวน “gates” เพิ่มขึ้นตามฟังก์ชั่นที่เพิ่มเข้าไป การระบุเช่นนี้ไม่ถูกต้องนัก เนื่องจากการใช้ฟังก์ชั่นกลุ่มนี้มีการใช้งานค่อนข้างหลากหลาย ขึ้นอยู่กับผู้ใช้ว่าจะใช้หรือไม่ใช้ก็ได้ ในกรณีที่ไม่ใช้ไม่ได้หมายความว่าจะสามารถนำความจุส่วนนั้นไปใช้งานอื่นได้ ดังนั้นการวัดความจุโดยรวมส่วนที่เป็นฟังก์ชั่นเพิ่มเติ่มเข้าไป ทำให้ผู้ผลิตสามารถบอกความจุที่มากกว่าจำนวนเกตจริงๆที่ต่อกับ Embedded memory ของอุปกรณ์ได้
ที่ผ่านมาทาง Altera Corporation วัดความจุของ CPLD และ FPGA โดยใช้ “gates” มาตลอด แต่ไม่ได้เป็นข้อตกลงมาตรฐานกับบริษัทผู้ผลิตรายอื่น ทำให้ผู้ใช้งานไม่สามารถเปรียบเทียบให้แน่ชัดได้ เนื่องจาก “gates” มีหลายชนิด ดังนั้นทาง Altera Corporation ได้กำหนดหน่วยวัดขึ้นมาใหม่เป็น Logic Elements (LEs) ซึ่งจะสามารถวัดความจุได้ถูกต้องกว่า โดยเริ่มมีการเปลี่ยนหน่วยการวัดความจุของ FPGA จาก Logic Gates (LGs) มาเป็น Logic Elements (LEs) ตั้งแต่เริ่มออก FPGA ตระกูล APEX ซึ่งเป็น FPGA ที่มีความจุในหน่วย 1000 LEs เช่น EP2A15 มีความจุ 15 x 1000 LEs หรือคือ 16640 LEs เป็นต้น และมีผลย้อนหลังไปถึง FPGA ที่ไม่สามารถคำนวณจำนวน LEs จาก Part number ได้เช่น ตระกูล FLEX10K และ ACEX ด้วย โดยเราสามารถดูข้อมูลความจุ LEs ได้จาก Datasheet (เนื่องจากไม่สามารถคำนวณได้จาก Part number) เช่น ACEX EP1K50TC144-3 มีความจุ 2,880 LEs (50,000 เกต)เป็นต้น ส่วนใน CPLD จะเรียกว่า Macrocells เช่น EPM7128SLC84-15 มี 128 Macrocells (2,500 เกต)

เวลาที่เราออกแบบวงจรดิจิตอลด้วยโปนแกรม MAX+PLUS II เราสามารถดูรายงานจำนวน Logic Elements ที่ถูกใช้ไปได้ โดยดูที่หัวข้อ Total Logic Cells Required ใน Report file จากตัวอย่างมีการใช้ Logic Elements ไป 318 LEs จากทั้งหมด 576 LEs (จากตัวอย่างเป็นการสร้างนาฬิกาด้วยชุดทดลอง WIZARD FLEX-A01 ซึ่งใช้ FPGA ตระกูล FLEX10K เบอร์ EPF10K10LC84-4 มีความจุ 576 LEs)



เวลาเลือกใช้งาน CPLD/FPGA ตระกูลไหน เบอร์อะไร ควรจะพิจารณาอะไรบ้าง

จากที่ได้กล่าวมาว่าการวัดความจุของ FPGA ควรใช้จำนวน Logic Elements (LEs) มากกว่าจำนวนเกต (เช่น 1 LEs = 4 LUT) เนื่องจากจำนวน LEs เป็นหน่วยที่วัดความจุจริงๆ ยังมีปัจจัยอื่นๆอีกที่นักออกแบบควรพิจารณาการเลือกใช้งาน ข้อแนะนำในการพิจารณาคือ
ปัจจัยในการพิจารณา
   
คำอธิบาย
จำนวน Logic Elements    ความจุของ FPGA ดังที่กล่าวมาข้างต้น
RAM Bits ที่มีให้ใช้ได้    ปริมาณ RAM ที่มีให้จะทำให้การใช้งานของนักออกแบบสามารถทำได้ยืดหยุ่นและมีประสิทธิภาพมากขึ้น ซึ่ง FPGA จะมีให้ใช้งานในขณะที่ CPLD จะไม่มี
จำนวน User I/O ที่มีให้ใช้    FPGA ที่มีจำนวน User I/O มากส่วนใหญ่จะอยู่ในรูปแบบ SMT ซึ่งการออกแบบต้องทำอย่างระมัดระวัง
ความถี่สูงสุด    ควรเลือกอย่างเหมาะสมเนื่องจากที่ความจุ LEs เท่าๆกัน ความถี่ที่ต่างกันเล็กน้อยอาจทำให้ราคาของตัว FPGA ต่างกันมาก
Digital I/O Voltage    ข้อนี้ควรคำนึงถึงด้วยเนื่องจากจะมีผลต่อการเลือกใช้อุปกรณ์ที่มาต่อกับ FPGA


 
สาย Byteblaster และ ByteblasterMV ต่างกันอย่างไร

สาย Byteblaster และ ByteblasterMV มีความความสามารถในการโปรแกรม CPLD/FPGA ตระกูลต่างๆจาก Altera Corporation ดังตาราง ดังนั้นการเลือกใช้ CPLD/FPGA รุ่นใดต้องคำนึงถึงสายที่ใช้ในการโปรแกรมด้วย จะเห็นว่า ByteblasterMV สามารถโปรแกรมได้หลายตระกูลมากกว่าและในตระกูลที่มีความสามารถสูงๆมักจะใช้สาย ByteblasterMV ในการโปรแกรม
ชนิดของสาย
   
ตระกูล CPLD/FPGA ที่สามารถใช้โปรแกรมได้
ByteblasterMV Cable    MAX3000A, MAX7000S, MAX7000A, MAX7000B, MAX9000 และ MAX9000AFLEX10K, FLEX 6000, FLEX 8000, ACEX 1K, APEX II, APEX 20K และ Mercury
Byteblaster Cable    MAX7000S, MAX7000A, MAX9000, MAX9000A, FLEX10K, FLEX 6000 และ FLEX 8000