FPGA สามารถใช้ได้กับโครงการดังกล่าวหรือไม่


12

ฉันกำลังทำงานกับ Super OSD - โครงการที่แสดงผลบนหน้าจอ http://code.google.com/p/super-osdมีรายละเอียดทั้งหมด

ในขณะนี้ฉันใช้ dsPIC MCU เพื่อทำงาน นี่คือ DSP ที่ทรงพลังมาก (40 MIPS @ 80 MHz, การดำเนินงานแบบวงจรเดียวสามรอบและหน่วย MAC) และที่สำคัญมันมาในแพ็คเกจ DIP (เพราะฉันใช้ breadboard เพื่อสร้างต้นแบบ) ฉัน ' m ได้รับประสิทธิภาพการทำงานแทบทุกครั้งในขณะที่ใช้ OSD - ชิปมีประมาณ 200ns หรือ 10 รอบต่อพิกเซลบนสเตจเอาท์พุทดังนั้นโค้ดจะต้องมีการปรับให้เหมาะสมที่สุดในส่วนนี้ (ด้วยเหตุนี้มันจะถูกเขียนด้วยเสมอ การชุมนุม.)

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

ฉันมีคำถาม:

  1. จะมีค่าใช้จ่ายมากขึ้นหรือไม่ FPGA ที่ถูกที่สุดที่ฉันพบคือ ~ 5 ปอนด์ต่อคนและ dsPIC คือ 3 ปอนด์ต่อคน ดังนั้นจะมีค่าใช้จ่ายมากขึ้น แต่เท่าไหร่
  2. dsPIC เหมาะกับแพ็คเกจ SO28 ฉันไม่ต้องการไปให้ใหญ่กว่า SO28 หรือ TQFP44 FPGA ส่วนใหญ่ที่ฉันเคยเห็นมาในแพ็คเกจ BGA หรือ TQFP> 100 ซึ่งไม่ได้เป็นตัวเลือกในขณะนี้เนื่องจากขนาดเฉือนและความยากในการบัดกรีด้วยตนเอง
  3. FPGA ใช้กระแสไฟฟ้าเท่าไร? ปัจจุบันโซลูชัน dsPIC ใช้งานประมาณ 55mA +/- 10mA ซึ่งไม่เป็นไรในขณะนี้ FPGA จะกินมากหรือน้อย มันเป็นตัวแปรหรือมันค่อนข้างคงที่เช่น dsPIC หรือไม่
  4. ฉันต้องการหน่วยความจำกราฟิกอย่างน้อย 12KB เพื่อจัดเก็บกราฟิก OSD FPGA มีหน่วยความจำประเภทนี้อยู่บนชิปหรือไม่สามารถใช้ได้กับชิปภายนอกเท่านั้น

คำตอบ:


7

ในหลักการนี้เป็นผู้สมัครที่ดีสำหรับการออกแบบตาม FPGA เกี่ยวกับความต้องการของคุณ:

โฆษณา 1. FPGA ส่วนใหญ่มีแนวโน้มว่าจะมีราคาแพงกว่าโดยขึ้นอยู่กับอุปกรณ์ที่คุณเลือก จากการเหลือบมองครั้งแรกที่เล็กที่สุด Spartan 3 จาก Xilinx (XC3S50AN) จะมากพอสำหรับงานนี้ (~ 10 £จาก Farnell) ฉันคิดว่าคุณสามารถสันนิษฐานได้ว่านี่เป็นขอบเขตที่สูงกว่าสำหรับค่าใช้จ่าย (มี RAM 56kB อยู่ภายในดังนั้นจึงเป็นเรื่องที่คุณต้องการมากกว่านั้น) คุณอาจพบว่าอุปกรณ์ราคาถูกกว่าจาก Xilinx ที่เสนอหรือ Altera และ Lattice ของคู่แข่ง

โฆษณา 2. แพคเกจเป็นปัญหาที่ยากฉันไม่เห็น FPGA ที่มีขนาดเล็กลงเช่นกัน อย่างไรก็ตามบางทีคุณสามารถใช้อุปกรณ์ CPLD (เพื่อการโต้แย้ง CPLDs เป็น FPGA ขนาดเล็ก) ซึ่งอาจอยู่ในแพ็คเกจที่เล็กกว่า (PLCC หรือ QFN) ในด้านบวกพวกเขาจะถูกกว่า (แม้แต่ดอลลาร์เดียว) ทางด้านลบส่วนใหญ่มีแนวโน้มที่จะไม่มี RAM อยู่ภายใน ด้วย CPLD คุณอาจต้องใช้ชิป SRAM ภายนอก

โฆษณา 3. ปริมาณการใช้ FPGA และ CPLD ในปัจจุบันนั้นขึ้นอยู่กับการออกแบบโปรแกรม อย่างไรก็ตามมีโอกาสดีที่ FPGA และการออกแบบ CPLD โดยเฉพาะจะกินน้อยกว่าโซลูชันปัจจุบันของคุณ

