Donate

วันจันทร์ที่ 19 เมษายน พ.ศ. 2553

Chapter 1 Introductions

Chapter 1 Introductions

อุปกรณ์ FPGA (Field Programmable Gate Array) เป็นอุปกรณ์ที่ใช้ในการโปรแกรมวงจรที่ได้ออกแบบลงไปเพื่อให้ อุปกรณ์ FPGA มีฟังก์ชันการทำงานตามที่ผู้ออกแบบต้องการ ในการทำ FPGA เมื่อเทียบกับการทำ ASICs (Application Specific Integrated Circuits) แล้วนั้นก็มีทั้งข้อดีและข้อเสีย คือ การทำ FPGA จะมีข้อจำกัดในด้านขนาดของวงจรเพราะภายในอุปกรณ์ FPGA จะมีจำนวน gate ให้ใช้จำนวนจำกัด และการทำ FPGA ก็เหมาะกับการทำผลิตภัณฑ์ต้นแบบหรือเพื่อผลิตในปริมาณต่ำ ส่วนข้อดีของการทำ FPGA ก็คือระยะเวลาที่ใช้ในการทำ ตั้งแต่เขียน code อธิบายฮาร์ดแวร์จนกระทั่ง download นั้นน้อยกว่าการทำ ASIC มาก และการตรวจสอบหรือแก้ไข design ก็ทำได้สะดวก การทำ FPGA ในปัจจุบันมี ประสิทธิภาพมากขึ้น และสะดวกขึ้น ทั้งนี้ก็เนื่องจากทางบริษัทผู้ผลิตอุปกรณ์ FPGA ได้ เพิ่มความสามารถของอุปกรณ์ FPGA โดยเพิ่มจำนวนองค์ประกอบภายใน หรือ ปรับปรุงโครงสร้างสถาปัตยกรรมภายใน และยังได้เพิ่มประสิทธิภาพของซอฟต์แวร์ ที่ใช้ทำ PPR (Partitioning, Placement and Routing) สำหรับอุปกรณ์นั้นๆด้วย

1.1 ASIC

ความก้าวหน้าของอุตสาหกรรมอิเล็คทรอนิกส์ปัจจุบันทำให้ เกิดการพัฒนาความสามารถของอุปกรณ์ต่างๆ มากมายซึ่งทำให้เกิดการลดค่าใช้จ่าย การสิ้นเปลืองพลังงานและขนาด ในขณะเดียวกันก็มีการเพิ่มประสิทธิภาพและระดับความเชื่อถือได้ของวงจรรวมที่ สูงขึ้นเห็นได้ชัดจาก เทคโนโลยีไมโครโพรเซสเซอร์และหน่วยความจำปัจจุบัน ทุกๆ ครั้งที่มีการพัฒนาขึ้นทำให้เกิดช่องว่างวงจรรวมและไอซีมาตรฐานมากขึ้น ในการพัฒนาเพิ่มความหนาแน่นและจำนวน ฟังก์ชันลอจิก ที่เหมาะสม นักออกแบบอุปกรณ์ทางด้านดิจิตอลได้พิจารณาถึงการผลิตให้ขนาดมากๆ และการผลิตวงจรรวม (ASIC: Application Specific Integrated Circuit) ซึ่งวงจรรวม จะแบ่งตามการสร้างออกเป็น 2 กลุ่ม คือ Field programmable และ Mask programmable ดังแสดงในรูปที่ 1.1

image001

รูป ที่ 1.1 ผังแสดงการแบ่งกลุ่มของวงจรรวม ASIC

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

        - Simple Programmable Logic Device (SPLD)

        - Complex Programmable Logic Device (CPLD)

        - Field Programmable Gate Array (FPGA)

        - Field Programmable Interconnects (FPIC)

1.1.1 Simple Programmable Logic Device (SPLD)

หรือที่เรียกโดยทั่วไปในชื่อ

        - PAL (Programmable Array Logic) : Vantis, Cypress

        - GAL (Generic Array Logic) : Lattice, Cypress

       - PLA (Programmable Logic Array)

       - PLD (Programmable Logic Device)

