ตัวอย่างการออกแบบโปรเจ็กต์ fpga ขนาดใหญ่ เกี่ยวกับการจัดทำเอกสารโครงการสำหรับ plis หน่วยความจำที่เชื่อมโยง องค์กร วิธีการสุ่มตัวอย่าง ความแตกต่างจากหน่วยความจำที่อยู่

💖ชอบไหม?แบ่งปันลิงค์กับเพื่อนของคุณ

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

ในการเริ่มต้น คุณต้องเข้าใจเล็กน้อยเกี่ยวกับตรรกะดิจิทัลของวิธีการทำงานของ ASIC แต่การเริ่มต้นกับสิ่งเหล่านี้เป็นเรื่องยากและมีราคาแพงมาก และควรเริ่มต้นด้วย FPGA แทน

FPGA คืออะไร?

เอฟพีจีเอย่อมาจาก field-programmable gate array (อาร์เรย์เกทที่ตั้งโปรแกรมได้โดยผู้ใช้, FPGA) ในกรณีทั่วไปเรียกว่า FPGA - วงจรรวมลอจิกที่ตั้งโปรแกรมได้

ด้วยความช่วยเหลือของ FPGA คุณสามารถออกแบบวงจรดิจิทัลแบบดิจิทัลได้อย่างแท้จริงในขณะที่นั่งอยู่ที่บ้านด้วยบอร์ดดีบั๊กราคาย่อมเยาบนโต๊ะและซอฟต์แวร์สำหรับนักพัฒนาในราคาหลายพันรูเบิลสีเขียว แต่ยังมีตัวเลือกฟรี หมายเหตุ: มันคือการออกแบบไม่ใช่การเขียนโปรแกรมเพราะที่เอาต์พุตเราจะได้รับวงจรดิจิทัลทางกายภาพที่ดำเนินการอัลกอริทึมบางอย่างในระดับฮาร์ดแวร์ไม่ใช่ prog สำหรับโปรเซสเซอร์

มันทำงานดังนี้ มีแผงวงจรพิมพ์สำเร็จรูปพร้อมชุดอินเทอร์เฟซที่เชื่อมต่อกับชิป FPGA ที่ติดตั้งบนบอร์ด เช่น บอร์ดศูนย์ข้อมูลเจ๋งๆ หรือบอร์ดดีบั๊กนี้สำหรับการฝึกอบรม

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

คุณสมบัติที่สำคัญของ FPGA คือความสามารถในการกำหนดค่าใหม่ สมมติว่าตอนนี้เราต้องการคอนโทรลเลอร์อีเทอร์เน็ต 100G และในหนึ่งสัปดาห์ก็สามารถใช้บอร์ดเดียวกันเพื่อสร้างอินเทอร์เฟซอีเทอร์เน็ต 25G อิสระสี่ชุด

มีผู้นำสองรายในผู้ผลิตชิป FPGA ในตลาด: Intel และ Xilinx ที่รู้จักกันดี พวกเขาควบคุม 58 และ 42% ของตลาด ผู้ก่อตั้ง Xilinx ได้คิดค้นชิป FPGA ตัวแรกในปี 1985 Intel เข้าสู่ตลาดเมื่อไม่นานมานี้ - ในปี 2558 โดยดูดซับ Altera ซึ่งก่อตั้งขึ้นพร้อม ๆ กับ Xilinx เทคโนโลยี Altera และ Xilinx มีความคล้ายคลึงกันหลายประการ เช่นเดียวกับสภาพแวดล้อมการพัฒนา บ่อยครั้งที่ฉันได้ทำงานกับผลิตภัณฑ์ของ Xilinx ดังนั้นอย่าแปลกใจที่เห็นเธอพูดถึงอย่างต่อเนื่องในบทความ

FPGA ถูกใช้อย่างแพร่หลายในด้านต่างๆ: เครื่องใช้ไฟฟ้า อุปกรณ์โทรคมนาคม บอร์ดเร่งความเร็วสำหรับใช้ในศูนย์ข้อมูล วิทยาการหุ่นยนต์ การสร้างต้นแบบ ASIC ฉันจะอธิบายสองสามตัวอย่างด้านล่างนี้

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

FPGA ทำงานอย่างไร

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

คุณยังสามารถเปลี่ยนฟังก์ชันลอจิกที่ CLB ดำเนินการได้ สิ่งนี้เกิดขึ้นได้เนื่องจากชิปทั้งหมดเต็มไปด้วยเซลล์หน่วยความจำการกำหนดค่า Static RAM แต่ละบิตของหน่วยความจำนี้ควบคุมคีย์การสลับสัญญาณบางชนิด หรือเป็นส่วนหนึ่งของตารางความจริงของฟังก์ชันตรรกะที่ CLB นำไปใช้

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

โครงสร้างชิป 2 มิติที่เรียบง่ายมากโดยไม่มีหน่วยความจำการกำหนดค่า

CLBs อยู่ในเมทริกซ์การสลับที่กำหนดการเชื่อมต่อสำหรับอินพุตและเอาต์พุตของ CLB

แผนภาพการสลับเมทริกซ์

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

CLB

CLB ประกอบด้วยบล็อกที่กำหนดฟังก์ชันบูลีนของอาร์กิวเมนต์หลายตัว (เรียกว่าตารางค้นหา - Look Up Table, LUT) และทริกเกอร์ (flip-flop, FF) ใน FPGA สมัยใหม่ LUT มีอินพุตหกตัว แต่ตัวเลขแสดงสามอินพุตเพื่อความเรียบง่าย เอาต์พุต LUT ถูกป้อนไปยังเอาต์พุต CLB ทั้งแบบอะซิงโครนัส (โดยตรง) หรือแบบซิงโครนัส (ผ่านฟลิปฟล็อป FF ที่ทำงานที่นาฬิการะบบ)

หลักการดำเนินการของ LUT

เป็นเรื่องที่น่าสนใจที่จะดูหลักการของการนำ LUT ไปใช้ สมมติว่าเรามีฟังก์ชันบูลีน y = (a & b) | ~ค. การแสดงแผนผังและตารางความจริงจะแสดงในรูป ฟังก์ชันมีอาร์กิวเมนต์ 3 ตัว ดังนั้นจะได้ 2^3 = 8 ค่า แต่ละอันสอดคล้องกับสัญญาณอินพุตของตัวเอง ค่าเหล่านี้คำนวณโดยโปรแกรมพัฒนาเฟิร์มแวร์ FPGA และเขียนลงในเซลล์หน่วยความจำการกำหนดค่าพิเศษ

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

นอกจาก CLB แล้ว ยังมีทรัพยากรฮาร์ดแวร์ที่สำคัญอีกจำนวนหนึ่งภายใน FPGA ตัวอย่างเช่น บล็อกการคูณด้วยฮาร์ดแวร์หรือบล็อก DSP แต่ละอันสามารถคูณและบวกเลข 18 บิตได้ทุกรอบ ในคริสตัลระดับไฮเอนด์ จำนวนบล็อก DSP สามารถเกิน 6,000

ทรัพยากรอื่นคือบล็อกหน่วยความจำภายใน (บล็อก RAM, BRAM) แต่ละบล็อกสามารถจัดเก็บได้ 2 KB ความจุรวมของหน่วยความจำดังกล่าวขึ้นอยู่กับคริสตัล สามารถเข้าถึงได้ตั้งแต่ 20 KB ถึง 20 MB เช่นเดียวกับ CLBs บล็อก BRAM และ DSP เชื่อมต่อกันด้วยสวิตชิ่งเมทริกซ์และซึมผ่านชิปทั้งหมด ด้วยการเชื่อมโยงบล็อก CLB, DSP และ BRAM ทำให้ได้รูปแบบการประมวลผลข้อมูลที่มีประสิทธิภาพมาก

