ข่าว

(2/3) ทำไม FPGA ไม่ทำงานอย่างถูกต้อง - รื้อเหตุผลการวิเคราะห์ชิป FPGA แรก

  • ผู้เขียน:ROGER
  • เผยแพร่เมื่อ:2021-05-06

1

วิธีการทำงาน FPGA

รูปด้านล่างมาจากสิทธิบัตร FPGA ดั้งเดิมและแสดงโครงสร้างพื้นฐานของ FPGA ใน FPGA ที่เรียบง่ายนี้มี 9 บล็อกตรรกะ (สีน้ำเงิน) และหมุด I / O 12 อัน เชื่อมต่อเครือข่ายเชื่อมต่อคอมโพเนนต์เข้าด้วยกัน

โดยการตั้งค่าสวิตช์ (แนวทแยง) บนการเชื่อมต่อระหว่างกัน (แนวทแยง) บล็อกตรรกะเชื่อมต่อกันและเชื่อมต่อกับ PIN I / O องค์ประกอบตรรกะแต่ละชิ้นสามารถตั้งโปรแกรมได้โดยใช้ฟังก์ชั่นตรรกะที่จำเป็นเป็นผลให้ชิปที่ตั้งโปรแกรมได้สูงสามารถบรรลุวงจรที่เหมาะสม

สิทธิบัตร FPGA แสดงบล็อกตรรกะ (LE) เชื่อมต่อผ่านการเชื่อมต่อระหว่างกัน

CLB: บล็อกตรรกะที่กำหนดค่าได้

แม้ว่ารูปข้างต้นจะแสดงบล็อกตรรกะที่กำหนดค่าได้เก้าบล็อก (CLB), XC2064 มี 64 clbs รูปด้านล่างแสดงโครงสร้างของแต่ละ clbแต่ละ clb มีสี่อินพุต (A, B, C, D) และสองเอาต์พุต (x และ y)ระหว่างตรรกะการผสมคุณสามารถตั้งโปรแกรมฟังก์ชั่นตรรกะที่ต้องการได้

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

บล็อกตรรกะที่กำหนดค่าได้ใน XC2064

ดังนั้นตรรกะการผสมใช้ฟังก์ชั่นตรรกะใด ๆ มันจะใช้ตรรกะด้วยประตูหรือประตูที่แตกต่างหรือประตูหรือไม่?

ไม่มันใช้เคล็ดลับที่ชาญฉลาดที่เรียกว่าตารางการค้นหา (LUT) ในความเป็นจริงมันมีตารางค่าที่แท้จริงของฟังก์ชั่นตรรกะตัวอย่างเช่นฟังก์ชั่นของตัวแปรสามตัวถูกกำหนดโดย 8 บรรทัดในตารางค่าที่แท้จริง LUT ประกอบด้วยหน่วยความจำ 8 บิตและวงจรมัลติเพล็กซ์เพื่อเลือกค่าที่ถูกต้อง คุณสามารถใช้งานฟังก์ชั่นตรรกะอินพุต 3 ตัวใด ๆ โดยการจัดเก็บค่าในหน่วยความจำ 8 บิตนี้

ฟอรัมอิเล็กทรอนิกส์ EDA365

2

การเชื่อมต่อโครงข่าย

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

การเชื่อมต่อที่ซับซ้อนมากขึ้นเสร็จสมบูรณ์โดย "SwitchMatrices)สวิตช์แต่ละสวิตช์มี 8 พินและสามารถเชื่อมต่อกันได้ในทางใดทางหนึ่ง

รูปด้านล่างแสดงโครงสร้างการเชื่อมต่อระหว่างกันของ XC2064 ให้บล็อกตรรกะ (สีฟ้า) และการเชื่อมต่อ I / O PIN (สีเหลือง) ตัวเลขนี้แสดงให้เห็นถึงระยะใกล้ของการกำหนดเส้นทาง กล่องสีเขียวเป็นสวิตซ์สวิตซ์ 8 พินและสี่เหลี่ยมเล็ก ๆ เป็นจุดเชื่อมต่อที่ตั้งโปรแกรมได้

XC2064 FPGA มีกริด 8x8 CLB

