#0_什么是FPGA_FPGA的零基础入门学习与开发实践

本文详细介绍了FPGA的基本概念、结构、特点,探讨了FPGA工程师所需的关键技能,包括Verilog和VHDL编程、开发工具的使用以及学习路线。此外,还提到了FPGA工程师的薪资趋势和常见的错误认识。
摘要由CSDN通过智能技术生成

第一部分:FPGA是什么

1. FPGA概念,名词解释。

FPGA中文名称“现场可编程门阵列”,是一种可重复变成的器件,是在PAL(可编程逻辑阵列)、GAL(通用阵列逻辑)、CPLD(复杂可贬称逻辑器件)等传统逻辑电路和门阵列的基础上发展起来的一种半定制电路,主要应用在ASIC(专用集成电路)领域,即解决了半定制电路的不足,又克服了原有可编程器件门电路有限的缺点,其重要的特点是“可重复编程、低功耗、低时延、算力强”。

2. FPGA结构,工作原理

FPGA包括CLB(可配置逻辑模块)、IOB(输入输出模块)、内部连线三大部分,具有和传统的可编程器件所不同的结构。FPGA通过向内部静态存储单元加载编程数据来实现逻辑功能,存储在存储单元中的值来决定逻辑单元的逻辑功能以及各逻辑单元模块之间或模块与I/O之间的连接方式,并最终决定了FPGA所实现的功能。FPGA利用小型查找表来实现组合逻辑,每个查找表连接到一个D触发器的输入端,D触发器用来驱动其他逻辑电路或I/O,由此构成一个既可以试下组合逻辑功能又可以实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属线互相连接或连接到I/O模块

3. FPGA的特点,独有优势

  1. 很多定制化芯片采用FPGA设计,用户不需要投片生产就可以得到合用的芯片
  2. 采用FPGA设计ASIC电路,周期短、费用低、风险小、质量稳定
  3. FPGA采用好书CHMOS工艺,功耗低
  4. FPGA体系结构、逻辑单元灵活、集成度高、适用范围广
  5. FPGA兼容了PLD和通用们阵列的优点,可实现大规模的电路
  6. 可现场重复编程,后期维护成本低
  7. FPGA是并行计算,可同时满足多功能需求

第二部分 FPGA工程师需要掌握什么技能

1. FPGA工程师必备技能

1、Verilog语言及其于硬件电路之间的关系;

2、器件结构;

3、开发工具(熟练掌握Synplify、vivodo、ISE、Modelsim);

4、数字电路(组合电路,触发器,特别是D触发器构成分频器,奇数倍分频占空比为50%,时序电路,并且能用Verilog语言描叙);

5、熟悉FPGA设计流程(仿真,综合,布局布线,时序分析);

6、熟练掌握资源估算(特别是slice、lut、ram等资源的估算);

7、同步设计原理;

8、熟练掌握基本概念(如建立时间,保持时间,流量(即所做FPGA设计的波特率)计算,延迟时间计算(所做FPGA设计),竞争冒险,消除毛刺的方法等等);

9、具备具体设计经验(对应届生而言如毕业设计);

10、良好的设计思路(流水线设计即熟称打拍子,在速率资源功耗之间的折中考虑)。

2. FPGA工程师薪资情况

近三年的就业数据看(应届):2020年就业入职学员平均薪资10384.33元,2021年就业入职学员平均薪资11600元,2022年就业入职学员平均就业薪资12626元。比同期应届毕业生薪资高出52%。如果一位有经验3-5年工作经验的工程师,年平均薪资在30-50万。

第三部分 FPGA学习路线

学习路线:

VHDL和Verilog都可以作为入门学习,如果你有C语言基础的话,那么更建议从Verilog开始。

推荐一个刷题的网站:HDLbits。

RTL设计主要有组合电路和时序电路两种,还有状态机。

关于RTL的验证,学习者主要掌握如何写一个简单的测试平台以及如何写一些简单的测试用例。

RTL学习容易犯的错误是用软件编程的思想去学习硬件语言,软件编程大多数是顺序执行的,硬件编程大多数是并行执行的。

对于Verilog掌握比较熟练的朋友可以转向system Verilog语言的学习,现在业界的大公司多选用system Verilog作为开发语言,可以将system Verilog看作是c++,Verilog看作是C语言。

仿真工具:常用的mentor的modelsim以及Synposys的VCS

还有一部分是了解FPGA的开发流程:RTL设计 仿真验证 逻辑综合等

我们需要知道为什么需要这些步骤,以及这些步骤完成什么样的功能。

FPGA主流的开发工具:AMD的vivado还要英特尔的Quartus。

熟悉FPGA的开发流程,怎么创建工程,怎么添加源文件。

熟悉常用的IP的配置和使用:PLL FIFO 存储器等,这些IP可以提高我们的效率,避免重复造轮子,怎么配置和调用这些常用的IP。还有一些复杂的IP,比如NIOS,以太网控制器等,这些复杂的IP初级阶段可能用不到,可以进阶的时候再学习。

熟悉一些硬件调试和时序分析的方法。

关于开发工具的使用,强烈建议配合开发板来学习,比较经典的实验有数码管、流水灯、按键、红绿灯。

总结一下:主要是有四点:编程语言、基础知识、开发工具、动手实验


写在最后,国内FPGA起步比较晚,市面上关于fpga相关的中文教程更是少之又少,没有办法跟嵌入式那些内容相比,需要说明的是:

(1)  教程内容是以自己曾经的学习角度进行撰写的,学习起来可能会容易些,后面每一个章节涉及到的代码都会直接开源到文章中。。其中有不妥之处还望指出,一起交流进步。

(2) 我主要使用verilog编程语言,Quartus II 13.1 (64-bit),仿真使用modelsim。相关的开发工具可以通过下面链接获取:链接:https://pan.baidu.com/s/1LB6RaIs-j8JB3L9VMU1u7A 提取码:6666

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值