Verilog 简介与FPGA厂商介绍

30 篇文章 7 订阅
20 篇文章 9 订阅

1.1 Verilog 简介与FPGA厂商介绍

->_<-


本篇并不会涉及到Verilog本身的知识,都是拓展阅读。

学习Verilog最好有的基础

  1. C语言或任意一种编程语言,或者VHDL

    实际上,这个没有也是可以的,但是可能一些编程概念上有一点难以接受。特别是C语言,建议掌握的程度最好是75-95分这样的水平。

  2. 数字电路基础

    Verilog的全称是 Verilog HDL,其中HDL指的是硬件描述语言(hardware description language),所以需要注意,无论是Verilog还是VHDL写出来的代码,都是用来描述硬件的,这里的硬件指的就是数字电路。

Verilog简介

​ 接上文,Verilog的全称是 Verilog HDL,其中HDL指的是硬件描述语言(hardware description language)。所以Verilog设计出来就是为了做芯片的,但同时由于芯片流一次片的成本过高,就有了类似CPLD(Complex Programming logic device,复杂可编程逻辑器件),FPGA(Field Programmable Gate Array,可编程逻辑门阵列)等可以通过编程的方式改变硬件逻辑的器件。

​ Verilog除了设计之外,还有一个比较重要的作用就是验证。所以大家一看那些开发板教程的时候讲的什么可综合,不可综合关键字,其实就是区分其是用来做设计还是用来做验证的而已。

​ 实际上,Verilog的标准只出到了Verilog-2001而已,往后这语言的发展和维护就过渡到SystemVerilog中了。在SV中不管设计还是验证都有更高的灵活性,而且向下完全兼容Verilog。但是由于其灵活性,大家也害怕其最后得出的硬件与预设计不同,所以现在SV主要做验证方向比较多,(毕竟Verilog得到了充分的硬件验证)。后续看情况出sv教程吧。

设计层次与工具

由于笔者是做FPGA设计的,下图总结的也大多的FPGA的开发层次和工具。本节以下基本都是基于FPGA所讲的。

image-20210305142123192

​ 这是我在两年前总结的,这两年随着数字IC的火起也多了很多设计工具,比如spinalHDL,和chisel一样也是基于Scala搞出来的,虽然设计层次高,但仍然是硬件描述语言,基于FPGA也有一定的验证了。但是建议各个初学者还是先安心学好Verilog再考虑其他语言。

​ 由于此教程更偏向实践型,所以相关的设计层次可以百度自己理解一下,写多了就变吹嘘了。


怎么学Verilog with FPGA

这个问题跟这个号的定位有一点关系

买一块开发板

​ 这个是最直接的方法,开发板买多贵,买什么品牌,什么型号这个主要和FPGA型号有关系,这个下面有介绍。当然如果导师有提供,那另说。

​ 跟着教程走,玩完它上面的外设,基本也就入门了。但实际上开发板上的教程各家不同,一些入门级的板子还是讲得太浅了(因为基本也就把几个硬件逻辑串起来,然后以项目的方式讲一下)

不买板子,但跟着开发板教程走

​ 这个方法比较取巧,但是虽然Verilog是一个写硬件的语言,但他更多看的还是逻辑,直接看别人的开发板教程走,然后用仿真软件验证确实也行。

​ 这种方法的缺点有以下这么几个:

  1. 没法看见真正的硬件,后面做工程的Debug能力不及别人。
  2. 一些如iic等需要交互的协议没法学(不是没法做,只是初学者碰这个就是劝退)。
  3. 一些异构的板子(带cpu)的没法这样做。

看一些博客、公众号写的教程

包括本号以内,我对这种博主,号主写的教程的态度都是,个人纪录价值大于教学价值。

而且我横向对比了一下各个做FPGA、IC设计的公众号,可能基本他们的水平太高了,讲语法的时候基本就是陈述一下就过去了。

所以这个专栏教学会比较偏重实践和代码吧,主攻大家从刚看完开发板教程到能看懂各个大牛写的博客的这个中间阶段,或者已经在开发阶段,提供一些Verilog中的小技巧。

希望大家看这个号都能学得到东西。

我建议的学习流程

  1. 尽可能搞一块FPGA(最好是借)把他附带的流程都看完
  2. 找一些实际小项目做一下,比如vga/hdmi串流,写一些基础DSP算法,反正就是朝着你想做的方向迈迈步,这样才能真正熟络verilog。
  3. 在opencores上下一些通用的开源ip核,或者下一些自己做过的东西,对比学习一下,会发现Verilog的很多奇妙小用法吧。
  4. 跳出当前的FPGA框架,去学一下其他家的FPGA,其他家的调试,仿真工具,会加深对FPGA本身和开发流程本身的了解。
  5. (option)学一下ZYNQ,看一下FPGA对外可以怎么通信,怎么交互的
  6. (option)学一下HLS,System Generator,OpenCL,等高级语言开发FPGA的工具
  7. 在FPGA上搞一些高级一点的应用,比如图像处理,卷积神经网络的硬件加速,或者有条件做一些硬件的高速接口等等,这个取决于自己方向,这个主要是建立起一些大局观。
  8. 在2-7中,都可以通过关注本博客/公众号来获得一些意外收获:)

