จะเลือก FPGA ได้อย่างไร


17

ฉันต้องทำการประมวลผลสัญญาณดิจิตอลบน 8 สายอะนาล็อกที่ 10 kHz นี่เป็นงานที่ค่อนข้างท้าทายและฉันคิดว่า FPGA อาจเป็นแนวทางที่ถูกต้อง ฉันกำลังดูชุด dev จาก Xilinx และเนื่องจากฉันไม่มีประสบการณ์กับ FPGA ฉันจึงพบว่ามันยากที่จะรู้ว่าจะเลือกชิปที่เหมาะสมได้อย่างไร ฉันจินตนาการโดยใช้ชุด dev และขยายโดยใช้ I / O พินเพื่อเชื่อมต่อกับชิป A / D 8 ช่องและชิป D / A 8 ช่อง

อะไรคือความแตกต่างระหว่างการใช้ Spartan, Virtex, Altera และอื่น ๆ ? ฉันไม่รู้ด้วยซ้ำว่าจะประเมินจำนวนประตูที่ฉันต้องการได้อย่างไร มีกฎของหัวแม่มือสำหรับสิ่งนั้นหรือไม่? ฉันจะแน่ใจได้อย่างไรว่าความเร็วสัญญาณนาฬิกาจะเพียงพอ (เป็นฟังก์ชันของจำนวนการเพิ่มและการคูณ) เป็นการยากที่จะทำการประมวลผลทศนิยมบน FPGA ฉันควรยึดคณิตศาสตร์จุดคงที่หรือไม่ วิธีที่ดีที่สุดในการเริ่มต้นคืออะไร

ฉันต้องการโซลูชันที่สามารถตั้งโปรแกรมได้โดยใช้ Linux Xilinx ให้สิ่งนี้ แต่ฉันไม่แน่ใจว่าข้อ จำกัด คืออะไร


5
มันจะช่วยให้คุณรู้ว่าอัลกอริทึมชนิดใดที่คุณต้องใช้ โอกาสที่คุณไม่จำเป็นต้องมี FPGA เลยซึ่งจะช่วยให้คุณประหยัดเวลาได้มาก ;-)
— geschema

ฉันเห็นด้วยกับ geschema; คุณอาจไม่ต้องการ FPGA บางที DSP อาจเป็นทางออกที่ดีกว่า ไม่ว่าในกรณีใด ๆ การเริ่มต้นใช้งานจะง่ายกว่าหากคุณมีประสบการณ์ในการใช้งานยูซีเอสเท่านั้น FPGA นั้นแตกต่างกันมาก!
— stevenvh

คำตอบ:


13

ฉันจะไม่ใช้ FPGA

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

หากคุณต้องการเรียนรู้ FPGA ให้ลองทำสิ่งที่เหมาะสมกับเครื่องมือการพัฒนาเช่นเครื่องรัฐหรือการประมวลผลแพ็กเก็ตการสื่อสาร

สำหรับโครงการ DSP เช่นสิ่งที่คุณได้อธิบายฉันขอแนะนำ DSP หรือCypress PSOCหรือAnalog Devices Microconverter (= ไมโครคอนโทรลเลอร์ที่มี ADC + DAC ในตัว) แทน

(การเปิดเผยอย่างเต็มรูปแบบซึ่งมีบริบทสำหรับคำแนะนำของฉัน: ฉันไม่ได้ใช้ FPGAs ตัวเองฉันใช้ตรรกะที่ตั้งโปรแกรมได้ = PLDs ในโอกาสที่หายากสำนักงานของฉันใช้ FPGA บ่อยครั้งและฉันเห็นรหัส VHDL / Verilog เพียงพอ เคียงบ่าเคียงไหล่เพื่อรู้ว่ามันเหมาะสำหรับการปรับเปลี่ยนบิตเขาเป็นวิศวกรที่มีประสบการณ์มากกับ FPGAs ในการสนทนาเมื่อเร็ว ๆ นี้กับเขาซึ่งเขากำลังทำคณิตศาสตร์อย่างง่าย ๆ บนจำนวนเต็มที่มีความกว้างบิตที่แตกต่างกัน เพื่อขยายเครื่องหมายบนจำนวนความกว้างบิตที่สั้นลงเพื่อที่จะลบมันออกมาอย่างถูกต้องและเขาก็มองหน้าเขาเช่น "โอ้มนุษย์ฉันไม่ต้องการที่จะขยายนามสกุล ... " การเพิ่มและลบ ไม่ยากมากใน FPGA นอกเหนือจากการเพิ่มและการลบคุณจำเป็นต้องรู้เครื่องมือและไลบรารีและการประมวลผลจุดลอยตัว ??!? !! ????!? !!?)


