การออกแบบสำหรับ FPGA ต้องใช้ภาษาคำอธิบายฮาร์ดแวร์ (HDL) HDL ไม่มีอะไรที่เหมือนซีในขณะที่โปรแกรม C เป็นชุดคำสั่งต่อเนื่องและต้องบิดตัวเองเพื่อให้ได้การประมวลผลแบบขนาน HDL อธิบายวงจรที่เกิดขึ้นพร้อมกัน มันเป็นโลกที่แตกต่างกันมากและถ้าคุณพยายามสร้างวงจรใน FPGA ในขณะที่คิดเหมือนนักพัฒนาซอฟต์แวร์มันจะเจ็บ
MCU มีเวลา จำกัด เพื่อให้งานสำเร็จคุณต้องมีตัวประมวลผลรอบเพิ่มเติม นาฬิกามีขีด จำกัด ที่แท้จริงกับความถี่ของพวกมันดังนั้นมันจึงง่ายที่จะชนกำแพงคำนวณ อย่างไรก็ตาม FPGA นั้นมีพื้นที่ จำกัด เพื่อที่จะทำงานให้สำเร็จมากขึ้นคุณเพียง แต่เพิ่มวงจรมากขึ้น หาก FPGA ของคุณไม่ใหญ่พอคุณสามารถซื้ออันที่ใหญ่กว่าได้ มันยากมากที่จะสร้างวงจรที่ไม่เหมาะกับ FPGA ที่ใหญ่ที่สุดและแม้ว่าคุณจะมีโน้ตของแอพที่อธิบายถึงวิธีการเชื่อมโยงห่วงโซ่ FPGA กับเดซี่
FPGA เน้นวิธีการดำเนินการแบบขนานมากขึ้น บางครั้งคุณต้องกังวลว่า ISR ของ MCU ของคุณใช้เวลานานแค่ไหนในการให้บริการการขัดจังหวะและไม่ว่าคุณจะสามารถบรรลุข้อ จำกัด ตามเวลาจริงหรือไม่ อย่างไรก็ตามใน FPGA นั้นมี Finite State Machines (FSM) จำนวนมากที่ทำงานอยู่ตลอดเวลา พวกมันเหมือนกับ "femto-controllers" เหมือนกลุ่มเมฆควบคุม พวกเขากำลังทำงานพร้อมกันดังนั้นจึงไม่ต้องกังวลว่าจะพลาดการขัดจังหวะ คุณอาจมี FSM เพื่อเชื่อมต่อกับ ADC, อีก FSM เพื่อเชื่อมต่อไปยังที่อยู่ของไมโครคอนโทรลเลอร์ / บัสข้อมูล, FSM อื่นเพื่อสตรีมข้อมูลไปยังตัวแปลงสัญญาณสเตอริโอ แต่ FSM อีกตัวเพื่อบัฟเฟอร์ dataflow จาก ADC ไปยังตัวแปลงสัญญาณ ... จำเป็นต้องใช้โปรแกรมจำลองเพื่อให้แน่ใจว่า FSM ทั้งหมดร้องประสานกัน
FPGAs เป็นความฝันอันเปียกชื้นของนักออกแบบเค้าโครง PCB สามารถกำหนดค่าได้อย่างมาก คุณสามารถมีอินเตอร์เฟสตรรกะที่แตกต่างกันมากมาย (LVTTL, LVCMOS, LVDS, ฯลฯ ) ของแรงดันไฟฟ้าที่แตกต่างกันและแม้กระทั่งความแข็งแกร่งของไดรฟ์ (ดังนั้นคุณจึงไม่จำเป็นต้องมีตัวต้านทานการเลิกจ้างซีรีส์) หมุดสามารถถอดเปลี่ยนได้ คุณเคยเห็นที่อยู่รถบัส MCU ที่หมุดกระจายอยู่รอบ ๆ ชิป? ผู้ออกแบบ PCB ของคุณอาจต้องวางจุดต่าง ๆ เพื่อผูกสัญญาณทั้งหมดเข้าด้วยกันอย่างถูกต้อง ด้วย FPGA ผู้ออกแบบ PCB จะสามารถส่งสัญญาณไปยังชิปในลำดับใดก็ได้ที่สะดวกและจากนั้นการออกแบบนั้นสามารถใส่หมายเหตุประกอบกลับไปยังห่วงโซ่เครื่องมือ FPGA
FPGA ยังมีของเล่นแฟนซีสวย ๆ มากมาย หนึ่งในรายการโปรดของฉันคือ Digital Clock Manager ในชิป Xilinx คุณป้อนสัญญาณนาฬิกาหนึ่งสัญญาณและสามารถรับสัญญาณได้อีกสี่สัญญาณโดยใช้ตัวคูณความถี่และตัวแบ่งความถี่หลากหลายซึ่งทั้งหมดมีรอบการทำงาน 50% ที่บริสุทธิ์และ 100% ในเฟส ... และยังสามารถคิดนาฬิกาที่เอียง เกิดขึ้นจากการขยายพันธุ์ล่าช้าไปยังชิปภายนอก!
แก้ไข (ตอบกลับสู่ภาคผนวก):
คุณสามารถวาง "แกนนุ่ม" ลงใน FPGA คุณกำลังเชื่อมต่อวงจรไมโครคอนโทรลเลอร์เข้าด้วยกันหรือคุณอาจทิ้งวงจรของคนอื่นลงในการออกแบบของคุณเช่น PicoBlaze ของ Xilinx หรือ MicroBlaze หรือ Nios ของ Altera แต่เช่นเดียวกับคอมไพเลอร์ C-> VHDL แกนเหล่านี้มีแนวโน้มที่จะบวมเล็กน้อยและช้าเมื่อเทียบกับการใช้ FSM และ datapath หรือไมโครคอนโทรลเลอร์ตัวจริง เครื่องมือในการพัฒนาสามารถเพิ่มความซับซ้อนที่สำคัญให้กับกระบวนการออกแบบซึ่งอาจเป็นสิ่งที่ไม่ดีเมื่อ FPGA เป็นชิปที่ซับซ้อนมากอยู่แล้ว
นอกจากนี้ยังมี FPGA บางตัวที่มี "คอร์ฮาร์ด" ฝังอยู่ในนั้นเช่นซีรีย์ Xirtx ของ Virtex4 ที่มีไอบีเอ็ม PowerPC ของแท้ที่ทุ่มเทกับผ้า FPGA รอบตัว
EDIT2 (ตอบกลับความคิดเห็น):
ฉันคิดว่าฉันเห็นตอนนี้ ... คุณกำลังถามเกี่ยวกับการเชื่อมต่อ MCU ไม่ต่อเนื่องกับ FPGA; นั่นคือสองชิปที่แยกจากกัน มีเหตุผลที่ดีในการทำเช่นนี้; FPGA ที่มีแกนแข็งและขนาดใหญ่พอที่จะรองรับแกนนุ่มที่เหมาะสมมักจะเป็นสัตว์ประหลาดที่มีหมุดหลายร้อยที่ต้องใช้แพคเกจ BGA ซึ่งเพิ่มความยากในการออกแบบ PCB ได้อย่างง่ายดายโดยปัจจัย 10
อย่างไรก็ตาม C นั้นง่ายกว่ามากดังนั้น MCUs ต้องทำงานร่วมกับ FPGA อย่างแน่นอน เนื่องจากง่ายต่อการเขียน C คุณอาจเขียน "สมอง" หรืออัลกอริธึมกลางใน MCU ในขณะที่ FPGA สามารถใช้อัลกอริทึมย่อยที่อาจต้องเร่งความเร็ว ลองใส่สิ่งต่าง ๆ ที่เปลี่ยนเป็นรหัส C เพราะง่ายต่อการเปลี่ยนแปลงและปล่อยให้ FPGA เป็นประเภทเฉพาะที่ไม่เปลี่ยนแปลงบ่อยนัก
เครื่องมือออกแบบ MCU ยังใช้งานง่ายขึ้น เครื่องมือออกแบบใช้เวลาสร้างหลายนาทีในการสร้างไฟล์ FPGA บิตแม้จะเป็นการออกแบบที่เรียบง่าย แต่โปรแกรม MCU ที่ซับซ้อนมักใช้เวลาสองสามวินาที มีมากน้อยไปกว่าที่จะผิดพลาดกับ MCU ดังนั้นพวกเขาจึงง่ายต่อการดีบัก ... ฉันไม่สามารถอธิบายได้ว่า FPGA ที่ซับซ้อนสามารถเป็นอย่างไร คุณต้องได้รับแผ่นข้อมูลสำหรับสิ่งที่คุณมีจริงๆและคุณควรพยายามอ่านทุกหน้า ฉันรู้ว่ามันเป็นไม่กี่ร้อยหน้า ... ทำมันต่อไป
วิธีที่ดีที่สุดในการเชื่อมต่อคือการใช้ MCU พร้อมที่อยู่ภายนอกและบัสข้อมูล จากนั้นคุณสามารถแมปหน่วยความจำวงจร FPGA ใน MCU และเพิ่ม "รีจิสเตอร์" ของคุณเองที่แต่ละอันมีที่อยู่ของตัวเอง ตอนนี้ FPGA สามารถเพิ่มอุปกรณ์ต่อพ่วงที่กำหนดเองได้เช่นตัวจับเวลาแบบ 32 บิตที่สามารถสลักได้ทั้ง 4 ไบต์ในครั้งเดียวเมื่ออ่านไบต์แรกเพื่อป้องกันการโอเวอร์โฟลว์ระหว่างการอ่านแบบ 8 บิต นอกจากนี้คุณยังสามารถใช้เป็นกาวตรรกะในการแมปหน่วยความจำเพิ่มเติมอุปกรณ์ต่อพ่วงจากชิปอื่น ๆ เช่น ADC แยก
ในที่สุด MCUs บางตัวได้รับการออกแบบมาเพื่อใช้กับ "ต้นแบบภายนอก" เช่น FPGA Cypress สร้าง MCU USB สองสามตัวที่มีภายใน 8051 แต่จุดประสงค์ก็เพื่อให้ข้อมูล USB ที่จะผลิต / บริโภคโดยเช่น FPGA