1中建议借的原因是,可能大家初学的时候啥都不知道,乱买容易出事,并且冤有头债有主,学不会的时候不得请教请教别人是吧/doge 。后面熟悉一点之后再自己补一个FPGA也是极好的。


下面针对两家国外FPGA大厂简要介绍一下他们的产品家族和开发工具,国内的FPGA近年来也发展起来了,找机会再单独聊聊(金主爸爸快来康康)

Xilinx

赛灵思(Xilinx)家的FPGA生态下大致有4条产品线:

  • Virtex: 同时期中xilinx家容量最大,性能最好的FPGA

  • Kintex:Virtex的青春版,在成本和功耗上做出了一定程度的让步,不过也是高端器件

  • Artix:Kintex的Lite版,尽可能不降低性能和资源数量的情况下大幅降低了器件成本

  • Spartan:Artix的畅享版,资源和性能都不如前面的,但是胜在价格漂亮

当然,上述的比较是同时期,同水平下的,没道理说一个Virtex4能打赢一个Artix7吧?具体有什么型号可以自行百度

他们家的芯片型号读法是这样子的:

img

那么这个时候就会有朋友要问了:zynq系列呢?

ZYNQ系列是赛灵思的异构系列产品,将他们家的FPGA和一些ARM的CPU给嵌合到一起去了,也分高低端,对于ZYNQ7000系列来说,一般封进去的FPGA为Kintex7或者是Artix7,下面是ZYNQ7000系列的器件细节:

image-20210305164912980

后面也会开一个关于ZYNQ的入门小专栏(flag)

除此之外,也还有xilinx家最近发布的ACAP,但这些离现在还在看这个教程的大家太遥远了.

赛灵思家的开发工具

​ 根据迭代有:ISE,Vivado和现在刚出的Vitis,目前最主流的开发平台是Vivado,但是他有一个对初学者不太友好的点在于:Vivado只支持7系列以上的器件,而现在低价的FPGA开发板依然停留在Spartan6时代,导致一些人学完之后觉得自己可以了,后面才发现连开发平台都不一样了,这方面怎么权衡会放在后面说。

个人建议,如非以下原因,就不要搞ISE了:

  1. 工作或项目需要,又或者是以后想接触国产FPGA芯片的
  2. 买了价格比较诱人的Spartan6产品,想着不学学就浪费了的
  3. 在有可用ise的板子下,不满足安装vivado最低硬件要求,且系统为win7/8

而且ise对64位的支持不太好,在win10上有一些bug,本教程及往后的zynq(pl)教程均使用Vivado2018.3,但由于本篇不讲技术,故先不讲安装和基本使用。

Intel(Altera)

​ Altera在被Intel收购之后,在FPGA上其实一直是在被吸收,直到最近才推出了一个Agilex来对抗赛灵思家的ACAP。

​ 主要有三条产品线:Stratix,Arria和Cyclone,同时期下性能关系与赛灵思类似

​ 在Intel收购Altera后推出的器件全部都多了个Intel 起头,如Intel Stratix,Intel Arria和Intel Cyclone

他们家的型号分类有点多样,这里po一条外链intel家FPGA型号读法

intel家的开发工具

由于altera被中途收购了,他们家的开发工具套装比较简单,都叫Quartus,相信大家学eda课时基本也是用的Quartus加Cyclone系列。

img

但是需要注意,现在的Quartus分为三类:

  1. Quartus 专业版:开发被intel收购后推出的产品
  2. Quartus 标准版:开发Intel Cyclone 10LP,Intel Arria系列和之前没被收购前推出的产品,具体细节分类可到官网看
  3. Quartus 精简版:Quartus 标准版 青春版,但免费

如果没有特殊说明,用到Intel家器件的时候,默认使用的版本是Quartus 16.1 win版

仿真工具说明

小项目/小工程会直接使用Vivado自带的Vivadosim,其他的默认使用Modelsim10.4c,Intel家的modelsim有专供版本,下载的时候顺便下了就行,xilinx的后续会出教程。但目前而言只装一个Vivado就可以了,Quartus都不需要装(因为应该不会用到Intel家的FPGA)。

后面的更新计划

  1. 这一个Verilog基础入门专栏,大概有10篇左右
  2. FPGA中的嵌入式资源(fifo,ram,rom,dsp等)介绍和应用,5-6篇吧
  3. ZYNQ的PL端教程,由基本组件介绍AXI总线,大概也是5-6篇左右吧

ZYNQ的PS端,由于xilinx的嵌入式开发流程中途改了,我只能写写裸机的话还是不嫌丑了,看到时候写到3的时候有没有时间把现在的流程给学了,应用一下再考虑吧。

结语

现在由于研究生生活下,再去搞大专栏写有点力不从心了,只能先写写教学专栏了

向广大网友征集一下,这专栏到底叫 Verilog入门 还是 FPGA入门 好一点。

后面对zynq还会有相应的教学专栏,有兴趣的朋友可以关注一下。

如果你觉得有丶收获的话

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小何的芯像石头

谢谢你嘞,建议用用我的链接

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值