c语言fpga
① fpga和c语言速度比较
FPGA快。
微处理器用C,FPGA用HDL。论算法实现速度,FPGA肯定比微处理器快多了,因为FPGA可以算准每一个时钟周期的任务,而微处理器执行C程序可能会浪费很多时钟周期。
② C程序和FPGA程序
这是两个不同的概率,c语言程序是软件程序,可以在做一直在运行。而fpga程序首先先从外部存储设备装载进来,然后经过布线就生产了实际的电路,所以它应该看成实际的电路。而生成了实际电路,你外部信号如何变化,对应的fpga就会有相应的反映,即你看成的程序运行。
③ C程序和FPGA程序
C语言是目前世界上流行、使用最广泛的面向过程的高级程序设计语言。 C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。
C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以象汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。
运算符丰富
C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
数据结构丰富
C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能, 支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。
系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。
FPGA一般来说比ASIC(专用集成电路)的速度要慢,实现同样的功能比ASIC电路面积要大。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)。
④ FPGA的C语言建模
FPGA肯定不会用C做,毕竟概念完全不一样,但现在有些类似C的HDL,比如systemC这种语言,其实更像C++,可以完成一些数字系统建模,主要是事件触发,就是激励和响应。
用systemC,完全看工程师个人爱好,不用也可以,verilog、systemverilog都可以做,只是效率不同而已。
写过程序的都知道,无论是C、还是java等,都是顺序程序语言,和FPGA开发用的HDL完全不是一个概念,如果牵涉到顺序思维设计,在可以模拟的前提下,可以先用牵涉C的工具,比如openCV做视频等,来模拟下,最后换成HDL在FPGA里实现,因为大量的顺序处理,会让FPGA设计难度加大。
⑤ 请问FPGA可以拿C语言写吗今天朋友拿的黑金的板子,用的好像是C语言
只要在FPGA中移植了nois核,相当于是CPU的一种东西,就可以使用其他的软件语言。
C语言是一种软件语言,需要CPU一条一条的执行。
VHDL全名Very-High-Speed Integrated Circuit HardwareDescription Language,这是一种硬件描述语言,根据EDA软件综合后会生成实实在在的电路,可以并行执行。
弊端的话应该是各有优劣的,C语言的好处是灵活,方便,编译速度快。但是在嵌入式运行的时候可靠性和速度稍差。
硬件描述语言(VHDL)则相反,在嵌入式运行的时候可靠性和速度强,但是修改起来由于受到系统中时序的诸多限制修改需要考虑更多的问题,编译速度也大受影响。
⑥ FPGA的编程语言跟C语言有什么不同
学FPGA给我最大的体会就是它的编程语言是并行执行的,不像C语言那样一行一行的执行。verilog里面有个always语句,所有的always语句块全部并发执行,而always语句块内部是逐行执行的(前提是只是用阻塞赋值)。
verilog中没有中断的概念,而逐行执行指令的C语言却离不开中断。
学习verilog必须要掌握最基本的概念,像上面的阻塞赋值等等,新手都要经历这一关的,呵呵。
还有,verilog是始终离不开硬件,c语言中可以不限制循环次数,而verilog就不行,因为每循环一次就会增加FPGA内部资源的占用。
最后在说一点儿,verilog中有的语句不能被综合(Oh,什么是综合?,网络吧),像定义浮点的float就不可以,在编程时慎用。
好啦就说这些吧。。