【FPGA】入门学习路线

ops/2024/10/22 21:39:38/

文章目录

  • 编程语言
    • 语法
    • 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学习路线:搞定这四点,你也能轻松进阶


http://www.ppmy.cn/ops/105403.html

相关文章

【Xcode】Xcode基本使用指引

文章目录 Xcode安装及iphone模拟器的安装Xcode中Debug和Release的切换Xcode中控件的使用Xcode工程的基本组成Xcode UI基本设计及使用iOS开发项目中的日志系统静态库支持多种架构制作xcframeworklibuv库Xcode路径.pbxproj文件苹果平台的宏Leaks检测内存泄漏OC中的ARC和MRC小结 X…

在线音乐播放器项目

在线音乐播放器项目 登录页面 注册页面 主页 上传文件 我的喜欢 前端 js html css 三剑客 后端 Spring Boot框架 插件有:Spring Boot DevTools、Lombok、Spring Web、MySQL Driver、MyBatis Framework、security、detect 数据库有 三张表 lovemusic、music、user 工具类( co…

Vue 全局数据:提升开发效率的利器

在 Vue 开发中,全局数据的管理是一个非常重要的环节。合理地使用全局数据可以极大地提高开发效率,增强代码的可维护性和可扩展性。本文将深入探讨 Vue 中的全局数据,包括其定义、使用方法以及优势。 一、什么是 Vue 全局数据 在 Vue 应用中&a…

windows C++ 并行编程-并发和UWP(三)

控制执行线程 Windows 运行时使用 COM 线程模型。 在此模型中,根据对象处理其同步的方式,对象被托管在不同的单元中。 线程安全对象托管在多线程单元 (MTA) 中。 必须通过单个线程访问的对象托管在单线程单元 (STA) 中。 在具有 UI 的应用程序中&#…

每天学习一个基础算法之二分查找

目录 前言: 1、对二分查找概念的诠释 2、二分查找的使用场景 3、对比顺序查找与二分查找时间复杂度 4、二分查找的实现代码 代码主体(以接口函数的形式) 实现思路: 测试部分(主函数调用) 调试结果 前言&…

【算法每日一练及解题思路】判断字符串是否包含数字

【算法每日一练及解题思路】判断字符串是否含数字 一、题目:给定一个字符串,找出其中不含重复字符的最长子串的长度 二、举例: 比如"abcdefgh",不含数字;比如"1",含数字;比如"a1s",含…

第二证券:涨停潮!传手机将使用钛金属外壳?

今天早盘,银行股再度重挫,导致上证指数、上证50纷乱创出阶段性新低,上证指数跌破2800点,小盘成长股则大面积反弹,创业板指、科创50等股指飘红。 盘面上,新式烟草、钛金属、锂矿、玻璃基板等板块涨幅居前&a…

css改变鼠标样式

要在网页上改变鼠标的样式,你可以使用 CSS 的 cursor 属性。这个属性允许你为网页上的不同元素设置不同的鼠标指针样式。以下是一些常见的 cursor 属性值和使用示例: 常见的 cursor 属性值 默认指针 cursor: default;用于通常情况下的鼠标指针。 手形指…