如何选择FPGA?


17

我需要在10 kHz的8条模拟线上进行数字信号处理。这是一项艰巨的任务,我一直认为FPGA可能是正确的方法。我目前正在研究Xilinx的开发套件,由于我没有FPGA的经验,所以我很难知道如何选择合适的芯片。我想象使用一个开发套件,然后使用I / O引脚扩展它以连接到8通道A / D芯片和8通道D / A芯片。

使用Spartan,Virtex,Altera等有什么区别?我什至不知道如何估算我需要多少个门。有什么经验法则吗?如何确保时钟速度足够快(取决于加和乘次数)。在FPGA上执行浮点处理是否很困难,我应该坚持定点数学吗?最好的入门方法是什么?

我需要使用Linux可以编程的解决方案。Xilinx提供了此功能,但我不确定有什么限制。


5
知道您需要实现哪种算法会很有帮助。很有可能根本不需要FPGA,这将节省大量开发时间;-)
geschema 2010年

我同意geschema。您可能不需要FPGA。也许DSP是更好的解决方案。在任何情况下,如果您只有uC的经验,他们都将更容易上手。FPGA有很大的不同!
stevenvh 2010年

Answers:


13

我不会使用FPGA。

您提到您没有使用FPGA的经验,但是您对在FPGA上进行数字信号处理感兴趣...数字处理+信号处理非常困难,无法在传统编程工具的计算机/ DSP /微处理器上使用编程。在我看来,将数字信号处理项目用于第一个FPGA项目可能会让人沮丧。

如果您想学习FPGA,请尝试做一些更适合开发工具的事情,例如状态机或通信数据包处理。

对于您所描述的DSP项目,我建议您使用DSP或Cypress PSOCAnalog Devices Microconverter(=内置ADC + DAC的微控制器)。

(完整的披露内容,为我的建议提供了一些背景信息:我自己不使用FPGA。在极少数情况下,我使用可编程逻辑= PLD。我的同事确实经常使用FPGA,并且在他看来,有足够的VHDL / Verilog代码他是一位经验丰富的工程师,具有丰富的FPGA经验;在最近与他的对话中,他对具有不同比特宽度的整数进行了一些相当简单的数学运算,我告诉他他需要在较短的位宽数字上进行符号扩展以便正确地减去它,他的表情就出现在他的脸上,就像“哦,老兄,我不想做符号扩展...”在FPGA中并不是很难,除了加法和减法,您还真的需要了解工具和库。和浮点处理??!?!!!! ??!?!!?)


2
MyHDL尝试解决其中一些问题。
肖恩·高夫

我认为FPGA的使用并不比微处理器难,它们只是有一些不同的警告。
康纳·沃尔夫

10

他们都很好。您不需要太多的FPGA来完成类似的事情,因此任何新手FPGA(如Spartan-3系列)都足够了。

不过,仅需警告一下,对FPGA进行编程与C ++,C,perl等不同。我建议从verilog开始,因为它可能更容易过渡到... VHDL非常像COBOL,但verilog更类似于现代编程语言。

关于时钟速度:不用担心。使用FPGA的优势在于它们可以大规模并行处理,因此,按照当今的标准,50MHz的时钟可能看起来太慢了,但是请记住,它们可以一次完成数百项工作,而3GHz的“正常” CPU必须排队处理一次最多一次。这是使用FPGA的优势:并行性。因此,对于一些专业的东西,您不必太担心速度。

但是像其他评论一样,这是一个完全不同的范例。学习曲线是陡峭的,但是一旦掌握了语言,一切都会变得有意义(只要确保您了解基本知识即可)。

快乐的FPGAing :)


2
VHDL实际上基于Ada!莱昂
莱昂·海勒

2
另外,在选择Verilog或VHDL时,请考虑使用该语言,因为这是对您未来的可销售性的投资。在美国,Verilog在IC /芯片开发中比VHDL更受欢迎,因此了解Verilog(及其增强版本System Verilog)将可能是一项更好的长期投资。似乎所有大型EDA公司都在verilog和系统verilog上进行投资,而VHDL并没有引起太多关注。(见证了具有vhdl的VCS混合仿真与VCS Verilog模拟器的性能差异)。是的,您可以两者都学习,但是为什么不优先考虑。
罗斯·罗杰斯

您可以用任何一种语言编写它。我认为,即使在同一项目中,Xilinx工具也可以采用Verilog和VHDL。FWIW,我在美国,而且从未使用过Verilog。
ajs410