2
MyHDLพยายามแก้ไขปัญหาเหล่านี้
— Shawn J. Goff

ฉันไม่คิดว่า FPGA นั้นจะใช้งานได้ยากกว่าไมโครพวกมันมีชุดคำเตือนต่าง ๆ
— Connor Wolf

10

พวกเขาทั้งหมดดีมาก คุณไม่จำเป็นต้องใช้ FPGA มากเกินไปในการทำสิ่งที่ง่ายเช่นนั้นดังนั้นผู้เริ่มต้น FPGA (เช่นสาย Spartan-3) ควรจะพอเพียง

เพียงแค่คำเตือนแม้ว่าการเขียนโปรแกรม FPGA เป็น LOOOOTTTTTT ที่แตกต่างจาก C ++, C, Perl ... ฉันขอแนะนำให้เริ่มต้นด้วย verilog เพราะมันอาจจะง่ายกว่าที่จะเปลี่ยนเป็น ... VHDL เป็นภาษาโคบอลชอบมาก แต่ verilog คล้ายกับภาษาโปรแกรมสมัยใหม่มากขึ้น

เกี่ยวกับความเร็วสัญญาณนาฬิกา: ไม่ต้องกังวลกับมัน ข้อดีของการใช้ FPGA คือมันขนานกันอย่างหนาแน่นดังนั้นในขณะที่นาฬิกา 50MHz อาจดูช้าลงอย่างน่าขันตามมาตรฐานของวันนี้โปรดจำไว้ว่าพวกเขาสามารถทำหลายร้อยสิ่งได้ในคราวเดียวในขณะที่ CPU "ปกติ" ที่ 3GHz ขึ้นทีละครั้ง นี่คือข้อดีของการใช้ FPGA: การขนาน ดังนั้นสำหรับบางสิ่งที่พิเศษคุณไม่ต้องกังวลเรื่องความเร็วมากนัก

แต่เหมือนความคิดเห็นอื่น ๆ มันเป็นกระบวนทัศน์ที่แตกต่างกันโดยสิ้นเชิง เส้นโค้งการเรียนรู้นั้นสูงชัน แต่เมื่อคุณเข้าใจภาษาแล้วมันก็สมเหตุสมผล (เพียงแค่ทำให้แน่ใจว่าคุณเข้าใจหน่วยการสร้าง)

FPGA มีความสุข :)


2
VHDL ขึ้นอยู่กับ Ada! Leon
— Leon Heller

2
นอกจากนี้ในการเลือก Verilog หรือ VHDL ให้พิจารณาภาษาในแง่ของการลงทุนในตลาดในอนาคตของคุณ ในสหรัฐอเมริกา Verilog เป็นที่นิยมในการพัฒนา IC / ชิปมากกว่า VHDL ดังนั้นการรู้ Verilog (และเวอร์ชั่นที่ปรับปรุงแล้ว System Verilog) น่าจะเป็นการลงทุนระยะยาวที่ดีกว่า นอกจากนี้ยังดูเหมือนว่า บริษัท EDA ขนาดใหญ่ทั้งหมดลงทุนใน verilog และ verilog ของระบบในขณะที่ VHDL ไม่ได้รับความสนใจมากนัก (เป็นสักขีพยานการจำลองผสม VCS กับ vhdl vs VCS verilog จำลองความแตกต่างของประสิทธิภาพ) (การเผาไฟ) ใช่คุณสามารถเรียนรู้ทั้งคู่ แต่ทำไมไม่จัดลำดับความสำคัญ
— Ross Rogers

คุณสามารถเขียนเป็นภาษาใดก็ได้ ฉันคิดว่าเครื่องมือ Xilinx สามารถใช้ Verilog และ VHDL แม้ในโครงการเดียวกัน FWIW ฉันอยู่ในสหรัฐอเมริกาและฉันไม่เคยใช้ Verilog
— ajs410

1
"VHDL เป็นเหมือนภาษาโคบอลมาก" ไม่ได้เป็นล้านไมล์!
— stevenvh

9

