ตรรกะลอจิกที่ตั้งโปรแกรมได้ของความซับซ้อนที่แตกต่างกันใช้สำหรับอะไร?


10

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

  1. PAL / PLA / GAL : อะเรย์ลอจิกที่ตั้งโปรแกรมได้; ดูเหมือนว่าจะปรากฏเป็น'Embedded - PLDs'ที่ Digikey ซึ่งครอบคลุม 10/8 I / O แบบอะซิงโครนัส (ATF16V8C) ถึง 50MHz, 192 macrocell, (CY7C341B) และส่วนใหญ่จะสามารถโปรแกรมใหม่ได้
  2. CPLD : อุปกรณ์ลอจิกที่ตั้งโปรแกรมได้ที่ซับซ้อน; Digikey แสดงรายการดังกล่าวซึ่งมีอยู่ใน 7.5ns 10 I / O (ATF750C) ถึง 233 MHz, 428 I / O "CPLDs ที่ FPGA Densities" (CY39100V484B)
  3. FPGA : อาร์เรย์เกทที่ตั้งโปรแกรมได้; มีอยู่ใน 58 I / O (XC2064) ถึง 1023 I / O BGA สัตว์ (EP1S80F1508C7N)
  4. FPGA พร้อม hard MCU : นี่คือเมื่อมีการวาง MCU ในร่างกาย FPGA IC โดยไม่เลียนแบบ

คำพูดของ Wikipedia:

ความแตกต่างระหว่าง FPGAs และ CPLDs คือ FPGAs นั้นขึ้นอยู่กับตาราง Look-up (LUTs) ในขณะที่ CPLDs ทำหน้าที่เชิงตรรกะกับ sea-of-gates (เช่นผลรวมของผลิตภัณฑ์) CPLD มีไว้สำหรับการออกแบบที่ง่ายกว่าในขณะที่ FPGA นั้นมีไว้สำหรับการออกแบบที่ซับซ้อนมากขึ้น โดยทั่วไป CPLD เป็นตัวเลือกที่ดีสำหรับแอปพลิเคชั่นลอจิคัลเชิงซ้อนแบบกว้าง ๆ ในขณะที่ FPGA เหมาะสำหรับเครื่องจักรขนาดใหญ่ (เช่นไมโครโปรเซสเซอร์)

นี้ไม่ได้อธิบายความแตกต่างระหว่างการใช้233 MHz, 400 I / O CPLDและFPGA เทียบเคียง ; หรือระหว่าง192 macrocell PLDและCPLD ที่เทียบเท่ากัน ฉันไม่สามารถ grep แนวทางที่เชื่อถือได้ซึ่งจะ จำกัด ตัวเลือกการออกแบบ โปรดทราบว่าในปัจจุบันฉันไม่มีแอปพลิเคชันที่เฉพาะเจาะจงในใจ แต่มักจะสงสัยว่า "ฉันจะใช้ทำอะไร"

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


XC2064 เป็นส่วนโบราณ ฉันไม่รู้ว่า CY7C341B และ CY39100V484B ยังคงทำอยู่หรือไม่ คุณควรพิจารณาว่าเมื่อทำการเปรียบเทียบ / ตัดสินใจใด ๆ
Brian Carlton

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

คำแนะนำที่ดี @ChrisStratton นี่เป็นสิ่งแรกที่ฉันตรวจสอบกับชิ้นส่วนส่วนใหญ่ แต่ก็ยังดีที่รู้ว่าเป็นปัญหาโดยเฉพาะกับ PLD
tyblu

คำตอบ:


7

