c语言 fpga,C语言FPGA编程

kodinid 4 0

大家好,今天小编关注到一个比较意思的话题,就是关于c语言 fpga问题,于是小编就整理了4个相关介绍c语言 fpga的解答,让我们一起看看吧。

  1. fpga与linux是什么关系?
  2. 用dsp和fpga实现图像的采集存储和融合处理?
  3. 如何自学FPGA研发?
  4. 单片机除了可以用汇编和c语言编程,还有其他什么编程语言吗?

fpga与linux什么关系?

嵌入式就是能自己程序的就叫嵌入式 。

fpga是可编程逻辑器件 ,用来做门电路 ,随意的门电路 ,用来处理一些算法之类的 。

c语言 fpga,C语言FPGA编程-第1张图片-安济编程网
图片来源网络,侵删)

ic就是芯片

linux是一个操作系统 ,还有windows 概念是一样的 。

arm 现在的arm都是指arm公司设计的处理器 ,是一个cpu ,相当于单片机 c语言是 ,单片机 arm用来编程的语言 。通过编译环境 ,编程单片机能识别代码 ,去执行硬件语言verilog 和vhdl都是可编程逻辑器件 ,用的语言 ,也就是fpga和cpld用的。

c语言 fpga,C语言FPGA编程-第2张图片-安济编程网
(图片来源网络,侵删)

用dsp和fpga实现图像的***集存储和融合处理?

电路板不一定要自己来,有现成的FPGA+DSP开发板(便宜的5、6百就有)。一般也是为视频处理开发的,能满足你的要求

一般外部信号进来,先由FPGA做个前段处理(可以滤波,也可以做颜色格式转换等,看你要求),保存到板子上的存储器上或直接传给DSP,然后由DSP进行图像处理,就像你说的融合什么算法的。将处理后的图像再保存到存储器或传回FPGA,最后由FPGA完成输出显示器显示。

DSP主要完成图像处理,FPGA协助,完成数据输入保存输出格式、颜色变换或简单的滤波(简单的处理交由FPGA来做可以减少DSP压力,提高效率)如果之前没有用过FPGADSP,会有点棘手,如果连单片机都没用过的话,你会做的比较累。

c语言 fpga,C语言FPGA编程-第3张图片-安济编程网
(图片来源网络,侵删)

如非必要,你可以把FPGAK掉,只用DSP,效率低一点,但这样会简单很多(DSP用的C语言,FPGA用的verilog,多学一个会耗费很多时间的)

如何自学FPGA研发?

自学FPGA需要一些基础,而且需要学习庞杂的知识下图是我总结的一个FPGA学习者需要掌握的知识体系或是架构!基础从数字电路开始,学会常用的电路,比如加法器,计数器,上升沿下降沿检测等,寄存器。并且用Verilog语言能描述出来,做好每一个Module的仿真。养成良好的文档化设计习惯和代码风格!掌握完基础的知识,然后开始学习写驱动协议,简单的协议如UART,IIC,SPI等,驱动如AD,DA,数码管等器件!最后学习软核和硬核等!


FPGA属于数电的范畴,在学习FPGA之前,最好有数电基础知识,若没有数电基础,最好先把数电学习一遍,熟悉数电的一些基本逻辑门电路、组合逻辑、逻辑化简等,还有各种触发器、锁存器、计数器等用法。

FPGA在嵌入式行业的优势还是挺大的,如今的电子产品对处理速度、处理能力要求越来越高,FPGA在这方面有明显的优势。只要FPGA的逻辑***允许,很多线程可以并行处理。FPGA属于并行处理器,并不像单片机、DSP、ARM等属于完全串行的处理平台。

FPGA该如何自学呢?下面谈谈本人的观点。

FPGA的编程语言使用的是硬件描述语言——Verilog或VHDL,Verilog更容易入门一些,很多语言风格、[_a***_]跟C语言很相似,但是编程思想跟C语言又不同,不能按照C语言的思想去学习Verilog。可以自己买一本教材自学,注意若学Verilog就购买Verilog教材,别买错了。

下图为Verilog编写的ram小模块子程序

的ram模块

主流的FPGA开发平台有Altera 公司(目前属于Intel公司)的quartus开发平台和Xilinx公司的Vivado、ISE开发平台,Altera和Xilinx占据FPGA市场的绝大部分份额。

购买FPGA开发板时,最好选择***扩展功能较多,例子齐全、资料丰富的开发板。跟着开发板编程实践即可。

单片机除了可以用汇编和c语言编程,还有其他什么编程语言吗?

以一个业内近15年工作经验的人来解答:单片机派系众多,美系、日系、韩系、台系,还有现在的大陆系,各家使用的IDE各不相同。

对于非公版MCU来说,只有原厂对自家底层最熟悉,各种指令架构各种坑,只有自家的编译器才能正确解释,当然自家的汇编指令集是最高效的,各种停产各种升级,想要移植换片子,想起来就头大!

对于公版的如8051、ARM架构,繁衍出很多能够适配的第三方编译环境,如Keil、IAR等,使用C语言编辑,能够完全不用理会各种“bit宽度、BANK、Page”,不太了解指令架构也可以越过各种沟各种坑!

只要给的起钱,这些第三方的编译器都会尽量满足你,想要用什么语言来写,只要你高兴就好。未来pythonJavaScript流行开来,这些也能免费适配。

总之不管用什么语言来编辑,能够简单高效的解析出硬件需求,实现产品所规划的功能才是一个程序员的价值所在。

现在主要还是c语言和汇编语言,这两个是当前底层系统必须的。未来可能会出现新的语言,现在也有在单片机上Python解释器然后用Python编写应用程序的,如micropython。也有JavaScript虚拟机的,然后使用J***aScript编写应用。这两个在单片机软件开发中还没成气候。

除了C和汇编,超子还接触过使用Arduino、Labview、Python以及Lua对单片机进行程序开发。不过这些相对比较小众,没有普适性。

Arduino应该算是一种对C和C++语言高度延伸的特有编程语言吧,因为其核心库是基于C和C++混合编写而成,提供用户高度封装过的API接口

其通常只针对于特定的Arduino环境的硬件开发板,通常是ATMEL公司的ATMEGA系列的8位或是32位的单片机。还有就是ESP8266也可以使用Arduino进行开发。

LabVIEW是由美国国家仪器(NI)公司研制开发的一种编程语言。它不同于C这种基于文本的编程语言,而是***用图形化编辑语言G编写程序。通过拖动控件,使用连接线连接各个控件,所有的数据都要基于数据流的模式

使用LabVIEW可以对STM32单片机进行编程,当然这种方式还是比较小众,适合有一定Labview基础的人群。

到此,以上就是小编对于c语言 fpga的问题就介绍到这了,希望介绍关于c语言 fpga的4点解答对大家有用。

标签: fpga 语言 单片机