จะเลือก 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.