文章导读:
- 1、三强争霸高端FPGA(一)
- 2、zynq7000上怎样实现识别二维码
- 3、iPhone7采用FPGA会带来什么变化
- 4、求助:FPGA的学习策略
- 5、最近用FPGA在做一个mii接口的收发程序,遇到一个问题
- 6、FPGA系统工程师需要学什么东西?
三强争霸高端FPGA(一)
英特尔在早前宣布,他们已开始将其第一批新的Agilex FPGA交付给抢先体验的客户。这使得最大的两家FPGA供应商之间竞争进入到了“正面交锋”阶段。Xilinx于6月份交付了他们的第一款“ Versal ACAP”FPGA,因此,在经历了一场漫长而有争议的“谁能首先交付?”之战之后。事实证明,这两家竞争公司都可以在大约两个月内,开始交付其可用来与对手对标的FPGA产品线。这意味着,与其他凭借第一时间引入先进节点来提升性能的竞争不同,这两家公司都没有足够的时间去利用一种新的、更先进的技术来赢得设计上的胜利。
不过,这次竞争的领域扩大了,新玩家Achronix声称他们将在今年年底之前交付其新型Speedster 7t FPGA的首批样品。对于开发团队而言,这意味着到今年年底,将有三款完全不同的高端FPGA产品可供选择——所有这些产品都采用类似的工艺技术,并且均具有独特的功能。
本篇文章是比较这三家供应商的新高端FPGA系列的多部分系列中的第一部分。我们将研究底层的工艺,FPGA逻辑组织(LUT)本身,用于加速处理和联网的强化资源,存储器架构,芯片/封装/定制架构,I/O资源,设计工具策略,每个产品的独特和新颖的特性和功能,以及营销策略。如果您是可以从大量FLOPS,疯狂的带宽或是从设计过的一些有趣,功能强大的半导体器件中获得乐趣的人,那么,这对你来说将是一次令人兴奋的旅行。
注意事项–英特尔和Achronix都参与其中,并提供了本文的信息。Xilinx没有回应我们对信息的请求。
这一次,高端FPGA的霸主地位有所改变。过去,高端FPGA最大的市场是在网络方面,市场份额的变化也是如此,这主要取决于谁可以为部署最新一轮的有线和无线网络客户的产品提供最丰富的设计,,谁就可以取得较大的市场份额。然而,5G推出的时机已经改变了这一动态。在当前的FPGA技术浪潮到来之前,5G就已经开始加速扩展。因此,第一轮5G的主干网是建立在上一代可编程逻辑上的。这些器件将融入一个已经很强大的5G生态系统,因此,我们无法确定5G的彻底革命和新一代FPGA的诞生之间是否保持了一致。这些FPGA的设计已经充分理解了5G的机制。但是,不要低估FPGA对5G的重要性,或者5G对FPGA市场的重要性。今天,当你使用手机时,你的通话有99%的可能是通过FPGA进行的。有了5G,FPGA的影响会更大。
随着数据中心加速(主要是针对AI工作负载)这一新兴市场的快速扩展,这一现象引起了人们的兴趣。据估计,人工智能加速市场将在未来几年中飞速发展,因而这三家供应商都将以其令人印象深刻的性价比和更高的能效来争夺这些设备的大部分市场份额,并声称他们提供的解决方案可以一直延伸到边缘/端侧。这些供应商中的每一个都非常清楚地意识到占领这些AI加速卡插槽是当务之急,并且他们都围绕这个想法设计了新芯片。
让我们看看所有这些因素吧?
从底层工艺技术来看,Xilinx和Achronix FPGA系列在基于TSMC 7nm而设计,而Intel Agilex则采用了性能相近的Intel 10nm工艺。不要被7/10命名差异所迷惑。不要被7/10的命名法差异所混淆。我们很早以前就曾指出,半导体行业的营销团体根据市场上听起来不错的东西来命名节点,而不是从晶体管本身的任何可识别的特征中推导出它们。据我们估计,TSMC的7nm和Intel10nm是大致相当的工艺,使用这两种工艺的厂商基本一致。这意味着英特尔在工艺技术方面长期保持的领先地位似乎已经消失,不过,当我们接近摩尔定律的瓶颈时,硅加工领域的竞争升级是不可避免的。
当推进到最新的半导体工艺节点,这三个供应商都获得了适度的推动。然而这种推进已不可能达到摩尔定律的 历史 标准,因为在过去几个工艺节点的新流程更新所带来的收益增量一直在稳步下降。每个人从FinFET技术问世中都获得了一次临时性的推动,现在,随着摩尔定律即将在经济层面上终结,我们可能会发现边际收益递减趋势将一直延续。
在过去,随着晶体管尺寸的减小,每个新工艺节点都让晶体管的密度大量提升,并获得更好的性能和更低的功耗。现在,供应商必须在这三者之间进行权衡,并且即使在他们偏爱的指标上,通常也只能得到较小的回报。同时,转移到新工艺节点的non-recurring费用继续呈指数级增长。这意味着FPGA公司所承担的风险急剧上升,这是因为为了保持竞争力,他们需要不断投资才能获取不断减少的收益。这也意味着我们正在进入一个新时代,FPGA本身的架构和功能、FPGA工具以及这三家公司的营销策略将成为影响收益的关键因素,而不是谁将率先使用新的制程工艺。
考虑到工艺技术实际上是一种洗礼,让我们看一下每个供应商产品的功能和特性。从最基本的FPGA功能– LUT结构开始。我们经常感叹每个公司对LUT的计算都不一样,而且这个 游戏 每一代都变得更加复杂。Xilinx和Achronix当前使用的是6输入LUT,而Intel的ALM本质上是8输入LUT。厂商或多或少地同意我们可以使用2.2 LUT4s per LUT6,,和2.99 LUT4s per LUT8将不同的LUT转换为等价的4输入LUT。
根据这方法一计算,Achronix Speedster 7T系列包括从363K到2.6M LUT6(相当于800K到5.76M的等效LUT4)领先业界,Intel Agilex系列包括 132 K到912K 的ALM(相当于395K到2.7M的等效LUT4),Xilinx的Versal系列产品包含了约246K到984K CLB(可换算成541K到2.2M的等效LUT4)。每个供应商都声称自己的体系结构优越,着重强调了可以提高某些特定应用或配置中的逻辑密度,性能或可布线性的设计功能。目前,我们尚不清楚任何供应商的LUT是否明显优于其他任何供应商的LUT。
但是,FPGA可用资源不仅取决于LUT的数量。还必须考虑以下挑战:被有效使用LUT的百分比(我们将在稍后讨论设计工具时进行讨论),以及集成到逻辑模块中的强化功能的数量,这些功能允许以最小的方式实现设计功能LUT结构的参与。根据您的设计,您可能会发现更多内容被塞入一个或多个FPGA中,而这些内容和LUT数量无关。
FPGA“擅长”人工智能推理的主要原因是其可以并行完成大量的算术运算(主要是各种精度的乘法累加),这要归功于编织在可编程逻辑结构中的存在大量"DSP块阵列"。这使得FPGA能够比传统的冯·诺依曼结构的处理器更有效地执行例如卷积等矩阵运算。
分析对AI推理至关重要的硬件乘法器,Achronix的可变精度乘法器可实现41K int-8乘法或82K int-4乘法。英特尔Agilex具有2K-17K 18×19乘法器,Xilinx Versal有500-3K“DSP引擎”,大概是“ DSP58 slice”,包括27×24乘法器和新的硬件浮点功能。这种比较肯定是“从苹果到橙子到芒果”,至于哪种水果更适合您的应用,它必须是“由设计者决定的”。
现在,这三个供应商都增强了对浮点乘法的支持。Achronix为他们的DSP块提供了一个全新的架构,他们称之为"机器学习处理器"(MLP)。每个MLP包含多达32个乘法器/累加器(MAC)、4-24位整数模式和各种浮点模式,可支持包括TensorFlow 的Bfloat16格式和块浮点格式。最重要的是,Achronix MLP将嵌入式存储器模块与计算单元紧密耦合,从而使MAC操作能够以750 MHz的频率运行,而等待通过FPGA组织访问存储器获取数据。
英特尔还使用具有硬件浮点的可变精度DSP模块(基本上就像它们已经提供了多年的功能一样)。英特尔的浮点支持也许是三者中最广泛和最成熟的。借助Agilex,他们推出了两种新的浮点模式,即半精度浮点(FP16)和块浮点(Bfloat16),并且进行了架构调整,以使其DSP运算更加高效。
Xilinx已将其以前的DSP48 Slice升级到DSP58 ——大概是因为它们现在包括了硬件浮点,并且其乘法器也升级到了27×24。因此,在这一代产品中,另外两家供应商也加入了英特尔的行列,提供支持浮点运算的硬件乘法器。对于Xilinx而言,这是一个逆转。赛灵思此前声称,FPGA中实现浮点硬件乘法器不是一个好主意,因为浮点运算主要用于训练,而FPGA则主要针对推理应用。
就可用的浮点格式而言,Versal(最多2.1K乘法器)和Agilex(最多8.7K乘法器)都支持FP32格式。这三个系列均支持半精度(FP16)——Versal最多可支持2.1K乘法器,Agilex最多可支持17.1K乘法器,Speedster最多可支持5.1K乘法器。Agilex(最多17.1K乘法器)和Speedster(最多5.1K个)支持Bfloat16。对于FP24格式浮点乘法,Versal和Agilex可能会使用FP32单元,而Speedster则具有高达2.6K的乘法器。Achronix Speedster还支持多达81.9K的块浮点乘法器。
Xilinx还带来了一种新的软件可编程矢量处理器——高达400个1GHz +V LIW-SIMD矢量处理核心阵列,具有增强计算和紧密耦合的内存。这为并行化复杂的向量运算并利用FPGA丰富的计算资源提供了更为简单的编程模型。总体而言,是在Xilinx的“kitchen sink”竞争策略上选中了“GPU /推理引擎”。稍后我们将详细讨论这一点。
英特尔对Achronix MLP和Xilinx矢量处理器的回应是老派的演变。他们指出,Agilex DSP模块实现了与其他供应商的新DSP功能相同的功能。可以利用已建立并充分理解的FPGA设计开发流程,并且不需要客户在器件的各个体系结构中去划分他们的设计。如果您的团队具有FPGA/RTL设计专业知识,这是一件好事。但如果你的应用需要由软件工程师来开发DSP,Xilinx的软件可编程方法可能有优势。
除了简单地计算乘数外,我们还可以通过查看供应商关于理论性能的声明来比较这些能力。但有一点需要注意,这些说法被严重夸大了,而且很难精确定义。供应商通常通过将芯片上的乘法器数目乘以这些乘法器的最大工作频率来得出一个数,得出一个"最多XX TOPS或TFLOPS"的数字。显然,现实世界中的设计不会使用到100%的乘法器,没有任何一个设计能够达到这些乘法器的最大理论时钟速率,也没有一个设计能够以适当的速率持续为这些乘法器提供输入数据,并且这些乘法运算的精度因供应商而异。
如果必须估算的话,我们可以说FPGA在实际设计中可以实际达到其理论最大值的50-90%。这要比GPU更好,后者被认为在现实世界中只能达到其理论最大值的10-20%。
在推测INT8操作的TOPS数量时,如果我们将其矢量处理器中的 133 个TOPS包含在内,则Xilinx Versal以大约 171 个TOPS位居榜首。12个来自其DSP块,26个来自其逻辑结构。Speedster紧随其后,有大约86个TOPS,其中61个来自他们的MLP模块,25个来自他们的逻辑结构。Agile xi nt8操作最大值为92个TOPS,其中51个来自DSP块,41个来自逻辑结构。从Bfloat16格式的TFLOPS来看,Agilex以40个领先,Versal以9个紧随其后,Speedster以8个垫底。Speedster在块浮点操作上上获得了很大的优势,但是,它有123个TFLOPS,其次是Agilex的41个和Versal的15个。
这些数字均来自公司自己的数据表。正如我们所提到的,它们是理论上的最大值,在实际的实际应用中是不可能达到的。Achronix宣称的“可用性”具有一定的价值,因为它们的MLP是独特的设计,旨在将可变精度乘法运算维持在模块本身内进行,并以最大时钟速率运行,而无需数据往返于逻辑结构即可完成AI推理中最常见的操作。同样,Xilinx的矢量处理器体系结构应能很好地保持数据平稳地流经算术单元。也就是说,我们还没有看到基准或参考设计以任何有意义的方式来证明这些公司的声称。
当然,要使用所有这些LUT和乘法器,就需要让您的设计实际布局和布线并满足所选芯片的时序要求。随着FPGA的发展,这已成为越来越困难的挑战。单比他网络和逻辑路径通过有限的路由资源分布在巨大芯片上,这使传统的时序收敛逐渐变成一场噩梦。用于在同步设计上实现时序收敛的常规技术均遇到了障碍,无法扩展。Xilinx和Achronix都通过添加覆盖传统逻辑和路由结构的片上网络(NoC)在新一代FPGA中解决了这一问题。NoC从本质上改变了 游戏 规则,因为整个芯片不再需要在一个巨大的魔术般的融合中实现时序收敛。现在,较小的同步块可以通过NoC传递数据,减轻了传统路由结构的负担,并将巨大的设计自动化工具需要解决的问题分解为更小、更易于管理的问题。
几代以前,英特尔已经采取了另一种方法来解决这一问题——用称为“ HyperFlex寄存器”的大量微寄存器铺平到整个逻辑结构。这些寄存器允许对更长、更复杂的逻辑路径进行重新定时和流水线处理,从而使整个设计实质上变得异步。有趣的是,这也是Xilinx和Achronix使用的NoC的效果。每种方法都面临挑战,因为这两种方法都会给芯片设计和我们使用的设计工具增加大量复杂性。据报道,在英特尔的案例中HyperFlex寄存器对逻辑架构可以实现的整体速度也有一些负面影响。英特尔表示,Agilex FPGA中的HyperFlex体系结构是第二代,并且与上一代HyperFlex体系结构相比具有改进和增强,可以提高性能并简化时序收敛。在Agilex取得进展之后,我们将不得不拭目以待观察用户使用后的反应。
在采用NoC进行路由的两家供应商,Xilinx和Achronix中,Achronix声称通过其二维跨芯片AXI实现实现了最快的NoC。在这一NoC中的每一行或每一列都实现为两个工作在2 GHz的256位单向AXI通道,也就是在每个方向上可以支持512 Gbps的数据流量。Speedster的NoC共有197个节点,最终形成27 Tbps的总带宽,减轻了FPGA传统按位进行路由的资源负担。据我们所知,Xilinx的Versal NoC性能尚未发布,但是大约有28个节点,我们猜测大约是总带宽是1.5 Tbps。
好吧,本周我们的墨水用完了,但下周我们将继续进行下去——看看这些FPGA系列带来的迷人而灵活的存储器架构,每个系列的独特封装和定制功能,疯狂的SerDes IO功能,嵌入式处理子系统,设计工具流程等。
*点击文末 阅读原文 ,可阅读 英文 原文。
今天是《半导体行业观察》为您分享的第2125期内容,欢迎 关注 。
半导体行业观察
『 半导体第一垂直媒体 』
识别二维码 ,回复下方关键词,阅读更多
AI|晶圆|台积电|射频|华为|集成电路|TWS耳机|小米
回复 投稿 ,看《如何成为“半导体行业观察”的一员 》
回复 搜索 ,还能轻松找到其他你感兴趣的文章!
英文原文
!
zynq7000上怎样实现识别二维码
Zynq系列是赛灵思公司(Xilinx)推出的行业第一个可扩展处理平台,旨在为视频监视、汽车驾驶员辅助以及工厂自动化等高端嵌入式应用提供所需的处理与计算性能水平。该系列四款新型器件得到了工具和IP 提供商生态系统的支持,将完整的 ARM® Cortex™-A9 MPCore 处理器片上系统 (SoC) 与 28nm 低功耗可编程逻辑紧密集成在一起,可以帮助系统架构师和嵌入式软件开发人员扩展、定制、优化系统,并实现系统级的差异化。
实际上,Zynq就是两大功能块:双核Arm的SoC和FPGA。根据Xilinx提供的手册,PS: 处理系统 (Processing System) , 就是与FPGA无关的ARM的SOC的部分。PL: 可编程逻辑 (Progarmmable Logic), 就是FPGA部分。这有点像xilinx以前推出的powerPC+FPGA平台。下图为官方文档中介绍的ZYNQ内部结构。
从图中可以看到,ZYNQ的绝大多数外设都是PL逻辑部分相连,比如说GPIO,IIS,XADC等等,所以如果我们要使用这些外设的话必须在PL逻辑部分对其进行配置。OK,下面我们就以一个简单的例子来看看如何使用PL和PS进行交互。在下面的例子中,我们通过设置8个开关来对应点亮8个LED灯。
首先打开XPS,由于XILINX内部已经帮我们做好了GPIO部分的IP核,所以我们只需要直接使用即可(如果要用自己的ip核,则可以使用ISE先把IP核写好再导入进来)。新建立一个工程,选择“Create New Project Using Base System Builder”,
填好项目工程文件的路径,其它不需要更改,直接点OK
由于我们用的就是ZEDBOARD,所以在这里我们选择的是ZYNQ开发板,直接点击NEXT,
该界面表示当前工程里已经默认把GPIO和4位的led包含进去了,由于我们这里和光放的ZYNQ开发板还有点差别,所以就不需要这些默认设置了,直接选中点击REMOVE,最后点击FINISH完成工程的建立。
双击图中所示的AXI General Purpose IO,添加该IP核到ZYNQ中,注意在Width中选择8,表示当前的GPIO的宽度为8,当然如果你需要更宽也可以进行其它设置,但最多不能超过32 位。我们这里的SW开关和LED都为8个,所以我们把宽度设置为8.一路点击OK按钮,把该IP核加入到工程中。
由于我们有SW开关和LED两个外设并且一个为输入一个为输出,所以还需要按照同样的方法再添加一个GPIO核。完成添加后看右边的BUS INTERFACES,可以看到GPIO 0和GPIO1均添加到了系统中。
点击PORT栏,进入到端口设置部分,在这里我们把一个GPIO设置为输出,它与8个LED灯相连,另外一个设置为输入,它与8个SW开关相连。完成设置后的结果如下图所示
下面就是编辑约束文件,给定义的端口分配管脚了,
双击project栏中的UCF,打开约束编辑(在这里有个问题,难道ISE14.2中没有专门的约束编辑器吗?),输入以下内容
上面表示8个LED等,下面表示8个SW按键,注意,在DS中,8个SW按键是连接到VCC_ADJ上的,所以我们这里使用LVCMOS18电平标准。完成这些设置后,依次点击Generate BitStream和Export Design按钮,完成流配置文件的生成和导出到SDK中。
上面就是PL部分的配置了,下面我们就根据PL的配置来进行PS部分的编程。打开SDK工具,新建工程(具体如何新建可以参考ZedBoard_CTT_v14.1文档,该文档在ZEDBOARD.org网站上有下载)后更改其中的main函数为以下形式
点击编译,成功生成ELF文件后即可进行下载,当然在下载ELF文件前还要先把FPGA的配置下载进去。
总结一下,zynq虽然是一个新的东西,但它的基本开发流程和开发原理和xilinx以往的产品基本一样,ISE,XPS,SDK等等的使用方法也基本相同,所不同的是,ZYNQ系列中包含了两个ARM核,极大的提高了系统的性能。
iPhone7采用FPGA会带来什么变化
Lattice的FPGA器件之前从未进入过苹果的供应链,这次是破天荒的第一次,也是苹果首次在iPhone中引入FPGA器件,Why?按照常识,以苹果年销售1亿部iPhone的规模,如果要尽可能地降低成本,应该尽可能采用ASIC芯片,以往的传统是FPGA通常只被用在低量市场,所以这次苹果的设计着实引起了大家的兴趣。
多年以前,三星Galaxy S4及S5曾经也率先采用过Lattice的同款FPGA器件,而当时的主要应用方向是用于红外识别和二维码识别,但是在S5以后的Galaxy型号中,三星用别的方案替代了FPGA,所以并未引起业界的震动,但是苹果用FPGA的意义还是大大不同的。
苹果iPhone7这次采用FPGA方案在智能手机行业树立了一个标杆,这也意味着FPGA这一冷门器件第一次这么显眼地出现在消费电子市场,赢得大家的广泛关注,而这种情况在多年以前是完全不可能的。至少我们可以得到一个浅显的结论: 可能今后有无集成FPGA会成为区分高端智能手机的分水岭,或许在今后我们会发现更多的消费品电子会应用到FPGA。这对FPGA行业应该是一个很好的消息。
求助:FPGA的学习策略
怎么学习FPGA FPGA学习的好方法
FPGA入门却有一定难度,因为它不像软件设计,只要有一台计算机,几乎就可以完成所有的设计。FPGA设计与硬件直接相关,需要实实在在的调试仪器,譬如示波器等。这些硬件设备一般比较昂贵,这就造成一定的入门门槛,新人在入门时遇到一点问题或者困难,由于没有调试设备,无法定位问题,最后可能就会放弃。其实这时如果有人稍微指点一下,这个门槛很容易就过去。
我用FPGA做设计很多年了,远达不到精通的境界,只是熟悉使用,在这里把我对FPGA学习步骤理解写出来,仅是作为一个参考,不对的地方,欢迎大家讨论和指正。嵌入式、linux、Android;FPGA、PCB、电路设计、
FPGA学习步骤1、工欲善其事,必先利其器。
计算机必不可少。目前FPGA应用较多的是Altera和xilinx这两个公司,可以选择安装quartusII或者ISE软件。这是必备的软件环境。
硬件环境还需要下载器、目标板。虽然有人说没有下载器和目标板也可学习fpga,但那总是纸上谈兵。这就像谈女朋友,总是嘴上说说,通个电话,连个手都没牵,能说人家是你朋友?虽说搭建硬件环境需要花费,但想想,硬件环境至多几百元钱,你要真的掌握FPGA的设计,起薪比别人都不止高出这么多。这点花费算什么?
FPGA学习步骤2、熟悉verilog语言或者vhdl语言 ,熟练使用quartusII或者ISE软件。
VHDL和verilog各有优点,选择一个,建议选择verilog。熟练使用设计软件,知道怎样编译、仿真、下载等过程。
起步阶段不希望报一些培训班,除非你有钱,或者运气好,碰到一个水平高、又想把自己的经验和别人共享的培训老师,不然的话,培训完后总会感觉自己是一个冤大头。入门阶段可以在利用网络资源完成。
FPGA学习步骤3、设计一个小代码,下载到目标板看看结果
此时可以设计一个最简答的程序,譬如点灯。如果灯在闪烁了,表示基本入门了。如果此时能够下载到FPGA外挂的flash,FPGA程序能够从flash启动,表明FPGA的最简单设计你已经成功,可以到下一步。
FPGA学习步骤4、设计稍微复杂的代码,下载到目标板看看结果。
可以设计一个UART程序,网上有参考,你要懂RS232协议和FPGA内置的逻辑分析仪。网上下载一个串口调试助手,调试一番,如果通信成功了, 恭喜,水平有提高。进入下一步。
FPGA学习步骤5、设计复杂的代码,下载到目标板看看结果。
譬如sdram的程序,网上也有参考,这个设计难度有点大。可用串口来调试sdram,把串口的数据存储到sdram,然后读回,如果成功,那你就比较熟悉FPGA设计了
FPGA学习步骤6、设计高速接口,譬如ddr2或者高速串行接口
这要对FPGA的物理特性非常了解,而且要懂得是时序约束等设计方法,要看大量的原厂文档,这部分成功了,那就对FPGA的物理接口掌握很深,你就是设计高手了
FPGA学习步骤7、设计一个复杂的协议
譬如USB、PCIexpress、图像编解码等,锻炼对系统的整体把握和逻辑划分。完成这些,你就是一个一流的高手、
FPGA学习步骤8、学习再学习
学习什么,我也不知道,我只知道“学无止境,山外有山”。
最近也面试了很多FPGA工程师,没找到合适,我觉得很多人从开始的时候就误入歧途了,对新手学习FPGA设计我也说一点看法吧。我认为要从基础开始做,基础牢,才有成为高手的可能。
我觉得FPGA学习有以下几步必须要走:
第一步:学习了解FPGA结构,FPGA到底是什么东西,芯片里面有什么,不要开始就拿个开发板照着别人的东西去编程。很多开发板的程序写的很烂,我也做过一段时间的开发板设计,我觉得很大程度上,开发板在误人子弟。不过原厂提供的正品开发板,代码很优秀的,可以借鉴。只有了解了FPGA内部的结构才能明白为什么写Verilog和写C整体思路是不一样的。
第二步:掌握FPGA设计的流程。了解每一步在做什么,为什么要那么做。很多人都是不就是那几步吗,有什么奇怪的?呵呵,我想至少有一半以上的人不知道synthesize和traslate的区别吧。
了解了FPGA的结构和设计流程才有可能知道怎么去优化设计,提高速度,减少资源,不要急躁,不要去在为选择什么语言和选择哪个公司的芯片上下功夫。语言只是一个表达的方式,重要的是你的思维,没有一个好的指导思想,语言用得再好,不过是个懂语言的人。
第三步:开始学习代码了。我建议要学代码的人都去Altera或Xilinx的网站上下原厂工程师的代码学习。不要一开始就走入误区。
第四步:template很重要。能不能高效利用FPGA资源,一是了解fpga结构,二是了解欲实现的逻辑功能和基本机构,三是使用正确的模板。FPGA内部器件种类相对较单一,用好模板,你的逻辑才能被高效的综合成FPGA擅长表达的结构:)嵌入式、linux、Android;FPGA、PCB、电路设计
做FPGA主要是要有电路的思想,作为初学者,往往对器件可能不是熟悉,那么应该对于数字电路的知识很熟悉吧,FPGA中是由触发器和查找表以及互联线等基本结构组成的,其实在我们在代码里面能够看到的就是与非门以及触发器,不要把verilog和c语言等同起来,根本就是不同的东西,没有什么可比性,在写一句程序的时候应该想到出来的是一个什么样的电路,计数器 选择器 三态门等等,理解时序,逻辑是一拍一拍的东西,在设计初期想的不是很清楚的时候可以画画时序图,这样思路会更加的清晰,还有就是仿真很重要,不要写完程序就去往FPGA中去加载,首先要仿真,尤其是对比较大型一点的程序,想像自己是在做asic,是没有二次机会的,所以一定要把仿真做好,还有很多新手对于语言的学习不知道选vhdl好还是verilog好,个人偏好verilog,当然不是说vhdl不好,反正写出来的都是电路,那当然就不要在语言的语法上面花太多的功夫了,verilog 言简意赅assign always case if else 掌握这些几乎可以写出90%的电路了,上面是我对FPGA学习的一些愚见,希望对大家有所帮助。
最近用FPGA在做一个mii接口的收发程序,遇到一个问题
这个问题很可能是时序的问题,有以下两个可能:
1、FPGA的输出方向,输出延时output delay在有无signal tap ii时发生变化,造成MII时钟和数据的相位关系改变,或者说开始对方芯片时钟可以采到正确的数据,但output delay变化后时钟采不到正确的数据。
2、时钟频率约束。增加MII时钟频率约束。由于MII的时钟仅为25M,现在绝大多数FPGA可以轻松超过这个频率,所以这个因素可能性不大。
另外可以试试Quartus II的设定:
Assignment — Settings — Compilation proecess settings —
勾选
perform physical synthesis on combinational logic
perform register duplication
FPGA系统工程师需要学什么东西?
1、数字电路基础。做FPGA一定要有数字硬件的概念。FPGA是硬件设计,而不是软件设计,首先要有这个概念
2、硬件描述语言,Verilog或VHDL,推荐Verilog
3、主流厂家的芯片底层结构,如Logic Cell、DSP Block、时钟、IO单元等
4、EDA工具的使用,如主流厂家的集成编译环境(Quartus II、Vivado等)、仿真软件(ModelSim等)的使用
5、熟悉FPGA设计流程(仿真,综合,布局布线,时序分析)。
6、熟练掌握资源估算(特别是slice,lut,ram等资源的估算)。
7、同步设计原理。
一个合格的FPGA工程师至少在以下三个方面的一个非常熟悉:
嵌入式应用 2.DSP应用 3.高速收发器应用
扩展资料
FPGA工程师的核心竞争力
1、RTL设计实现能力。也就是算法实现能力,RTL实现是FPGA工程师或者说HDL开发人员的入门首先接触到的东西;
2、硬件调试能力。包括问题定位分析能力和系统调试能力,FPGA工程师真正的核心竞争力,因为这不仅仅需要经验的积累,同时还需要很好的逻辑思维和分析能力。
另外一方面是整个硬件软件系统层次的调试能力,要看得懂原理图PCB,懂硬件,了解软件接口,现在FPGA越来越讲究HardwareSoftwareCo-design,软件硬件这个系统层次的调试能力对人的要求更加高。
3、更加高层次的能力。还是系统层次的东西。算法和架构,怎样将一系列数学公式,转换为算法,在最终形成系统硬件的实现;
整个系统采用什么样的架构,纯FPGA,arm+FPGA,DSP+FPGA,SOC+FPGA;FPGA顶层采用什么架构,通用总线还是自定义总线,如何考虑通用性和可扩展性等等,再大至什么样的应用适合用FPGA实现。
什么样的问题适合软件实现,怎样的组合能更加低成本高效率的解决问题,这一些列问题涉及的东西有很多,基本上都是以FPGA为核心做开发要面临的问题,其实其他平台的硬件、软件产品都是类似,系统层面的问题都是复杂的问题,同时,从系统层面去优化,解决问题才是最高效率的方式。
ogarmmable Logic), 就是FPGA部分。这有点像xilinx以前推出的powerPC+FPGA平台。下图为官方文档中介绍的ZYNQ内部结构。从图中可以看到,ZYNQ的绝大多数外设都是PL逻辑部分相连,比如
他们将在今年年底之前交付其新型Speedster 7t FPGA的首批样品。对于开发团队而言,这意味着到今年年底,将有三款完全不同的高端FPGA产品可供选择——所有这些产品都采用类似的工艺技术,并且均具有独特的功能。 本篇文章是比较这三家供应商的新高端FPGA系列的多部分系列中的