我经常听到电气工程师说C语言被用于fpga工作。
那么C++呢?使用C++有什么缺点吗?我认为编写硬件程序所需的并行性更适合使用C++而不是C,对吗?
此外,我需要使用什么来使c++与硬件兼容?
我经常听到电气工程师说C语言被用于fpga工作。
那么C++呢?使用C++有什么缺点吗?我认为编写硬件程序所需的并行性更适合使用C++而不是C,对吗?
此外,我需要使用什么来使c++与硬件兼容?
我非常确定FPGA可以使用VHDL或Verilog进行编程。
http://zh.wikipedia.org/wiki/Vhdl
http://zh.wikipedia.org/wiki/Verilog
我知道Altera也提供一些将C语言转换为硬件描述语言的工具,但我怀疑它们只适用于小型设计。
迄今最简单的FPGA编程方法是通过LabVIEW的FPGA模块。然而,这也将您绑定到他们的硬件和软件中。这不是一个廉价的解决方案,但无疑是在不需要学习任何东西的情况下将程序加载到硬件中的最快速度。
针对CPU编译和FPGA编译之间存在很大的区别。普通的编译器生成二进制程序代码,而专门的FPGA编译器则生成“硬件”。目前有一些编译器可以将类C代码转换为“硬件”,但这并不是完全的C语言。它可能是一个包含任意位数整型的C衍生版,限制于迭代和非递归函数调用。
我非常喜欢C++,但是我也认识到其中许多部分并不适合FPGA:虚函数、RTTI、异常处理等都不够合适。至少这是我的印象。我没有亲自测试过那些类C FPGA编译器,但我的朋友使用过它们,并且据说这是一件麻烦事。
他们可能正在使用C语言与FPGA进行接口交互。在设计课程中,我们使用Verilog编程FPGA,并在附加的Linux板上使用C语言。在那种情况下,他们很可能使用C语言,因为用C语言编写小程序比用C++更容易。
我和一些人一样是C++的粉丝。我认为使用SystemC来处理fpga将会非常棒。于是我找到了下面这个页面。也许对你们中的一些人很有兴趣。
http://www.es.ele.tue.nl/~ljozwiak/education/5JJ70p/blocks/4/sc2fpgaflow.html
我能想到的有两个原因:首先,C++语言在编写编译器(在这种情况下是HDL翻译器)时更为复杂,其次C++具有太多功能,在FPGA编程这种低级别的编程中并不实用。