本帖最后由 独活草 于 2020-8-21 16:03 编辑
近日有幸得知可以试用 ALINX & 紫光同创 共同研发的国产FPGA入门板子,欣喜万分;一向以电子爱好者自居的程序员如我,还从未接触过FPGA, FPGA 于我可以说是一道拦路虎;大学生时代玩过AVR DSP ARM9 ,唯独不敢企及FPGA,十年前(呀,不小心又暴露了年龄)FPGA还未国产化,那时的一套开发学习板的价格普遍昂贵。如今,终有了国产化的FPGA ,值得开心啊!也期盼国产的FPGA越做越好!
先上个全家福: 收到板子后,不得不说,黑金的PCB制板工艺真的很不错!再次感谢提供板卡试用的厂商与论坛!
————————————————————此处应该有分割线————————————————————
作为一名小白,既然打算好好学习一下FPGA,我就开启了一轮十万个为什么搜索,现将检索到的一些信息跟大家分享一下:
1- FPGA 是什么?
一个形象的比喻,好似一个电路试验板被放在了一个芯片里。
补充知识:
1、集成电路可以分为模拟集成电路、数字集成电路、和兼具模拟与数字的混合信号集成电路。FPGA主要是处理数字信号。
2、FPGA(Field-Programmable Gate Array), 即现场可编程门阵列,它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件(如74系列逻辑门电路)门电路数有限的缺点。
3、FPGA 设计属硬件范畴,它的硬件是可编程的,是一个通过硬件描述语言在FPGA芯片上自定义集成电路的过程。
4、FPGA 内部有丰富的触发器和I/O引脚,含有高层次的内置模块(比如加法器和乘法器)和内置的记忆体。
5、FPGA 由于是硬件电路,运行速度直接取决于晶振速度,系统稳定,特别适合高速接口电路。
6、FPGA 使用一种叫做查找表的方法来实现各种电路功能。查找表相当于一个存储器,比如设计一个8位加法器,输入为2个8bit的数字,输出为一个9bit的数字的案例:我们通过编译软件,将16bit输入不同情况下的输出提前计算出来,存储到查找表中,当输入信号确定以后,只需查表就可以知道输出的结果。
7、FPGA 是查找表结构,其程序不用去太考虑芯片的结构,需要注意时序上问题,它的结构比较复杂,功能也很强大,一般应用在通信领域等比较高端的场合;
2- FPGA 是如何工作的?
1、FPGA 是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。
2、加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。
3、FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。
3-FPGA的优点与缺点?
优点:1、查找表可以实现任何功能,由软件将不同输入情况下的各种结果都提前算出来,存储到查找表中。
2、延迟可控。
缺点:使用FPGA会有资源浪费,我们不可能使用FPGA的所有资源。就像一块面包板一样,我们不可能完全使用它。
4-为什么要用FPGA?
1、新的芯片研发设计:以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。
系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。
2、FPGA的另一个重要应用领域就是做高性能计算。由于FPGA是逻辑单元,很容易做到并行运算。
5-CPU、GPU、FPGA 有什么区别?
CPU (中央处理器)主要包括运算器(算术逻辑运算单元,ALU,Arithmetic Logic Unit)和高速缓冲存储器(Cache)及实现它们之间联系的 数 据(Data)、控制及状态的总线(Bus)。 CPU的ALU等部件都是专用电路,进行了专门的优化,所以CPU通常可以跑到很高的速度。而且CPU中有比较器等专用计算单元,CPU很适合有很 多判断的应用场景,也就是通常所说的控制部分。 CPU的缺点就是只有几个数量有限的算术逻辑单元,而且每次指令都要有相应的指令读取,结果存储等步骤。而往往高速缓存的读取和存储也是限 制CPU性能的重要方面。举个例子,把CPU看做一个工厂,CPU有有限的几个能力很强的工人,这些工人做事情很快。问题是工人数量有限,而且 工人每次要把货物搬到自己的操作台,操作完成后又要把货物搬离自己的操作台。
GPU是图形处理器的简称。GPU的众核架构非常适合把同样的指令流并行发送到众核上,采用不同的输入数据执行。GPU在通用计算领域得到广泛 应用,包括:数值分析,海量数据处理(排序,Map-Reduce等) 形象的比喻,GPU的工厂里有大量工人,每个工人的能力都不是很强,他们都做相同的事情,每个工人的工作没有直接的关系。
GPU和CPU有很多相同之处:两者都有总线和外界联系,有自己的缓存体系,以及数字和逻辑运算单元。一句话,两者都为了完成计算任务而设计。
两者的区别在于存在于片内的缓存体系和数字逻辑运算单元的结构差异:CPU虽然有多核,但总数没有超过两位数,每个核都有足够大的缓存和足够多的数字和逻辑运算单元,并辅助有很多加速分支判断甚至更复杂的逻辑判断的硬件;GPU的核数远超CPU,被称为众核(NVIDIA Fermi有512个核)。每个核拥有的缓存大小相对小,数字逻辑运算单元也少而简单(GPU初始时在浮点计算上一直弱于CPU)。简单来说,GPU就是海量精简版的CPU的集合。GPU采用SIMD(Single Instruction Multiple Data)架构。就是说海量的GPU上运行相同的指令,这样就减少了指令的读取,同时将大量数据的读取操作进行合并,大幅提升数据读取效率。
FPGA适合于应用到CPU和GPU折中的应用中。即数量并行量不是那么大,判断不是那么多的应用。FPGA适合深度的流水线算法。前一个计算单元的计算结果直接进入下一个逻辑运算单元。FPGA还适用于MISD的应用,即单一数据需要用许多条指令平行处理,这种情况下用FPGA做一个MISD的架构就会比GPU有优势。
另外,相较于高性能的CPU以及GPU,FPGA的功耗就显得小很多。
现在 AI 技术是比较火的,我们也时常会听到“边缘计算” 一词,所谓边缘计算我的理解就是一块带智能芯片的电路板,它内部集成了AI智能算法的功能;比如图像识别、语音语义识别;电路板本身就可以迅速完成智能推理的计算过程给出结果,并做出一些决策控制; 鉴于此,我想用这款FPGA板子开发出一个边缘计算的使用场景;
https://zhuanlan.zhihu.com/p/51526454 https://blog.csdn.net/yyt7529/article/details/4900571
|