SPLD เป็นอุปกรณ์ไอซีที่โปรแกรมได้ที่มี โครงสร้างแบบง่ายมีขนาดเล็กโดยมีจำนวนมาโครเซลล์ไม่เกิน 30 มาโครเซลล์

image002

1.1.2 CPLD (Complex Programmable Logic Device)

หรือมีชื่อเรียกอย่างอื่นเช่น

- EPLD (Erasable Programmable Logic Device) ผู้ผลิตที่สำคัญเช่น Xilinx

        - EEPLD (Electrically Erasable programmable logic Device) ตัวอย่างไอซีได้ ตระกูล MAX (Multiple Array Matrix ) ของบริษัท Altera CPLD มีโครงสร้างคล้าย กับ SPLD

        - CPLD ถูกผลิตขึ้นโดยเทคโนโลยีแบบ EPROM, EEPROM หรือ FLASH

     CPLD แบบ EPROM มักจะสามารถโปรแกรมได้เพียงครั้งเดียว (OTP) นอกเสียว่าจะมีช่อง (window) สำหรับ ใช้ลบข้อมูลด้วยแสงอุลตร้าไวโอเล็ต (UV)  ในการโปรแกรม EPLD จะต้องใช้เครื่องโปรแกรมไอซีเฉพาะที่เรียกทั่วไปว่า IC programmer ใน CPLD รุ่นใหม่ๆมักจะ เป็นแบบ EEPROM หรือ FLASH เนื่องจากสามารถโปรแกรม ได้ โดยตรงในภาคสนามได้ (in-System Programmable)

1.1.3 FPGA (Field Programmable gate Array)

    FPGA มีโครงสร้างที่แตกต่างไปจาก SPLD และ CPLD และมักจะมีความหนาแน่นของเกตมากกว่า โครงสร้างของ FPGA ประกอบด้วย แผงของบล็อกลอจิก ล้อมลอบด้วยส่วน I/Oที่สามารถโปรแกรมได้ และมีการเชื่อมต่อแบบโปรแกรมได้ เช่นกัน FPGA มี ขนาดตั้งแต่ระดับ1000 เกต จนถึงหลายล้านเกต



การแบ่งหมวดของ FPGA นั้นสามารถแบ่งแยกตามคุณลักษณะได้ดังนี้

        - โครงสร้างสถาปัตยกรรมภายใน

        - เทคโนโลยีการโปรแกรม

        - I/O

        - Interconnect

ซึ่งจะกล่าวถึงรายละเอียดในแต่ละหัวข้อในบทต่อไป

FPGA สามารถแบ่งตามโครงสร้างสถาปัตยกรรม ภายในของอุปกรณ์ดังนี้

        - LCA (Logic Cell Array)

        - PASIC (Programmable ASIC)

        - FLEX, APEX

        - ACT (Actel)

การแบ่งโครงสร้างสถาปัตยกรรมของ FPGA แบ่งได้เป็น 2 ลักษณะคือ

- Coarse-grained โครงสร้าง สถาปัตยกรรมแบบ Coarse-grained จะประกอบด้วยลอจิกบล็อกขนาดใหญ่ เช่นมักประกอบด้วย LUT และ Flip-Flops 2 อัน หรือมากกว่า
ตัวอย่าง FPGA ได้แก่ Xilinx ตระกูล XC4K, Spartan, Virtex หรือ Altera ตระกูล FLEX, APEX

     - Fine-grained ประกอบด้วย ลอจิกบล็อกแบบง่าย จำนวนมาก ลอจิกบล็อกประกอบด้วย ลอจิกฟังก์ชัน หรือ 2 อินพุท หรือมัลติเพล็กเซอร์แบบ 4-1 และฟลิปฟล็อป ตัวอย่าง FPGA แบบ fine-grained เช่น ตระกูล ACT ของบริษัท ACTEL

1.2 เทคโนโลยีการโปรแกรม (Programming Technology)

เทคนิคการโปรแกรมไอซี FPGA มีดังนี้

  • SRAM
  • Fuse/Anti-fuse
  • EPROM/EEPROM
  • FLASH

