再谈fpga开发(fpga开发的几个特点)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

学习嵌入式的同学都知道,嵌入式一般分成这几种chip,有51,有stm32 mcu,有soc,有dsp,有gpu,有npu,最后一种就是fpga。有的最后是单独卖,有的需要一个上位机。前面几种一般就是软件编程为主,应用也比较广,只有最后一种fpga,它的使用和前面几种差异很大,听说过的人多,用的人少。今天正好来聊一聊。

1、fpga的基础是时钟、复位和信号

如果是软件开发,大部分都是c语言开发,少部分是c++开发。既然是软件开发,那就是我们写好软件之后,由编译器和链接器生成二进制代码之后,送到flash里面,等着被cpu执行。不管这个cpu属于51、arm、还是dsp,它都是一条一条去执行的。所以软件执行的基础是汇编指令。

但是fpga不同,它的基础是一个、一个的数字信号。从颗粒度来说,它要比纯软件细很多。基本上每一个外设,每一个接口都需要去详细设计,当然这个过程中也可以使用厂家提供的ip,或者是sample code。每一个fpga工程都有一个top module,这个top module中除了clk、rst,剩下来就是各种外设,包括gpio、sdram、lcd、camera、spi、iic等等。这里说的是,相比较纯软件的芯片,fpga本身更接近硬件一点。

2、fpga的并发问题

和软件一条一条去执行不同,fpga天生就是并发的。当然,我们也可以说,多核cpu也可以并发执行。不过这种并发和fpga比起来,还是小巫见大巫。因为fpga,本身设计的时候,就是让所有的register在一个clock下面,并发运行,这是它的基因决定的。

至于是不是所有的register,真的每一个时刻都要去变更,这个真不一定。首先,我们会切分成不同的module,每一个module都是独立的状态机。module里面,如果复杂程度比较高,还会继续切分成子模块。另外,对于每一个module而言,如果register之间相互依赖,那么即使是并发的fpga,也会变成顺序执行的形式,这个时候就和mcu开发是一样的了。

3、fpga的demo居然和mcu demo一致

fpga具有天生的并发特性,不过大家在学习和开发买板子的时候,却发现这样一个事实。那就是fpga的demo例子居然和mcu是一样的,也是从点灯、串口、定时器、spi、iic、ddr、屏幕这些开始,最后以一个小的工程收尾。这个时候大家就会很疑惑,既然fpga学的内容和mcu一致,而且fpga是并发思维,调试也不好调试,价格上也没有优势,为啥自己还要学习fpga?

4、价格问题

fpga本身是很垄断的行业,之前都是国外垄断,尤其是xilinx、altera和lattice三家公司,基本占据了全部的市场。现在慢慢的国产fpga起来了,尤其是中低端领域,国产fpga也开始展露头脚。不过和mcu相比较,fpga的整体价格还是偏贵,资源密集度也少。一般的mcu或者是soc板子,最便宜的十几块、二十几块就可以,fpga虽然说现在便宜一点了,最便宜的也要上百块,更不要说动则上千、几千的fpga了。

5、实际落地场景问题

从实际应用来看,fpga的应用还是在两个领域比较多。一个是希望用fpga做多接口的电路。比如一个mcu、soc,它的某种接口,例如spi、iic都是数量有限的,但是fpga几乎是全能的,做成什么接口都可以,数量没有限制。还有一种就是算法加速,特别是那种高带宽、低复杂度的算法。这种情况,特别适合cpu采样、fpga做预处理、接着cpu完成算法的场景,很多cpu+fpga的soc就是这么做的,以前可能只有zynq,现在很多国产的fpga厂商也开始支持这种模式了。图像就是fpga应用最合适的场景之一。

6、厂家的支持

大家使用fpga的时候,最好得到原厂的帮助,这样会快很多。**不光fpga可以用ide开发,做一些简单的pll、fifo、ram、rom、乘法器、dma这些,还可以利用原厂的资源,获取pcie软核、mac软核,以及数量不低的sample code,这些都可以改一改就可以用在自己的产品上的。**我们学习的时候,是需要一行代码一行代码去写,实际应用,最好还是建立在厂家的sample code基础之上去开发、去应用。

相关推荐
物质波波波9 小时前
WS-RPE:面向边缘物理AI实时特征值计算的硬件工作窃取调度器与冗余PE激活架构
人工智能·fpga开发·架构·系统架构·硬件架构
我爱C编程12 小时前
基于FPGA的DSB调制解调系统verilog开发
fpga开发·verilog·fpga·dsb
zlinear数据采集卡13 小时前
USB HS 480M高速传输与SRAM记录仪:DABM-D223数据存储系统全解析
arm开发·嵌入式硬件·fpga开发·开源
逻辑诗篇15 小时前
基于 XCVU13P 的 4 路 100G 光纤 PCIe 处理板 PCIE727 硬件规格全解析
fpga开发
玩嵌入式谁会脱发呀18 小时前
【FPGA】 verilog设计spi读写flash实现数据DMA搬运
fpga开发
LabVIEW开发2 天前
LabVIEW 如何把地下震源定位误差做到5米内
fpga开发·labview·labview知识·labview功能·labview程序
Dr.kangder2 天前
嵌入式处理器架构解析(十)——DSP+FPGA
fpga开发·架构·嵌入式
szxinmai主板定制专家2 天前
Zynq MPSoC实现半导体真空腔体状态监测|FPGA多传感器时序同步采集方案
fpga开发·zynq·控制器·mpsoc·半导体设备·fpga同步
学习FPGA的电气小兴兴2 天前
基于FPGA的DDS信号发生器设计,生成频率可调的正弦波、三角波、锯齿波和方波
fpga开发·数字信号处理·fpga·vivado·dsp·dds·diy
szxinmai主板定制专家3 天前
Zynq MPSoC半导体高精度运动控制方案|FPGA硬件插补实现亚微米级伺服实时控制
人工智能·嵌入式硬件·fpga开发·zynq·运动控制·ethercat