当前位置: 首页 > news >正文

【FPGA】入门学习路线

文章目录

  • 编程语言
    • 语法
    • RTL设计
    • RTL验证
    • 学习方法
    • 仿真工具
  • 基础知识
    • (1)专业基础课
    • (2)FPGA相关专业知识
    • (3)FPGA开发流程
  • 开发工具
  • 动手实验

编程语言

硬件描述语言HDL(Hardware Description Language)/寄存器传输级语言RTL(Register Transfer Language)。这是一种描述数字电路功能和行为的语言,可以在寄存器的传输级、行为级、逻辑门级等描述电路。

主流的硬件描述语言又VHDL(语法更加严谨)、Verilog(语法更加灵活)、System Verilog,先掌握一个语言即可,推荐verilog

语法

  • 教材:《Verilog数字系统设计》、《Verilog HDL高级数字设计》
  • Verilog语法可以分为可综合(Synthesizable,这部分语句可以生成对应的硬件电路)和不可综合的部分(Non-Synthesizable,主要用于验证和仿真)
  • 刷题网站:HDLBits

RTL设计

RTL设计主要有组合电路时序电路两个部分,还有一个状态机,这些在刷题网站HDLBits里都有对应的题目。

RTL验证

如何写一个测试平台,写一些简单的测试用例

学习方法

  • 不要用软件编程的思想去思考硬件,软件编程大多是顺序执行的,硬件编程大多是并行执行的。
  • 在学习Verilog的时候一定要多思考它对应的硬件电路是什么样的。比如在Verilog中写一个for循环,它会综合出一个什么样的硬件电路。或者写一个if else语句,会综合出一个什么样的电路。写一个case语句,会综合出一个什么样的电路等等。
  • 对于一个给定的逻辑功能,要想象出它的电路结构,然后使用Verilog语言来实现,同时可以写一些简单的测试用例和测试环境。

仿真工具

在这里插入图片描述

基础知识

(1)专业基础课

电路、数电、计算机体系结构、接口、数字信号处理(数电必须)

(2)FPGA相关专业知识

FPGA芯片的结构以及一些基本组成单元的结构(如查找表、逻辑单元、逻辑块、DSP、存储器等等),这部分可以看FPGA的官方文档

(3)FPGA开发流程

在这里插入图片描述

开发工具

主流的开发工具主要是AMD的VIVADO和英特尔FPGA的Quartus。

  • 熟悉开发流程
  • 熟悉IP的配置使用(一些常见的IP:OLL、FIFO、存储器,一些复杂的IP:软核处理器NIOS、通信用的PCle、DDR控制器)
  • 学习硬件调试和时序分析的方法,比如如何看一个设计的最大频率、时序不收敛的时候如何修改你的设计、如何使用一些硬件调试的工具比如Quartus里的SignalTap。

关于FPGA开发工具的学习可以参考教材、并配合开发板进行学习

动手实验

数码管、流水灯、按键、红绿灯、常见的总线通信、数据处理和信号处理
《深入浅出玩转FPGA》、《勇敢的芯 伴你玩转Altera FPGA》
开发板:Xilinx A7

参考链接:入行十年,我总结了这份FPGA学习路线:搞定这四点,你也能轻松进阶

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Python系列】SQLAlchemy 基本介绍
  • 等保2.0--安全计算环境--TiDB数据库
  • ThinkPHP A表和B表一对多关联,根据B表中符合条件记录的某个字段的值对A表数据进行排序。
  • 更改网络ip地址时出现错误怎么办
  • 深度学习项目实践——qq聊天机器人(transformer)(二)配置环境与部署
  • 做影像组学+深度学习技术研究如何发表高分论文,案例解析
  • 常用Numpy操作(笔记整理)
  • (四)进入MySQL 【事务】
  • 力扣234题详解:回文链表的多种解法与模拟面试问答
  • 深入理解归并排序
  • Mybatis中的缓存
  • 前端路由与后端路由的区别和联系
  • fiddler抓包工具入门到入职之如何精准的定位前后端的bug
  • 巧用scss实现一个通用的媒介查询代码
  • 破圈之路——写在创作纪念日
  • [case10]使用RSQL实现端到端的动态查询
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  •  D - 粉碎叛乱F - 其他起义
  • javascript 哈希表
  • java取消线程实例
  • Linux CTF 逆向入门
  • Linux后台研发超实用命令总结
  • WebSocket使用
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 一个JAVA程序员成长之路分享
  • 因为阿里,他们成了“杭漂”
  • postgresql行列转换函数
  • Spring Batch JSON 支持
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​第20课 在Android Native开发中加入新的C++类
  • #FPGA(基础知识)
  • $nextTick的使用场景介绍
  • (23)Linux的软硬连接
  • (C++哈希表01)
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (二)十分简易快速 自己训练样本 opencv级联lbp分类器 车牌识别
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (十八)Flink CEP 详解
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .NET的数据绑定
  • .net反混淆脱壳工具de4dot的使用
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • @Validated和@Valid校验参数区别
  • [ Linux ] git工具的基本使用(仓库的构建,提交)
  • [AIGC] 如何建立和优化你的工作流?
  • [Android Studio 权威教程]断点调试和高级调试
  • [Bugku] web-CTF靶场系列系列详解⑥!!!
  • [BZOJ5250][九省联考2018]秘密袭击(DP)
  • [C#]扩展方法