แต่ละ CLB มีชื่อตัวอักษรจาก AA ถึง HHInterconnects สามารถเชื่อมต่อเช่นเอาท์พุทของบล็อก DC ไปยังอินพุตของบล็อก de ดังที่แสดงด้านล่าง สายสีแดงหมายถึงเส้นทางการกำหนดเส้นทางและ Cottage สีแดงหมายถึงจุดที่เปิดใช้งาน หลังจากออกจากโมดูล DC สัญญาณจะมุ่งเน้นจากเส้นทางแรกไปยังสวิตช์ 8 พิน (สีเขียว) ซึ่งถูกนำไปยังอีกสองเส้นทางและสวิตช์อื่นอีก 8 พิน (เส้นทางแนวตั้งและแนวนอนที่ไม่ได้ใช้จะไม่ปรากฏขึ้น)

โปรดทราบว่าการเดินสายค่อนข้างซับซ้อนแม้ว่าจะใช้เส้นทางสั้น ๆ นี้สี่เส้นทางและสวิตช์สองสวิตช์

ตัวอย่างสัญญาณจากเส้นทางเอาต์พุตเพื่อบล็อก de จากบล็อก DC

ภาพหน้าจอด้านล่างแสดงภายนอกของเส้นทางในโปรแกรม Xact เส้นสีเหลืองหมายถึงเส้นทางระหว่างบล็อกตรรกะ

เมื่อมีการเพิ่มสัญญาณความท้าทายคือวิธีการเส้นทางที่มีประสิทธิภาพโดยไม่ทำให้เกิดเส้นทาง แพคเกจ XACT ดำเนินการเส้นทางอัตโนมัติ แต่คุณสามารถแก้ไขเส้นทางด้วยตนเองได้ด้วยตนเอง

สกรีนช็อตของโปรแกรม Xact

โปรแกรม MS-DOS นี้ถูกควบคุมโดยแป้นพิมพ์และเมาส์

ฟอรัมอิเล็กทรอนิกส์ EDA365

3

วงจรภายในของ XC2064

วิศวกรรมย้อนกลับจากภาพถ่ายตาย

รูปต่อไปนี้แสดงเค้าโครงของชิป XC2064 ส่วนหลักของ FPGA คือ 8 × 8 กริด แต่ละกระเบื้องมีบล็อกตรรกะและวงจรการกำหนดเส้นทางที่อยู่ติดกัน

แม้ว่าภาพจะแสดงบล็อกตรรกะ (CLB) เป็นเอนทิตีที่แตกต่างจากเส้นทางรอบตัวพวกเขานี่ไม่ใช่การใช้งาน FPGA

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

เค้าโครงชิป XC2064

โมดูล I / O ให้การสื่อสารกับโลกภายนอกรอบ ๆ ขอบของวงจรรวม พวกเขาเชื่อมต่อกับแผ่นสี่เหลี่ยมสีเขียวขนาดเล็กที่เชื่อมต่อกับพินภายนอกของชิป

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

โครงสร้างภายในกระเบื้อง

รูปด้านล่างแสดงเค้าโครงของไทล์เดียวใน XC2064 ตามที่แสดงด้านบนชิปมี 64 กระเบื้องดังกล่าว แต่ละกระเบื้องมีพื้นที่ 40% ที่ถูกครอบครองโดยเซลล์หน่วยความจำ (สีเขียว) ของบิตการกำหนดค่า

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

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

เค้าโครงกระเบื้องเดี่ยวใน XC2064

ฟอรัมอิเล็กทรอนิกส์ EDA365

4

ทรานซิสเตอร์

FPGA ถูกนำไปใช้โดย CMOS Logic ซึ่งสร้างขึ้นจากทรานซิสเตอร์ NMOS และ PMOS

ทรานซิสเตอร์มีสองบทบาทหลักใน FPGA:

ก่อนอื่นพวกเขาสามารถรวมกันเพื่อสร้างประตูตรรกะ

ประการที่สองทรานซิสเตอร์ใช้เป็นสวิตช์ผ่านตัวอย่างเช่นเพื่อควบคุมเส้นทาง ภายใต้นี้ทรานซิสเตอร์เรียกว่าทรานซิสเตอร์เกียร์

โครงสร้าง MOSFET

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

MOSFET ใน FPGA