FPGA是否适合此类项目?


12

我目前正在开发Super OSD(一个屏幕显示项目)。http://code.google.com/p/super-osd包含所有详细信息。

目前,我正在使用dsPIC MCU来完成这项工作。这是一个非常强大的DSP(40 MIPS @ 80 MHz,三个寄存器的单周期操作和一个MAC单元),而且重要的是,它采用DIP封装(因为我正在使用面包板对其进行原型制作。)实际上,要在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的芯片上有这种存储器吗?还是只有外部芯片才有?

Answers:


7

原则上,这是基于FPGA设计的良好选择。关于您的要求:

广告1. FPGA的价格很可能会贵一些,具体取决于所选择的器件。乍一看,Xilinx的最小Spartan 3(XC3S50AN)足以胜任这项任务(Farnell提供约10英镑)。我认为您可以假设这是成本的上限(内部有56kB RAM,因此比您需要的更多)。您可能会从Xilinx产品或其竞争对手Altera和Lattice找到便宜的设备。

广告2.封装是一个棘手的问题,我也没有看到较小尺寸的FPGA。但是,也许您可​​以使用CPLD器件(出于争论的目的,CPLD是小型FPGA),它们可能采用较小的封装(PLCC或QFN)。从好的方面来说,它们在负极方面会更便宜(甚至单美元),很可能内部没有RAM。使用CPLD可能需要外部SRAM芯片。

ad 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的设备(例如Atmel的FPSLIC,但是我从未使用过此类设备,我知道关于那些)

标准免责声明->由于设计是未解决的问题,因此我所写的内容有很多约束和可能的解决方案,对于您的情况而言,可能并非如此。我认为值得检查这些选项。


4

您可以使用CPLD而不是FPGA,例如Altera MAX II部件之一。与FPGA不同,它们采用QFP44封装。它们实际上是小型FPGA,但是Altera对此一无所知。CPLD与大多数FPGA相比,具有片上配置存储器的优势,而FPGA通常需要外部闪存芯片。当然,还有其他CPLD,但我喜欢MAX II。

由于电流取决于时钟速度和实际使用的逻辑量,因此无法确定电流消耗是多少。

FPGA通常只能使用有限的片上存储器,但是您将需要带有CPLD的外部存储器。

另一种选择是XMOS芯片,但最小的芯片(XS1-L1)采用QFP64封装。它具有大量的片上RAM-64k。


2

1)是的,FPGA将更加昂贵。芯片本身不仅价格更高,而且还需要闪存来存储程序。FPGA + Flash的成本可能仅为dsPIC的3倍,小型FPGA约为10美元,小型Flash约为3美元。

2)它们可能存在,但我真的不知道没有表面贴装的任何FPGA。其中大多数可能是QFP或BGA。

3)FPGA的电流可能是dsPIC的3倍左右,但这可能会上升或下降,具体取决于您使用的功能。FPGA具有许多可以增加功耗的功能。但至少要达到150 mA。

4)FPGA通常内部具有Block RAM。除最小的FPGA外,所有其他存储器都应具有那么多的存储器。

其他人提到CPLD。如果仔细划分设计范围,则可以将一些小而昂贵的操作转移到CPLD中。这就像一个迷你协处理器。


2

学习曲线最少的最便宜的解决方案是迁移到功能更高的处理器,最有可能是ARM。

对许多人来说,用VHDL / Verilog编程FPGA / CPLD是一个非常陡峭的学习曲线。它们也不是太便宜的零件。

使用性能不错的ARM也许是LPC1769?(cortex-M3),您也可能会在设计中替换PIC18。

至于通孔问题,只要您可以将SoC封装在裸露的QFP类型的封装中,只需抓住其中的一些适配器即可获得所需的引脚,以进行原型设计。


他使用的是dsPIC,而不是PIC18。
莱昂·海勒2010年

2
他正在使用这两种方法,请查看他链接的文档中的原理图。PIC18正在运行按钮/界面,并通过I2C与dsPIC对话。dsPIC只是进行视频处理。
标记

1

我倾向于使用某些东西来缓冲处理器和显示器之间的时序。拥有无需处理器干预即可显示整个视频帧的硬件可能会很好,但可能会适得其反。我建议,硬件和软件复杂性之间的最佳折衷办法可能是使用两个或三个独立的1024位移位寄存器(每个像素两位,以允许黑色,白色,灰色或透明)来制作某种东西,在它们之间切换。让PIC加载移位寄存器,然后让硬件在设置标志的同时开始将其移出,以便PIC可以加载下一个寄存器。如果使用两个移位寄存器,则在得知有可用的移位寄存器与必须对所有数据进行移位的时间之间,PIC将具有64us的时间。通过三个移位寄存器,

请注意,虽然1024位FIFO与两个1024位移位寄存器一样好,并且在CPLD中,FIFO每位仅花费一个宏单元,加上一些控制逻辑,在大多数其他类型的逻辑中,移位寄存器为两位比FIFO的一位便宜。

一种替代方法是将CPLD连接到SRAM,并使用它来构建一个简单的视频子系统。从美学上讲,我喜欢实时视频生成,如果有人制作了便宜的便宜的1024位移位寄存器芯片,这就是我所支持的方法,但是使用外部SRAM可能比使用具有足够资源的FPGA便宜。制作多个1024位移位寄存器。对于您的输出分辨率,有必要以12M像素/秒或3MBytes /秒的速度输出数据。应该有可能安排一些事情以使数据以高达10mbps的速率时钟输入,而不会通过交错存储周期而产生太多困难。如果同步脉冲没有在预期的准确时刻到来,最大的技巧就是防止数据损坏。

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.