ข้อดีของ FPGA

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

การใช้ FPGA ทำให้สามารถละทิ้งแนวทางนี้ได้ แม้แต่ 64 CLB FPGA ยังช่วยประหยัดพื้นที่บนแผงวงจรพิมพ์ และความพร้อมใช้งานของการกำหนดค่าใหม่ได้เพิ่มความสามารถในการอัปเดตฟังก์ชันการทำงานของอุปกรณ์หลังการผลิตระหว่างการทำงาน ดังที่พวกเขากล่าวว่า "ในภาคสนาม" (เพราะฉะนั้นชื่อ - เกทอาร์เรย์ที่ตั้งโปรแกรมฟิลด์ได้ ).

เนื่องจากสามารถสร้างวงจรดิจิทัลของฮาร์ดแวร์ภายใน FPGA ได้ (สิ่งสำคัญคือมีทรัพยากรเพียงพอ) หนึ่งในแอปพลิเคชันที่สำคัญของ FPGA คือการสร้างต้นแบบของชิป ASIC

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

สำหรับการพัฒนา ASIC มีการเปิดตัวบอร์ดพิเศษที่มี FPGA ที่เชื่อมต่อถึงกันจำนวนมาก ต้นแบบไมโครชิปทำงานที่ความถี่ต่ำกว่ามาก (อาจหลายสิบเมกะเฮิรตซ์) แต่ช่วยประหยัดเงินในการระบุปัญหาและจุดบกพร่อง

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


การเปรียบเทียบแพลตฟอร์มฮาร์ดแวร์

ลองนึกถึงความแตกต่างพื้นฐานระหว่าง CPU, GPU, FPGA และ ASIC CPU เป็นสากล คุณสามารถเรียกใช้อัลกอริทึมใดก็ได้บนมัน มีความยืดหยุ่นมากที่สุดและใช้งานง่ายที่สุดเนื่องจากมีภาษาโปรแกรมและสภาพแวดล้อมการพัฒนาจำนวนมาก

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

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

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

หากสามารถขนานอัลกอริทึมได้ GPU จะเป็นไปได้ที่จะได้รับอัตราเร่งที่สำคัญเมื่อเทียบกับ CPU ในทางกลับกัน อัลกอริทึมตามลำดับจะถูกนำไปใช้อย่างแย่ลง ดังนั้นแพลตฟอร์มจึงมีความยืดหยุ่นน้อยกว่า CPU นอกจากนี้ สำหรับการพัฒนา GPU คุณต้องมีทักษะพิเศษ รู้จัก OpenCL หรือ CUDA

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

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

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

ดังนั้น FPGA จึงถูกใช้ในที่ที่ต้องการประสิทธิภาพการประมวลผลสูง เวลาตอบสนองที่เร็วที่สุด และการใช้พลังงานต่ำ

FPGA ในระบบคลาวด์

ในการประมวลผลแบบคลาวด์ FPGA จะใช้สำหรับการนับอย่างรวดเร็ว การเร่งการรับส่งข้อมูลเครือข่าย และการเข้าถึงอาร์เรย์ข้อมูล ซึ่งรวมถึงการใช้ FPGA สำหรับการซื้อขายแลกเปลี่ยนความถี่สูง บอร์ด FPGA พร้อม PCI Express และอินเทอร์เฟซเครือข่ายแบบออปติคัลที่ผลิตโดย Intel (Altera) หรือ Xilinx จะถูกเสียบเข้ากับเซิร์ฟเวอร์

FPGA นั้นยอดเยี่ยมสำหรับอัลกอริธึมการเข้ารหัส การเปรียบเทียบลำดับดีเอ็นเอ และงานทางวิทยาศาสตร์ เช่น พลวัตของโมเลกุล Microsoft ใช้ FPGA มาเป็นเวลานานเพื่อเร่งบริการค้นหาของ Bing ตลอดจนจัดระเบียบ Software Defined Networking ภายใน Azure Cloud

ความเจริญของแมชชีนเลิร์นนิงไม่ได้ก้าวข้าม FPGA เช่นกัน Xilinx และ Intel เสนอเครื่องมือที่ใช้ FPGA สำหรับการทำงานกับโครงข่ายประสาทเทียมเชิงลึก ช่วยให้คุณได้รับเฟิร์มแวร์ FPGA ที่ใช้เครือข่ายเฉพาะโดยตรงจากเฟรมเวิร์กเช่น Caffe และ TensorFlow

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

FPGA บนขอบ

มีอะไรน่าสนใจอีกบ้างใน FPGA? ทำไมพวกเขาไม่ทำมัน! หุ่นยนต์, ยานพาหนะไร้คนขับ, โดรน, เครื่องมือวิทยาศาสตร์, อุปกรณ์ทางการแพทย์, อุปกรณ์เคลื่อนที่ของผู้ใช้, กล้องรักษาความปลอดภัยอัจฉริยะ และอื่นๆ

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

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

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

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

การพัฒนาโครงการ FPGA

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

วงจร FPGA ทำงานที่ความเร็วสัญญาณนาฬิกาเสมอ (ปกติคือ 100-300 MHz) และที่ระดับ RTL คุณจะกำหนดพฤติกรรมของวงจรภายในนาฬิการะบบ การทำงานอย่างอุตสาหะนี้ส่งผลให้วงจรมีประสิทธิภาพสูงสุดในแง่ของประสิทธิภาพ การใช้ทรัพยากรแม่พิมพ์ FPGA และการใช้พลังงาน แต่จำเป็นต้องมีทักษะที่จริงจังในวงจรและกระบวนการนี้ไม่รวดเร็วนัก

ในระดับบล็อก คุณกำลังเชื่อมต่อบล็อกขนาดใหญ่สำเร็จรูปที่ทำหน้าที่บางอย่างเพื่อรับฟังก์ชันการทำงานของระบบบนชิป (ระบบบนชิป) ที่คุณต้องการ

ในการออกแบบระดับสูง คุณจะไม่สามารถควบคุมข้อมูลในแต่ละรอบสัญญาณนาฬิกาได้อีกต่อไป แต่คุณจะมุ่งความสนใจไปที่อัลกอริทึม มีคอมไพเลอร์หรือตัวแปลจาก C และ C++ เป็นระดับ RTL เช่น Vivado HLS มันค่อนข้างฉลาดและช่วยให้คุณสามารถแปลอัลกอริธึมระดับกว้างเป็นระดับฮาร์ดแวร์ได้

ข้อได้เปรียบหลักของวิธีนี้เหนือภาษา RTL คือความเร็วของการพัฒนาและโดยเฉพาะอย่างยิ่งการทดสอบอัลกอริทึม: สามารถเรียกใช้และตรวจสอบโค้ด C++ บนคอมพิวเตอร์ได้ และจะเร็วกว่าการทดสอบการเปลี่ยนแปลงอัลกอริทึมที่ระดับ RTL แน่นอนคุณจะต้องจ่ายเพื่อความสะดวก - วงจรอาจไม่เร็วนักและใช้ทรัพยากรฮาร์ดแวร์มากขึ้น

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

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

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


บล็อกไดอะแกรมการออกแบบ FPGA ทั่วไป