ในขณะที่ฉันกลับใส่กัน แผนภูมิเปรียบเทียบของบอร์ด FPGA ระดับเริ่มต้นเริ่มต้นจากผู้จำหน่าย FPGA สองรายคือ Xilinx และ Altera พวกเขาเป็นผู้เล่นหลักสองคนใน FPGAs เช่น PIC vs AVR หรือ Sony กับ Nintendo พวกเขาให้บางที่สุดสำหรับเจ้าชู้ มีผู้ค้ารายอื่น ๆ ที่มีคุณสมบัติเฉพาะ แต่โดยปกติแล้วคุณจะต้องจ่ายมากขึ้นหรือเสียคุณสมบัติ / กำลังประมวลผล

ฉันรู้ว่านี่ไม่ได้ตอบคำถามของคุณโดยตรง แต่ควรเป็นประโยชน์กับทุกคนที่ต้องการเริ่มต้นใช้บอร์ด FPGA


7

คำถามมากมาย ลองลองตอบคำถามตามลำดับ:

  1. ความต้องการทรัพยากรสำหรับการประมวลผลสัญญาณ:เพื่อกำหนดว่าฮาร์ดแวร์ใดที่คุณต้องใช้ / สร้างคุณต้องการทราบจำนวนการประมวลผลที่คุณต้องการทำกับสัญญาณที่เป็นปัญหา 8 channel @ 10 kHz ไม่ใช่อัตราการส่งข้อมูลที่สูงมากดังนั้นหากความต้องการของคุณนั้นพิเศษมาก FPGA และ DSPs ควรจะสามารถประมวลผลข้อมูลได้
  2. ฉันจะเลือกอุปกรณ์ที่เหมาะสมได้อย่างไรขึ้นอยู่กับข้อกำหนดของการประมวลผลสัญญาณของคุณคุณควรจะสามารถทราบได้ว่าอุปกรณ์ใดที่จำเป็นสำหรับแอปพลิเคชันของคุณ ประเด็นสำคัญคือข้อกำหนดของหน่วยความจำจำเป็นต้องใช้ตัวคูณยากการพิจารณา IO พิเศษ ฯลฯ ผู้จำหน่าย FPGA ส่วนใหญ่มีเครื่องมือ (บนเว็บ) ที่ให้คุณค้นหาพอร์ตโฟลิโอของตนตามปัจจัยดังกล่าว
  3. ฉันจะเริ่มต้นกับ DSP ได้อย่างไรDSP เป็นเพียงคอมพิวเตอร์ธรรมดาที่มักจะมีคำสั่ง SIMD [คำสั่งเดียว, หลายข้อมูล] ที่เกี่ยวข้องกับการประมวลผลสัญญาณ ในการเริ่มต้นคุณต้องเข้าใจถึงข้อ จำกัด ของฮาร์ดแวร์ "ฝังตัว" และคอมไพเลอร์ C เพื่อให้คุณสามารถทดสอบโค้ดของคุณบนพีซีทั่วไป
  4. ฉันจะเริ่มต้นกับ FPGA ได้อย่างไรFPGA ถูกตั้งโปรแกรมในภาษาคำอธิบายฮาร์ดแวร์ สิ่งเหล่านี้แตกต่างอย่างมากจากภาษาที่ตามลำดับเช่น C หรือ Java ในการพัฒนา FPGA คุณต้องเข้าใจธรรมชาติของฮาร์ดแวร์จริงพร้อมกัน เครื่องมือที่คุณต้องใช้ในการเริ่มต้นคือตัวจำลอง HDL เช่น Simili (ฟรีสำหรับการออกแบบขนาดเล็ก) หรือ Modelsim สิ่งนี้จะช่วยให้คุณจำลองรหัสของคุณบนพีซี หลังจากนั้นคุณต้องใช้เครื่องมือการสังเคราะห์เฉพาะผู้จำหน่ายซึ่งจะรวบรวมรหัส HDL ให้คุณเป็นไฟล์บิตซึ่งใช้ในการกำหนดค่า FPGA หากคุณได้รับชุดเริ่มต้นจาก Altera, Actel หรือ Xilinx เครื่องมือทั้งหมดที่คุณต้องการเป็นส่วนหนึ่งของชุด
  5. การสนับสนุน Linux:เครื่องมือ FPGA จากผู้ขายส่วนใหญ่ทำงานบน Linux แต่ในฟิลด์ DSP คุณมักจะถูกบังคับให้ใช้คอมไพล์แบบ Windows เท่านั้นเว้นแต่ว่า DSP ของคุณจะรองรับ GCC (Blackfin จาก Analog และรุ่นอื่น ๆ จาก Texas Instruments)