มีเกณฑ์สองข้อที่คุณสามารถใช้ประเมินโครงการดิจิทัลที่ช่วยคุณตัดสินใจว่าส่วนใดที่ตรงกับเกณฑ์ของคุณมากที่สุด สิ่งแรกคือขนาด / ความซับซ้อนของการออกแบบ - เกี่ยวข้องกับตรรกะมากเพียงใด ประการที่สองคือข้อกำหนดอินพุทและเอาท์พุทในแง่ของการนับพิน ความเร็วเป็นปัจจัยในถ้าคุณสามารถประเมินสิ่งที่ฟังก์ชั่นที่ช้าที่สุดของคุณจะเป็น เครื่องมือของผู้จำหน่าย (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

ขั้นตอนในการจำกัดความต้องการของการออกแบบให้แคบลง ได้แก่ :

  1. ระบุอินพุตและเอาต์พุตทั้งหมดสำหรับ FPGA / CPLD ของคุณ นี่เป็นส่วนที่ง่ายของขั้นตอนการออกแบบ ด้วยวิธีนี้คุณจะรู้ได้ว่าคุณกำลังมองหาแพคเกจใดและคุณสามารถตัดมันได้แค่ไหน

  2. วาดแผนภาพบล็อกของตรรกะภายใน หากบล็อกของคุณดูเรียบง่าย (แต่ละบล็อกจะมีประตูตรรกะและรีจิสเตอร์เต็มมือ) คุณอาจใช้ CPLD ได้ อย่างไรก็ตามหากบล็อกของคุณมีป้ายกำกับเช่น "Ethernet transciever", "อินเตอร์เฟส PCI-Express x16", "ตัวควบคุม DDR2" หรือ "h264 Encode / Decode" คุณก็เกือบจะมอง FPGA และใช้ HDL

  3. ดูและดูว่าอินเทอร์เฟซของคุณมีข้อกำหนด I / O พิเศษเช่นแรงดันไฟฟ้าพิเศษ LVDS, DDR หรือ SERDES ความเร็วสูง การได้รับชิปที่รองรับนั้นง่ายกว่าการรับชิปนักแปลเพิ่มเติม

ตัวอย่างการใช้งาน CPLD:

  • PWM หลายช่องทางพร้อมอินเตอร์เฟส SPI
  • I / O Expander
  • การถอดรหัสพื้นที่ที่อยู่ของ CPU
  • นาฬิกา (รักษาเวลา)
  • แสดง Multiplexors
  • DSP ง่าย
  • โปรแกรมง่ายๆบางโปรแกรมสามารถแปลงเป็นการออกแบบ CPLD

ตัวอย่างแอพพลิเคชัน Hobby ของ FPGA:

  • การออกแบบระบบขนาดเล็กบนชิป (SoC)
  • วีดีโอ
  • บริดจ์โปรโตคอลที่ซับซ้อน
  • การประมวลผลสัญญาณ
  • การเข้ารหัส / ถอดรหัส
  • การจำลองระบบมรดก
  • เครื่องวิเคราะห์ตรรกะ / เครื่องกำเนิดลวดลาย

สำหรับงานอดิเรกส่วนใหญ่คุณจะถูก จำกัด FPGA ค่อนข้างน้อยยกเว้นว่าคุณต้องการบัดกรีแพ็คเกจ BGA ฉันจะเลือกระหว่าง CPLD ขนาดใหญ่หรือ FPGA ราคาถูกและความต้องการด้านขนาด / ความเร็วจะเป็นตัวกำหนดว่าฉันต้องการอะไร


ขยายคำตอบของคุณออกไปเล็กน้อยฉันจะจัดกลุ่ม PAL / PLA / GAL ไว้ในตระกร้าเดียวกันกับ PLD / CPLD ด้วยเหตุผลของการเริ่มต้นทันทีโดยไม่มีเวลากำหนดค่า อุปกรณ์ GAL ตัวอย่างเช่นฉันกำลังทำงานกับอุปกรณ์ขัดแตะและ IC ตระกูล CPLD ของพวกเขานั้นราคาถูกกว่ามากและให้ประตูมากกว่านั้นคือ PAL / GAL / PLA ลูกพี่ลูกน้อง ค่าใช้จ่ายของหลังเป็นสิ่งต้องห้ามสำหรับสิ่งที่พวกเขาเสนอเมื่อเทียบกับอดีต
smashtastic

เส้นนั้นเบลอเล็กน้อย ฉันไม่คิดว่า PAL / PLA / GALs มีองค์ประกอบการจัดเก็บข้อมูลหรือ CLPD มี SRAM จนกว่าฉันจะค้นหารายการ tyblu ที่ระบุ ดูเหมือนว่า PAL / PLA / GAL จะเหมือนกับเทปเป็ดในการออกแบบมากกว่าการเป็นส่วนหลัก
W5VO

3

รายการ "กฎแห่งหัวแม่มือ" ที่ดีจะเป็นดังนี้:

  • PAL / PLA / GAL:ใช้แทนที่ IC logic gates บน PCB
  • CPLD:ใช้ในกรณีที่ต้องการงานที่ซับซ้อน nonDSP และอาจเป็นช่วงเวลาที่สำคัญ (โหลดรหัสบูตลง FPGA จากหน่วยความจำเครื่องกำเนิด LUT sinewave สำหรับ DAC และอื่น ๆ )
  • FPGA:ใช้เมื่อต้องการเวลาที่สำคัญการคูณหรือความสามารถ DSP (ตัวกรอง FIR, FFT ฯลฯ )
  • FPGA พร้อม hard MCU:ใช้เมื่อจำเป็นต้องใช้ฟังก์ชั่น FPGA และอุปกรณ์ต่อพ่วงบน FPGA ต้องได้รับการรับรอง (เซ็นเซอร์อุณหภูมิ) หรือเพื่อให้งานที่ไวต่อเวลาน้อยกว่าจะถูกสอดแทรกใน C แทน VHDL สำหรับความเรียบง่าย แม่บ้าน PCB, ฯลฯ )

