【FPGA】初探FPGA —— 入门过程的分享

#悬崖上的花,越芬芳越无常~
终于又抽出时间搞这个FPGA入门系列了。这个也是我之前在B站做的视频,关于FPGA入门的过程经验的一个总结,去帮助大家帮助了解FPGA的入门。

南信大电子工程师协会慕课计划 —— FPGA入门学习(2):从入门到入坟的经验1

南信大电子工程师协会慕课计划 —— FPGA入门学习(3):从入门到入坟的经验2

——————————————————————————————————————————————

入门 —— 摸着石头过河

一般我们在学习某项技术的时候,肯定会有一个目标或者目的,这个技术是为了什么,是想做什么。在一开始接触FPGA的时候,可能是老师的推荐、或者是上专业课的要求,或者是竞赛的需求,导致了我们对于掌握FPGA技术的需求,这个接触的点,就是我们FPGA学习切入的一个点。

拿FPGA干嘛?

FPGA有许多经典的应用领域,像传统的数字信号处理,软件无线电、基带信号处理、数字图像处理,加上芯片验证上必须的设计验证。还有像比较基础的实验教学,课程设计,这样教学的场合。而现在开始把FPGA应用的到5G、云计算、数据中心当中去,做神经网络加速,硬件加速,这也是最近很热门的方向。
明确好学习FPGA的学习方向,有利于在学习的过程中,系统的学习该方面的知识,尤其是逻辑设计的重点。虽然说在初步入门的时候,基本上学的都是一类东西,但是在之后的继续学习的过程中,还是很多发展的空间的。

在这里插入图片描述

FPGA的优势是?我们用是FPGA的什么优势?

在FPGA的学习上,不同的人用FPGA的目的不一样,借用FPGA的优势也不尽相同。比如说用FPGA做数字信号处理和用FPGA做数字图像处理,用的是FPGA的并行性,能够实时的处理多比特数据,并且高速;用FPGA做IC的RTL验证,用的是 FPGA的可重构性,着重强调FPGA的可编程性,对线路时延和跨时钟域有要求;用FPGA做硬件加速,用的是高速并行性和可重构性,通过将可编程逻辑阵列池化成神经网络的加速单元,为广谱的神经网络或者特定神经网络进行加速。(比如FPGA在数据中心的部署)

我什么要学FPGA?

这个问题就比较宽泛了,但是在我们初学的时候,肯定有一个这样的想法,我为什么要学FPGA ,我学FPGA有什么用? 是为了工作有更好的竞争力?还是为了自己能够掌握更多的技术,或者FPGA只是工程的一部分,在我们有清晰的目标去努力的时候,学习的动力和效率会更加强烈,学习效果也会更好。

理论 —— 打好基础

通用的知识

  1. 硬件描述语言(HDL) —— Verilog HDL、VHDL、System Verilog
    在一般的社会FPGA入门里(指培训班和淘宝教程),都会使用Verilog作为入门学习的硬件描述语言;而在大部分高校里,课本和老师大部分使用VHDL作为入门的语言。我个人的推荐是学习Verilog,因为这个是现在商用最广泛,语法相对简单和灵活的HDL,虽然system Verilog在语法上具有更高的自由度,但是它的学习难度也是较高的,比较推荐的是先学会Verilog,然后再接触system Verilog,就很容易了。
    硬件结构
    规范的编程方式
  2. 专业的知识?
    通过FPGA实现的功能?数字信号处理?图像采集与显示?图像处理?物联网?音频信号处理?
    关于这个部分,可以去看另一篇博客,里头的书籍应该会有所启发。【FPGA】初探FPGA —— 入门书籍推荐
  3. 必须要深入的了解

方便理解的FPGA物理架构,FPGA的发展历史,相对前沿的行业信息

这一些知识的学习虽然看起来对FPGA的学习并没有什么帮助,甚至看起来会有点鸡肋,但是从长远的学习来说,有利于构建FPGA的设计思维,就是不要从给单片机的思维去给FPGA编程。

额外但又必须的知识
数字电子技术基础 —— 看家老本行
有限状态机(FSM)—— 一段式、二段式、三段式

实际工程 —— 软件使用、仿真

(从Altera介绍)

Altera(Intel)—— Quartus II

精简版Prime官网免费,Prime Standard 可以找破解
仿真软件 —— Modelsim
Altera 从Quartus 10 之后,就不在自家的EDA软件里嵌入仿真了,所以必须要做联合仿真
在这里插入图片描述

Xilinx(AMD)—— ISE / Vivado / Vitis

官网能够免费申请到正版license
初学相对复杂,因为Vivado的步骤比较严谨
自嵌入仿真系统,不需要做联合仿真,但是内存占用量会比较大。
适合大型项目高封装IP库,以及支持高级语言编程 —— C/C++ in HLS(High Level Synthesis)and Python + FPGA(PYNQ)
在这里插入图片描述
试一试支持国产?

上海安路信息科技(Anlogic) —— Tang Dynasty

