FPGA基础进阶

前言

生活若没有目标,简直槽糕的一塌糊涂!学习,贵在坚持

本文是导航目录,以记录自己的FPGA学习之路。或许我的一些博文在题目/内容等方面与网上的千篇一律,但整理一遍,对于我自己相当于学习笔记/加深进一步理解。由于是记录学习成长之路,部分博文观点可能不对/深度可能不够,望理解!随着工作经验的提升,以后会对博文逐步更新。

主要内容包括:FPGA学习方向、设计规范、常用通信接口类为主。每章节内容,后期空闲时,会逐步更新!

在本文的第四节引用一篇知乎文章(一个FPGA工程师的成长之路)的部分内容作为补充介绍,方便进行系统的学习、有针对性的对各方面的能力进行提升。

恭祝读者在各自的专业方面不断取得成长和突破!

一、基础篇

1.1 理论篇 :代码规范/文档规范/Verilog语法
1、个人FPGA学习方向规划2、关于FPGA学习方向之类的
3FPGA工程师需要具备的技能4、RTL设计之设计规范
5、office word文档规范6、FPGA基础--绘制时序图
7、RTL设计之状态机讲解8、FPGA设计基础:状态机设计的一般原则
9、FPGA设计基础--层次化建模和模块划分技巧
Verilog语法与代码模板
1、条件编译Verilog HDL语法2、Verilog中memory数据类型
3、Verilog中for/generate语句4、Verilog中task/function说明语句
5、verilog语法+:和-:
6、模块端口parameter与模块例化
1.2 工具使用篇:
1.2.1 Xilinx/ISE/Vivado
1、ISE14.7与win10兼容的方法2、关于Xilinx下载器驱动安装及常见问题解决方法
3、ISE bit文件转MCS文件3、Quartus生成JIC文件流程
4、notepad++使用介绍
5、ISE和quartus中防止观察信号被优化掉简单方法6、ISE工程里添加 ILA/ICON 逻辑分析仪
7、FPGA Edite 修改时钟相位8、PlanAhead进行手动布局
9、多个FPGA之间PLL输出时钟的同步10、FPGA PLL时钟经 ODDR送到管脚
11、Verilog时钟分析12、信号跨时钟域
13、Vivado生成HDL例化模板14、vivado VIO使用简介
15、vivado添加chipscope简介16、vivado时序报告简介
17、vivado user guide
经验总结
2、Xilinx ISE WARINING 小结3、ISE Timing Report 小结
4关于FPGA工程逻辑调试的一些总结FPGA工程稳定性、可靠性分析
1.2.2 Inter/Quartus:
1、Quartus II 中管脚分配的几种方式2、Quartus SignalTap II调试具体操作步骤
3、Quartus时序约束工具
1.2.3 仿真篇:
0、testbench简介
1、ModelSim-SE10.4安装说明2、modelsim do文件简介
3、Quartus与ModelsimSE联合仿真4、ModelSim仿真波形保存步骤
5、Xilinx 三态门 IOBUF 仿真6、Beyond Compare4安装说明
7、Modelsim独立仿真DDR48、vivado软件安装简介

1.2.5 图书篇:

FPGA仅是实现设计的一种工具。个人在FPGA领域的进一步发展,则取决于你FPGA应用所在的领域。个人的进一步发展,多读一些较为专业的书籍!

1、《FPGA快速系统原型设计权威指南》读书小结2、兼容ARM9的软核处理器设计--基于FPGA----读书小结
3、PCI Express 系统体系结构标准教材4、无线通信FPGA设计
5、Reconfigurable Computing The Theory and Practice of FPGA-Based Computation6、Xilinx FPGA开发实用教程_[田耘 著]
7、

二、基础进阶

提供几个简单的FPGA工程示例

2.1  Simple Project
1、FPGA常用通信协议之IIC2、FPGA常用通信协议之UART
3、FPGA常用通信协议之SPI

4、FPGA实现VGA图像显示

5、ADC

6、FPGA实现USB通信
7、SD卡读写8、FPGA 读写访问 Flash
9、Verilog实现堆栈10、FPGA中verilog补码应用
1112
1314
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 windriver6、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数字信号处理系列

1FPGA在数字信号处理中的应用简介2
3Xilinx 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模型

