前言
生活若没有目标,简直槽糕的一塌糊涂!学习,贵在坚持!
本文是导航目录,以记录自己的FPGA学习之路。或许我的一些博文在题目/内容等方面与网上的千篇一律,但整理一遍,对于我自己相当于学习笔记/加深进一步理解。由于是记录学习成长之路,部分博文观点可能不对/深度可能不够,望理解!随着工作经验的提升,以后会对博文逐步更新。
主要内容包括:FPGA学习方向、设计规范、常用通信接口类为主。每章节内容,后期空闲时,会逐步更新!
在本文的第四节引用一篇知乎文章(一个FPGA工程师的成长之路)的部分内容作为补充介绍,方便进行系统的学习、有针对性的对各方面的能力进行提升。
恭祝读者在各自的专业方面不断取得成长和突破!
一、基础篇
二、基础进阶
提供几个简单的FPGA工程示例
2.1 Simple Project | |
1、FPGA常用通信协议之IIC | 2、FPGA常用通信协议之UART |
3、FPGA常用通信协议之SPI | |
5、ADC | 6、FPGA实现USB通信 |
7、SD卡读写 | 8、FPGA 读写访问 Flash |
9、Verilog实现堆栈 | 10、FPGA中verilog补码应用 |
11 | 12 |
13 | 14 |
15 | |
2.2 时序约束与收敛 | |
1、静态时序分析 | |
1、Xilinx FPGA约束基础 | 2、Vivado XDC文件 |
3、Vivado时序约束工具 | ISE时序约束工具 |
2.3 FPGA芯片资源篇 | |
0、FPGA 主流芯片选型指导和命名规则 | 0、Xilinx 7系列 FPGA架构介绍 |
1、Xilinx 原语简介 | 2、Xilinx IOdelay--Virtex-5介绍 |
3、FPGA 进位链介绍 | 4、移位寄存器(SRLC32E)介绍 |
5、Xilinx乘法器IP介绍 | 6、Xilinx除法器IP介绍 |
7、Xilinx FIFO IP介绍 | 8、Xilinx Block RAM IP基础简介 |
9、AXI4-Stream Switch简介 | |
FPGA DSP资源介绍 |
三、中级篇
提供几个中等难度的FPGA开发项目示例
SDRAM控制器 | |
1、SDR SDRAM控制器设计 | 2、Sparten6/Kintex-7 DDR3 IP使用介绍 |
3、Sparten6/Kintex-7 DDR3 IP仿真实例 | 4、KU FPGA DDR4 SDRAM仿真 |
PCIE通信 | |
1、Xilinx PCIE CORE学习 | 2、Xilinx PCIE DMA--Sparten6/Kintex-7 BMD |
3、Xilinx PCIE DMA 仿真环境搭建 | 4、PCIE 基址寄存器BAR概念梳理 |
5、win10 jungo windriver | 6、xapp1052 BMD_64读写模块代码分析 |
光纤通信 | |
1、Xilinx Aurora IP 用户接口相关介绍 | 2、7系列高速收发器GTP IP核简介 |
3、Xilinx Aurora IP应用介绍 | |
以太网通信 | |
1、Xilinx ISE 千兆以太网基础 | 2、Xilinx 千兆以太网UDP数据传输方案 |
3、千兆以太网TCP/IP数据传输基础概念整理 | 4、Xilinx 三速以太网MAC IP核仿真 |
其他通信 | |
1、基于SERDES高速数据传输 | 2、基于SRIO总线的高速通信 |
3、基于SATA总线的高速数据存储 | 4、基于JESD20协议的ADC/DAC数据传输 |
5、基于FPGA实现HDMI视频传输 | |
下面整理一些公开的FPGA开源项目 | |
1、开源示波器 | |
ZYNQ基础入门
1、ZYNQ--矿机通信控制板 | 2、hello word |
3、 | |
4 | |
6 |
四、FPGA数字信号处理系列
1、FPGA在数字信号处理中的应用简介 | 2、 |
3、Xilinx FFT IP使用介绍 | |
4 | |
6 |
五、FPGA逻辑工程师应该掌握的各种能力
本节内容引用自:一个FPGA工程师的成长之路
建议初学者可以看看原文!本节仅是引用原文的部分内容。
引用如下:
大概设置了5种能力,每种能力在不同的阶段有不同的要求。其中,设计完成能力是最基本的要求。
设计完成能力
第一阶段:可以完成设计,基本知道verilog的语法,能够把一个需求用代码实现出来,并且能够调试出来,经常会上网搜索现成的模块,对逻辑的硬件思维基本没有
第二阶段:开始关注代码风格,开始把自己的代码写的风格统一,并且开始关注代码的硬件实现,突出标志就是开始关注rtl视图,比较能明确的区分可综合语句与仿真语句的区别
第三阶段:在这个阶段,对模块内部的代码书写有了更加深刻的认识,模块内部的写法开始更加统一,基本上,模块内部的代码可以直接生成rtl视图。而且,开始考虑设计的复用,开始考虑模块的划分,注重模块接口,平台化等等
第四阶段:该阶段已经可以比较轻松的完成一个逻辑设计,而且结构合理,易读,可复用。
第五阶段:可以带领一个团队完成比较大规模的逻辑设计,分配不同的工作任务,可以准确的预估项目的风险,进度,可以准确的做出逻辑的整体方案,仿真方案,调试方案,对于整体的业务流有全面而深刻的认识
器件能力
第一阶段:知道FPGA的意思,但是基本上不知道fpga的内部结构
第二阶段:不怎么关注器件视图。但是基本知道器件的大概结构,知道fpga里面有le,ram,dsp,全局等等,对逻辑器件有了基本的认识
第三阶段:此时开始关注器件结构,了解fpga的内部架构,时钟网络,route,对时序约束有了基本的了解
第四阶段:对器件结构有了比较深入的认识,开始认识到不同厂家器件结构的不同
第五阶段:熟知各个厂家的各种逻辑器件的内部结构,基本逻辑单元结构,以及由此带来的代码风格的相应的改变
时序约束能力
第一阶段:基本不知道什么是时序约束
第二阶段:知道时序约束,会做时钟约束,可以根据简单的公式计算输出输出约束
第三阶段:懂得时序约束与布线的关系,熟练掌握最基本的常用约束
第四阶段:对时序约束有深刻的认识,可以主动设计整体时钟和复位系统
第五阶段:熟知时序约束,并且能够采取各种手段,解决各种时序问题
逻辑架构能力
第一阶段:无
第二阶段:有一点点概念,知道大概可以划分模块,对模块的功能,接口没有要求,一般有需要就直接加一个接口信号,不能在项目开始就主动设计
第三阶段:开始考虑设计的复用,开始考虑模块的划分,注重模块接口,平台化等等
第四阶段:接手一些比较大的设计,开始有架构的考虑,对于模块的划分,模块接口,模块职责,整体方案的实现,开始有更多的考虑,此时,可以做出比较好的,合理的方案
第五阶段:对整体的逻辑架构有所考虑,并且开始准确的划分逻辑架构,模块接口,功能划分,工作职责,协同交流
时序收敛能力
第一阶段:无
第二阶段:无
第三阶段:开始接触到时序收敛,有单个时序不过的信号,能够予以解决
第四阶段:开始主动设计时序,基本可以完成整个设计的时序收敛任务。
第五阶段:对于逻辑的布局,数据流走向有深刻的认识,能够在项目支出就通过设计来保证时序收敛。
接口掌握能力
第一阶段:开始接触简单的接口,
第二阶段:开始掌握如串口,spi,i2c等简单的外部接口
第三阶段:开始接触ddr,ssram,ad,lpc等等略复杂的接口
第四阶段:开始接触pcie,transceiver,rapid io,phy,等等复杂且带协议的接口
第五阶段:无,此阶段,不需要用掌握接口的多少来衡量
逻辑流程掌握能力
第一阶段:基本不知道正规逻辑流程,基本无设计文档
第二阶段:能够根据已知的流程完成设计,写出文档
第三阶段:比较熟练逻辑流程,并且能够顺利完成设计文档
第四阶段:有比较严格的逻辑流程,并且完成各种文档,对流程的认识比较深刻
第五阶段:可以根据现状,制定合理流程和文档要求
仿真验证水平
其他
逻辑工程师水平的V模型
根据以上不同阶段对各种能力的要求,可以完成V模型
其中,完成设计是最基本、核心的要求,随着水平的增长,对其他能力的要求也随之变高。
在阅读完上面引用部分后,读者可思考如何针对性的提高自己各方面的专业能力!