ตัดสินโดยคำถามอื่นของคุณคุณเป็นคน Xilinx ดังนั้นฉันขอแนะนำให้รับแผ่นข้อมูลสำหรับชิป Xilinx ของคุณและไปที่บทคำอธิบายการใช้งาน สำหรับชิป Spartan 3 ที่ฉันใช้มันเป็น 42 หน้าของการอ่านสนุก มันมีรายละเอียดที่แน่นอนว่าส่วนประกอบอยู่ใน FPGA - IOBs, CLBs, ชิ้น, LUTs, Block RAM, ตัวคูณ, ตัวจัดการนาฬิกาดิจิตอล, เครือข่ายนาฬิกา, การเชื่อมต่อและข้อมูลการกำหนดค่าพื้นฐานบางอย่าง คุณต้องเข้าใจข้อมูลนี้หากคุณต้องการรู้ว่า "คอมไพล์ HDL" มีหน้าตาเป็นอย่างไร
เมื่อคุณคุ้นเคยกับสถาปัตยกรรมของ FPGA แล้วคุณสามารถเข้าใจกระบวนการนี้ ก่อนอื่นการออกแบบ HDL ของคุณนั้นทำงานผ่านเครื่องมือสังเคราะห์ซึ่งทำให้ HDL ของคุณกลายเป็น RTL โดยทั่วไป จากนั้น Mapper จะประมวลผลผลลัพธ์จากการสังเคราะห์ "ทำการแมป" ลงบนชิ้นส่วนของสถาปัตยกรรม FPGA จากนั้นเราเตอร์จะวางตำแหน่งและเส้นทาง (PAR) ซึ่งจะระบุตำแหน่งที่ชิ้นส่วนเหล่านั้นไปและวิธีการเชื่อมต่อ ท้ายที่สุดผลลัพธ์จาก PAR จะถูกเปลี่ยนเป็นไฟล์ BIT โดยทั่วไปแล้วไฟล์ BIT นี้จะถูกแปลงในบางวิธีเพื่อให้สามารถโหลดลงในชิปแฟลชเพื่อให้ FPGA สามารถโปรแกรมได้โดยอัตโนมัติเมื่อเปิดเครื่อง
ไฟล์บิตนี้อธิบายโปรแกรม FPGA ทั้งหมด ตัวอย่างเช่น CLBs ใน Spartan 3 ประกอบด้วยชิ้นซึ่งประกอบด้วย LUT ซึ่งเป็นเพียง SRAM 16 บิต 1 บิต ดังนั้นสิ่งหนึ่งที่ไฟล์ BIT จะมีคือข้อมูลที่ตรงเข้าไปในแต่ละที่อยู่ของ SRAM อีกสิ่งหนึ่งที่ไฟล์ BIT บรรจุคือแต่ละอินพุตของ LUT นั้นเชื่อมต่อกับเมทริกซ์การเชื่อมต่ออย่างไร ไฟล์ BIT จะมีค่าเริ่มต้นที่เข้าไปใน block RAM มันจะอธิบายสิ่งที่เชื่อมต่อกับชุดที่กำหนดและรีเซ็ตพินของแต่ละฟล็อปฟล็อปในแต่ละชิ้น มันจะอธิบายวิธีการเชื่อมโยงห่วงโซ่การดำเนินการเชื่อมต่อ มันจะอธิบายถึงอินเตอร์เฟสตรรกะสำหรับแต่ละ IOB (LVTTL, LVCMOS, LVDS, ฯลฯ ) มันจะอธิบายตัวต้านทานแบบ pull-up หรือ pull-down ใด ๆ ในตัว โดยทั่วไปทุกอย่าง
สำหรับ Xilinx หน่วยความจำของ FPGA จะถูกล้างเมื่อเริ่มต้นการกำหนดค่า (เช่น PROG_B ถูกยืนยัน) เมื่อหน่วยความจำชัดเจน INIT_B จะสูงเพื่อระบุว่าเฟสเสร็จสมบูรณ์ จากนั้นไฟล์ BIT จะถูกโหลดผ่าน JTAG หรืออินเตอร์เฟสแฟลชชิป เมื่อโหลดโปรแกรมแล้ว Global Set / Reset (GSR) จะกะพริบการรีเซ็ต flops พลิกทั้งหมดกลับสู่สถานะเริ่มต้น จากนั้นขา DONE จะสูงเพื่อระบุว่าการกำหนดค่าเสร็จสมบูรณ์ รอบหนึ่งนาฬิกาในเวลาต่อมาสัญญาณ Global Three-State (GTS) จะถูกปล่อยออกมาเพื่อให้สามารถขับเคลื่อนเอาต์พุตได้ หนึ่งรอบนาฬิกาในเวลาต่อมาการเปิดใช้งานการเขียนทั่วโลก (GWE) จะช่วยให้ฟลิปฟล็อปสามารถเริ่มเปลี่ยนสถานะเพื่อตอบสนองต่ออินพุต โปรดทราบว่าแม้กระบวนการกำหนดค่าสุดท้ายนี้สามารถจัดลำดับใหม่ได้เล็กน้อยขึ้นอยู่กับแฟล็กที่ตั้งค่าในไฟล์ BIT
แก้ไข:
ฉันควรเพิ่มด้วยว่าเหตุผลที่โปรแกรม FPGA ไม่ถาวรนั้นเป็นเพราะโครงสร้างแบบลอจิกประกอบด้วยหน่วยความจำระเหย (เช่น SRAM) ดังนั้นเมื่อ FPGA สูญเสียพลังงานโปรแกรมจะถูกลืม นั่นเป็นเหตุผลที่พวกเขาต้องการเช่นชิปแฟลชเป็นที่เก็บข้อมูลแบบไม่ลบเลือนสำหรับโปรแกรม FPGA เพื่อให้สามารถโหลดได้ทุกครั้งที่เปิดอุปกรณ์