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模型

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

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

  • 48
    点赞
  • 458
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值