再谈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基础之上去开发、去应用。

相关推荐
星夜离尘568 小时前
FPGA 复位回归实验:双时钟停钟、释放中重入与消费端首拍自检
fpga开发
szxinmai主板定制专家9 小时前
ZYNQ 数据采集方案踩坑总结:电力强电磁干扰、工业现场多协议适配优化
运维·人工智能·fpga开发·机器人·zynq
幻智星科技11 小时前
一个开源的纯FPGA网口采集卡
网络协议·fpga开发·udp
bobuddy11 小时前
硬件加速三件套:emulator-FPGA 原型-云仿真
fpga开发
szxinmai主板定制专家16 小时前
软硬协同!ZYNQ 高速多通道同步采集,变电站 / 工厂设备状态监测方案详解
人工智能·深度学习·机器学习·fpga开发·zynq·rk3576
FPGA小徐16 小时前
FPGA 8阶LFSR加扰/解扰器设计
fpga开发
逐光者93318 小时前
超前进位加法器:原理、推导与 Verilog 实现
fpga开发
szxinmai主板定制专家19 小时前
ZYNQ PL+PS 架构拆解|工业自动化与电力物联网高速数据采集、预处理与协议上云
arm开发·人工智能·物联网·fpga开发·数据采集卡·rk3576
szxinmai主板定制专家20 小时前
告别 ARM 实时性短板:基于 ZYNQ 的电力故障录波 + 工业振动数据采集系统设计
arm开发·人工智能·fpga开发·zynq·数据采集卡·arm+fpga·rk3588+fpga
FPGA小徐21 小时前
FPGA 实现 Canny 边缘检测|大白话原理 + 专业工程解析
fpga开发