FPGA ขั้นตอนแรก


11

อย่างนี้เป็นความต่อเนื่องของคำถามของฉันบน FPGA กว่าที่นี่

ในที่สุดฉันก็เลือกDigilent Atlysกับ Spartan 6 FPGA ฉันไม่เคยมีประสบการณ์เกี่ยวกับ FPGA มาก่อนถึงแม้ว่าฉันจะทำงานกับไมโครคอนโทรลเลอร์จำนวนหนึ่ง

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

ฉันต้องการทำบางอย่างของการเขียนโปรแกรมการจำลองการสังเคราะห์และนี่คือสิ่งที่ฉันต้องการจะทำ

  1. สร้างความถี่คี่พูด 54Mhz จาก FPGA (มันทำงานบนนาฬิกา 100Mhz) และกำหนดเส้นทางไปยังหนึ่งในหมุด ฉันอาจจะต้องใช้ DCM หรือ PLL สำหรับเรื่องนี้ แต่ไม่รู้จะเริ่มต้นอย่างไรที่นี่?

  2. ติดตั้ง I2C อ่านเขียนจาก FPGA

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

ฉันเดาว่าควรเริ่มต้นให้ฉันเข้าสู่โลกของ FPGA

คำตอบ:


13

ตัวอย่างรหัส

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

นอกจากนี้อย่าลืม Application Notes มากมายที่มีอยู่ใน Xilinx พวกเขามีประโยชน์มากกับอุปกรณ์ของตัวเอง

การออกแบบการไหล

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

  1. รายการออกแบบ - ในกรณีของคุณ Verilog
  2. การจำลองหน้าที่ - ใช้เครื่องมือต่าง ๆ
  3. การสังเคราะห์ - ในกรณีของคุณโดยใช้เครื่องมือ Xilinx ISE
  4. การจำลอง - เพื่อตรวจสอบการออกแบบหลังการสังเคราะห์ของคุณเพราะบางแง่มุมของ Verilog ไม่สามารถสังเคราะห์ได้
  5. Place & Route - ใช้เครื่องมือ Xilinx ISE
  6. การติดตั้งใช้งาน - ดาวน์โหลดการออกแบบไปยัง FPGA
  7. การทดสอบ

ส่วนประกอบ FPGA

สำหรับการใช้องค์ประกอบ FPGA นั้นมีวิธีการใช้งานที่แตกต่างกัน แต่สมมติว่าคุณใช้รายการออกแบบ Verilog คุณสามารถอนุมานหรือสร้างอินสแตนซ์ของส่วนประกอบต่าง ๆ ได้

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

โดยการทำq <= a + bหรือq = a + bคุณสามารถอนุมาน adder ทั้งสองจะอนุมาน adder แต่มีความแตกต่างในเมื่อคุณใช้ไวยากรณ์การบล็อก / non-blocking

โดยทั่วไปแล้วการสร้างอินสแตนซ์เกี่ยวข้องกับการเรียกคอมโพเนนต์ไลบรารีที่แน่นอนในรหัส ส่วนประกอบบางอย่างไม่สามารถอนุมานได้ง่ายในรหัส - เช่น DCM คุณสามารถใช้เครื่องมือ ISE และตัวอย่างเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับสิ่งนี้

รายการองค์ประกอบที่แท้จริงของตัวเองนั้นจัดทำโดย Xilinx ในคู่มือไลบรารี

protip

วิธีที่ดีที่สุดในการเรียนรู้สิ่งนี้คือการทดลองใช้โค้ดสั้น ๆ และทำการสังเคราะห์ ISE เพื่อดูว่ามันคายออกมา นอกจากนี้ยังมีตัวอย่างมากมายในชุดเครื่องมือ ISE เอง


5

อ้างอิงแบบสัมบูรณ์ของคุณจะเป็นคู่มือการใช้งานสปาร์ตัน 6 ตัวอย่างเช่นคู่มือ Clocking Resources (UG382) ครอบคลุมถึงวิธีการกำหนดค่า DCM สำหรับตัวอย่างของลักษณะที่แท้จริงของรหัส ISE มีฐานข้อมูลของพวกเขา เปิดเทมเพลตภาษา (หลอดไฟในแถบเครื่องมือ) จากนั้นมองหาภาษา (VHDL หรือ Verilog) -> การทำให้เป็นสัญญาณของอุปกรณ์ดั้งเดิม -> ตระกูลชิป (สปาร์ตัน -6) -> ส่วนประกอบของนาฬิกา

รายละเอียดเฉพาะสำหรับบอร์ดของคุณนั้นมีอยู่ใน Digilent โดยเฉพาะอย่างยิ่งคุณจะต้องการ UCF (ซึ่งตั้งชื่อ IO ทั้งหมด) และคู่มืออ้างอิง (ซึ่งอธิบายวงจรต่อพ่วง)

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


คุณถนัดด้าน VHDL หรือไม่? เกี่ยวกับ UCF เหตุใดจึงเป็นสิ่งสำคัญสำหรับการทำงานกับบอร์ด Digilent
Kevin Boyd

1
ฉันไม่เชี่ยวชาญเช่นนี้ - เพียงแค่ไม่ได้ศึกษา Verilog UCF เป็นไฟล์ที่อธิบายว่าพินพอร์ตของคุณเชื่อมต่อกับอะไรรวมถึงความต้องการตอกบัตร ถ้าไม่มีมันหมุดจะถูกกำหนดแบบสุ่มซึ่งจะไม่ตรงกับบอร์ดที่มีอยู่
Yann Vernier

ฉันเข้าใจส่วนการกำหนดพินแล้วสิ่งที่เกี่ยวกับความต้องการตอกบัตร
Kevin Boyd

1
ข้อ จำกัด เรื่องเวลาครอบคลุมสิ่งต่าง ๆ เช่นความถี่สัญญาณนาฬิกาการตั้งค่าและเวลาค้างไว้ คุณจะยังได้รับข้อมูลในการวิเคราะห์เวลา แต่การระบุข้อกำหนดในไฟล์ข้อ จำกัด ช่วยให้เครื่องมือตรวจจับเมื่อพวกเขาล้มเหลวและอาจพยายามให้หนักขึ้นเพื่อตอบสนองความต้องการของคุณเมื่อถึงเส้นแบ่ง
Yann Vernier

1

สำหรับนาฬิกาคุณใช้ megacore DLL / PLL


Spartan 6 มี DCM และ PLL แล้วยังไม่พบ DLL หลังจากค้นหาฟอรัมฉันพบว่า Xilinx มีเครื่องมือชื่อ Core Generator ที่สามารถกำหนดค่าเพื่อสร้างทรัพยากรนาฬิกา
Kevin Boyd
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.