
FPGA 的独特优势在于其灵活性,即随时可以改变芯片功能,在技术还未成熟的阶段,这种特性能够降低产品的成本与风险,在 5G 初期这种特性尤为重要。
优势一:
更大的并行度。这个主要是通过并发和流水两种技术实现。
A:并发是指重复分配计算资源,使得多个模块之间可以同时独立进行计算。这一点与现在的多核和SIMD技术相似。但相对与SIMD技术,FPGA的并发可以在不同逻辑功能之间进行,而不局限于同时执行相同的功能。举个简单例子说就是使用SIMD 可以同时执行多个加法,而FPGA可以同时执行多个加法和乘法和任何你能设计出来的逻辑。
B:流水是通过将任务分段,段与段之间同时执行。其实这一点和CPU相似,只是CPU是指令间的流水而FPGA是任务间流水或者可以说是线程间流水。
优势二:
可定制。FPGA 内部通过Lookup Table实现逻辑,可以简单理解为是硬件电路。可定制指的是在资源允许范围内,用户可实现自己的逻辑电路。通常情况下任务在硬件电路上跑是比在软件上快的,比如要比较一个64位数高32位和低32位的大小,在CPU下需要2条区数指令,两条位与指令,一条移位指令一条比较指令和一条写回指令,而在FPGA下只要一个比较器就行了。
优势三:
可重构。可重构指的是FPGA内部的逻辑可根据需求改变,减少开发成本。同时,使用FPGA复用资源比使用多个固定的ASIC模块为服务器省下更多的空间。
FPGA是什么?FPGA现状?如何学习FPGA?
FPGA介绍
FPGA是现场可编程门阵列的简称,FPGA的应用领域最初为通信领域,但目前,随着信息产业和微电子技术的发展,可编程逻辑嵌入式系统设计技术已经成为信息产业最热门的技术之一,应用范围遍及航空航天、医疗、通讯、网络通讯、安防、广播、汽车电子、工业、消费类市场、测量测试等多个热门领域。并随着工艺的进步和技术的发展,向更多、更广泛的应用领域扩展。越来越多的设计也开始以ASIC转向FPGA, FPGA正以各种电子产品的形式进入了我们日常生活的各个角落。
FPGA人才需求
中国每年对于FPGA设计人才的需求缺口巨大,FPGA设计人才的薪水也是行业内最高的。目前,美国已有FPGA人才40多万,中国台湾地区也有7万多,而中国内地仅有1万左右,可见中国渴望有更多的FPGA人才涌现出来。
如何学习FPGA?
FPGA对我们如此重要,那么对于初学者来说,到底该如何学习FPGA呢?学习一门技术最好有合适的指导老师,这样对掌握FPGA技术更容易,可惜的是大部分的学校还未开设相关的课程,也缺少具有实践经验的老师,那么如何才能找到一种捷径帮助初学者快速学会如此具有竞争力的技术呢?
(1)掌握FPGA的编程语言
在学习一门技术之前我们往往从它的编程语言开始,如同学习单片机一样,我们从C语言开始入门,当掌握了C语言之后,开发单片机应用程序也就不是什么难事了。学习FPGA也是如此,FPGA的编程语言有两种:VHDL和Verilog,这两种语言都适合用于FPGA的编程,VHDL是由美国军方组织开发的,在1987年就成为了IEEE的标准;而Verilog则是由一家民间企业的私有财产转移过来的,由于其优越性特别突出,于是在1995年也成为了IEEE标准。VHDL在欧洲的应用较为广泛,而Verilog在中国、美国、日本、台湾等地应用较为广泛,作者比较推崇是Verilog,因为它非常易于学习,很类似于C语言,如果具有C语言基础的人,只需要花很少的时间便能迅速掌握Verilog,而VHDL则较为抽象,学习的时间较长。
作为在校大学生,学习Verilog的最好时期是在大学二年级开设《电子技术基础(数字部分)》时同步学习,不仅能够理解数字电路实现的方式,更能通过FPGA将数字电路得以实现。大三、大四的学生还可以进一步强化学习Verilog,建议以北京航天航空大学出版社出版的由夏宇闻教授编写的《Verilog数字系统设计教程(第二版)》作为蓝本,本书比较全面地、详细地介绍了Verilog的基本语法。如果是其他初学者,可以直接借助《Verilog数字系统设计教程(第二版)》和本书即能全面掌握Verilog的语法,这是学习FPGA的第一步,也是必不可少的一步。
(2)FPGA实验尤为重要
除了学习编程语言以外,更重要的是实践,将自己设计的程序能够在真正的FPGA里运行起来,这时我们需要选一块板子进行实验,一般的红色飓风的板子基本上可以满足大家的需求,大家感兴趣的不妨买一块做做实验。
(3)FPGA培训不可忽视
在有条件的情况下,参加FPGA的培训可以在短时间内大幅提升自己的水平,因为有老师带着可以省去了很多弯路。笔者在网上发现国内第一家大学EDA实验室创始人之一的夏宇闻教授和未名芯锐搞了一个FPGA培训班,感兴趣的朋友可以去看看,网上也有很多的视频资源,也可下下来看看
我想只要大家想学FPGA,想从事FPGA工作,总会有办法找到适合自己的方法
FPGA是一种可编程逻辑设备,可以被用于实现各种电子电路。要从零设计一颗简单的FPGA芯片,需要经过以下步骤:
确定需求:首先,需要确定FPGA芯片需要实现什么功能。这将有助于确定芯片的规格,包括芯片大小、输入/输出接口和逻辑资源数量等。
选择开发工具:选择一种FPGA开发工具,例如Xilinx Vivado或Altera Quartus,以便开始设计。
设计原理图:使用开发工具,设计FPGA芯片的原理图。原理图是一种图形化表示电路的方式,其中包含连接元件的线和元件的符号。
编写HDL代码:HDL是硬件描述语言,类似于软件编程语言,可以用于描述电路行为。使用HDL编写代码来实现芯片的逻辑功能。
模拟和验证:使用开发工具提供的仿真工具来验证设计的正确性。这可以帮助检查逻辑是否正确,并找出任何问题。
约束设计:设计约束是一种方法,可将设计约束到可靠的时序,电气和物理要求。它还可以确保电路实现的高性能和可靠性。
实现设计:一旦确认设计的正确性,将HDL代码合成为FPGA的bit流。这个过程可以将代码翻译成FPGA可以理解的语言。
下载并验证:最后,将bit流下载到FPGA芯片中,验证设计是否按预期工作。
需要注意的是,FPGA设计是一项复杂的任务,需要深入了解电路设计和计算机科学的基础知识。此外,需要掌握FPGA开发工具的使用方法。
FPGA(现场可编程门阵列)与
CPLD(复杂可编程逻辑器件)都是可编程逻辑器件,它们是在PAL,GAL等逻辑器件的基础之上发展起来的。同以往的PAL,GAL等相比较,FPGA/CPLD的规模比较大,它可以替代几十甚至几千块通用IC芯片。这样的FPGA/CPLD实际上就是一个子系统部件。这种芯片受到世界范围内电子工程设计人员的广泛关注和普遍欢迎。经过了十几年的发展,许多公司都开发出了多种可编程逻辑器件。
对用户而言,CPLD与FPGA的内部结构稍有不同,但用法一样,所以多数情况下,不加以区分。
FPGA/CPLD芯片都是特殊的ASIC芯片,它们除了具有ASIC的特点之外,还具有以下几个优点:
·随着VlSI(Very
Large
Scale
IC,超大规模集成电路)工艺的不断提高单一芯片内部可以容纳上百万个晶体管,
FPGA/CPLD芯片的规模也越来越大,其单片逻辑门数已达到上百万门,它所能实现的功能也越来越强,同时也可以实现系统集成。
·FPGA/CPLD芯片在出厂之前都做过百分之百的测试,不需要设计人员承担投片风险和费用,设计人员只需在自己的实验室里就可以通过相关的软硬件环境来完成芯片的最终功能设计。所以,
FPGA/CPLD的资金投入小,节省了许多潜在的花费。
·用户可以反复地编程、擦除、使用或者在外围电路不动的情况下用不同软件就可实现不同的功能。所以,用FPGA/PLD
试制样片,能以最快的速度占领市场。
FPGA/CPLD软件包中有各种输入工具和仿真工具,及版图设计工具和编程器等全线产品,电路设计人员在很短的时间内就可完成电路的输入、编译、优化、仿真,直至最后芯片的制作。
当电路有少量改动时,更能显示出FPGA/CPLD的优势。电路设计人员使用FPGA/CPLD进行电路设计时,不需要具备专门的IC(集成电路)深层次的知识,
FPGA/CPLD软件易学易用,可以使设计人员更能集中精力进行电路设计,快速将产品推向市场。
>
获取fpga芯片型号信息:像ROM读写模块,滤波模块,按键显示控制模块,都是逻辑可以实现的,所以可以直接写FPGA程序实现相应的接口。这种常见的Altera Xilinx都可以。
如果型号以EPM开头,即MAX系列(其中MAX代表阵列矩阵),就是CPLD,ALTERA公司的FPGA产品系列代码为EP或EPF。
典型产品型号含义如下: EPF10K10:FLEX10K系列FPGA,典型逻辑规模是10K有效逻辑门。 EPF10K30E:FLEX10KE系列FPGA,逻辑规模是EPF10K10的3倍。
基本结构:
FPGA 器件属于专用集成电路中的一种半定制电路,是可编程的逻辑列阵,能够有效的解决原有的器件门电路数较少的问题。FPGA 的基本结构包括可编程输入输出单元,可配置逻辑块,数字时钟管理模块,嵌入式块RAM,布线资源,内嵌专用硬核,底层内嵌功能单元。
由于FPGA具有布线资源丰富,可重复编程和集成度高,投资较低的特点,在数字电路设计领域得到了广泛的应用。FPGA的设计流程包括算法设计、代码仿真以及设计、板机调试,设计者以及实际需求建立算法架构。
CPLD/FPGA技术及电子设计自动化(EDA)
电子设计自动化(EDA)的实现是与CPLD/FPGA技术的迅速发展息息相关的。CPLD/FPGA是80年代中后期出现的,其特点是具有用户可编程的特性。利用PLD/FPGA,电子系统设计工程师可以在实验室中设计出专用IC,实现系统的集成,从而大大缩短了产品开发、上市的时间,降低了开发成本。此外,CPLD/FPGA还具有静态可重复编程或在线动态重构特性,使硬件的功能可象软件一样通过编程来修改,不仅使设计修改和产品升级变得十分方便,而且极大地提高了电子系统的灵活性和通用能力。
电路设计工程师设计一个电路首先要确定线路,然后进行软件模拟及优化,以确认所设计电路的功能及性能。然而随着电路规模的不断增大,工作频率的不断提高,将会给电路引入许多分布参数的影响,而这些影响用软件模拟的方法较难反映出来,所以有必要做硬件仿真。FPGA/CPLD就可以实现硬件仿真以做成模型机。将软件模拟后的线路经一定处理后下载到FPGA/CPLD,就可容易地得到一个模型机,从该模型机,设计者就能直观地测试其逻辑功能及性能指标。
由西安达泰公司设计的智能电子自动化实验系统Smart EDA Lab V40,充分利用PLD 技术,使电子设计实现自动化,使用方便、快捷,适合于电子工程师开发设计新产品,大、中、专院校师生进行电子电路实验,ASIC设计验证,FPGA/CPLD教学等。
Smart EDA Lab V40 的硬件资源:8个逻辑指示发光条,4个按键开关,6个七段数码管,555电路产生约1KHz的方波信号可作为时钟输入,晶振电路产生8MHz方波信号可作为高频时钟,PLCC84 PLCC68 PLCC44 CPLD/FPGA仿真PGA插座,DIP40单片机实验插座,各种规格的模拟集成电路插座,PC机并口(LPT1)、串口(COM1)、ESIA总线插座接口,CPLD/FPGA编程插座,300平方毫米模拟电路及自由实验区。
Smart EDA Lab V40 的主要特点:①继承了V30的所有特点;②可以进行所有数字电路实验、数模混和仿真、单片机实验、计算机接口实验、ESIA总线板卡实验;③系统板上提供高、低频的信号源和按键开关;④利用配套并口逻辑分析仪软件可以同时观察5路逻辑信号;⑤可以完成ALTERA、XINLINX、LATTICE等各家公司CPLD/FPGA芯片的在线编程。
美国Altera公司生产的CPLD(复杂可编程逻辑器件)以其 *** 作灵活、使用方便、开发迅速、投资风险低等特点,成为硬件电路优化设计的首选产品。Altera 的 MAX+PLUSII可编程逻辑开发软件,提供了一种与工作平台、器件结构无关的设计环境,用户无需十分精通CPLD内部的复杂结构(视为黑匣子),只要从集成软件包的元件库中调入原理图(元件库包含几乎所有74系列的集成电路,近300个预制宏逻辑元件),它使Altera通用PLD系列设计者能方便地进行设计输入-文本、图形和波形等设计输入方法任意组合,建立起有层次的单器件或多器件设计,并支持多种标准 CAD 设计输入,也可用硬件语言AHDL/VHDL来描述复杂的设计;快速设计处理--MAX+PLUSII编译、设计规则检查、逻辑综合与试配多器件划分,自动错误定位;校验与编程--有定时仿真、功能仿真、多器件仿真、定时分析和器件编程(有万用编程器或在线编程二种方式),还支持标准CAE设计校验;从以上 Altera 集成软件包(含有300多个74LS集成电路供调用)对芯片的编程、编译、仿真 *** 作的强大功能看,相信您一定会采用Altera公司的 CPLD 可编程逻辑器件应用到你的设计中去,使自己尽快成为一名数字集成电路设计专家。
Altera第二代产品以多阵列矩阵(MAX)结构为基础,高性能CMOS EEPROM 可电擦除 。 MAX 7000系列器件,逻辑密度600-5000个可用门 ,36-164个用户I/O引脚,组合传播延时快至75ns,16位计数器的频率为125MHz,可编程节能方式,每个宏单元的功率减少可达50%,有44到208个引脚;高集成度具有丰富寄存器的现场在线可编程的逻辑器件系列FLEX 8000(灵活逻辑单元矩阵),第三代更先进的EPLD MAX 9000(可擦除可编程逻辑器件)系列器件,更高密度达13万门的 EPF10K130V PLD。
以EPM7128芯片(84 Pin)为例:其内部有2500个门可用,128个宏单元,允许对外有68个输入、输出引脚。凡Altera公司生产的CPLD可编程逻辑器件名称后带 S 的芯片,均支持在线现场可编程 *** 作,只要用一根专用电缆接到芯片的特定引脚上,无需拆下芯片,不需要编程器及芯片适配器,通过上位机打印口就可对芯片编程。这对教学、科研样机研制、产品维修、产品升级带来极大的方便。美国Altera公司的MAX 7000系列器件性能稳定可靠、价格较低,对初次接触可编程逻辑器件的用户来说,只要您会画电路图就可以,这比学GAL芯片还简单易学,一学就会,马上就可产生经济效益(节省器件、减小产品印制板面积、产品开发周期短、便于产品保密),目前应用最多的是与通讯有关的领域、其余有大型显示屏、游戏机大板改成小板、激光打印机、程控交换机替代门电路及原有逻辑器件较多的电子设备浓缩,工业控制板卡开发,ASIC前期仿真等。
一、背景
FIFO是FPGA项目中使用最多的IP核,一个项目使用几个,甚至是几十个FIFO都是很正常的。通常情况下,每个FIFO的参数,特别是位宽和深度,是不同的。
明德扬(MDY)在2021年承担了多个基于XILINX芯片的研发项目,包括VPX网络透明传输项目(芯片为XC7K325T-2FBG900)、某高端测试仪项目(芯片为XCKU060-FFVA1156)、某网闸设备项目(芯片为XC7Z030-FBG676)等,另外,明德扬自研了基于XC7K325T-2FBG900和基于XC7K410T-2FBG900芯片的核心板,在XILINX研发领域拥有丰富的经验。
这些项目都必须用到FIFO。如果按照通常做法,每种位宽和深度的IP,都要打开FIFO IP核界面、命名(命名不好不好分辨需要的FIFO)、设置参数、生成并编译IP核,工作量可以想象出来是非常多的。更重要的是随之而来的管理问题,如何管理这几十个不同FIFO,如何检查FIFO的设置是否正确,都是一个不小的挑战。
对于我们专门承接项目的团队,绝不可忍受如此重复、枯燥、容易出错的工作。经过精心研究,终于找到了一条实用的方法:使用XILINX的原语--xpm_fifo_async和xpm_fifo_sync。
XILINX原语xpm_fifo_async和xpm_fifo_sync在FPGA中,可以直接例化使用,并且可以参数化FIFO的位宽和深度的。即在设计时,不用生成FIFO IP,直接例化就可以使用了。
二、获得参考代码
打开VIVADO软件,点击上图中的Language Templates,将会d出Language Templates窗口,如下图。
在Language Templates窗口中,依次点击verilog、Xilinx Parameterized Macros(XPM)、XPM、XPM_FIFO,如上图。可以看到有三种FIFO,分别是异步的XPM FIFO:xpm_fifo_async、AXI总线的FIFO:xpm_fifo_axis和同步的XMP FIFO:xpm_fifo_sync。
选择xpm_fifo_async,右边的Preview窗口,将出现xpm_fifo_async的注释以及参考代码。将此部分代码拷出来,并将注释删除,剩下的是xpm_fifo_async的例化参考。
上图是对xpm_fifo_async的参数例化部分。下面是需要重点关注并经常使用的参数。
Ø FIFO_WRITE_DEPTH:FIFO的写深度,其实就是在这里设置FIFO的深度,注意该值通常是2的N次方,如8、16、32、64等数。
Ø PROG_EMPTY_THRESH:FIFO的快空的水线。当FIFO存储的数据量小于该水线时,FIFO的快空信号将会变高。
Ø PROG_FULL_THRESH:FIFO的快满的水线。当FIFO存储的数据量大于该水线时,FIFO的快满信号将会变高,表示有效。
Ø READ_DATA_WIDTH:读数据的位宽。
Ø WRITE_DATA_WIDTH:将数据的位宽。
Ø RD_DATA_COUNT_WIDHT:读侧数据统计值的位宽。
Ø WR_DATA_COUNT_WIDTH:写侧数据统计值的位宽。
上图是对xpm_fifo_async的接口信号部分。下面是需要重点关注并经常使用的信号。
Ø wr_clk:FIFO的写时钟
Ø rst:FIFO的复位信号,高电平有效。要注意的是,该信号是属于写时钟域的。
Ø wr_en:FIFO的写使能信号。
Ø din:FIFO的写数据
Ø full:写满指示信号,当FIFO写满时,该信号变高。
Ø wr_data_count:FIFO存储数据量指示信号,用来指示当前FIFO已经写入但未读出的数据个数。
Ø rd_clk:FIFO的读时钟。
Ø rd_en:FIFO的读使能。
Ø dout:FIFO读出的数据。
Ø empty:FIFO的空指示信号。当其为1表示FIFO处于空状态,当其为0,表示FIFO内有数据。
三、定义自用的FIFO模块
从第二步可以看出,xpm_fifo_async是可以参数化深度和位宽的。但xpm_fifo_async有很多参数和信号,并且其中有部分是不使用的。为了使用上的方便,可以自定义自用的FIFO模块。
例如,明德扬就定义了一个模块mdyFifoAsy,该信号的接口信号如下图。可以看出,名称更加规范,并且定义常用的信号,如读时钟rd_clk,写时钟wrclk、写使能wrreq等信号。
明德扬还在模块mdyFifoAsy定义了一些常用的参数,分别是FIFO深度参数:DEPT_W;FIFO位宽的参数:DATA_W,还有FIFO快满参数AL_FUL和快空参数AL_EMP,如下图。
接下来,就是在mdyFifoAsy中例化并使用xpm_fifo_async了。如下图,就是对xpm_fifo_async的参数例化。将DEPT_W传给FIFO_WRITE_DEPTH,DATA_W传给READ_DATA_WIDTH等。
下图是对xpm_fifo_async的信号例化。将不用的信号留空,将dout连到q,din连到data,wr_en连到wrreq等。您可以根据自己情况来定制FIFO。
四、应用
定制完自己的FIFO后,就可以直接例化使用了。
上图就是使用了一个位宽为8,深度为256的FIFO。
上图就是使用了一个位宽为18,深度为1024的FIFO。
FIFO是FPGA、芯片设计中,最常用的IP核,在存储控制、算法实现、接口设计中,都少不了FIFO,因此合理并正确使用FIFO的技术就非常有必要了,明德扬录制了FIFO的训练视频,掌握后技术能力将有大提升。
通过上面介绍可知,通过此种方式,再也不用生成FIFO IP核啦,整个工程大小基本上可以减少一大半。
上面举的例子是xpm_fifo_async,同步FIFO:xpm_fifo_sync的使用方法是类似的。
以上就是关于与单片机相比,FPGA的优势在哪里全部的内容,包括:与单片机相比,FPGA的优势在哪里、关于fpga编程序、如何从零设计一颗简单的FPGA芯片等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)