ข้อแตกต่างอื่นๆ ของโครสร้างสถาปัตยกรรมของ FPGA คือ เทคโนโลยีที่ใช้ในการผลิตตัวชิป

FPGA ซึ่งได้แก่ SRAM และ anti-fuse FPGA ที่ใช้เทคโนโลยี

  • FPGA ชนิด SRAM

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

  • FPGA ชนิด Fuse หรือ Anti-fuse

จะสามารถทำการ โปรแกรมได้เพียงครั้งเดียว (OTP) และไม่สามารถแก้ไขหรือโปรแกรมซ้ำได้อีก แต่ข้อมูลการโปรแกรมไม่สูญหายเมื่อวงจรถูกตัดแหล่งจ่ายไฟ การโปรแกรมไอซี FPGA ชนิดนี้จะต้องใช้เครื่องโปรแกรมไอซี

  • FPIC (Field Programmable Interconnect device)

FPIC จริงๆ แล้วไม่ได้ไอซีทางด้านลอจิก แต่จะเป็นอุปกรณ์ที่สามารถ โปรแกรมส่วนที่เชื่อมต่อ(wiring) เช่นการเชื่อมตัวให้ไอซีหนึ่งตัวสามารถเลือกได้ว่าให้ เชื่อมต่อเข้ากับไอซีตัวไหนได้ บริษัทที่ผลิตอุปกรณ์ประเภทนี้ได้แก่ ไอซี Digital Crosspaint Switch  ของบริษัท I-Cube Digital crosspoint device ของบริษัท Lattice หรือ อุปกรณ์ Hardware emulator  ของบริษัท Aptix

1.3 การออกแบบด้วย FPGA

การออกแบบวงจรดิจิตอลด้วย FPGA โดยทั่วไปมีองค์ประกอบ 3 ส่วน

1)  ซอฟต์แวร์ Design Entry

- โดยใช้ Schematic Design Entry ใช้ไลบารีของ FPGA

- ใช้ภาษา HDL เช่น VHDL, Verilog, การออกแบบโดยใช้ภาษาชั้นสูงนั้นการทดสอบของวงจร นั้นยังไม่ขึ้นกับเทคโนโลยีเป้าหมาย (Technology independent)  ผู้ออกแบบ ไม่จำเป็นต้องกังวลถึงค่าความหน่วงทางเวลาของอุปกรณ์ที่มากับเทคโนโลยีนั้น การทดสอบความถูกต้องเป็นในลักษณะการตรวจสอบระดับฟังก์ชันการทำงานโดยใช้ ซอฟต์แวร์สำหรับจำลองการทำงาน (Simulation)

2) Design Implementation

ขั้นตอนนี้ ต่อเนื่องจากขั้นตอนที่ 1 ซึ่งเกี่ยวข้องกับการแปลงแบบที่ได้ออกแบบจาก Schematic หรือ HDL ให้เป็นลอจิก ซึ่งอาจใช้ซอร์ฟแวร์สำหรับสังเคราะห์วงจร (Logic synthesis) แล้วทำการแบ่งลอจิกเป็นส่วนๆ ( Partitioning) และวางตำแหน่ง (Placement) ของลอจิกทำการเชื่อมต่อสายสัญญาณ (routing) สุดท้ายเป็นการสร้างไฟล์สำหรับโปรแกรมลงชิป (bit file)

3) Device Programming

การโปรแกรมอุปกรณ์หรือชิป FPGA นั้น มีเทคนิคหรือวิธีใหญ่ๆ 3 ลักษณะ ทั้งนี้ตัวชิปจะต้องสนับสนุนการทำงานในโหมดของการโปรแกรมเหล่านี้ด้วย

- การ โปรแกรมโดยผ่านสายดาวน์โหลด หรือผ่าน JTAG หรือผ่าน ISP

- การโปรแกรม โดยใช้ ตัวเก็บข้อมูลไฟล์บิต

- การโปรแกรม โดยใช้เครื่องโปรแกรมไอซี

...