1
“ VHDL非常像COBOL”。不到一百万英里!
stevenvh 2011年

9

不久前,我整理了两个FPGA供应商Xilinx和Altera 的入门级​​FPGA板比较表。它们是FPGA的两个主要参与者,有点像PIC vs AVR或Sony vs Nintendo。他们提供了最佳的性价比。还有其他提供特定功能的供应商,但是您通常最终会付出更多,或者失去功能/处理能力。

我知道这并不能直接回答您的特定问题,但是对希望开始使用FPGA板的任何人都应该有帮助。


7

这么多的问题; 让我们尝试按顺序回答它们:

  1. 信号处理的资源要求:为了确定需要使用/构建的硬件,您需要了解要对有关信号进行的处理量。8 kHz @ 10 kHz不是很高的数据速率,因此,除非您的要求非常特殊,否则大多数FPGA和DSP应该能够处理数据。
  2. 如何选择正确的设备?根据信号处理的要求,您应该能够确定您的应用需要哪种设备。关键点是内存需求,硬乘法器需求,特殊的IO注意事项等。大多数FPGA供应商都提供工具(基于Web),可让您根据这些因素搜索其产品组合。
  3. 我如何开始使用DSP?DSP只是普通计算机,通常具有与信号处理相关的SIMD [单指令,多数据]指令。首先,您只需要了解“嵌入式”硬件和C编译器的局限性,以便可以在普通PC上测试代码。
  4. 我如何开始使用FPGA?FPGA用硬件描述语言编程。这些与顺序语言(例如C或Java)有很大不同。为了开发FPGA,您需要了解真实硬件的并行性。您需要开始使用的工具是HDL模拟器,例如Simili(小型设计免费)或Modelsim。这使您可以在PC上模拟代码。之后,您需要特定于供应商的综合工具,该工具会将您的HDL代码编译为一个位文件,该位文件用于配置FPGA。如果您从Altera,Actel或Xilinx获得入门工具包,则所需的所有工具都是工具包的一部分。
  5. Linux支持:大多数供应商提供的 FPGA工具都在Linux上运行,但是在DSP领域,除非GCC支持您的DSP,否则通常会被迫使用Windows编译器(Analog的Blackfin和Texas Instruments的几种型号)。

+1表示“ 8通道@ 10 kHz不是很高的数据速率”-我不敢相信还没有人这么说。
凯文·维米尔

如果他正在执行8通道FFT,则
不会

DSP通常是单线程并行处理单元,每个单元都可以执行不同的指令(不同于SIMD,其中所有单元共享同一条指令)。
Ben Voigt 2010年


4

几乎任何FPGA供应商都会这样做。就像Intel与AMD ... Xilinx和Altera之间有区别,但在功能方面却非常相似。购买任何价格在您价格范围内的开发套件-我个人都很喜欢Xilinx的Spartan 3's-并运行它。

关于门数,开发套件通常会很大,希望比您需要的大得多。当您准备好使用自己的PCB时,综合工具将为您估算设计所需的门数。您可以使用它来选择较小的FPGA,尽管您可能会发现封装约束(QFP与BGA)也起着重要的作用。

有了适当的设计技术,时钟速度就不会成为问题。实际上,通常可以使用速度相对较低的晶体,例如12 MHz,FPGA可以合成更快的时钟(或很多更快的时钟!)如果您真的担心乘法加法,我知道Virtex4系列具有专用DSP片,可以加速这些计算。但是FPGA是大规模并行的,因此您不需要太多MHz即可完成大量工作。

如果可以的话,我一定会坚持定点。可以进行浮点运算,并且Xilinx甚至有一个Core Generator,它将为您提供浮点运算核心,但是固定点的方式,方式会更快,所需的门数也要少得多。另一个优点是您可以做一些奇怪的固定点;您可以根据需要使用任意多的位,它不必是2的幂次,和/或可以将较大的固定点用于中间级。

入门FPGA的最佳方法是?查找课程,研讨会或其他内容。如果您不熟悉该技术,则开发工具将非常混乱,因为可能会出错。用于MCU的工具更加宽容,并且与底层架构的亲密性更低。

哦,您应该从头到尾阅读FPGA的数据表。



0

如果您想估计门数,则不需要购买硬件-主要的FPGA制造商提供免费软件,并且许多人都会做dsp应用笔记。您可以在没有硬件的情况下设计和模拟东西,并且该软件会告诉您使用了哪些资源。但是,对于信号处理,通常首先要使用dsp,而只有在处理能力用尽时才使用FPGA。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.