ด้วย CPLD ราคาถูกภายใต้เจ้าชู้ในปริมาณน้อย PAL / PLA / GAL นั้นค่อนข้างตายไปแล้วยกเว้นสำหรับการใช้งานแบบดั้งเดิม
Chris Stratton

ฉันจะไม่โต้แย้งว่า ฉันทำได้เพียงภาพที่อาจเป็นไปได้ที่พลังงานต่ำ (แบตเตอรี่) / ขนาดเล็กเป็นข้อ จำกัด ที่พวกเขาอาจยังคงใช้เนื่องจากพวกเขาอาจได้เปรียบกว่า CPDL แต่ฉันยังคงใช้ CPLD ที่เล็กที่สุด / ประหยัดพลังงานถ้าเป็นของฉัน ออกแบบ.
Joel B

2

คำตอบง่ายๆอาจเป็นได้ว่ามีสองวิธี:

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

2. แต่โดยปกติก่อนที่คุณจะเริ่มการเข้ารหัส HDL หรือการพัฒนาวงจรคุณสามารถประเมินความซับซ้อนของระบบได้แล้ว (คุณต้องการประตูเท่าไหร่ถ้าดูเหมือนว่าคุณต้องการ MCU 8 บิตหรือ MCU 32 บิตหรือไม่มีไมโครคอนโทรลเลอร์ที่ ทั้งหมด) ขึ้นอยู่กับว่าคุณสามารถเลือกอุปกรณ์ที่ตั้งโปรแกรมได้เช่นกัน สิ่งนี้จะมีความแม่นยำน้อยกว่า แต่จะอนุญาตให้ออกแบบฮาร์ดแวร์อะนาล็อกและดิจิทัลที่ไม่สามารถตั้งโปรแกรมได้ของคุณควบคู่ไปกับฮาร์ดแวร์และซอฟต์แวร์ที่ตั้งโปรแกรมได้ (ถ้ามี)


2

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

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

ไม่มีใครใช้ PALs ในการออกแบบใหม่อย่างน้อย 10 ปีขึ้นไป CPLD ได้เข้ายึดครองช่องนั้นแล้ว

ใน 5 ครั้งสุดท้าย? ปีที่ผ่านมา CPLD เป็นเหมือน FPGA แต่มีหน่วยความจำเพื่อเก็บการกำหนดค่าบนชิป เนื่องจาก FPGAs ปัจจุบันมีความเร็ว 100 MHz ความเร็วจึงน้อยกว่าเหตุผลในการวางตรรกะใน CPLD มากกว่าเมื่อ 10-15 ปีที่แล้ว อย่างไรก็ตาม FPGA ยังคงมีคุณสมบัติอื่น ๆ เช่นตัวคูณตัวต่อเนื่องและความทรงจำมากมายที่อาจบังคับให้การออกแบบเป็นหนึ่งแม้ว่ามันจะไม่ได้มีเหตุผลมากนัก


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

ขอบคุณสำหรับการตอบกลับ @BrianCarlton และความคิดเห็น @ChrisStratton ตัวอย่างที่ได้รับและความเห็นในปัจจุบันเป็นข้อมูลที่ดี
tyblu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.