หากผู้ผลิตเซ็นเซอร์วิดีโอไม่ได้ระบุ IP ของอินเทอร์เฟซสำหรับชิป FPGA ของเรา เราจะต้องเขียนด้วยตัวเองในภาษา RTL โดยนับนาฬิกา บิตและไบต์ตามข้อกำหนดโปรโตคอลการถ่ายโอนข้อมูล การประมวลผลล่วงหน้า, ตัวควบคุม DDR และบล็อก HDMI IP เรามักจะใช้แบบสำเร็จรูปและเชื่อมต่ออินเทอร์เฟซ และบล็อก HLS ซึ่งทำการค้นหาและประมวลผลข้อมูลขาเข้า เราสามารถเขียนใน C ++ และออกอากาศโดยใช้ Vivado HLS

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

พิจารณาเส้นทางการออกแบบตั้งแต่การเขียนโค้ด RTL ไปจนถึงการรับไฟล์การกำหนดค่าเพื่อโหลดลงใน FPGA

เส้นทางการออกแบบ

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

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

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

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

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

สถานที่และเส้นทางทำงานตามข้อจำกัดที่เรากำหนดไว้ในวงจร: พิน I/O และความเร็วสัญญาณนาฬิกา ช่วงเวลาของสัญญาณนาฬิกามีผลอย่างมากต่อการดำเนินการ: ต้องไม่น้อยกว่าเวลาหน่วงบนลอจิกเกตในวงจรวิกฤตระหว่างฟลิปฟล็อปสองตัวที่ต่อเนื่องกัน

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

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

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

ในช่วงวันหยุดฉันทำโครงการเล็ก ๆ บน Verilog ซึ่งฉันอยากลองมานานแล้ว

สาระสำคัญของโครงการมีดังนี้ ADC ที่รวดเร็ว (ค่อนข้างแน่นอน) ที่มีสองช่องสัญญาณและอินเทอร์เฟซแบบขนาน (14-16 บิตต่อช่องสัญญาณ) เชื่อมต่อกับ FPGA FPGA อ่านข้อมูลจาก ADC และจัดเก็บไว้ในบัฟเฟอร์ (หน่วยความจำภายใน BRAM) เมื่อบัฟเฟอร์เต็ม การอ่านจะหยุดลงและอุปกรณ์ภายนอก (ไมโครคอนโทรลเลอร์) สามารถอ่านข้อมูลจากบัฟเฟอร์ผ่านอินเทอร์เฟซ SPI คุณยังสามารถกำหนดค่าพารามิเตอร์บางอย่างผ่าน SPI (ซึ่งจะกล่าวถึงในโพสต์ถัดไป)

การทดสอบโครงการ (ภาพที่คลิกได้)

ผลการสังเคราะห์สำหรับ Cyclone IVE

ฉันสังเคราะห์ผลลัพธ์ใน Quartus II สำหรับ FPGA ของตระกูล Cyclone IVE (EP4CE6E22A7) นี่เป็นหนึ่งใน FPGA ที่ง่ายและราคาไม่แพงที่สุดในแพ็คเกจ QFP144 สำหรับองค์ประกอบลอจิก 6272 ชิปมีความจุหน่วยความจำ 30K * 9 บิต พินผู้ใช้ - 92.

ชิป EP4CE6E22A7
องค์ประกอบลอจิก - 301 (5%)
หมุด - 41 (45%)
หน่วยความจำ - 65536 บิต (24%)
ความถี่กรณีที่เลวร้ายที่สุด (125 C) - 151 MHz

หน่วยความจำ 8 KB ซึ่งเป็นบัฟเฟอร์ที่ใช้เขียนข้อมูล ด้วยสองแชนเนล 16 บิต ปรากฎว่า 32 บิตต่อตัวอย่างและ 2048 ตัวอย่าง ฉันตัดสินใจว่าเพียงพอแล้วแม้ว่าจะสามารถขยายบัฟเฟอร์ได้จนถึงระดับเสียงทั้งหมด

ความถี่ค่อนข้างน่าพอใจ ผมคาดว่าน่าจะมีความถี่สัญญาณนาฬิกาที่ 50 MHz และ ADC ที่ 25 MHz นั่นคือได้รับความถี่สามเท่า

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

มีตระกูล Cyclone 10 ที่ใหม่กว่า

ผลการสังเคราะห์ไซโคลน 10

เราเลือกชิป 10CL006YE144C8G มีจำนวนประตูเท่ากัน (6272) เช่นเดียวกับรุ่น Cyclone 4 และจำนวนหน่วยความจำเท่ากัน (30K x 9) กรณีนี้เหมือนกับ QFP144 มีพินผู้ใช้น้อยกว่า - 89

ชิป 10CL006YE144C8G
องค์ประกอบลอจิก - 289 (5%)
หมุด - 41 (46%)
หน่วยความจำ - 65536 บิต (24%)
ความถี่กรณีที่เลวร้ายที่สุด (85 C) คือ 145.5 MHz

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

คำถามที่สมเหตุสมผลเกิดขึ้น: เป็นไปได้ไหมที่จะประหยัดเงินโดยการติดตั้ง FPGA หรือ CPLD อื่น

มาลอง FPGA MAX10

ผลการสังเคราะห์สำหรับ MAX 10

ที่นี่ผู้อ่าน (ถ้าเขาอยู่ในเรื่อง) อาจอุทาน: ไม่มันไม่ใช่อย่างนั้น! กลุ่ม MAX คือ CPLD ไม่ใช่ FPGA และความสับสนในแนวคิดเหล่านี้ถือเป็นความไม่เป็นมืออาชีพอย่างเห็นได้ชัด!

อย่างไรก็ตาม ด้วยความพยายามของนักการตลาดของ Intel (ทุกคนรู้หรือไม่ว่าเรากำลังพูดถึงชิป Intel?) ตระกูล MAX10 ได้กลายเป็น FPGA แม้ว่าจะมีหน่วยความจำการกำหนดค่าแบบไม่ลบเลือนภายในเช่น CPLD อื่นๆ

ดังนั้นเราจึงเลือกชิปเช่น 10M02SCE144A7G (2304 LE, 101 GPIO, 12Kx9 BRAM), แพ็คเกจ QFP144

ชิป 10M02SCE144A7G.
องค์ประกอบลอจิก - 298 (13%)
หมุด - 41 (41%)
หน่วยความจำ - 65536 บิต (59%)
ความถี่กรณีที่เลวร้ายที่สุด (125 C) - 153 MHz

เราเห็นว่าตัวบ่งชี้ที่แน่นอนยังคงเหมือนเดิมมีเพียงระดับการเติมคริสตัลเท่านั้นที่เพิ่มขึ้นซึ่งเข้าใจได้ - 2304LE เทียบกับ 6272 LE

สามารถใช้ MAX II ได้หรือไม่?

ตอนนี้คำถามคือ: เป็นไปได้ไหมที่จะใช้ CPLD ที่มีราคาถูกมาก เช่น MAX II ทุกอย่างซับซ้อนกว่าที่นี่ พวกเขาไม่มีหน่วยความจำ BRAM เช่น คุณจะต้องมี SRAM ภายนอกที่รวดเร็วด้วย

ในการเชื่อมต่อ SRAM จำเป็นต้องมีตรรกะเพิ่มเติม หากเราใช้หน่วยความจำ 4K x 16 เราจะต้องใช้พินเพิ่มเติม 16 พินสำหรับข้อมูล 12 พินสำหรับแอดเดรส และ 3 พินสำหรับการควบคุม (/cs, /we, /oe) รวมเป็น 31 พินเพิ่มเติม