+1 สำหรับ "8 ช่องสัญญาณที่ 10 kHz ไม่ใช่อัตราการส่งข้อมูลที่สูงมาก" - ฉันไม่อยากจะเชื่อเลยว่ายังไม่มีใครพูดถึงเรื่องนี้
— Kevin Vermeer

ไม่ได้ถ้าเขาทำ FFT 8 ช่อง ...
— ajs410

DSP เป็นหน่วยประมวลผลแบบขนานเธรดเดี่ยวแต่ละหน่วยสามารถดำเนินการคำสั่งที่แตกต่างกันได้ (ต่างจาก SIMD ที่ทุกหน่วยใช้คำสั่งเดียวกัน)
— Ben Voigt


4

ผู้ขาย FPGA ทุกรายจะทำเช่นนั้น มันเหมือนกับ Intel vs AMD ... มีความแตกต่างระหว่าง Xilinx และ Altera แต่มันมีความคล้ายคลึงกันอย่างมากในแง่ของการใช้งาน ซื้อชุดการพัฒนาใด ๆ ที่อยู่ในช่วงราคาของคุณ - ฉันชอบ Spartan 3 จาก Xilinx - และวิ่งไปกับมัน

เกี่ยวกับจำนวนประตูชุด dev มักจะมีขนาดใหญ่มากหวังว่าจะใหญ่กว่าที่คุณต้องการ เมื่อคุณพร้อมที่จะย้ายไปยัง PCB ของคุณเครื่องมือสังเคราะห์จะประเมินให้คุณเห็นว่าประตูของคุณต้องการการออกแบบเท่าไหร่ คุณสามารถใช้สิ่งนี้เพื่อเลือก FPGA ที่เล็กกว่าแม้ว่าคุณจะพบว่าข้อ จำกัด ของแพ็คเกจ (QFP vs BGA) มีบทบาทสำคัญเช่นกัน

ด้วยเทคนิคการออกแบบที่เหมาะสมความเร็วของนาฬิกาจะไม่เป็นปัญหา โดยทั่วไปคุณสามารถใช้คริสตัลความเร็วต่ำเช่น 12 MHz และ FPGA สามารถสังเคราะห์นาฬิกาได้เร็วขึ้น (หรือนาฬิกาเร็วขึ้นมาก!) ถ้าคุณกังวลเกี่ยวกับการเพิ่มทวีคูณจริง ๆ ฉันรู้ว่าซีรี่ส์ Virtex4 มี DSP เฉพาะส่วนที่สามารถเร่งการคำนวณเหล่านั้นได้ แต่ FPGA นั้นขนานกันอย่างหนาแน่นดังนั้นคุณไม่จำเป็นต้องใช้ MHz มากเกินไปในการทำงานมากมาย

แน่นอนฉันจะยึดติดกับจุดคงที่ถ้าคุณสามารถ เป็นไปได้ที่จะทำทศนิยมและ Xilinx ยังมี Core Generator ที่จะช่วยให้คุณมีแกนจุดลอยตัว แต่จุดคงที่จะเป็นวิธีเร็วกว่าและต้องใช้ประตูน้อยกว่า ข้อดีอีกอย่างคือคุณสามารถทำจุดคงที่แปลก ๆ ; คุณสามารถใช้บิตได้มากเท่าที่คุณต้องการโดยไม่จำเป็นต้องนับจำนวนบิตแบบ power-of-2 และ / หรือคุณสามารถใช้คะแนนคงที่ที่มีขนาดใหญ่กว่าสำหรับสเตจกลาง

วิธีที่ดีที่สุดในการเริ่มต้นกับ FPGA ค้นหาชั้นเรียนหรือสัมมนาหรืออะไรก็ได้ หากคุณไม่คุ้นเคยกับเทคโนโลยีเครื่องมือในการพัฒนาจะสร้างความสับสนมากเพราะมีหลายสิ่งที่อาจผิดพลาดได้ เครื่องมือสำหรับ MCUs นั้นให้อภัยได้มากขึ้นและต้องการความใกล้ชิดน้อยลงกับสถาปัตยกรรมพื้นฐาน

โอ้และคุณควรอ่านแผ่นข้อมูลของ FPGA หน้าไปหลัง



0

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

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