×

Xilinx的FPGA产品繁多,选型从何入手?只需5分钟,给你讲透~

消耗积分:5 | 格式:pdf | 大小:345.46KB | 2021-02-05

李鸿洋

分享资料个

作者: Clive Maxfield,本文转载自:得捷电子DigiKey微信公众号

Xilinx的FPGA、SoC、MPSoC、RFSoC和ACAP产品介绍

Xilinx提供各种各样的可编程器件产品,性能和功能从中等到极高都有。范围从传统的FPGA到SoC(具有单个硬核心处理器的FPGA可编程结构)、MPSoC(具有多个硬核心处理器的FPGA可编程结构)、RFSoC(具有RF功能的MPSoC)和ACAP(自适应计算加速平台)(图1)。


图1:随着时间的推移,Xilinx架构产品组合已经从仅包含可编程结构的简单FPGA,一直演变到可编程结构使用硬核心处理器增强的SoC器件、具有多个处理器的MPSoC、具有RF功能的RFSoC,再到针对AI等应用的最新一代ACAP。(图片来源:Max Maxfield)

Xilinx拥有非常广泛的产品组合,涉及非常多的细分市场,并提供了各种各样的部署方法,因此对于刚接触FPGA的新手来说,可能很难了解“全局”。

Xilinx所耕耘的市场包括但不限于数据中心(计算、网络、存储);通信(有线、无线);航空航天与国防;工业、科学和医学 (ISM);测试、测量和仿真 (TME);以及汽车、广播和消费品。

对于部署方法,这些包括Xilinx自称的硬件自适应器件,其中包括芯片、评估板和开发套件;可部署的终端系统,包括系统级模块 (SoM) 和PCIe加速卡;以及FPGA即服务 (FAAS),包括通过领先的云提供商(包括Amazon Web Services[AWS]、Alibaba.com和Nimbix.net)评估和利用Xilinx技术。

对于Xilinx的FPGA产品,一种分类方法是通过工艺技术节点(图2)。


图2:Xilinx的FPGA产品提供了全面的多节点产品组合,可满足各种应用的需求。(图片来源:Max Maxfield)

根据目标应用,设计人员可以选择基于较早的技术节点来实现低成本、小基底面的FPGA,或者针对最新的网络应用等,选择基于最新技术节点来实现高容量、高带宽、高性能器件。

对于需要一个或多个硬处理器内核(以及GPU、编解码器和软判决前向纠错 [SD-FEC] 内核等其他强化功能)的设计,Xilinx提供了一个以Zynq命名的器件产品组合。Zynq的SoC、MPSoC和RFSoC产品的摘要如图4所示。这套解决方案为设计人员提供了广泛的功能,能协助优化功耗、性能、成本和上市时间。


图3:Xilinx的SoC、MPSoC和 RFSoC产品将处理器的软件可编程性与FPGA的硬件可编程性集成在一起,为设计人员提供了系统性能、灵活性和可扩展性。(图片来源:Max Maxfield)

Xilinx的最新产品是Versal自适应计算加速平台 (ACAP) 器件,所有这些器件均基于7纳米 (nm) 工艺技术节点来实现。ACAP是高度集成的多核心计算平台,可以适应不断演进的各种算法。它们可以在硬件和软件级别进行动态定制,以适合各种应用和工作负载。ACAP 是围绕可编程片上网络 (NoC) 进行构建,硬件设计人员和软件开发人员都可以轻松对其进行编程。

Versal器件的新功能包括智能引擎,即用于ML和DSP工作负载的大规模矢量处理器阵列;可移动TB级数据的高带宽、低延迟和低功耗可编程NoC;以及一个集成的Shell,可通过预先构建的核心基础结构和系统连接性来提高性能、利用率和生产率。

图4显示了Versal ACAP产品组合的概述。


图4:Xilinx的Versal ACAP是高度集成的多核心计算平台,可以适应不断演进的各种算法。ACAP可以在硬件和软件级别进行动态定制,以适合各种应用和工作负载。(图片来源:MaxMaxfield)

正如将在设计工具部分中的讨论,有关Versal器件的一个关键区别是新的软件堆栈。该堆栈主要面向数据科学家和软件工程师,以及传统硬件设计工程师。

市场上有各种各样的Xilinx器件可供选择。一些代表性的产品是Artix-7 FPGA、Kintex UltraScale FPGA、Kintex UltraScale+ FPGA、来自Trenz Electronic GmbH的Zynq-7000 SoC模块,以及Zynq UltraScale+ MPSoC。