其中,完成设计是最基本、核心的要求,随着水平的增长,对其他能力的要求也随之变高。

在阅读完上面引用部分后,读者可思考如何针对性的提高自己各方面的专业能力!

### 回答1: FPGA是一种可编程逻辑器件,它具有可编程性和可重构性的特点,因此FPGA在数字信号处理、通信、控制、图像处理等许多领域都有着广泛的应用。而FPGA项目进阶则需要具备一定的技术和经验,下面从几个方面分别进行介绍。 首先,FPGA项目进阶需要掌握VHDL或Verilog等硬件描述语言。这是实现FPGA设计的必备基础知识,编写VHDL或Verilog代码可以描述FPGA芯片内部的嵌入式逻辑电路,并将其映射到硬件上。 其次,FPGA项目进阶需要具备系统级设计的能力。包括FPGA与外设的接口设计、时序约束的处理、时钟和复位的管理等。这些技能需要有广泛的硬件、电路设计和EDA软件使用经验。 再次,FPGA项目进阶需要有足够的信号完整性和时序设计的知识。因为在设计大规模和高速的FPGA芯片时,信号完整性、时序和时钟等问题应得到高度重视,避免出现信号干扰、时序偏移、时钟抖动等问题。 此外,FPGA项目进阶也需要掌握FPGA的设计流程和开发工具,包括Xilinx Vivado、Quartus Prime、ISE等工具的使用方法和调试技巧。 总之,FPGA项目进阶需要功底扎实、经验丰富的FPGA工程师来完成。只有不断学习和实践,不断优化设计,才能在FPGA项目设计和开发领域获得更高的技术水平和经验。 ### 回答2: FPGA项目进阶是一个长期的过程,需要不断的学习和实践。在这个过程中,需要掌握FPGA器件的基本原理、逻辑设计、时序分析等知识。同时,还需要熟悉FPGA开发工具的使用,比如Vivado等。下面分别从FPGA器件和开发工具这两方面进行讨论。 在FPGA器件方面,需要了解FPGA器件的体系结构和资源等基本知识。要掌握FPGA器件的编程,需要熟悉HDL语言,如VHDL和Verilog等。了解FPGA器件的时序分析、时钟控制、时钟域等概念,以及各种接口标准,如AXI、PCIe等,都是必要的。 在FPGA开发工具方面,需要掌握Vivado等FPGA开发工具的使用方法,包括项目的创建、工程文件的创建和配置、IP核的使用、仿真调试等。此外,还需要了解FPGA开发工具的优化方法,如利用多块FPGA构建高性能系统、采用面向对象的可重用设计等。 总之,FPGA项目的进阶需要不断的学习和实践,并且需要不断地关注新技术的发展,结合实际应用需求进行优化和创新,才能在FPGA应用领域中取得更好的成果。 ### 回答3: FPGA 是一个非常有用的硬件设计工具,它可以使用可编程逻辑单元来实现不同种类的电路,例如数字信号处理、图像处理、加密、通信等等。在我们的 FPGA 项目进阶中,我们需要掌握更多的 FPGA 设计技术,以便设计出更加复杂和先进的电路。 首先,我们需要了解 FPGA 的内部结构和工作原理。这包括了 FPGA 的片上资源(例如可编程逻辑单元、分频器、时钟控制器等等)、时序设计和时钟域交叉等知识。通过理解 FPGA 的内部结构和工作原理,我们可以更好地利用 FPGA 的特性来设计合适的电路。 然后,我们需要掌握 HDL(硬件描述语言)的编程。HDL 是一种用于 FPGA 设计的编程语言,它可以描述电路的功能、时序和结构。目前使用最广泛的 HDL 是 Verilog 和 VHDL。通过学习 HDL,我们可以利用 FPGA 的可编程性和灵活性,更加高效地设计和验证电路。 除此之外,我们还需要了解 FPGA 的性能调优、时序分析和电源管理等方面的知识。这些技术可以帮助我们优化设计,提高电路的运行速度和可靠性,同时减少功耗和热量消耗。 最后,我们可以通过阅读相关的书籍、参加培训班或者参与开源社区等方式来深入了解 FPGA 的设计技术。通过不断地学习和实践,我们可以提高 FPGA 设计的水平,为实现更多有用的电路打下坚实的基础
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值