我是一位经验丰富的C#/ .NET开发人员(实际上这一切都无关紧要,因为FPGA就像另一个复杂程度)。虽然我的能力水平并不像C#那样专家,因为我仍然有时看起来很糟糕(但不常见,虽然我很难解决一些语法/高级概念),但我的老板会做FPGA并建议我参与进来(让自己放松,我我很惊讶因为我是一名初级开发人员并且这是一项复杂的技术,我并不感到沮丧。
因此我的问题是,学习FPGA的最佳方法是什么?我正在收集书籍等。
我正在研究可扩展的3D建模和渲染(理想情况是在用户正在等待即时响应的Windows应用程序中)和CUDA很受欢迎,但根据我的老板并不那么快。
FPGA是否可以用于此类项目?
由于
答案 0 :(得分:7)
但我绝对可以推荐学习FPGA和HDL编程。这是“收集书籍”真的无法帮助你的一个领域。您需要做的是获得一个廉价的开发板(市场上有许多在100-200US美元范围内),下载匹配的工具链并开始编写和测试代码。
答案 1 :(得分:0)
为什么不学习如何使用现代PC附带的硬件加速?我敢打赌,使用OpenGL或DirectX(无论现在称之为什么)硬件加速都会表现得更好。
我想如果你的应用程序要在某种自定义嵌入式设备上运行,也许你想要创建自己的硬件,但对于PC应用程序来说,它可能太贵了,并且几乎没有任何已经拥有的软件解决方案的好处疯狂的工作,以调整性能。
我的观点:充分利用3D游戏技术的所有工作。
答案 2 :(得分:0)
正如Andy Ross所说,我认为FPGA是您想要解决的问题 - 您还需要以某种方式将其与PC连接。
我首先得到一个DevKit并玩弄它。使LED闪烁 - 当我开始使用新的嵌入式设备时,我总是发现这是最难的部分o.O.获取某种形式的通信(RS232 / TCP),这可能在DevBoard上。然后在其上实现一些数学函数,通过通信获取参数/传递结果。
答案 3 :(得分:0)
嗯,fpga上的可扩展3d渲染。你会怎么做? FPGA非常适合将经典的simd架构扩展到您喜欢(或限制)的数据大小,并且具有很好的并行性,即使使用100mhz也可以将内容处理到可接受的水平,我认为您的唯一限制是内存带宽和速度。别忘了你需要一个图形控制器才能使用你吐出的数据。你本质上是要让所有的硬件都做这么复杂的任务,你确定你能够制作一个能够进行3D渲染的SIMD处理器吗?你的硬件设计是什么?
正如许多其他人指出的那样;来自nvidia的CUDA是一个很好的选择,新的fermi架构看起来很有希望,但如果你正在寻找低成本,低尺寸和低功耗,我不能推荐使用CUDA。当然它非常适合解决任务,但是如果你的任务有轮子和电池就会变得复杂。
我认为比图形更适合fpgas的任务是生物计算,这是一个需要比图形更大并行性的问题空间。