ตรรกะจะเพิ่มขนาดด้วย ยากที่จะบอกว่าเท่าไหร่ แต่จะไม่พอดีกับ CPLD ใน 240 LE ในตอนแรก แต่อาจจะพอดีกับ 570 LE

เราเลือก CPLD EPM570 ในแพ็คเกจ QFP100 เราต้องการเพียง 72 พิน เคสมี 76 พินสำหรับ GPIO เช่น ควรจะเพียงพอสำหรับทุกสิ่ง แต่มีช่องว่างน้อยมากสำหรับการขยายตัว

ข้อดีของโซลูชันนี้: ราคาอาจต่ำกว่า (แม้จะมีชิป SRAM เพิ่มเติม) ข้อเสีย: ความซับซ้อนของวงจรและพื้นที่บอร์ดที่มากขึ้น

ออกราคา

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

EP4CE6E22C8N - 456.55 R (Promelectronics, EKB, ค้าปลีก)
10CL006YE144C - 754.71 (องค์ประกอบที่ห้า, เซนต์ปีเตอร์สเบิร์ก, ขายส่ง)
10M02SCE144C8G - 456 R (Elitan, Ekb, ขายส่ง)
EPM570F100C5N - 368 R (ไฮเทค, เซนต์ปีเตอร์สเบิร์ก) + หน่วยความจำ (CY7C1021DV33-10ZSXI, SRAM 1MBIT 10NS 44TSOP) - 92.51 R (อุปกรณ์อิเล็กทรอนิกส์สำหรับอุตสาหกรรม, EKB, การขายปลีก)

แน่นอนคุณสามารถหาได้ถูกกว่านี่เป็นเพียงราคาขายปลีกในร้านค้า แต่อัตราส่วนจะใกล้เคียงกัน

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

โดยส่วนตัว ฉันชอบตัวเลือก MAX 10 ที่สุด มีข้อดีอย่างหนึ่ง: ไม่จำเป็นต้องโหลดการกำหนดค่า FPGA เมื่อเริ่มต้น ในรุ่น Cyclone 4 คุณจะต้องโหลดการกำหนดค่า FPGA ซึ่งสามารถทำได้โดยใช้ชิปหน่วยความจำการกำหนดค่าเพิ่มเติมหรือใช้ไมโครคอนโทรลเลอร์ มีตัวเลือกที่สาม: แฟลชผ่าน JTAG และอย่าถอดพลังงานออกจากชิป ฉันได้ยินมาว่ามีคนทำสิ่งนี้ ฉันไม่รู้ว่ามันเป็นเรื่องตลกหรือไม่ แต่ฉันจะไม่ทำอย่างแน่นอน

อย่างไรก็ตาม รุ่นที่มีเฟิร์มแวร์ Cyclone 4 ผ่านไมโครคอนโทรลเลอร์มีข้อได้เปรียบ: ความสามารถในการอัปเดตเฟิร์มแวร์ FPGA ผ่านอินเทอร์เฟซผู้ใช้: USB, อีเธอร์เน็ต ฯลฯ

ตัวเลือกอื่นที่ไม่สำคัญเป็นไปได้: อย่าติดตั้งไมโครคอนโทรลเลอร์เลย แต่แฟลชตัวประมวลผลแบบฝังตัวลงใน FPGA แต่นี่ไม่ใช่ตัวเลือกที่ดีนัก อาจเป็นเพราะ สิ่งนี้จะต้องใช้ ROM และ RAM ภายนอกรวมถึงบริดจ์ USB เป็นอย่างน้อย แน่นอนว่าไม่จำเป็นต้องปฏิเสธตัวเลือกนี้โดยเจตนา แต่สำหรับฉันแล้วดูเหมือนว่าจะใช้งานยากกว่าการใช้ไมโครคอนโทรลเลอร์

ฉันจะเขียนเกี่ยวกับฟังก์ชันการทำงานของเฟิร์มแวร์นี้ในโพสต์ถัดไป

การใช้ FPGA ในอุปกรณ์สมัยใหม่

ทูปิคอฟ พาเวล อันดรีวิช

นักศึกษาชั้นปีที่ 5 ภาควิชาศิลปะ OmSTU สหพันธรัฐรัสเซีย Omsk

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

· ปรับปรุงประสิทธิภาพของผลิตภัณฑ์

· ราคาของผลิตภัณฑ์ลดลง

ขนาดที่ลดลงของผลิตภัณฑ์

ความน่าเชื่อถือของผลิตภัณฑ์เพิ่มขึ้น (จำนวนไมโครวงจรแยกลดลง)

ความยืดหยุ่นของผลิตภัณฑ์เพิ่มขึ้น (สามารถตั้งโปรแกรม FPGA ใหม่ได้ตลอดเวลา)

สถาปัตยกรรม FPGA มีโครงสร้างที่ซับซ้อน (รูปที่ 1)

รูปที่ 1 โครงสร้างภายในของ FPGA

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

ขั้นตอนการเขียนโปรแกรม (เฟิร์มแวร์) FPGA ประกอบด้วยการเชื่อมต่อที่จำเป็นระหว่างอินพุตและเอาต์พุตของอุปกรณ์

จนถึงปัจจุบัน มีผู้นำระดับโลกสองคนในการผลิต FPGA ในโลก เหล่านี้คือ บริษัท อเมริกัน Xilinx และ Altera

แต่ละบริษัทเสนอ CAD ของตนเองสำหรับการทำงานกับ FPGA Xilinx นำเสนอ Xilinx Software Development Kit (SDK) Altera นำเสนอ Max+Plus II และ Quartus II รวมถึงระบบการจำลอง ModelSim

ในการสร้างโปรแกรมเฟิร์มแวร์มักใช้ภาษาสำหรับอธิบายการทำงานของอุปกรณ์ซึ่งเป็นภาษาที่ใช้กันมากที่สุดในปัจจุบัน:

เวอริล็อก เอชดีแอล

ภาษา VHDL เป็นภาษาที่ยากที่สุดในการเรียนรู้ แต่ในขณะเดียวกันก็มีความสามารถสูงสุดในระดับการทำงานและพฤติกรรมของนามธรรม อย่างไรก็ตาม มีความสามารถน้อยกว่าในระดับโครงสร้างของนามธรรมเมื่อเทียบกับ Verilog HDL ไลบรารี VITAL คือ พัฒนาขึ้นเพื่อขยายขีดความสามารถของภาษา VHDL (ภาพที่ 2)


รูปที่ 2 ชั้นของสิ่งที่เป็นนามธรรม เวอริล็อก และ วีเอชดีแอล

ตัวอย่างของการทำงานของภาษา Verilog HDL คือโปรแกรมที่ใช้งานบน CYCLONE III EP3C5E1444C8N FPGA ของขาตั้ง Mini-DiLab ซึ่งมุมมองทั่วไปจะแสดงในรูปที่ 3.


รูปที่ 3 มุมมองทั่วไปของบอร์ด มินิ - ดิแล็บ

โปรแกรมนี้ใช้การสลับตามลำดับของไฟ LED led0-led7 โดยมีตัวเลือกในการเพิ่มการเคลื่อนไหว "แสง" โดยใช้ปุ่ม pba และ pbb ตลอดจนควบคุมความเร็วในการเปลี่ยนโดยใช้สวิตช์ sw0, sw1

