มีเกณฑ์สองข้อที่คุณสามารถใช้ประเมินโครงการดิจิทัลที่ช่วยคุณตัดสินใจว่าส่วนใดที่ตรงกับเกณฑ์ของคุณมากที่สุด สิ่งแรกคือขนาด / ความซับซ้อนของการออกแบบ - เกี่ยวข้องกับตรรกะมากเพียงใด ประการที่สองคือข้อกำหนดอินพุทและเอาท์พุทในแง่ของการนับพิน ความเร็วเป็นปัจจัยในถ้าคุณสามารถประเมินสิ่งที่ฟังก์ชั่นที่ช้าที่สุดของคุณจะเป็น เครื่องมือของผู้จำหน่าย (Altera Quartus II, Xilinx ISE, ฯลฯ ) จะช่วยคุณได้เมื่อคุณเข้าสู่ ballpark ที่ถูกต้อง
PAL / PLA / GAL: สิ่งเหล่านี้มีจุดประสงค์เพื่อแทนที่วงจรขนาดเล็กถึงขนาดกลางซึ่งโดยปกติคุณอาจนำไปใช้เป็นชิปตรรกะ LSI (7400, 4000 ซีรี่ส์) สิ่งเหล่านี้สามารถนำเสนอเค้าโครงบอร์ดที่ดีขึ้นเนื่องจาก I / O remapping และฟังก์ชันลอจิกแบบง่ายมากมาย ชิปเหล่านี้มีหน่วยความจำแบบไม่ลบเลือน (หรือฟิวส์แบบตั้งโปรแกรมได้ครั้งเดียว) และไม่ต้องใช้เวลาในการปรับแต่ง พวกเขาอาจไม่มีองค์ประกอบการจัดเก็บข้อมูล
CPLD: เหล่านี้เป็นลูกพี่ลูกน้องที่ใหญ่กว่าของ PLA การออกแบบอาจเป็นเครื่องจักรขนาดเล็กหรือแม้แต่แกนประมวลผลขนาดเล็กมาก ชิป CPLD ส่วนใหญ่ที่ฉันเคยเห็นไม่มี SRAM บนชิป แต่ Cypress CPLD ที่คุณเชื่อมโยงนั้นมีขนาดใหญ่ CPLD มีแนวโน้มที่จะตั้งโปรแกรมได้อีกครั้งด้วยหน่วยความจำแฟลชและพวกเขายังไม่ต้องใช้เวลาในการกำหนดค่าเมื่อเปิดเครื่อง
FPGA: ไม่เหมือนกับ CPLD บล็อกลอจิกใช้ SRAM แทนหน่วยความจำแฟลชทำให้การทำงานของลอจิกเร็วขึ้น ข้อเสียที่สำคัญของ FPGA คือเนื่องจากการกำหนดค่าจะถูกเก็บไว้ใน SRAM ทุกครั้งที่มีการเปิดใช้งานอุปกรณ์ FPGA จะต้องโหลดการเขียนโปรแกรมลงใน SRAM นี้ ขึ้นอยู่กับขนาดของการออกแบบและความเร็วในการจัดเก็บข้อมูลแบบไม่ลบเลือนของคุณซึ่งอาจทำให้เกิดความล่าช้าที่เห็นได้ชัดจากการเปิดเครื่องเพื่อให้ทำงานได้อย่างเต็มที่ FPGA บางตัวมีแฟลชในตัวสำหรับการจัดเก็บข้อมูล แต่ส่วนใหญ่ใช้ชิปหน่วยความจำแยกต่างหาก FPGAs มักจะมีตัวคูณแบบมีสายฮาร์ด PLL และฟังก์ชั่นลอจิกอื่น ๆ เพื่อปรับปรุงความเร็วในการคำนวณ นอกจากนี้ยังมีบล็อก RAM ขนาดใหญ่บนชิปอีกด้วย คุณจะสามารถใช้ข้อมูลจำเพาะ I / O ประสิทธิภาพสูงเช่น LVDS, PCI และ PCI-Express
FPGA กับ Microprocessor Hard Core: ฉันไม่คุ้นเคยกับสิ่งเหล่านี้ แต่ฉันคิดว่าการออกแบบของคุณจะเน้นไปที่การเขียนโปรแกรมไมโครคอนโทรลเลอร์และ FPGA จะเพิ่มไมโครคอนโทรลเลอร์ ชิ้นส่วนที่คุณระบุทำให้ดูเหมือนว่าคุณจะเริ่มต้นการออกแบบของคุณด้วยไมโครคอนโทรลเลอร์และ FPGA จากนั้นรวมสองส่วนเข้าด้วยกันเป็นชิป / แพ็คเกจ
วิธีการตัดสินใจสิ่งที่ถูกต้องสำหรับคุณ:
วิธีที่ดีที่สุดคือให้โค้ดของคุณ (Verilog / VHDL) เสร็จสิ้นจากนั้นใช้เครื่องมือของผู้ขายเพื่อลองและใส่เข้าไปในส่วนที่เล็กที่สุดเท่าที่จะเป็นไปได้ ฉันรู้ว่าเครื่องมือของ Altera ช่วยให้คุณสามารถเปลี่ยนเป้าหมายการเขียนโปรแกรมได้อย่างง่ายดายดังนั้นคุณสามารถเลือก FPGA ที่มีขนาดเล็กลงแล้ว CPLD ที่เล็กลงจนกระทั่งการใช้งานออกแบบของคุณใกล้ถึง 75% หากคุณต้องการประสิทธิภาพลองเลือกอุปกรณ์ที่มีคุณสมบัติ (ตัวคูณเร็ว) ที่ลดความต้องการความเร็วของตรรกะ อีกครั้งเครื่องมือของผู้ขายจะช่วยคุณระบุว่าคุณต้องการอัปเกรดหรือสามารถลดระดับได้หรือไม่
ปัจจัยอีกส่วนหนึ่งที่ใช้คือความง่ายในการใช้งาน การใช้ตรรกะ PAL / PLA / GAL น่าจะเป็นความพยายามมากกว่าการสร้างฟังก์ชั่นโดยใช้ประตูแยกแบบไม่ต่อเนื่อง (74HC *, 4000, ฯลฯ ) โดยทั่วไปแล้ว CPLD ต้องการแรงดันไฟฟ้าเพียงแหล่งเดียวและไม่ต้องการวงจรเพิ่มเติม พวกเขาเป็นอิสระอย่างมีประสิทธิภาพ FPGAs เริ่มใช้แหล่งจ่ายไฟหลายตัวสำหรับ I / O และแกนตรรกะ, มาตรฐาน I / O ที่ซับซ้อน, หน่วยความจำโปรแกรมแยกต่างหาก, PCB หลายชั้น (> 2) PCB และแพ็คเกจ BGA
ขั้นตอนในการจำกัดความต้องการของการออกแบบให้แคบลง ได้แก่ :
ระบุอินพุตและเอาต์พุตทั้งหมดสำหรับ FPGA / CPLD ของคุณ นี่เป็นส่วนที่ง่ายของขั้นตอนการออกแบบ ด้วยวิธีนี้คุณจะรู้ได้ว่าคุณกำลังมองหาแพคเกจใดและคุณสามารถตัดมันได้แค่ไหน
วาดแผนภาพบล็อกของตรรกะภายใน หากบล็อกของคุณดูเรียบง่าย (แต่ละบล็อกจะมีประตูตรรกะและรีจิสเตอร์เต็มมือ) คุณอาจใช้ CPLD ได้ อย่างไรก็ตามหากบล็อกของคุณมีป้ายกำกับเช่น "Ethernet transciever", "อินเตอร์เฟส PCI-Express x16", "ตัวควบคุม DDR2" หรือ "h264 Encode / Decode" คุณก็เกือบจะมอง FPGA และใช้ HDL
- ดูและดูว่าอินเทอร์เฟซของคุณมีข้อกำหนด I / O พิเศษเช่นแรงดันไฟฟ้าพิเศษ LVDS, DDR หรือ SERDES ความเร็วสูง การได้รับชิปที่รองรับนั้นง่ายกว่าการรับชิปนักแปลเพิ่มเติม
ตัวอย่างการใช้งาน CPLD:
- PWM หลายช่องทางพร้อมอินเตอร์เฟส SPI
- I / O Expander
- การถอดรหัสพื้นที่ที่อยู่ของ CPU
- นาฬิกา (รักษาเวลา)
- แสดง Multiplexors
- DSP ง่าย
- โปรแกรมง่ายๆบางโปรแกรมสามารถแปลงเป็นการออกแบบ CPLD
ตัวอย่างแอพพลิเคชัน Hobby ของ FPGA:
- การออกแบบระบบขนาดเล็กบนชิป (SoC)
- วีดีโอ
- บริดจ์โปรโตคอลที่ซับซ้อน
- การประมวลผลสัญญาณ
- การเข้ารหัส / ถอดรหัส
- การจำลองระบบมรดก
- เครื่องวิเคราะห์ตรรกะ / เครื่องกำเนิดลวดลาย
สำหรับงานอดิเรกส่วนใหญ่คุณจะถูก จำกัด FPGA ค่อนข้างน้อยยกเว้นว่าคุณต้องการบัดกรีแพ็คเกจ BGA ฉันจะเลือกระหว่าง CPLD ขนาดใหญ่หรือ FPGA ราคาถูกและความต้องการด้านขนาด / ความเร็วจะเป็นตัวกำหนดว่าฉันต้องการอะไร