โฆษณา 4. FPGA มีหน่วยความจำประเภทนั้นอยู่ภายใน CPLD ไม่แน่นอน สิ่งนี้อาจแก้ไขได้โดยชิป sram ภายนอก (หรือสอง) ตัวอย่างเช่น:

| SRAM 1 | <--> | CPLD | <--> | uC |
| SRAM 2 | <->

ในการจัดการดังกล่าวในขณะที่ uC กำลังเขียนถึง SRAM 1 CPLD จะแสดงข้อมูลจาก SRAM 2 CPLD ควรจะสามารถจัดการกับทั้งสองงานพร้อมกันได้

แน่นอนคุณสามารถแก้ปัญหานี้ด้วยวิธีอื่นเช่นกัน:
1) ใช้ uController ได้เร็วขึ้น (เช่น ARM)
2) ใช้อุปกรณ์ที่มีเนื้อผ้าที่สามารถตั้งโปรแกรมได้และ uC ภายใน (ตัวอย่างเช่น FPSLIC จาก Atmel แต่ฉันไม่เคยใช้อุปกรณ์ดังกล่าว เล็กน้อยเกี่ยวกับสิ่งเหล่านั้น)

ข้อจำกัดความรับผิดชอบมาตรฐาน -> เนื่องจากการออกแบบเป็นปัญหาแบบเปิดโดยมีข้อ จำกัด มากมายและแนวทางแก้ไขที่เป็นไปได้สิ่งที่ฉันเขียนไว้ด้านบนอาจไม่เป็นจริงสำหรับกรณีของคุณ ฉันเชื่อว่ามันคุ้มค่าที่จะตรวจสอบตัวเลือกเหล่านั้น


4

คุณสามารถใช้ CPLD แทน FPGA เช่นหนึ่งในส่วน Altera MAX II มีอยู่ในแพ็คเกจ QFP44 ซึ่งแตกต่างจาก FPGA จริงๆแล้วพวกมันเป็น FPGA เล็ก ๆ แต่ Altera เล่นแง่มุมนั้น CPLDs มีข้อได้เปรียบเหนือ FPGA ส่วนใหญ่เนื่องจากมีหน่วยความจำการกำหนดค่าบนชิปโดยทั่วไป FPGA นั้นต้องใช้ชิปแฟลชภายนอก แน่นอนว่ามี CPLD อื่น ๆ แต่ฉันชอบ MAX II

เป็นไปไม่ได้ที่จะบอกว่าการบริโภคในปัจจุบันจะเป็นเช่นไรขึ้นอยู่กับความเร็วสัญญาณนาฬิกาและปริมาณของตรรกะที่ใช้งานจริง

FPGA มักจะมีหน่วยความจำบนชิปในจำนวน จำกัด ที่คุณสามารถใช้ได้ แต่คุณจะต้องใช้หน่วยความจำภายนอกด้วย CPLD

ตัวเลือกอื่นจะเป็นชิปXMOSแต่ตัวที่เล็กที่สุด (XS1-L1) อยู่ในแพ็คเกจ QFP64 มี RAM บนชิปมากมาย - 64k


2

1) ใช่ FPGA จะมีราคาแพงกว่า ชิปตัวเองมีราคาแพงกว่า แต่คุณจะต้องใช้หน่วยความจำแฟลชเพื่อจัดเก็บโปรแกรม FPGA + Flash น่าจะเป็น 3 เท่าของราคาเพียง dsPIC ... ประมาณ $ 10 สำหรับ FPGA ขนาดเล็กและ $ 3 สำหรับ Flash ขนาดเล็ก

2) อาจมีอยู่ แต่ฉันไม่ได้ตระหนักถึง FPGA ใด ๆ ที่ไม่ได้ติดตั้งที่พื้นผิว ส่วนใหญ่อาจเป็น QFP หรือ BGA

3) FPGA อาจดึงกระแสประมาณ 3 เท่าที่ dsPIC ทำ แต่อาจขึ้นหรือลงตามคุณสมบัติที่คุณใช้ FPGAs มีคุณสมบัติมากมายที่สามารถเพิ่มพลังในการดึง แต่คาดว่าอย่างน้อย 150 mA

4) FPGA มักจะมี RAM บล็อกอยู่ข้างใน ทั้งหมดยกเว้น FPGA ที่เล็กที่สุดควรมีหน่วยความจำมาก

คนอื่นพูดถึง CPLD หากคุณแบ่งพาร์ติชันการออกแบบของคุณอย่างระมัดระวังคุณอาจย้ายการดำเนินการขนาดเล็ก แต่มีราคาแพงไปยัง CPLD มันจะเป็นเหมือนตัวประมวลผลขนาดเล็ก


2