// ข้อความโปรแกรม

โมดูลโครงการ( เอาต์พุตนำ, ป้อนข้อมูล clk_25mhz, ป้อนข้อมูลพีบีเอ, ป้อนข้อมูลพีบีบี,

ป้อนข้อมูลสว);

// ปลายทางของการเชื่อมต่อภายในของโครงการ

ลวด s1;

ลวด s2;

ลวด s3;

// เรียกไฟล์อื่น (รูทีนย่อย) ที่เชื่อมต่อกับโปรเจ็กต์

Tr tr_1 (.out(s2), .set(pba), .res(pbb));

ตัวนับ counter_1 (.q(s1), .clk(clk_25mhz), .up(s2));

Mx mx_1 (.a(s3), .in(s1), .load(sw));

Dc3_8 dc3_8_1 (.out(นำ), .in(s3));

โมดูลสิ้นสุด// จบโปรแกรม

รูทีนย่อย tr

โมดูล tr(ออก, ตั้งค่า, ความละเอียด); // สร้างโปรแกรม

// การกำหนด I/O

เอาต์พุตระเบียบออก;

ป้อนข้อมูลชุด;

ป้อนข้อมูลความละเอียด;

// การเริ่มต้น

อักษรย่อ

เริ่ม

ออก<= 1"d0;

// รหัสโปรแกรมหลัก

เสมอ @(ปฏิเสธชุด หรือ ปฏิเสธความละเอียด)

เริ่ม

ถ้า(~(ชุด))

ออก<= 1"d1;

อื่น

ออก<= 1"d0;

โมดูลสิ้นสุด //สิ้นสุดโปรแกรม

เคาน์เตอร์รูทีนย่อย

โมดูลตัวนับ (con, q, clk, up); // เริ่มโปรแกรม

เอาต์พุตระเบียบแย้ง;

เอาต์พุตคิว = แย้ง;

ป้อนข้อมูลขึ้น clk;

// รหัสโปรแกรมหลัก

เสมอ @(ท่าทางคลิ้ก)

เริ่ม

ถ้า(คลิ้ก)

ถ้า(ขึ้น)

คอน<= con - 1"d1;

อื่น

คอน<= con + 1"d1;

โมดูลสิ้นสุด// สิ้นสุดโปรแกรม

รูทีนย่อย mx (มัลติเพล็กเซอร์)

โมดูลเอ็มเอ็กซ์( output.regก, ป้อนข้อมูลใน, ป้อนข้อมูลโหลด);

// รหัสโปรแกรมหลัก

เสมอ @*

เริ่ม

กรณี(โหลด)

2"b00: a = ใน;

2"b01: a = ใน;

2"b10: a = ใน;

2"b11: a = ใน;

กล่องท้าย

โมดูลสิ้นสุด // สิ้นสุดโปรแกรม

รูทีนย่อย dc3_8 (มัลติเพล็กเซอร์)

โมดูล dc3_8(ออก,เข้า); // เริ่มโปรแกรม

// การกำหนด I/O

output.regออก;

สายป้อนใน;

// รหัสโปรแกรมหลัก

เสมอ @*

เริ่ม

กรณี(ใน)

3"d0: ออก = 8"b11111110;

3"d1: ออก = 8"b11111101;

3"d2: ออก = 8"b11111011;

3"d3: ออก = 8"b11110111;

3"d4: ออก = 8"b11101111;

3"d5: ออก = 8"b11011111;

3"d6: ออก = 8"b10111111;

3"d7: ออก = 8"b01111111;

กล่องท้าย

โมดูลสิ้นสุด // สิ้นสุดโปรแกรม

โปรแกรมถูกนำมาใช้ใน CAD Quartus II

หลังจากคอมไพล์โปรแกรมแล้ว คอมไพเลอร์ไม่ได้สร้างข้อผิดพลาดหรือข้อสังเกตใดๆ ในโปรแกรมที่เกี่ยวข้องกับการวิเคราะห์และไวยากรณ์ของโปรแกรม (รูปที่ 4)


รูปที่ 4 หน้าต่างข้อความโครงการ

ข้อสังเกตของคอมไพเลอร์ระบุว่าไม่มีใบอนุญาตสำหรับ Quartus II (โปรแกรมรุ่นฟรีใช้สำหรับการฝึกอบรม) และไม่มีไฟล์ที่จำเป็นสำหรับการสร้างแบบจำลองโครงการ

RTL โครงสร้างของโครงการนี้แสดงในรูปที่ 5.


รูปที่ 5 การดำเนินโครงการ ( ร.ฟ.ท โครงสร้าง)

ดังแสดงในรูป 6 ในโปรแกรมนี้จะใช้ความสามารถเพียงเล็กน้อยของ FPGA นี้เท่านั้น

รูปที่ 6 ส่วนหนึ่งของ FPGA ที่เกี่ยวข้องในโครงการ

สรุป:วงจรรวมลอจิกที่ตั้งโปรแกรมได้ใช้ในอุปกรณ์หลายชนิด หากต้องการเรียนรู้วิธีการทำงานกับพวกเขาจำเป็นต้องแนะนำโปรแกรมการศึกษาพิเศษที่เกี่ยวข้องกับการออกแบบและการสร้างอุปกรณ์วิทยุอิเล็กทรอนิกส์ที่คุ้นเคยกับภาษาคำอธิบายฮาร์ดแวร์ (Verilog HDL และ VHDL)

บรรณานุกรม:

1. Grushevitzky R.I. การออกแบบระบบตามวงจรไมโครของตรรกะโปรแกรม / R.I. Grushevitzky, A.X. Mursaev, E.P. มืดมน เซนต์ปีเตอร์สเบิร์ก: BHV ปีเตอร์สเบิร์ก 2545 - 608 น.

2. โคโลมอฟ ดี.เอ. ระบบการออกแบบโดยใช้คอมพิวเตอร์ช่วยจาก Altra MAX+plus II และ Quartus II คำอธิบายสั้น ๆ และแบบฝึกหัด / อ. โคโลมอฟ, อาร์.เอ. มายอล์ก, เอ.เอ. โซเบนโก, A.S. ฟิลิปปอฟ ม.: IP RadioSoft, 2545. - 126 น.

3. การออกแบบ Maxfield K. FPGA หลักสูตรของนักสู้รุ่นเยาว์ / K. Maxfield ม.: สำนักพิมพ์ "Dodeka-XXI", 2550. - 408 น. (แปลจากภาษาอังกฤษ).

65 นาโนเมตรเป็นเป้าหมายต่อไปของโรงงาน Zelenograd Angstrem-T ซึ่งจะมีมูลค่า 300-350 ล้านยูโร องค์กรได้ส่งคำขอสินเชื่อดอกเบี้ยต่ำสำหรับการปรับปรุงเทคโนโลยีการผลิตให้ทันสมัยไปยัง Vnesheconombank (VEB) แล้ว Vedomosti รายงานในสัปดาห์นี้โดยอ้าง Leonid Reiman ประธานคณะกรรมการบริหารของโรงงาน ขณะนี้ Angstrem-T กำลังเตรียมเปิดตัวสายการผลิตชิปที่มีโทโพโลยี 90 นาโนเมตร การชำระเงินสำหรับเงินกู้ VEB ก่อนหน้านี้ซึ่งซื้อไว้จะเริ่มในกลางปี ​​​​2560

ปักกิ่งถล่มวอลล์สตรีท