同样,也有各种各样的评估板和开发板可供选择。一些代表性的产品包括来自Digilent的Artix-7 FPGA评估板、来自Analog Devices的Kintex UltraScale FPGA评估板、来自Xilinx的Kintex UltraScale+ FPGA评估板、来自Digilent的Zynq-7000 SoC FPGA评估板,以及来自Xilinx的Zynq UltraScale+ MPSoC FPGA评估板。

使用Xilinx的FPGA、SoC和ACAP进行设计和开发

Xilinx真正区别于竞争对手的一个因素是:设计工具和流程的广度和深度。

在本FPGA系列文章的第1部分中,我们指出这些器件的传统设计方法是让工程师使用Verilog或VHDL等硬件描述语言(HDL),在抽象级别(即寄存器传送级 [RTL])上捕获设计意图。首先可以对这些RTL描述进行仿真,以验证其是否符合要求,然后将其传送给综合工具,生成用于对FPGA进行编程的配置文件。

抽象的下一步是捕获设计意图,主要是使用C/C++之类的编程语言或SystemC这样的特殊实现工具;后者是一组C++类和宏,可提供事件驱动的仿真接口。这些方法有助于并发进程的仿真,每个进程都使用简单的C++语法进行描述。对于此类描述,可以通过像常规程序一样运行来进行分析和配置,然后传递给高级综合 (HLS) 引擎,由该引擎输出RTL,而RTL会传输至常规综合引擎。

所有这些功能都包含在Vivado设计套件HLx版中,其输出是配置比特流,随后会加载到目标FPGA、SoC、MPSoC、RFSoC或ACAP器件中。除了允许硬件开发人员利用基于C语言的设计和经优化的设计复用,Vivado还提供IP子系统复用、集成自动化和加速的设计收敛功能(图5)。


图5:Xilinx的Vivado和Vitis设计工具堆栈的高级视图反映了用户如何能以最合适的抽象级别使用这些工具。硬件设计人员使用Vivado,软件开发人员使用Vitis,而AI和数据科学家使用Vitis AI。(图片来源:Max Maxfield)

下一个抽象级别由Vitis统一软件平台支持,该平台使软件开发人员能够无缝构建加速型应用。从概念上讲,Vitis的上面是Vitis AI,它让AI和数据科学家可以在TensorFlow抽象级别工作。Vitis AI是在Xilinx硬件平台上进行AI推理的开发平台,同时包括边缘设备和Alveo PCIe卡。该平台由优化的IP、工具、库、模型和示例设计组成,旨在充分利用Xilinx的FPGA和ACAP器件上的AI加速潜力。

Vitis AI馈送至Vitis,而Vitis自身馈送至Vivado。图6中的关键点在于,用户仅“看到”他们需要“看到”的内容。也就是说,硬件开发人员将仅“看到”Vivado,软件开发人员将仅“看到”Vitis,而AI和数据科学家将仅“看到”Vitis AI。这样,用户就可以在最合适的抽象级别使用这些工具。

若为软件开发人员提供Vitis之类的工具套件,将他们与底层硬件隔离开来,便可使FPGA面向更多的开发人员开放。同样,若为AI和数据科学家提供Vitis AI之类的工具套件,使他们能够专注于自己的抽象级别并将其与底层软件隔离开来,则又会使FPGA面向新的开发人员群体开放。

在提供这些功能方面,Xilinx走在了全行业的前沿,致力于将FPGA工具提升到更高的设计抽象级别,这将使开发人员能够更轻松地利用这些器件的功能,并将其集成到接下来的设计中。

总结

最佳处理设计解决方案常常是由处理器与FPGA的组合提供,或由FPGA单独提供,或以硬处理器内核作为部分结构的FPGA提供。作为一项技术,FPGA多年来发展迅速,能够满足灵活性、处理速度、功耗等多方面的设计需求,非常适合智能接口、机器视觉和人工智能等众多应用。

如上所述,Xilinx提供许多可编程器件产品,性能和功能从中等到极高都有。这些产品范围从传统的FPGA到SoC(具有单个硬核心处理器的FPGA可编程结构)、MPSoC(具有多个硬核心处理器的FPGA可编程结构)、RFSoC(具有RF功能的MPSoC)和ACAP(自适应计算加速平台)。

为了帮助设计人员使用这些器件来构建设计,Xilinx提供了一套工具来满足硬件开发人员 (Vivado)、软件开发人员 (Vitis) 以及AI和数据科学家 (Vitis AI) 的需求。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'Xilinx的FPGA产品繁多,选型从何入手?只需5分钟,给你讲透~',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);