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

相关推荐
仲南音2 天前
Xilinx FPGA——时钟IP核MMCM、PLL
fpga开发
I'm a winner2 天前
基于Xilinx FPGA的LVDS高速串行通信系统(三)--数据训练及握手机制【文末源码】
fpga开发
upper20203 天前
coremark移植坑之-nostartfiles -nostdlib参数
学习·fpga开发·coremark移植·riscv设计
Eloudy3 天前
Vivado 纯命令行构建 FPGA 项目教程
fpga开发
Rambo.xia3 天前
AXI跨时钟域与数据一致性——CDC FIFO深度不够、写后读冒险、多Master仲裁、乱序返回,出了Bug根本查不出来
fpga开发·bug
upper20203 天前
FPGA部署卷积神经网络识别MINST图片
fpga开发·卷积神经网络·minst·minst识别·部署神经网络·神经网络识别图片
你是我的解忧王子3 天前
嵌入式 ADC采样 原始数据分析上层(平均值 波动率 正态分布 线性补偿 系统误差)
fpga开发·数据挖掘·数据分析
9527华安4 天前
FPGA纯verilog代码ISP图像处理培训教程,基于IMX214,提供工程源码+视频教程+FPGA开发板
图像处理·fpga开发·isp·imx214·mipi
千寻xun5 天前
二、实战篇-NVME SSD控制之ZYNQ实现(六)-读写NVME SSD硬盘数据
fpga开发·nvme·nvme ssd
千寻xun5 天前
二、实战篇-NVME SSD控制之ZYNQ实现(三)
fpga开发·nvme ssd·nvme协议