ดัชนีสำคัญๆ ของสหรัฐฯ ชี้วันแรกของปีใหม่ร่วงลงเป็นประวัติการณ์ จอร์จ โซรอส มหาเศรษฐีพันล้านเตือนแล้วว่าโลกกำลังรอวิกฤตซ้ำรอยในปี 2551

Baikal-T1 โปรเซสเซอร์สำหรับผู้บริโภคชาวรัสเซียเครื่องแรกในราคา 60 ดอลลาร์เปิดตัวในการผลิตจำนวนมาก

บริษัท Baikal Electronics เมื่อต้นปี 2559 สัญญาว่าจะเปิดตัวโปรเซสเซอร์ Baikal-T1 ของรัสเซียมูลค่าประมาณ 60 ดอลลาร์สำหรับการผลิตภาคอุตสาหกรรม อุปกรณ์จะเป็นที่ต้องการหากความต้องการนี้ถูกสร้างขึ้นโดยรัฐ ผู้เข้าร่วมตลาดกล่าว

MTS และ Ericsson จะร่วมกันพัฒนาและใช้งาน 5G ในรัสเซีย

PJSC "Mobile TeleSystems" และ Ericsson ลงนามข้อตกลงความร่วมมือในการพัฒนาและใช้งานเทคโนโลยี 5G ในรัสเซีย ในโครงการนำร่อง รวมถึงระหว่างการแข่งขันฟุตบอลโลกปี 2018 MTS ตั้งใจที่จะทดสอบการพัฒนาของผู้จำหน่ายในสวีเดน ในต้นปีหน้า ผู้ประกอบการจะเริ่มการเจรจากับกระทรวงโทรคมนาคมและการสื่อสารมวลชนเกี่ยวกับการจัดทำข้อกำหนดทางเทคนิคสำหรับการสื่อสารเคลื่อนที่รุ่นที่ห้า

เซอร์เกย์ เชเมซอฟ: Rostec เป็นหนึ่งในสิบบริษัทด้านวิศวกรรมที่ใหญ่ที่สุดในโลกอยู่แล้ว

ในการให้สัมภาษณ์กับ RBC หัวหน้า Rostec, Sergey Chemezov, ตอบคำถามที่ร้อนแรง: เกี่ยวกับระบบ Platon, ปัญหาและโอกาสของ AVTOVAZ, ผลประโยชน์ของ State Corporation ในธุรกิจยา, พูดถึงความร่วมมือระหว่างประเทศภายใต้แรงกดดันจากการลงโทษ, การนำเข้า การเปลี่ยนตัว การจัดโครงสร้างใหม่ กลยุทธ์การพัฒนา และโอกาสใหม่ในช่วงเวลาที่ยากลำบาก

Rostec ได้รับการ "ปกป้อง" และล่วงล้ำเกียรติยศของ Samsung และ General Electric

คณะกรรมการกำกับดูแลของ Rostec อนุมัติ "กลยุทธ์การพัฒนาจนถึงปี 2568" ภารกิจหลักคือการเพิ่มส่วนแบ่งของผลิตภัณฑ์พลเรือนที่มีเทคโนโลยีสูง และติดตาม General Electric และ Samsung ในตัวชี้วัดทางการเงินที่สำคัญ

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

การแนะนำ

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

  • GOST 2.102-68 ESKD ประเภทและความสมบูรณ์ของเอกสารการออกแบบ
  • GOST 15.101-98 ระบบสำหรับการพัฒนาและการผลิตผลิตภัณฑ์ ขั้นตอนการปฏิบัติงานวิจัย.
  • GOST R 15.201-20-00 ระบบสำหรับการพัฒนาและการผลิตผลิตภัณฑ์ ผลิตภัณฑ์เพื่อวัตถุประสงค์ทางอุตสาหกรรมและทางเทคนิค ขั้นตอนการพัฒนาและการผลิตผลิตภัณฑ์

ตามกฎแล้วสิ่งเหล่านี้คือไฟล์เฟิร์มแวร์และโปรแกรม (คำอธิบายของอุปกรณ์ดิจิทัลใน VHDL / Verilog หรือชุดของวงจรดิจิทัลที่พัฒนาขึ้นในเครื่องมือแก้ไขวงจรโดยใช้องค์ประกอบไลบรารีลอจิกดิจิทัล เช่น flip-flop, register, counters ตัวถอดรหัส ฯลฯ) ในซีดีหรือดีวีดีและคำแนะนำในการเขียนโปรแกรม และนั่นแหล่ะ

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

ประวัติของปัญหาการออกแบบสำหรับ FPGA

ปัจจุบัน ตลาด FPGA เป็นหนึ่งในตลาดที่มีการพัฒนาแบบไดนามิกมากที่สุด FPGA ใช้ในเทคโนโลยีหลายสาขา ในขณะนี้ ไม่มีวิธีการใดที่ชัดเจนซึ่งตอบสนองนักพัฒนาฮาร์ดแวร์ทั้งหมดในการรับการกำหนดค่า FPGA จากรูปแบบการทำงานของอุปกรณ์ในระดับระบบ วิธีที่ได้รับความนิยมมากที่สุดในการแก้ปัญหานี้คือการใช้เทคโนโลยี IP-core (แกนทรัพย์สินทางปัญญา) คอร์ IP เป็นส่วนประกอบสำเร็จรูปที่ให้คุณรวมไว้ในโปรเจ็กต์ของคุณเองเพื่อสร้างระบบที่ซับซ้อนมากขึ้นได้อย่างง่ายดาย วิธีนี้มีข้อเสียเปรียบที่สำคัญประการหนึ่ง - การแนบ IP-นิวเคลียสกับองค์ประกอบพื้นฐาน แต่ละแกน IP ได้รับการปรับให้เหมาะสมสำหรับชุดชิปเฉพาะจากผู้ผลิตเฉพาะ ซึ่งลดความเป็นไปได้อย่างมากในการถ่ายโอนอุปกรณ์ที่สร้างไว้แล้วจากองค์ประกอบหนึ่งไปยังอีกองค์ประกอบหนึ่ง ลักษณะที่ปิดของสถาปัตยกรรม CAD เชิงพาณิชย์ทำให้เป็นไปไม่ได้ที่จะเพิ่มรุ่นอุปกรณ์ที่ใช้งานได้ของคุณเองที่ระดับระบบเพื่อรับรุ่นอุปกรณ์ที่ระดับการโอนการลงทะเบียน (RTL) ตามพื้นฐาน การพัฒนาโมดูลดิจิทัลดำเนินการในรูปแบบของวงจรดิจิทัลที่วาดในเครื่องมือแก้ไขวงจรโดยใช้ไลบรารี CAD ในตัวของผู้ผลิตที่มีองค์ประกอบวงจรพื้นฐาน เช่น ฟลิปฟล็อป ตัวถอดรหัส ตัวนับ ตัวบวก และอื่นๆ

อีกวิธีที่ได้รับความนิยมที่ช่วยให้สามารถเปลี่ยนจากโมเดลการทำงานที่ระดับระบบเป็นโมเดลอุปกรณ์ที่ระดับการถ่ายโอนการลงทะเบียนคือการใช้ภาษาการออกแบบระดับระบบ (SLDL) ภาษาดังกล่าวได้แก่ SystemC, Handel-C, VHDL, Verilog, System Verilog ข้อได้เปรียบหลักคือความเป็นอิสระจากพื้นฐานฮาร์ดแวร์ที่จะใช้อุปกรณ์