ทางออกที่ถูกที่สุดพร้อมกับช่วงโค้งการเรียนรู้ที่ต่ำที่สุดคือการย้ายไปสู่โปรเซสเซอร์ที่ทรงพลังกว่า ARM น่าจะเป็น ARM มากที่สุด

การเขียนโปรแกรม FPGA / CPLD ใน VHDL / Verilog เป็นกราฟการเรียนรู้ที่สูงชันที่มาจาก C สำหรับคนจำนวนมาก พวกเขายังไม่ได้ราคาถูกเกินไป

การใช้ ARM ที่มีความสามารถอย่างเหมาะสมอาจเป็น LPC1769 หรือไม่ (cortex-M3) คุณอาจจะสามารถแทนที่ PIC18 ในการออกแบบของคุณ

สำหรับปัญหาทะลุรูตราบใดที่คุณสามารถรับ SoC ในแพ็คเกจประเภท PIN แบบเปิดเผย QFP เพียงแค่หยิบอะแดปเตอร์เหล่านี้เพื่อรับ PIN ที่จำเป็นสำหรับการสร้างต้นแบบของคุณ


เขาใช้ dsPIC ไม่ใช่ PIC18
Leon Heller

2
เขาใช้ทั้งคู่ดูแผนผังในเอกสารที่เขาเชื่อมโยง PIC18 กำลังเรียกใช้ปุ่ม / ส่วนต่อประสานและพูดคุยกับ dsPIC ผ่าน I2C dsPIC ทำการประมวลผลวิดีโอ
ทำเครื่องหมาย

1

ความชอบของฉันคือการใช้บางสิ่งบางอย่างเพื่อบัฟเฟอร์ช่วงเวลาระหว่างโปรเซสเซอร์และจอแสดงผล การมีฮาร์ดแวร์ที่สามารถแสดงเฟรมวิดีโอทั้งหมดโดยไม่มีการแทรกแซงของโปรเซสเซอร์อาจทำได้ดี แต่อาจมากเกินไป ฉันขอแนะนำว่าการประนีประนอมที่ดีที่สุดระหว่างฮาร์ดแวร์และซอฟต์แวร์อาจเป็นสิ่งที่ทำให้การลงทะเบียน shift shift 1024- บิตอิสระสองหรือสามครั้ง (สองบิตต่อพิกเซลเพื่ออนุญาตสำหรับดำขาวเทาหรือโปร่งใส) และวิธีการ ของการสลับระหว่างพวกเขา ให้ PIC โหลด register shift ขึ้นมาจากนั้นให้ฮาร์ดแวร์เริ่มเลื่อนตำแหน่งนั้นในขณะที่ตั้งค่าสถานะเพื่อให้ PIC สามารถโหลดอันถัดไปได้ ด้วยการลงทะเบียนกะสองครั้ง PIC จะมี 64us ในระหว่างที่มีการบอกว่ามีการลงทะเบียนกะและเวลาที่ข้อมูลทั้งหมดจะต้องถูกเปลี่ยน ด้วยการเลื่อนสามครั้ง

โปรดทราบว่าในขณะที่ FIFO 1024 บิตจะทำได้ดีเท่ากับการลงทะเบียน shift shift 1024 บิตสองตัวและใน CPLD นั้น FIFO จะเสียค่าใช้จ่ายเพียงหนึ่ง macrocell ต่อบิตบวกกับตรรกะการควบคุมในตรรกะประเภทอื่น ๆ จะถูกกว่า FIFO หนึ่งบิต

อีกทางเลือกหนึ่งคือการเชื่อมต่อ CPLD กับ SRAM และสร้างระบบย่อยวิดีโออย่างง่ายด้วยวิธีนั้น ฉันชอบการสร้างวิดีโอ on-the-fly และถ้าใครทำชิป shift-register 1024 บิตราคาถูกมันเป็นวิธีที่ฉันโปรดปราน แต่การใช้ SRAM ภายนอกอาจถูกกว่าการใช้ FPGA ที่มีทรัพยากรเพียงพอ ทำการลงทะเบียน shift แบบ 1024 บิตหลายครั้ง สำหรับความละเอียดเอาต์พุตของคุณคุณจำเป็นต้องโอเวอร์คล็อกข้อมูลที่ 12M พิกเซล / วินาทีหรือ 3MBytes / วินาที มันเป็นไปได้ที่จะจัดเรียงสิ่งต่าง ๆ เพื่ออนุญาตให้ข้อมูลถูกตอกบัตรในอัตราสูงสุดถึง 10mbps โดยไม่ต้องยุ่งยากมากเกินไปโดยการวนรอบหน่วยความจำ เคล็ดลับที่ใหญ่ที่สุดคือการป้องกันความเสียหายของข้อมูลหากชีพจรการซิงค์ไม่ได้มาตามเวลาที่คาดหวังไว้

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