×

FPGA开发攻略为什么要掌握FPGA开发知识?FPGA详细资料免费下载

消耗积分:0 | 格式:pdf | 大小:6.67 MB | 2018-08-08

Changeornot

分享资料个

  2008 年年初,某著名嵌入式系统 IT 公司为了帮助其产品售后工程师和在线技术支持工程师更好的理解其产品,举行了 ASIC/FPGA 基础专场培训.由于后者因为保密制度而只能接触到板级威廉希尔官方网站 图和 LAYOUT,同时因 ASIC/FPGA 都是典型的 SoC 应用,通常只是将 ASIC/FPGA 当作黑盒来理解,其猜测性读图造成公司与外部及公司内部大量的无效沟通.培训结束后 , 参与者纷纷表示 ASIC/FPGA 的白盒式剖析极大提高了对产品的理解,有效解决了合作伙伴和客户端理解偏异性问题,参加培训的工程师小 L 表示 :“FPGA 同时拥有强大的处理功能和完全的设计自由度,以致于它的行业对手 ASIC 的设计者在做 wafer fabrication 之前 , 也大量使用 FPGA 来做整个系统的板级仿真,学习 FPGA 开发知识不但提升了我们的服务质量从个人角度讲也提升了自己的价值。”

  实际上,小 L 只是中国数十万 FPGA 开发工程师中一个缩影,目前,随着 FPGA 从可编程逻辑芯片升级为可编程系统级芯片,其在威廉希尔官方网站 中的角色已经从最初的逻辑胶合延伸到数字信号处理、接口、高密度运算等更广阔的范围,应用领域也从通信延伸到消费电子、汽车电子、工业控制、医疗电子等更多领域,现在,大批其他领域的工程师也像小 L 一样加入到 FPGA 学习应用大军中。未来,随着 FPGA 把更多的硬核如 PowerPC™ 处理器等集成进来,以及采用新的工艺将存储单元集成,FPGA 越来越成为一种融合处理、存储、接口于一体的超级芯片,“FPGA 会成为一种板级芯片,未来的电子产品可以通过配置 FPGA 来实现功能的升级,实际上,某些通信设备厂商已经在尝试这样做了。”赛灵思公司全球资深副总裁汤立人这样指出。可以想象,未来,FPGA 开发能力对工程师而言将成为类似 C 语言的基础能力之一,面对这样的发展趋势,你还能简单地将 FPGA 当成一种逻辑器件吗?还能对 FPGA 的发展无动于衷吗?

  FPGA 是英文 Field Programmable Gate Array 的缩写,即现场可编程门阵列,它是在 PAL、GAL、CPLD 等可编程器件的基础上进一步发展的产物。它是作为专用集成威廉希尔官方网站 (ASIC) 领域中的一种半定制威廉希尔官方网站 而出现的,既解决了定制威廉希尔官方网站 的不足,又克服了原有可编程器件门威廉希尔官方网站 数有限的缺点。它是当今数字系统设计的主要硬件平台,其主要特点就是完全由用户通过软件进行配置和编程,从而完成某种特定的功能,且可以反复擦写。在修改和升级时,不需额外地改变 PCB 威廉希尔官方网站 板,只是在计算机上修改和更新程序,使硬件设计工作成为软件开发工作,缩短了系统设计的周期,提高了实现的灵活性并降低了成本,因此获得了广大硬件工程师的青睐。

  对 PROM、EPROM、E2PROM 熟悉的人都知道这些可编程器件的可编程原理是通过加高压或紫外线导致三极管或 MOS 管内部的载流子密度发生变化,实现所谓的可编程,但是这些器件或只能实现单次可编程或编程状态难以稳定。FPGA 则不同,它采用了逻辑单元阵列 LCA(Logic Cell Array) 这样一个新概念,内部包括可配置逻辑模块 CLB(Configurable Logic Block)、输出输入模块 IOB(Input Output Block) 和内部连线 (Interconnect) 三个部分。

  FPGA 的可编程实际上是改变了 CLB 和 IOB 的触发器状态,这样,可以实现多次重复的编程由于 FPGA 需要被反复烧写,它实现组合逻辑的基本结构不可能像 ASIC 那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构。查找表可以很好地满足这一要求,目前主流 FPGA 都采用了基于 SRAM 工艺的查找表结构,也有一些军品和宇航级 FPGA 采用 Flash 或者熔丝与反熔丝工艺的查找表结构。通过烧写文件改变查找表内容的方法来实现对 FPGA 的重复配置。

  根据数字威廉希尔官方网站 的基本知识可以知道,对于一个 n 输入的逻辑运算,不管是与或非运算还是异或运算等等,最多只可能存在 2n 种结果。所以如果事先将相应的结果存放于一个存贮单元,就相当于实现了与非门威廉希尔官方网站 的功能。FPGA 的原理也是如此,它通过烧写文件去配置查找表的内容,从而在相同的威廉希尔官方网站 情况下实现了不同的逻辑功能。

  查找表 (Look-Up-Table) 简称为 LUT,LUT 本质上就是一个 RAM。目前 FPGA 中多使用 4 输入的 LUT,所以每一个 LUT 可以看成一个有 4 位地址线的 的 RAM。 当用户通过原理图或 HDL 语言描述了一个逻辑威廉希尔官方网站 以后,PLD/FPGA 开发软件会自动计算逻辑威廉希尔官方网站 的所有可能结果,并把真值表 ( 即结果 ) 事先写入 RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。

  从表中可以看到,LUT 具有和逻辑威廉希尔官方网站 相同的功能。实际上,LUT 具有更快的执行速度和更大的规模。

  由于基于 LUT 的 FPGA 具有很高的集成度,其器件密度从数万门到数千万门不等,可以完成极其复杂的时序与逻辑组合逻辑威廉希尔官方网站 功能,所以适用于高速、高密度的高端数字逻辑威廉希尔官方网站 设计领域。其组成部分主要有可编程输入 / 输出单元、基本可编程逻辑单元、内嵌 SRAM、丰富的布线资源、底层嵌入功能单元、内嵌专用单元等,主要设计和生产厂家有赛灵思、Altera、Lattice、Actel、Atmel 和 QuickLogic 等公司,其中最大的是美国赛灵思公司,占有可编程市场 50% 以上的市场份额,比其他所有竞争对手市场份额的总和还多。

  FPGA 是由存放在片内 RAM 中的程序来设置其工作状态的,因此,工作时需要对片内的 RAM 进行编程。用户可以根据不同的配置模式,采用不同的编程方式。

  加电时,FPGA 芯片将 EPROM 中数据读入片内编程 RAM 中,配置完成后,FPGA 进入工作状态。掉电后, FPGA 恢复成白片,内部逻辑关系消失,因此,FPGA 能够反复使用。FPGA 的编程无须专用的 FPGA 编程器,只须用通用的 EPROM、PROM 编程器即可。这样,同一片 FPGA,不同的编程数据,可以产生不同的威廉希尔官方网站 功能。因此,FPGA 的使用非常灵活。

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

评论(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:'FPGA开发攻略为什么要掌握FPGA开发知识?FPGA详细资料免费下载',//标题 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);