ดังนั้นในแง่หนึ่งเมื่อใช้เทคโนโลยี IP-core ผู้พัฒนาฮาร์ดแวร์จะได้รับโซลูชันคุณภาพสูง แต่เชื่อมโยงกับพื้นฐานของฮาร์ดแวร์ที่ใช้งานอุปกรณ์อย่างเคร่งครัด ในทางกลับกัน เมื่อใช้ภาษาคำอธิบายฮาร์ดแวร์ในระดับระบบ การใช้งานอุปกรณ์จะไม่ขึ้นกับฮาร์ดแวร์ จากที่กล่าวมา เป็นไปตามที่ปัจจุบัน สิ่งสำคัญคือการใช้โมดูลดิจิทัลร่วมกันในภาษาคำอธิบายฮาร์ดแวร์และคอร์ IP ของผู้ผลิต (Xilinx, Altera, Actel ฯลฯ) และนักพัฒนาบุคคลที่สามเพื่อเพิ่มความเร็ว ขั้นตอนการออกแบบโมดูลดิจิทัล เมื่อใช้โมดูลดิจิทัลจากผู้ผลิตภายนอก บางครั้งข้อมูลในเอกสารประกอบอาจขาดหายไป

ให้ข้อมูลเกี่ยวกับโมดูลดิจิทัลที่พัฒนาขึ้นสำหรับ FPGA

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

  • ซอฟต์แวร์ - โมดูลดิจิทัลที่พัฒนาขึ้นซึ่งส่งไปยังผู้บริโภคในรูปแบบของคำอธิบายในภาษาคำอธิบายฮาร์ดแวร์ (VHDL, Verilog) หรือ / และพัฒนาใน Schematic Editor เพื่อใช้ในโปรแกรมสำหรับการสังเคราะห์วงจรตรรกะโดยอัตโนมัติและปรับให้เหมาะสมในแง่ของ พารามิเตอร์การทำงาน
  • เฟิร์มแวร์ - โมดูลดิจิทัลที่พัฒนาโดยบริษัทผู้พัฒนาบุคคลที่สาม ซึ่งเรียกว่า IP core ส่งไปยังผู้บริโภคในรูปแบบของวงจรลอจิก (netlist) ตามไลบรารีองค์ประกอบลอจิกของผู้ผลิต FPGA และปรับให้เหมาะสมในแง่ของการทำงาน และพารามิเตอร์ทางไฟฟ้า

ในขั้นตอนของการพัฒนาเอกสารตามประสบการณ์ส่วนตัวจำเป็นต้องออกนอกเหนือจากเอกสารการออกแบบและข้อมูลจำเพาะตามปกติซึ่งดำเนินการตาม GOST 15.101, GOST 15.201, GOST 2.102, GOST 2.114 เอกสารสำหรับแบบจำลองทุกประเภท (ระบบ ลอจิก วงจร) ที่สร้างขึ้นในขั้นตอนการออกแบบอุปกรณ์ดิจิทัลบน FPGA

กล่าวอีกนัยหนึ่ง ชุดเอกสารการออกแบบสำหรับอุปกรณ์ดิจิทัลสำหรับ FPGA นอกเหนือจากไฟล์เฟิร์มแวร์ คำแนะนำในการเขียนโปรแกรม และโครงการที่บันทึกไว้ในซีดี/ดีวีดี ควรมีเอกสารกำกับมาด้วย

โต๊ะ.รายการส่วนเอกสารสนับสนุน

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

นี่คือรายการของส่วน (ตาราง) ที่ควรรวมอยู่ในเอกสารประกอบของโครงการโมดูลดิจิทัลสำหรับ FPGA สำหรับแต่ละส่วน สัญญาณของความจำเป็นในการรวมส่วนในชุดเอกสารจะแสดง:

  • "O" - ส่วนที่ให้มาบังคับ;
  • "R" - ส่วนที่แนะนำสำหรับการจัดส่ง

รูปแบบไฟล์ที่แนะนำสำหรับการส่งเอกสารประกอบ ได้แก่ MS Word, PDF (รูปแบบที่ดีที่สุด), HTML ไฟล์คำอธิบายในภาษาคำอธิบายฮาร์ดแวร์ (VHDL, Verilog) และ/หรือไฟล์ที่พัฒนาใน Schematic Editor มีให้ตามที่ซอฟต์แวร์ออกแบบ CAD กำหนด ข้อยกเว้นอาจเป็นข้อกำหนดเพิ่มเติมในรูปแบบกราฟิก (JPEG, BMP) ของไฟล์วงจรดิจิทัลที่พัฒนาใน Schematic Editor

ข้อมูลทั่วไป

ส่วนนี้อธิบายข้อมูลทั่วไปเกี่ยวกับโมดูลดิจิทัลที่พัฒนาขึ้นในรูปแบบของคำอธิบาย:

  • แผนภาพการทำงานและบล็อก/ส่วนประกอบที่เป็นส่วนประกอบ
  • รีเซ็ตสัญญาณ, การซิงโครไนซ์;
  • อินเทอร์เฟซที่ใช้;
  • ทะเบียนควบคุม;
  • แผนภาพเวลา;
  • การเขียนโปรแกรม

วัตถุประสงค์และขอบเขต

วัตถุประสงค์ของโมดูลดิจิทัลกำหนดขอบเขตของแอปพลิเคชัน

ข้อมูลจำเพาะ

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

คำอธิบายของสัญญาณรีเซ็ต

ข้อมูลโดยละเอียดเกี่ยวกับสัญญาณรีเซ็ตจะได้รับ:

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

คำอธิบายของสัญญาณการซิงโครไนซ์

ข้อมูลโดยละเอียดเกี่ยวกับสัญญาณการซิงโครไนซ์จะได้รับ:

  • คำอธิบายของสัญญาณการซิงโครไนซ์ภายนอก
  • พารามิเตอร์เวลาของสัญญาณการซิงโครไนซ์
  • คำอธิบายสัญญาณการซิงโครไนซ์ภายในและโครงร่างของการก่อตัว
  • ความสัมพันธ์ของเวลาระหว่างสัญญาณการซิงโครไนซ์จากแหล่งต่างๆ

คำอธิบายของอินเทอร์เฟซ

คุณสมบัติของการใช้อินเทอร์เฟซทั้งหมดที่เป็นส่วนหนึ่งของโมดูลดิจิทัลที่พัฒนาขึ้นโดยเฉพาะอย่างยิ่งควรรวมเป็นหนึ่งเดียวสำหรับการจัดระเบียบการโต้ตอบกับโหนดอื่น ๆ ของระบบบนชิป นอกจากนี้ยังมีการเชื่อมโยงอินเทอร์เน็ตไปยังคำอธิบายที่สมบูรณ์ของอินเทอร์เฟซมาตรฐาน หรือคำอธิบายของอินเทอร์เฟซเอง ในขณะนี้ อินเทอร์เฟซไปยัง AMBA, PLB, Wishbone bus ได้รับการยอมรับว่าเป็นอินเทอร์เฟซแบบรวมสำหรับโมดูลดิจิทัล

แผนภาพเวลา

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

คำอธิบายของการลงทะเบียนควบคุม

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

ไดอะแกรมโครงสร้าง (การทำงาน)

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

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

คำอธิบายโดยทั่วไปของคอยล์เย็นประกอบด้วย:

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

คู่มือการเขียนโปรแกรม

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

รุ่นหรือตระกูล FPGA ผู้ผลิต

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