相对较少的IP核,有些IP不是很好用
有时会触发一点奇怪的bug
电脑没法识别安路的下载器驱动,只能通过禁用数字签名的方式
相对的新手不友好,以及网上的资料太少。我自己之前写过几篇它的博客,可以参考一下。
【FPGA】安路FPGA下载器驱动安装教程
【安路FPGA】如何使用锁相环(PLL)IP核
【安路FPGA】从流水灯入门安路开发环境
在这里插入图片描述

上板实验 —— 直观的效果

理论与实际的结合
简单的控制器件 —— LED、按键、蜂鸣器、数码管、温湿度传感器,UART
复杂的控制器件 —— 实时时钟,EEPROM,SD卡,ADC,DAC,LCD1602,TFT LCD,VGA,OLED,SPI,IIC
更复杂的控制器件 —— 摄像头,以太网口,SDRAM,NIOS II
稍微组合一下
跑马灯 —— LED 和 计数器、分频器(我的FPGA老师爱惨了分配器 🙆🏼)
数码管计数器 ——  显示的重要性
交通灯 —— 初入状态机
VGA显示静态图片 —— ROM的妙处
按键控制蜂鸣器报警 —— 来点Music?

系统工程 —— 组合功能、展现应用效果

做点实物?
数字采集系统 —— 摄像头 + VGA
音频播放器 —— 录音、播放、sd卡放音乐
DDS + 示波 —— ROM、DAC、ADC
抢答器 —— 按键、蜂鸣器、数码管
(可以在GitHub和B站里找到这些开源项目)

复杂运算 —— 数字信号处理/图像处理/神经网络

最土的一些
边缘检测 —— Sobel算子、Canny算子
形态学滤波 —— 腐蚀膨胀
肤色检测 —— 肤色阈值
降噪滤波 —— 中值滤波、 均值滤波、高斯滤波
(详见《基于FPGA的数字图像处理原理及应用》)
数字滤波 —— FIR、IIR
数字运算 —— 浮点数的FPGA运算
(详见书籍《数字信号处理的FPGA实现》)
控制类 —— PID算法、kalman滤波
神经网络
大部分是硬件的神经网络加速器

大型工程 —— 科研项目/学科竞赛/工程应用

可以通过竞赛、GitHub、Gitee 寻找开源的项目进行项目学习和复现,通过中国知网(CNKI)、IEEE Explorer 查询FPGA工程论文,尝试复现论文作品。

在这里插入图片描述

结语

好懒啊,不想写结语了。这个文章是把我B站视频讲解的背景拿过来,投的一个文章,因为视频看起来可能会有点不方便嘛,文章会好很多。总的来说,FPGA的入门是一个道阻且长的过程,不要说我一两个月就能0基础速成,两三个月就能做大项目,这是根本不可能的。

一个具有熟练能力的FPGA应用水平的人,至少需要3个月以上的基础学习,不是说我做了什么东西,跑了代码就能够学成,很多经验,和算法融合之后的问题,都需要在实际的应用中才能发现。正好因为最近是第五届集成电路创新创业大赛的报名,然后很多人也在问我怎么去学FPGA,怎么参加比赛。我是一律不推荐0基础和刚上完FPGA课程的人去参赛,因为难度太大,差距太大的话,基本就是在浪费时间。
集创赛并不是一个FPGA的比赛,而是真正贴合集成电路和微电子的比赛,FPGA只是其中很小的一部分,相比来说电子设计竞赛更适合大部分电子信息类专业,集成电路比赛的方向偏向性太高了,基本上不适合其它专业。
当然,比赛只是为了提升自己,而不是过于为了拿奖而拿奖,这样的话,永远不会有好结果的,这种想法越是强烈的人,越没有办法在学术上走的长远,反而容易走极端,小则学术不端,大则学术造假。

——————————————————名词翻译——————————————————————

VHDL —— 超高速集成电路硬件描述语言

Very-High-Speed Integrated Circuit Hardware Description Language

  • 9
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
交通灯是当今城市交通中不可或缺的元素之一。交通灯的设计需要考虑到路口的车流量、道路的宽度和周围环境等因素。而quartus是一种用于数字电路设计和逻辑开发的软件工具,可以帮助我们实现交通灯的功能。 首先,我们需要明确交通灯的功能,即红灯表示停止,绿灯表示行驶,黄灯表示准备停车。在quartus工程中,我们可以用逻辑门、时序逻辑电路和状态机来实现这些功能。例如,我们可以使用逻辑门设计一个计数器电路,每经过一定的时间就切换到下一个状态,从而实现交通灯的状态切换。 其次,我们需要确定交通灯的控制方式。一种简单的方式是根据道路上的车辆情况和倒计时来控制交通灯的变换。在quartus工程中,我们可以使用传感器来检测车辆的存在,然后根据倒计时器的计时来控制交通灯的变换。 最后,我们需要将这些功能组合起来,并将其烧录到FPGA芯片上。通过quartus工程,我们可以将这些功能逻辑实现,然后将其转化为相应的二进制代码,再将其烧录到FPGA芯片上。这样,我们就可以通过FPGA芯片控制交通灯的状态变化。 综上所述,交通灯的quartus工程主要包括交通灯功能的设计和控制方式的确定,并通过quartus工具将功能逻辑实现并烧录到FPGA芯片上。这样,我们可以实现一个完整的交通灯系统,为城市交通提供有序和安全的交通环境。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值