การแสดงโมดูลดิจิทัลสำหรับการออกแบบลอจิก

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

รุ่น RTL

โมดูลดิจิทัลที่อธิบายในชุดย่อยที่สังเคราะห์แล้วของภาษา Verilog หรือ VHDL หรือ/และพัฒนาใน Schematic Editor มีไว้สำหรับใช้ในขั้นตอนการสังเคราะห์ลอจิก FPGA จัดทำขึ้นสำหรับซอฟต์แวร์ในรูปแบบของโครงการประกอบโมดูลดิจิทัลในระบบ CAD ของผู้ผลิต FPGA สำหรับโมดูลดิจิตอลเฟิร์มแวร์ รุ่น RTL มีให้ภายใต้ข้อตกลงแยกต่างหาก

นอกเหนือจากไฟล์โมเดล RTL แล้ว สิ่งต่อไปนี้จะถูกถ่ายโอน:

  • คำแนะนำสำหรับการใช้แบบจำลอง
  • คำอธิบายของบล็อกหน่วยความจำที่รวมอยู่ในโมเดล รวมถึงประเภทของหน่วยความจำ ขนาด จำนวนของบล็อกหน่วยความจำ ชื่อลำดับชั้นของบล็อกหน่วยความจำ
  • อธิบายวิธีสร้างเคอร์เนลที่สร้างไว้ล่วงหน้าเมื่อใช้โปรแกรมเพื่อสร้างเคอร์เนล (เช่น CoreGenerator สำหรับ Xilinx ISE) ในกรณีที่ไม่มีคำอธิบาย อาจมีข้อจำกัดในการออกแบบใหม่และการใช้งาน เนื่องจากขึ้นอยู่กับเทคโนโลยีและผู้ผลิต
  • ในกรณีที่ใช้ไมโครโปรเซสเซอร์จากผู้ผลิต (เช่น จากโปรเซสเซอร์ Altera - Nios จาก Xilinx - Microblaze, ไมโครโปรเซสเซอร์ PowerPC) จำเป็นต้องมีคำอธิบายขั้นตอนการกำหนดค่าคอร์โปรเซสเซอร์และอุปกรณ์ต่อพ่วง
  • ชุดการทดสอบ (ไฟล์ Test Bench) สำหรับตรวจสอบและจำลองโมดูลดิจิทัลที่เขียนใน Verilog หรือ/และ VHDL หรือ/และ System Verilog
  • ข้อมูลเพิ่มเติมอื่นใด

โมเดลลอจิก

โมเดลนี้เป็น netlist ที่อธิบายโดยใช้ภาษา Verilog หรือ VHDL ในพื้นฐานของไลบรารีของผู้ผลิต FPGA และจัดหาให้สำหรับเฟิร์มแวร์โมดูลดิจิทัล

นอกเหนือจากไฟล์โมเดลโลจิคัลแล้ว สิ่งต่อไปนี้จะถูกถ่ายโอน:

  • คำแนะนำในการใช้โมเดลนี้
  • ชุดการทดสอบ (ไฟล์ Test Bench) สำหรับตรวจสอบและจำลองโมดูลดิจิทัลที่เขียนใน Verilog หรือ/และ VHDL หรือ/และ System Verilog
  • คู่มือการทำงานกับชุดการทดสอบสำหรับการสร้างแบบจำลองและการตรวจสอบโมดูลดิจิทัล
  • ข้อมูลเพิ่มเติมอื่นใด

ขีดจำกัดการออกแบบ

ข้อจำกัดการออกแบบมีให้เป็นไฟล์ที่อธิบายชุดข้อจำกัดที่กำหนดในโมดูลดิจิทัลเมื่อรวมอยู่ในโมเดลลอจิกระบบบนชิป ชุดนี้ประกอบด้วยข้อจำกัดสำหรับสัญญาณการซิงโครไนซ์ (ข้อจำกัดของสัญญาณนาฬิกา) ข้อจำกัดด้านเวลา (ข้อจำกัดด้านเวลา) ข้อจำกัดเกี่ยวกับการโต้ตอบของโมดูลดิจิทัลกับโมดูลอื่น ๆ และเงื่อนไขการทำงานของโมดูลดิจิทัล เรื่องย่อ Design Constraints (SDC) หรือรูปแบบ CAD ของผู้ผลิต FPGA เป็นที่ต้องการ

ตัวอย่างรายการข้อจำกัดสำหรับสัญญาณการซิงโครไนซ์:

  • แผนภาพเวลา (รูปคลื่นสัญญาณนาฬิกา);
  • ความไม่เสถียรของความถี่สัญญาณนาฬิกา (Jitter);
  • การเปลี่ยนเฟสของนาฬิกา
  • ระยะเวลาของการเปลี่ยนครั้ง (เวลาเปลี่ยน);
  • แผนภาพเวลาของสัญญาณนาฬิกาที่ได้มา (รูปคลื่นสัญญาณนาฬิกาที่สร้าง);
  • ข้อมูลเพิ่มเติมอื่นใด

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

รายการตัวอย่างการจำกัดเวลา:

  • เวลาที่เกิดสัญญาณที่อินพุต (เวลามาถึงที่อินพุต)
  • เวลาที่ปรากฏของสัญญาณที่เอาต์พุต (เวลาที่กำหนดที่เอาต์พุต);
  • เส้นทางหลายวงจร
  • เส้นทางเท็จ (เส้นทางเท็จ);
  • ระยะเวลาของการเปลี่ยนสัญญาณข้อมูล
  • ข้อมูลเพิ่มเติมอื่นใด

บทสรุป

องค์ประกอบที่กำหนดของเอกสารประกอบสำหรับโมดูลดิจิทัลที่พัฒนาขึ้นสำหรับ FPGA มีให้โดยข้อตกลงระหว่างผู้บริโภคและผู้พัฒนา บ่อยครั้งที่ผู้พัฒนาจัดเตรียมโมดูลดิจิทัลที่อธิบายไว้ใน VHDL, Verilog, System Verilog และ / หรือพัฒนาในโปรแกรมแก้ไขแผนผัง สำหรับเอกสารเพิ่มเติม คำตอบของนักพัฒนาส่วนใหญ่มักจะเป็นดังนี้: “โมดูลดิจิทัลใช้งานได้ ดังนั้นรับไปใช้งาน ไม่มีอะไรยากในการอธิบายวงจรในภาษาของฮาร์ดแวร์ คุณจะเข้าใจมันเอง”

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

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

วรรณกรรม

  1. Denisov A. เคล็ดลับหลายประการในการออกแบบอุปกรณ์ดิจิทัลบน VHDL สำหรับ FPGA // ส่วนประกอบและเทคโนโลยี 2552. ครั้งที่ 12.
  2. GOST 2.102-68 ESKD ประเภทและความสมบูรณ์ของเอกสารการออกแบบ
  3. GOST 2.114-95 ESKD ข้อมูลจำเพาะ
  4. GOST 15.101-98 ระบบสำหรับการพัฒนาและการผลิตผลิตภัณฑ์ ขั้นตอนการปฏิบัติงานวิจัยทางวิทยาศาสตร์.
  5. GOST R 15.201-20-00 ระบบสำหรับการพัฒนาและการผลิตผลิตภัณฑ์ ผลิตภัณฑ์เพื่อวัตถุประสงค์ทางอุตสาหกรรมและทางเทคนิค ขั้นตอนการพัฒนาและการผลิตผลิตภัณฑ์
บอกเพื่อน