技术论坛

  • FPGA

    Xilinx大学计划官方FPGA开发板(DIGILENT全球唯一原厂) & Pmods积木式传感器

    发帖数

    312
    zynq-7000搭建的xilinux系统无法下载软件
    我想在zynq-7000开发板上编译oencv(1)使用交叉编译,遇到很多动态链接库迁移问题,较复杂(2)尝试在开发板上直接编译,使用github上编译教程,出现命令行下无法下载软件,换阿里云镜像源后依然失败(阿里云镜像源本地可以使用)(3)在软件中下载qt-creator,依然无法换源
    发布于 09-19
  • 开源微控制器(LabVIEW支持)

    树莓派(Raspberry Pi)、BeagleBone Black、chipKIT

    发帖数

    42
    BeagleBone Black安装run-time问题
    按照自学里的步骤安装run-time出现问题了请大神们帮我看看是什么原因导致不往下进行提示run-time版本14.1-11可供安装点击安装run-time然后跳出图片上的这个让我点击EXPANDPARTITION按钮点击后就是一直是working也不往下执行了然后其他按钮都点击不了整整等了5个小时一直就是这个界面不往下走
    发布于 07-15
  • 口袋仪器

    OpenScope、Analog Discovery 2、Analog Discovery、Digital Discovery、Electronics Explorer

    发帖数

    42
    【DIGILENT官方资料】OpenScope MZ 官方入门指导手册
    DIGILENTOenScoeMZ是一款便携式多功能可编程仪器模块,可与最新推出的WaveFrormsLive搭配使用。【官方入门指导教程】请见附件。有需要的用户请自取。【官方视频版快速入门教程】请点击:htt://www.digilent.com.cn/studyinfo/62.html
    发布于 06-18

创客圈

  • 创客小组(项目集散地)

    这里不仅有灵感与创意,更有实践、激情、与同道。创者无畏!

    发帖数

    22
    基于Basys3的2048小游戏
    首先十分感谢Digilent论坛提供的这次机会,我跟大家分享的是我设计的一款小游戏:基于Basys3的2048小游戏。游戏功能:游戏界面由4×4的16个方格组成,每个方格中可以存放一个数字。玩家通过操纵Basys3开发板的上下左右四个方向键和中央的reset键,控制方格中的数字移动。界面由VGA和Pmod接口oled两种方式显示。游戏成功时显示笑脸,失败时显示骷髅。游戏过程中,玩家每按动一次方向键,所有数字按照这个方向移动一次,该方向上相邻相同的数字合并为原来的2倍,并在反方向随机生成一个新的数字。玩家目标是在游戏中拼出2048或更高的数字,即为游戏成功。DIY动手指南:Ste1:材料准备硬件:Basys3开发板VGA连接线以及VGA显示器(可选)sh1106驱动的oled显示屏一块软件:Vivado2016.2Ste2:系统框架系统主要由以下几个模块构成,游戏主状态机、游戏数据寄存器{S16}、移动模块move、随机产生模块gen、随机数生成器ran、VGA驱动模块和oled驱动模块。Ste3:程序设计接下来分模块进行分析。1、按键去抖对每个按键设计了一个32位长的FIFO,按键值从低位进入直至高位溢出。每过10ms,FIFO被完全刷新一次,只有当32位为FFFFFFFFh时认为输入为1,00000000h时认为输入为0。2、游戏数据寄存器用4×4=16个4bit寄存器,存放16个格子中的数据,记为{S16},以【log2对数】形式存放。即如果格子中是512,则存放9;如果格子中是128,则存放7。特例是0用0来存放。这种存放的特点是,可以节约寄存器数量,而且原本的加法128+128=256可以用加1来表示:7+1=8。寄存器位置定义如下:3、游戏主状态机游戏主状态机中,主要操纵数据寄存器{S16}的数值,通过对这个寄存器中数值的改变来实现游戏的进行。状态机分为4个状态:检测按键+移动,产生随机数,游戏状态检测,游戏失败死循环。其中游戏状态检测时,检查当前游戏是否已经结束或成功,如果成功,游戏不中断,玩家可以继续下去,如果已经结束,则跳入游戏失败的死循环中,结束游戏。4、移动逻辑组合电路本游戏有4种移动方式,即上下左右,每次移动4条线,但本质都是相同的,只需要一个模块即可完成。如下图所示move(i3,i2,i1,i0,o3,o2,o1,o0)我们默认向右移动。(为什么呢?因为当我们调用这个模块时,可以以各种方向调用:如果向右移动,则调用move(15,14,13,12)向右,如果向左移动,则调用move(12,13,14,15)向右即可,还可以调用move{15,11,7,3}向下,调用move{1,5,9,13}向上等等。)那么向右移动时,用f3~f0判断这四位是否为空,通过对f3~f0的16种情况的mux来决定输出的值,如果有相同则合并后输出。(其实这个模块就是一个大mux)例如,下图所示,左图右移后,变为右图。再例如:2,2,4,8右移后变为0,4,4,8,再右移变为0,0,8,8再右移变为0,0,0,165、随机数生成器和随机产生模块随机数产生器为随机产生模块gen服务。随机数生成器产生3组随机数,分别为8bit,12bit和16bit。分别对应2空格、3空格和4空格的情况。例如,如果右移后的图片如下图所示,那么黄色格子里的2就是在最左列3空格情况下随机产生的一个位置。我们还是默认向右移动,那么最左边的四个格子(15,11,7,3)即可交给gen,在空白出产生一个随机位置的“2”。这里需要注意的是,2048游戏中规定必须是“有效移动”后才产生一个数字,以杜绝有投机的玩家一直按同一个方向键可以作弊的情况。这一逻辑只需要对上一步中move前后做一下对比即可。6、VGA显示模块640×480分辨率,25MHz的时钟信号。其中扫描时,将VGA坐标的后两位[1:0]舍去,即可将640×480像素变为160×120的色块。(注:源码中的VGA画图一段和oled画图一段看上去很复杂,其实是画点的方式比较奇怪,两种画法都是先将132x64的点阵水平划分为8条,每条8行,再以每列为1个byte的方式画出来。。。那么为什么要这么复杂呢?因为oled的sh1106驱动就是这么要求的,我先做了oled,后面vga就直接引用了~)Ste4:演示见视频~
    发布于 03-07
  • 竞赛 & 活动

    DIGILENT全可编程创新创业设计大赛(DDC)、江苏省虚拟仪器竞赛、极客DIY限时挑战等

    发帖数

    15
    特别活动 | Python on Everything 硬件项目挑战赛
    PythonforEverything!「Python+开源硬件」·创客项目设计主题活动▼PythonAI时代的头牌语言web开发、游戏开发、客户端开发...当这些软件应用领域逐渐被Python“玩坏了”之后凭借“语言简洁,无需编译,开发高效”的特性一场Python与开源硬件的邂逅悄然已成趋势人生苦短,我用Python当DIGILENT已为你准备好多款主流Python开发板当你的情敌暑期已在用Python加速项目设计开发不要告诉我们你还在家打王者荣耀暑期8月,DIGILENT有一个大胆的想法管它当讲不当讲「Python+开源硬件」·创客项目设计挑战赛Let'smakePythonforEverything!1先来一波DIGILENTPython支持开发板▼PYNQ世界上第一款支持Python的FPGA嵌入式开发板●主芯片:XilinxZynq-7020●Python开发战斗值:★★★★★●战力简介:支持开源的PYNQ项目,它直接对硬件底层进行的封装,用户借助封装库文件可以直接使用ython语言操作硬件I/O管脚等功能,不需要再使用复杂繁琐的开发工具,使用基于浏览器的JuyterNotebook工具就可以直接编辑工程代码。同时可轻松搭建开源的机器学习二值神经网络(BNN)。●了解详情:www.digilent.com.cn/roducts/ynq-z1▼Zedboard世界上第一款也是最为经典的XilinxZynqAPSoC开发板●主芯片:XilinxZynq-7020(双核ARMCortex™-A9)●Python开发战斗值:★★★★●战力简介:在Linux系统中配置Python3或Python2.7(如果使用的是Ubuntu,Python2,3已被预安装),即可用Python进行应用设计。调用驱动控制外设。环境配置步骤:1)安装Linux系统;2)安装Python;更新系统:$sudoat-getudate检查版本:$ython3-V3)安装所需的库;$iinstall$sc●了解详情:www.digilent.com.cn/roducts/roduct-zedboard-zynq-7000-arm-fga-soc-develoment-board▼Zybo享有“MiniZedboard”美誉的Zynq入门级训练板●主芯片:XilinxZynq-7010(双核ARMCortex™-A9)●Python开发战斗值:★★★★●战力简介:在Linux系统中配置Python3或Python2.7(如果使用的是Ubuntu,Python2,3已被预安装),即可用Python进行应用设计。调用驱动控制外设。环境配置步骤:1)安装Linux系统;2)安装Python;更新系统:$sudoat-getudate检查版本:$ython3-V3)安装所需的库;$iinstall$sc●了解详情:www.digilent.com.cn/roducts/roduct-zybo-zynq-7000-arm-fga-soc-trainer-board▼Arty-Z7全新问世兼容Arduino接口的Zynq-7000开源创客开发板●主芯片:XilinxZynq-7020/10(双核ARMCortex™-A9)●Python开发战斗值:★★★★●战力简介:在Linux系统中配置Python3或Python2.7(如果使用的是Ubuntu,Python2,3已被预安装),即可用Python进行应用设计。调用驱动控制外设。环境配置步骤:1)安装Linux系统;2)安装Python;更新系统:$sudoat-getudate检查版本:$ython3-V3)安装所需的库;$iinstall$sc●了解详情:www.digilent.com.cn/roducts/roduct-arty-z720-asoc-zynq-7000-develoment-board-for-makers-and-hobbyists▼树莓派2为Python编程而生的Geek最爱嵌入式开发板●主芯片:900MHz双核ARMCortex-A7CPU●Python开发战斗值:★★★★★●战力简介:在早先BBC的一篇采访中,RasberryPi的创始人之一EbenUton就曾提到,RasberryPi的命名中,Pi所指的就是Python。树莓派基金会提供了基于ARM的Debian和ArchLinux的发行版供大众下载。还计划提供支持Python作为主要编程语言,支持Java、BBCBASIC(通过RISCOS映像或者Linux的"BrandyBasic"克隆)、C和Perl等编程语言。●了解详情:www.digilent.com.cn/roducts/roduct-labview-for-rasberry-i-2▼BeagleBoneBlack为数不多可以在10秒内启动Linux的开发板,三大开源硬件平台之一●主芯片:AM335x1GHzARMCortex-A8●Python开发战斗值:★★★★★●战力简介:不可多得的支持Python编程的实战力器,默认安装有Python2.7.3以及相应的Python库。●了解详情:www.digilent.com.cn/roducts/roduct-labview-for-beaglebone-black2活动参与方式与福利01挑战任务基于任意一款DIGILENTPython支持开发板,在为期四周的时间内(9月8日前)使用Python语言编写一个应用设计。应用主题不限,但需要利用硬件外设,如Pmod模块、摄像头,或板上自带的IO/WiFi模块/传感器等。02奖项设置●最佳「Python+开源硬件」设计作品奖【1名】获赠全新DigilentPYNQ开发板一块受邀参与2017DIGILENT创客夏令营●优秀创意作品奖【2名】获赠全新DigilentchiKITWF32嵌入式开发板一块受邀参与2017DIGILENT创客夏令营●实际作品提交参与奖【若干】所有最终按照活动要求提交作品的挑战者,都将获得人气FPGA教材一套03参与方式&am;项目提交●参与方式:加入“PythonforEverything”创客小组传送门:www.digilent.com.cn/makerhubs/ython-on-everything.html●项目提交:项目完成后,进入上述页面”发布项目”●截止时间:9月8日中午12时04指定软硬平台指定硬件(优秀创意项目DIGILENT提供免费租借):●PYNQ/Zedboard/Zybo/Arty-Z7/RasberryPi2/BeagleBoneBlack指定软件:●XilinxVivado/Linux系统/Python语言05作品评分细则●所有最终提交的作品将由DIGILENT工程师依据以下评分项综合打分评选出最终的名次:1)作品创意20’2)作品完成度30’3)作品实现难度20’4)作品提交内容的完整度30‘5)额外加分项:使用Zedboard,Zybo,Arty-Z7参与活动,额外+10'3推荐阅读资料推荐阅读社区多篇热门Python阅读集结:1《项目教程|手把手教你如何在Zybo上跑Python制作一个LED呼吸灯》2《资源分享|基于Python的开源人脸识别库》3《学习笔记|PythonImage库(PIL)常用操作函数》4《知乎问答|你们都是怎么学Python的?》5《话题讨论|Python为何能坐稳AI时代头牌语言》6《机器学习|Zynq+PYNQ+Python:在PYNQ-Z1上搭建二值神经网络(BNN)》活动参与:1)www.digilent.com.cn/makerhubs/ython-on-everything.html2)申请加入部落3)9月8日前提交完成作品想要申请开发板租借,参与此次活动的童鞋(限在校学生),请在本帖内留言哟~~
    发布于 08-08
  • 工科街(求职招聘区)

    一条纯粹属于在校工科生的话题街。尽情释放内心的小怪兽,海侃校园内外,闲聊天南地北

    发帖数

    48
    招聘|无锡市凯灵电子有限公司(2017.09.22发布)
    发布时间|2017.09.22招聘单位|无锡市凯灵电子有限公司公司简介公司是一家留日归国人员创建的高科技民营企业,公司主营电器控制柜、工业自动化控制器产品的设计、生产和销售以及软件的开发和维护,并有配套的制壳集成有限公司,产品80%以上销往国外,享有较高的声誉。“为企业提供完整的解决方案”是我们的宗旨。公司目前处在不断发展壮大期间,本公司唯才是用,学历只作参考,欢迎有识之士加盟!注重对员工的培训,为有志之士提供广阔的发展空间,鼓励员工和公司共同成长。8小时工作制,长白班,加班按国家规定发放加班工资。经正式录用的职员缴纳社会养老保险5金。有厂车,提供工作餐,外地员工可提供住宿。招聘职位|硬件设计坐标:无锡薪资:4-6千/月岗位职责:1.独立进行PCB设计;2.参与或独立完成项目原理图设计;3.协助软件人员进行编程;4.参与硬件调试,处理调试中问题;5.协助测试、生产、维修等相关人员进行后续工作。任职要求:1.具有硬件设计和调试经验,有硬件系统架构设计经验优先,有独立工作能力,有较强的分析和解决问题能力2.具有良好的模拟和数字电路基础,熟悉常用的模拟电路、数模转换和各类接口电路设计经验3.有独立分析问题,解决问题的能力,良好的团队合作精神、沟通协作能力和敬业精神4.有信号调理和功率驱动电路设计经验者优先5.有XILINX等公司FPGA电路设计经验者优先6.有丰富的信号完整性、EMC知识和多层高速PCB板设计经验者优先简历投递:htt://jobs.51job.com/wuxi-xsq/66105759.html?s=01&am;t=0应聘时请注明:从DIGILENT中文技术论坛获悉招聘信息
    发布于 前天 15:53

干货热帖

  • 深度长文 | 从GPU、TPU到FPGA及其它:一文读懂神经网络硬件平台战局
    来源:机器之心作者:MattHurd声明:本人经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载在如今深度学习大爆发的时代,相关的硬件平台也在百花齐放,既有英伟达和谷歌这样的科技巨头,也有地平线机器人和Grahcore等创业公司——它们都各自提出了自己的解决方案。近日,多家公司的技术顾问MattHurd在其博客上发表了一篇全面评点各种神经网络硬件平台的长文,机器之心对本文进行了编译介绍。这是我几周前做的一个传统的90年代风格的性别识别神经网络的很好的隐藏节点。一个简单的性别识别器网络中的90年代风格的隐藏节点图像我的硕士项目是一种类似级联相关(cascadecorrelation)的神经网络Multi-rateOtimisingOrderStatisticEqualiser(MOOSE:多速率优化顺序统计均衡器),可用于日内的Bund(国库债券产品)交易。MOOSE曾经是为获取高速的LEO卫星信号(McCaw的Teledesic)而设计的一点成果,后来在从LIFFE迁移到DTB时将目标转向了Bund。作为一家投资银行的职业交易员,我可以购买很好的工具。我有那时候世界上最快的计算机:一个IBMMicroChanneldualPentiumPro200MHz处理器外加带有几MBRAM的SCSI。在1994年那会儿,将800,000个数据点输入到我的C++stream/dag处理器中看上去就像是黑魔法。有限差分方法让我可以做许多O(1)增量线性回归这样的运算,以获得1000倍的加速。那时候这看起来已经很好了。现在,你的手机都能嘲笑我的大方向。那时候,在神经网络领域有很多研究。倒不是说它有过人的生产力,只是因为有用。读到LindsayFortado和RobinWigglesworth的FT文章《Machinelearningsettoshakeuequityhedgefunds》中EricSchmidt关于机器学习和交易的看法,还真有点让人高兴:EricSchmidt是谷歌母公司Alhabet的执行董事长,他上周对一众对冲基金经理说他相信在50年内,所有交易都会有计算机解读数据和市场信号。「我期待出现在交易方面做机器学习的创业公司,看看我描述的这种模式识别能否比数据分析专家的传统线性回归算法做得更好。」他补充说,「我这个行业内的许多人都认为这注定将成为一种新的交易形式。」老朋友Eric,我在90年代早期就已经算是迟到了,你真是有点后知后觉。好吧,现在情况已经不同了。我喜欢思考它,并喜欢将神经网络的这次新复兴称为感知时代(TheAgeofPercetion)。这并不是智能,只是擅长模式而已。它仍然无力应对语言歧义。它还要一些时间才能理解基本的价值和概念,从而形成深刻的金融理解。深度学习既被夸大了,也被低估了。这不是智能,但会有助于帮我们实现智能。一些人将其夸大为将会给我们带来替代人的类人机器的人工智能突破。我们仍然还受困于常识以及用于推理的简单文本中的歧义。我们还有很长的路要走。相对简单的规划算法和启发式方法以及基于神奇的深度学习的视觉、声音、文本、雷达等等的感知能力将会带来深刻的影响,就像是每个人和他们的狗现在理解的那样。所以我叫它「感知时代」。就好像是我们口袋里的超级计算机突然有了眼睛,并且快速适应了真实世界所带来的闪光性致盲。深度学习将会带来巨大的影响,并且将会改变这颗行星上全人类的生活方式。但我们低估了其对我们的危险。不,我们不会和能激起或挑战我们最深刻的思想的深度图灵对话者约会——还不会。这将不可避免地到来,但在可见的未来里还不可见。借助语音、文本和Watson那样的数据库的智能代理可以实现非常先进的Eliza,但不会更先进了。自动化运输、食物生产、建筑、协助家事将会极大地改变人们的生活方式和不动产的价值。除了这些泛泛之谈,本文的目的是收集一些关于芯片的思想见解——它们驱动着当前的神经网络革命。其中很多见解都不是最为激动人心的,但这对我来说是一个有用的锻炼。神经网络硬件与20年前相比,今天的神经处理方法并没有很大不同。深度更多的是一个品牌,而不是一项差异。激活函数已经得到了简化,以更好地适配硬件。主要的成功之处在于我们有了更多数据,对如何初始化权重、处理许多层、并行化和提升鲁棒性也有了更好的理解,其中要用到像是droout这样的技术。1980年的Neocognitron架构与今天的深度学习器或CNN并没有显著差异,但YannLeCun让它具备了学习能力。在90年代那会儿也有很多神经硬件平台,比如CNAPS(1990),它带有64个处理单元和256kB内存,可以在8/16位条件下达到1.6GCPS的速度(CPS是指每秒连接次数/connectionsersecond)或在1位条件下达到12.8GCPS的速度。你可以在《神经硬件概述(Overviewofneuralhardware)》[Heemskerk,1995,draft]中读到Synase-1、CNAPS、SNAP、CNSConnectionistSuercomuter、HitachiWSI、My-Neuower、LNeuro1.0、UTAK1、GNU(通用神经单元/GeneralNeuralUnit)Imlementation、UCL、Mantra1、Biologically-InsiredEmulator、INPGArchitecture、BACHUS和ZISC036。阅读地址:htts://dfs.semanticscholar.org/5841/73aa4886f87da4501571957c2b14a8fb9069.df好吧,东西还真多,但实际上还排除了软件和加速器板/CPU组合,比如ANZAlus、SAICSIGMA-1、NT6000、Balboa860协处理器、Ni1000识别加速器硬件(英特尔)、IBMNEP、NBC、NeuroTurboI、NeuroTurboII、WISARD、MarkII&am;IV、Sandy/8、GCN(索尼)、Tosi、BSP400(400微处理器)、DREAMMachine、RAP、COKOS、REMAP、通用并行神经计算机(GeneralPuroseParallelNeurocomuter)、TINETSIM和GeNet。另外还有一些模拟和混合模拟的实现,包括英特尔的电气式可训练模拟神经网络(801770NX)。你懂我要表达的意思了,那时候的东西还真是多。这在1994年迎来了一次爆发:乐观的摩尔定律告诉我们,TeraCPS即将实现:「未来十年,微电子很可能将继续主导神经网络实现的领域。如果进展和过去进步得一样快,那就意味着神经计算机的性能将会增长大约2个数量级。因此,神经计算机将会接近TeraCPS(10^12CPS)的性能。由100万个节点(每个节点有大约1000个输入)组成的网络可以达到大脑的计算速度(100-1000Hz)。这将能为实验合理巨大的网络提供良好的机会。」由于Minsky和Paert对隐藏层的不正确简单概括,打击了Rosenblatt的感知器梦想并最终导致了他不幸的死亡,神经网络研究遭遇了第一个冬天,研究资金被残酷地撤销了。1995年,又出现了另一次神经网络冬天,尽管那时候我其实并不知道。作为温水锅里的一只青蛙,我没有注意到正在加热。第二个冬天的主要原因是缺乏激动人心的进展,让人们普遍感到无聊了。到了2012年,多亏了GeoffreyHinton的冬季生存技能,多伦多大学基于AlexNet开发的SuerVision在ImageNet处理上实现了极大的提升,第二个神经网络冬天也由此终结了。之后谷歌的LeNetIncetion模型在2014年打破了它的记录。所以据我估计,感知时代始于2012年。将它记在你的日历里面吧,五年已经过去了。谷歌在几千台普通机器上进行了出色的并行CPU有损更新研究。吴恩达教授和他的朋友们让数十台GPU就能完成数千台CPU的工作,从而让规模化成为了可能。因此,我们从需要很好的资助的神经处理前景中解放了出来。好吧,或多或少吧,现在最先进的网络有时候需要数千台GPU或专用芯片。更多数据和更多处理能力是其中的关键。让我们进入本文的重点,列出一些感知时代大数据之战中的一些关键平台:英伟达的GPU这一家是很难被战胜的。来自大型视频处理市场的收益驱动着巨大的规模经济。新款英伟达V100带有一种新的TensorCore架构,速度可达15TFlos(单精度/SP)或120TFlos(浮点精度,其中带有FP16的乘法和FP32的累加或加法,非常适合机器学习)。英伟达在它们的DGX-1中装入了8块计算卡,速度可达960TensorTFlos.AMD的GPU在机器学习领域,AMD一直是英伟达的追赶者。即将发布的AMDRadeonInstinctMI25有希望达到12.3TFlos(SP)或24.6TFlos(FP16)。如果你把英伟达的TensorCore也算进来,则AMD完全无力竞争。英伟达设备的带宽900GB/s也是AMD484GB/s的两倍。谷歌的TPU谷歌原来的TPU相比于GPU有很大的领先,并帮助DeeMind的AlhaGo赢得了与李世石的围棋大战。据描述,原来的700MHzTPU有95TFlos的8位计算能力或23TFlos的16位计算能力,同时功耗仅有40W。这可比当时的GPU快得多,但现在落后于英伟达的V100;但在单位功耗的计算能力上,TPU并没落后。据称新的TPU2是一款带有4块芯片的TPU设备,速度可达到180TFlos左右。每块芯片的性能都翻倍了,达到了45TFlos的16位计算能力。你可以看到与英伟达V100的差距正在变小。你没法买到TPU或TPU2。谷歌正在通过它们的云提供这些TPU服务,包含64台设备的TPUod速度高达11.5PetaFlos。TPU2上巨大的散热片说明了一些原因,但市场正在发生变化——从单独的设备转向了设备的组合以及将这些组合以云的形式提供。WaveComutingWave之父澳洲人CTOChrisNicol博士的成果斐然,领导开发了Wave的ComuteAliance中的异步数据流处理器(asynchronousdataflowrocessor)。几年前,Metamako的创始人CharlesThomas在加州简单介绍了我和Chris认识。他们俩都曾在NICTA研究过无时钟异步。这两人都很出色。我不确定Wave的设备最早是不是针对机器学习设计的,但在他们的3RUaliance上运行TensorFlow的速度可以达到2.9PetaOPS/s,这实在了不起。Wave将他们的处理器称为DPU,一个aliance有16个DPU。Wave使用了他们称之为粗粒度可重构阵列(CGRA:CoarseGrainedReconfigurableArray)的处理元素。我还不清楚2.9PetaOPS/s的速度对应多少位宽。根据他们的白皮书,其ALU可以执行1位、8位、16位和32位计算:「算术单元是分区的。它们可以并行执行8位运算(完美适用于DNN推理)以及16位和32位运算(或以上的任何组合)。也可以执行一些64位运算,而且可以使用软件扩展到任意精度。」关于其aliance中的16个DPU,还有一些额外的信息:「WaveComutingDPU是一种包含了16384PE的SoC,它们被配置成了一个32×32集群的CGRA。它包含了4个HMC(HybridMemoryCube)第二代接口、一个PCIe第三代16通道接口和一个用于SoC资源管理的嵌入式32位RISC微控制器。这款WaveDPU可以在没有主机CPU时自动执行。」对于TensoFlow指令:「WaveDNNLibrary团队为TensorFlow等工作流程中所使用的常见DNN函数创建了预编译的可重新定位的kernel。它们可以被组合到Agent中并且可以被实例化成机器,以构建大型的张量数据流图和DNNkernel。」「……一个可与TensorFlow、CNTK、Caffe和MXNet等机器学习工作流程交互的session管理器,可作为用于训练和推理的工作器过程(workerrocess)。这些工作流程可为工作器过程提供张量的数据流图。在运行时,Wave的session管理器会分析数据流图并将这些软件智能体放置到DPU芯片中,然后将它们连接起来以构建数据流图。这些软件智能体会被分配用于输入缓冲和本地存储的全局内存区域。CGRAkernel的静态本质和分布式的内存架构可以让一个性能模型准确估计智能体的延迟。session管理器可使用该性能模型来在智能体之间插入FIFO缓冲,这有助于DPU中通信和计算的重叠。这个可变智能体支持穿过整个图的数据流的软件流程,从而可以进一步增加并发性和性能。这个session管理器可以监控数据流图运行时的性能(通过监控卡顿、缓冲区下溢出和/或上溢出),并且可以动态地调节FIFO缓冲区的大小以实现吞吐量的最大化。在附加了DPU的处理器中,有一个分布式运行时管理系统会在运行时安装和卸载数据流图的一些部分,从而平衡计算和内存的使用量。这种在数据流计算机中的数据流图上的运行时重新配置还是有史以来第一次。」是的,我也觉得非常酷。这个平台的惊人之处是它在架构方面比FPGA更加粗粒度,因此灵活性更低,但却很可能表现更好。非常有意思。KnuEdge的KnuPath在2016年6月时我在Twitter上谈过KnuPath。那以后他们的产品页面却失踪了。我不确定他们要把那1亿美元如何用到他们的MIMD架构上。那时候他们向我这样描述的:每个ASIC中有256个微型DSP(即tDSP)核以及一个ARM控制器,适用于35W包络中的稀疏矩阵处理。它的性能未知,但他们把自己的芯片与一款当时的英伟达芯片进行了比较,那时候他们说实现了2.5倍的性能。我们知道英伟达现在凭借Tensor内核已经提速了十倍以上,所以KnuEdge还要努力才能跟上节奏。MIMD或DSP方法必须要得到非常好的效果才能在这一领域占据一席之地。时间会给我们答案。英特尔的NervanaNervanaSystems曾经除了开发他们的NervanaEngineASIC,还开发着一种GPU/软件方法,后来英特尔收购了这家公司。性能比较方面还不清楚。英特尔也在规划通过一个KnightsCrest项目将其集成到Phi平台中。NextPlatform认为其2017年在28nm节点上的目标是在某个位宽的运算速度达到55TOPS/s。英特尔还安排一个NervanaCon,将在12月份举办,所以那时候我们也许将能看到他们的第一批成果。地平线机器人这家中国创业公司正在研发一种大脑处理单元(BPU:BrainProcessingUnit)。余凯博士是正规军出身,他曾是百度深度学习研究院的负责人。今年早些时候,一段YouTube视频演示了基于Arria10FPGA的BPU仿真:htts://youtu.be/GI9U9lUFaDo。目前关于这一平台的公开消息还很少。EyerissEyeriss是MIT的一个项目,开发出了一款具有出色原始性能表现的64nmASIC。在AlexNet上,这款芯片的速度大约是英伟达TK1的一半。其优势在于借助于其行固定(rowstationary)方法,仅需要一个278mW的可重新配置加速器就能实现这样中规中矩的性能。赞。Grahcore去年Grahcore拿到了3000万美元的A轮融资,以开发他们的智能处理单元(IPU:IntelligenceProcessingUnit)。他们的网站还缺少细节,只是给出了一些亮眼的事实,比如多于14000个独立的处理器线程和大于100倍的内存带宽。根据NextPlatform报道的零星信息,其在一块芯片上具有多于1000个真实内核,并且采用了定制的互连方式。它的PCIe板具有一个16个处理器的元件。听起来似乎是数据流。抛开公关的言论,这个团队确实有很强的背景,而且投资者也不并不傻,所以就拭目以待吧。TenstorrentTenstorrent是加拿大多伦多的一家小创业公司,它宣称在深度学习的效率上实现了一个数量级的提升,和大多数公司一样,还没有什么公开的细节,但该公司入选了Cognitive300榜单。CerebrasCerebras值得一提,因为它得到了Benchmark的支持,而且其创始人是SeaMicro的CEO。它似乎已经融资2500万美元了,而且仍然处于隐身模式。ThinciThinci正在美国萨克拉门托开发视觉处理器,并且在印度也有员工。他们宣称即将推出他们的第一款硅芯片Thinci-tc500,而且已经开始进行标准评测和赢得客户了。但除了「一切都并行处理」之外,我们所知甚少。KonikuKoniku的网站正在倒计时,现在还有20几天。我已经等不及了。他们没有融到多少钱,而看过它们在福布斯上的这个视频之后(htts://goo.gl/VA1PJx),你很可能也不得不相信他们,但你也无法预料究竟会如何。利用生物细胞肯定是不一样的。听起来就像是一个科研项目,但他们这样说:「我们是一个企业。我们不是一个科研项目。」下周将在维也纳的PioneersFestival上发表演讲的Agabi这样说,「今天有些需求是硅所不能满足的,而我们可以通过我们的系统提供。」Koniku提供的核心是所谓的神经元壳(neuron-shell),这家创业公司称其内部可以控制神经元彼此通信的方式,加上一种正在申请专利的电极,就可以在神经元上读写信息。所有这些都可以装在一个iPad大小的设备里,他们还希望能在2018年之前将其减小到一枚五美分硬币大小。AdatevaAdateva是我最喜欢的一家小技术公司,正如你在之前文章《AdatevataesoutEihany-V:一款1024核64位RISC处理器》:htts://goo.gl/6ZH7JP。去年年底时AndreasOlofsson拿出了他的1024核芯片,我们都等着看它的性能表现。Eihany-V有用于深度学习的新指令,我们必须要看看这种带有64MB片上内存的更少内存控制器的设计是否具有合适的扩展能力。Andrea的设计和构建的出色效率可能能让我们真正负担得起这种芯片,所以让我们希望它有良好的表现吧。KnowmKnown研究的是Anti-HebbianandHebbian(AHaH)可塑性和忆阻器。这里有篇覆盖这一主题的论文《AHaH计算:从MetastableSwitches到Attractors到机器学》:htts://doi.org/10.1371/journal.one.0085175。这对我来说有点太高级了。简单看了看,我看不出这项技术和胡言乱语的区别,但看起来确实科学味道十足。我需要亲眼看到才能相信。神经忆阻式处理器(neuromemristiverocessor)的思想是很有趣的。我早上确实需要一个好的流行术语。MythicMythic的一款电池驱动的神经芯片具有低50倍的功耗。目前还看不到太多真正的细节。这款芯片大约纽扣大小,但大多数芯片不都这样吗?「Mythic的平台能在纽扣大小的芯片上提供桌面GPU的性能。」也许这又是一款适合无人机和手机的芯片,很可能被用在手机中,也可能被排除在外。高通手机显然是机器学习硬件的一大用武之地。我们希望能够识别狗的品种、花朵、树叶、癌症痣、翻译标识、理解口语等等。我们口袋里的超级计算机愿意用上它能得到的所有帮助,以便能迈入感知时代。高通一直以来都在鼓捣机器学习,推出了ZerothSDK和Snadragon神经处理引擎(NPE)。这种NPE显然在高通所用的HexagonDSP上效果良好。HexagonDSP已经远远不止是一个非常广泛的并行平台了,YannLeCun已经证实高通和Facebook正在合作开发一种更好的方法,参见Wired的文章《业界|谷歌TPU之后还有高通,人工智能芯片竞赛已经展开》:「最近,高通已经开始制造执行神经网络的专用芯片,这条消息来自LeCun,因为Facebook正帮助高通开发机器学习相关技术,所以他对高通的计划很了解;高通技术副总裁JeffGehlhaar证实了这个项目,他说:『在原型设计和开发方面,我们还有很长的路要走。』」也许我们很快就会看到KryoCPU、AdrenoGPU、HexagonDSP和HexagonVectorExtensions之外的其它东西。对于这一领域的创业公司来说,和高通的机器学习竞争将会艰难无比。Pezy-SC和Pezy-SC2这两者是Pezy开发的1024核和2048核处理器。Pezy-SC1024核芯片可以驱动2015年Green500超级计算机榜单的前三名的系统。Pezy-SC2是现在已经开始提供的后续芯片,我在6月份也做过关于它的演讲,但相关细节还很少,不过仍然很吸引人:「PEZY-SC2HPCBrick:单个机箱中有32个带有64GBDDR4DIMM(2.1PetaFLOPS(DP))的Pezy-SC2模块卡,速度可达6.4Tb/s.」不知道2048个MIMDMIPSWarrior64位核的机器能做到什么?在6月份的2017年Green500榜单中,一个英伟达P100系统拿到了头把交椅,而排名第7的是一个Pezy-SC2系统。所以看起来这款芯片还活着,但相关细节却很少。MotoakiSaito(齊藤元章)当然值得一看。Kalray尽管做了很多承诺,但Kalray的芯片还没有超过256核,我在2015年的一篇文章就谈到:htts://goo.gl/xqn7Z。Kalray宣传自己的产品说是适合嵌入式自动驾驶汽车应用,但我觉得其目前产品架构的形式并不是一种完美的CNN平台。Kalray有一个KalrayNeuralNetwork(KaNN)软件包并且宣称有比GPU更好的效率,在芯片上能实现高达1TFlo/s的速度。随着即将到来的产品更新,Kalray的神经网络财富可能还会提升,就在这个月Kalray完成了新一轮2600万美元的融资。他们新的Coolidge处理器预计将在2018年年中上市,它会带有80或160个核,另外还有80或160个为视觉和深度学习优化的协处理器。这在他们的多于1000核的方法上有了很大的改变,而我认为这是最明智的。IBMTrueNorthTrueNorth是IBM的神经形态CMOSASIC,是与DARPA的StNAPSE项目一起开发的。这是一种单个芯片设计上的多核处理器网络,具有4096个核,每个核模拟256个可编程的硅「神经元」,总共就超过了100万个神经元。另外,每个神经元还有256个可编程的「突触」,信号可以在这些突触之间传递。因此,可编程突触的总是超过了2.68亿(2^28)。在基本构建模块方面,它的晶体管数量为54亿。因为存储、计算和通信都是在这4096个神经突触核中各自处理的,所以TrueNorth避开了冯·诺依曼架构的瓶颈,而且能效非常高,功耗为70mW,大约是传统微处理器的功率密度的万分之一(来自维基百科)。IBM之前还在批评脉冲神经网络(sikingneuralnetwork)无法适配深度学习,现在IBM开发了一种在TureNorth上运行CNN的新算法。这些神经元不会在每个周期内都放电,脉冲神经网络中的神经元必须逐渐积累它们的电势,然后才能放电……深度学习专家普遍认为脉冲神经网络在深度学习上没有效率——至少和卷积神经网络比起来是这样。Facebook人工智能研究院主任和深度学习先驱YannLeCun曾经批评过IBM的TureNorth芯片,因为它主要支持脉冲神经网络…………这种神经形态芯片不会太激动人心,因为它们注重的脉冲神经网络在深度学习领域并不受欢迎。为了让TrueNorth芯片很好地契合深度学习,IBM不得不开发了一种新算法,让卷积神经网络可以在这款神经形态计算硬件上很好地运行。这种组合方法实现了IBM所谓的「接近当前最佳」的分类准确度,实验涉及了视觉和语音挑战赛方面的8个数据集。在最好的情况下,它们的准确度达到了65%到97%。当只使用一块TrueNorth芯片时,它只在这8个数据集中的1个数据集上超越了当前最佳的准确度。但如果使用多达8块芯片,IBM的研究者可以极大提升这款硬件在深度学习挑战上的准确度。这使TureNorth可以在其中3个数据集上媲美或超越当前最佳的准确度。这个TureNorth测试也做到了每秒处理1200到2600视频帧。这意味着单个TureNorth芯片就能实时检测来自多达100个同时工作的相机的数据的模式……(来自IEEESectrum)TrueNorth的功率效率非常出色,所以非常值得考虑。Brainchi的脉冲神经元自适应处理器(SNAP:SikingNeuronAdativeProcessor)SNAP不能做深度学习,这只是一个源于好奇心的项目,还没有实际落地成CNN工程解决方案,至少现在还没有。如果你想探索这条路,IBM的随机相变神经元(stochastichase-changeneurons)似乎更有意思。苹果的神经引擎(NeuralEngine)到底会不会有?彭博社报道称这会是一款次级处理器,但没有什么细节信息。对苹果来说,这不仅是一个重要领域,而且也有助于与高通的竞争。其它1.寒武纪(Cambricon)——中国科学院在芯片上投入的140万美元。它是一个用于神经网络的指令集架构,具有数据级的并行、自定义向量/矩阵指令、片上scratchadmemory。宣称速度是x86CPU的91倍,是K40M的3倍,且峰值功率仅有1%,即1.695W。参阅这两篇论文:Cambricon-X:一个用于稀疏神经网络的加速器:htt://cslt.riit.tsinghua.edu.cn/mediawiki/images/f/f1/Cambricon-X.dfCambricon:一个用于神经网络的指令集架构s:htt://dl.acm.org/citation.cfm?id=30011792.前谷歌员工创立的GroqInc.,也许是另一种TPU?3.Aimotive:htts://aimotive.com/4.DeeVision正在开发用于深度学习的低功耗芯片,也许这两篇创始人的论文能提供一点线索:ConvolutionEngine:BalancingEfficiency&am;FlexibilityinSecializedComuting[2013]:htt://csl.stanford.edu/~christos/ublications/2013.convolution.isca.dfConvolutionEngine:BalancingEfficiencyandFlexibilityinSecializedComuting[2015]:htt://csl.stanford.edu/~christos/ublications/2015.convolution_engine.cacm.df5.DeeScale6.ReducedEnergyMicrosystems正在开发用于CNN推理的低功耗异步芯片。据TechCrunch报道,REM是YCombinator第一个ASIC领域的风险投资。7.Leamind也很忙。FPGA微软已经站队FPGA了。Wired这篇文章说得很好:《深度|《连线》长文揭秘微软ProjectCatault:人工智能时代押注FPGA》。「Bing占据着世界上20%的桌面搜索市场和6%的移动手机市场,在Bing上,这个芯片能帮助Bing适应新品种的人工智能:深度神经网络。」我对这种方法也有些兴趣。赛灵思和英特尔(收购了Altera)的FPGA是很强大的引擎。赛灵思自然宣称他们的FPGA是对INT8最好的,他们的一份白皮书里面包含了下面的幻灯片:这两家供应商都很支持使用他们的FPGA做机器学习:Xilinx-AccelerationZone:htts://goo.gl/KheG5WIntelFPGAOenCL(htts://goo.gl/S62fMA)和Solutions(htts://goo.gl/zkYyXB)尽管FPGA单位功耗的性能是很出色的,但这些供应商的更大型的芯片的售价却长时间以来都高得吓人。赛灵思的VU9P在Avnet上的售价超过5万美元。寻找价格和能力之间的平衡点是FPGA的主要难题。FPGA方法的一大优势是可以用来制定一些非常出色的架构决策。比如如果因为HBM,你想在板上DRAM压缩并且实时地解压,然后希望借此改善你的内存的浮点数据流,如果你足够努力,你能找到解决方案。参阅《用于基于FGPA的高性能计算的浮点数值数据流的带宽压缩(BandwidthComressionofFloating-PointNumericalDataStreamsforFPGA-BasedHigh-PerformanceComuting)》:htt://dl.acm.org/citation.cfm?id=3053688。这种动态的架构敏捷性(architecturalagility)很困难,几乎无法用其它任何方法实现。架构选择太多可能也是一个问题,但我自己还是挺喜欢这个问题的。这篇论文很不错《使用TILT减少SoftScalarCPU和定制硬件之间的性能差距(ReducingthePerformanceGabetweenSoftScalarCPUsandCustomHardwarewithTILT)》:htt://dl.acm.org/citation.cfm?id=3079757,其中研究了定制硬件和FPGA处理器(带有基于FPGA的水平微编码的计算引擎)的性能差距,这让人想起了古老的DISC和很多个月前的离散指令集计算机(discreteinstructionsetcomuter)。谁是赢家?在这样的竞争中,预测谁是赢家是傻瓜的举动。高通凭借其手机市场的主导地位,可以轻松进入赢家榜单。苹果不管做什么都会成功的。英伟达的V100有Tensor单元,也基本上赢了。我不确定我能否看到谷歌的TPU在无休止的长期硅谷竞赛中幸存下来,尽管目前它的性能很出色。我很喜欢FPGA方法,但我也不禁想他们应该以远远更低的价格发布DNN版本,这样才不会被大众漠视。英特尔和AMD会做自己的协处理器。因为所有主要玩家都参战了,所以其中很多都会支持标准的工具包,比如TensorFlow,这样我们就不必太在意规格了,关心基准就可以了。在更小型的玩家中,我很喜欢而且支持的是Adateva方法,我认为他们的内存架构可能并不适合DNN。我希望我错了。WaveComuting可能是我继FPGA之后最喜欢的方法。他们的整个异步数据流方法是非常棒的。REM似乎也在做类似的事情;但我认为他们可能太迟了。WaveComuting能否在面对所有竞争对手时继续保持领先吗?也许只要他们的异步CGRA有一个本质优势,就可以。尽管我不确定他们是否只要DNN上的成功,因为他们的技术有更加广泛的应用能力。神经形态脉冲处理器也许现在暂时可以忽略,但也可以保持关注,因为它们有很大的功耗优势。量子计算反正会让所有这些都稍逊风骚。IBM的TrueNorth可能会是个例外,因为它不仅能执行脉冲网络,还能有效地运行DNN。原文链接:htts://meanderful.blogsot.j/2017/06/fgas-and-ai-rocessors-dnn-and-cnn-for.html
    亮了(0) 115 0 08-29
  • 手把手教你如何在Arty开发板上,构建开源MCU,利用Arduino编程
    Arduino+FPGA在Arty开发板上「用Arduino搞事情」导读作为一名内心有着“不安分”创客基因的FPGA爱好者,自Xilinx联合DIGILENT发布了Arty系列FPGA开发板以来,这款主打Aurdino+FPGA的产品,就一直吸引着自己的注意。在这篇文章中,我们将看看如何在专门为极客和爱好者设计的基于高性价比XilinxArtix-7FPGA的DigilentArty开发板上,利用RTL源代码开源的RISC-V微控制器架构配置一个开源MCU,并通过ArduinoIDE或者GNU工具链编程。手上有Arty开发板的同学们,掏出来,搞事情吧!*设计基础需要对Linux,Git和Makefile软件编译熟悉。1基于RISC-V内核的FreedomE310微控制器FreedomE310平台的顶层架构图RISC-V是一个自由开放的指令集架构(ISA),是在一个自由许可证下发布的。它鼓励广泛采用并允许任何人实现他们自己的兼容设备,无论是在仿真、FPGA还是ASIC。这些可能是任何东西,从一个超低功率的IoT类设备,到移动,笔记本电脑/桌面和服务器类,甚至针对HPC应用的设备。请注意,RISC-V本身并不是一个处理器,它是一个ISA规范。尽管RISC-V基金会确实提供了一个名为Rocket的参考处理器实现,以及促进内核生成的工具,还有一个GNU编译器工具链。由RISC-V的发明者创立的商业组织SiFive提供了包括IP核和SoC平台在内的产品,由咨询服务支持。他们的E300SoC平台基于E3Corelex,可用作ASIC,也可以用于FPGA。我们将载入Arty开发板配置内存的FreeedomE310微控制器正是基于上图所示的SOC架构。2硬件部分虽然DigilentArty开发板集成USB-JTAG适配器可用对XilinxFPGAArtix-35T和用于上电时配置FPGA的Quad-SPIflash芯片进行编程,但是还需要ARM-USB-TINY-HUSBJTAG适配器,用于连接RISC-V内核调试与编程。虽然需要连接这么多接口,但是请记住,我们使用的是一个完全可编程的平台,你可以自由修改MCU本身的设计,此外还可以上传自己的代码来运行。USB-JTAG连线图《E300的ArtyFPGA开发工具包入门指南》www.sifive.com/documentation/freedom-soc/freedom-e300-arty-fga-dev-kit-getting-started-guide/包含了如何连接USB-JTAG的细节,以及说明如何构建SoC和GNU工具链和对开发板进行编程等。这显然是规范化文档,在这篇文章中描述的步骤是基于包含在《指南》中的指令。PMOD-JD接口连线图使用《指南》中建议的线颜色,不需要更改板上的跳线帽,只需要确保你连接到PMOD-JD接口,而不是其它PMOD接口。为了连接上ARM-USB-TINY-H,我们需要添加新的udev规则,打开/etc/udev/rules.d/99-oenocd.rules,并添加如下代码:#ThesearefortheOlimexDebuggerforusewithE310ArtyDevKitSUBSYSTEM=="usb",ATTR{idVendor}=="15ba",ATTR{idProduct}=="002a",MODE="664",GROUP="lugdev"SUBSYSTEM=="tty",ATTRS{idVendor}=="15ba",ATTRS{idProduct}=="002a",MODE="664",GROUP="lugdev"返回控制终端,使用如下命令,重新加载udev规则:$sudoudevadmcontrol--reload-rules如果你的用户帐户尚未在lugdev组中,则需要将其添加到用户组,然后退出用户,然后再登陆。3FPGA工具链部分登录到Xilinx网站,下载一个工具下载器,选择免费的“WebPACK”版本的VivadoHL工具就足够了。在完成安装后,必须添加Digilent板卡支持包,这只是获取板卡文件并将其复制到适当位置的问题。例如,在下载Vivado2017.1安装程序后,流程是:1切换到root用户,使安装文件获得可执行属性,并执行:$chmod+xXilinx_Vivado_SDK_2017.1_0415_1_Lin64.bin$sudo./Xilinx_Vivado_SDK_2017.1_0415_1_Lin64.bin2安装驱动:$cd/ot/Xilinx/Vivado/2017.1/data/xicom/cable_drivers/lin64/install_scrit/install_drivers$sudo./install_drivers3获取Digilent开发板支持包,并复制到适当位置:$gitclonehtts://github.com/Digilent/vivado-boards.git$sudoc-rvivado-boards/new/board_files/*/ot/Xilinx/Vivado/2017.1/data/boards/board_files/4返回home目录,建立环境变量:$cd$source/ot/Xilinx/Vivado/2017.1/settings64.sh注:该指令在每次打开新的命令行终端时都要执行一遍。5打开Vivado图形化界面可以输入:$vivado4开发板配置已经建立好的FPGA固化程序,还包含一个演示工程。该程序可以从SiFive网站下载(需要注册)。htts://dev.sifive.com/dashboard/打开Vivado后,点击打开硬件管理器,并连接上目标板卡(Arty开发板)。选中FPGA右击,选择AddConfigurationMemoryDevice,选择型号为Micronartn25q128-3.3v的Flash芯片。点击OK后,可以选择下载好的.mcs文件对Flash进行固化。当固化完成时,可以按下板卡上标注PROG的红色按钮,FPGA将自动配置。接着演示程序将开始运行,LED1和LED2将被点亮。如果你用终端模拟器连接上了/dev/ttyUSB1,可以看到输出信息。至此,你可以跳过下一节内容,直接利用ArduinoIDE或者GNU工具链对该SoC进行编程。当然你可以尝试对SoC进行编译。5Soc芯片编译首先我们需要利用Git工具将SiFiveE300和U500平台的RTL源代码(htts://chisel.eecs.berkeley.edu/)下载下来。$gitclone--recursivehtts://github.com/sifive/freedom.git这将需要一些时间,因为需要将依赖关系的所有git子模块,如Rocket芯片生成器和芯片组等都下载下来。当Git执行完成,我们可以对Verilog源文件进行编译。$make-fMakefile.e300artydevkitverilog在生成固化程序之前,需要确认已经建立Vivado的环境变量,然后再生成固化程序:$make-fMakefile.e300artydevkitmcs这个命令会利用Vivado工具对Xilinx的FPGA进行综合,以及布局布线等。该过程需要等待一段时间,执行结束后,生成了新的.mcs文件,可以用于配置Flash。需要注意的是,新生成的配置文件没有包含演示程序。当然,也可以通过修改makefile文件将演示程序添加进配置文件。6兼容ArduinoIDE针对Arty开发板的FreedomE310已经支持利用ArduinoIDE进行开发,因此这是目前,最简单的软件开发方式。我们需要做的是选择File→Preferences→Settings和添加开发板管理的网址:htt://static.dev.sifive.com/bs/arduino/ackage_sifive_index.json然后点击Tools→Board→BoardManager,搜索SiFiveFreedomBoards,并安装开发板支持文件。这样,我们就可以选择FreedomE300ArtyDevKitboard,打开blinkexamle演示程序,编译并上传至板卡。注意,如果USB-JTAG没有正确连接到PMOD接口,或者udev没有配置,又或者用户不在lugdev用户组,都有可能导致下载程序失败。7freedom-e-sdk如果你更喜欢使用文本编辑器和makefile进行开发,freedom-e-sdk的GNU工具链会是很好的选择htts://github.com/sifive/freedom-e-sdk。构建GNU工具链同样很简单。1首先安装工具链的依赖库$sudoat-getinstallautoconfautomakelibmc-devlibmfr-devlibgm-devgawkbisonflextexinfolibtoollibusb-1.0-0-devmakeg++kg-configlibexat1-devzlib1g-dev2下载、编译freedom-e-sdk的源文件$gitclone--recursivehtts://github.com/sifive/freedom-e-sdk.git$cdfreedom-e-sdk$maketools3编写代码,并编译上传至开发板$makesoftwarePROGRAM=demo_gioBOARD=freedom-e300-arty$makeuloadPROGRAM=demo_gioBOARD=freedom-e300-arty有时间和精力的话,你甚至可以定制属于你自己的微控制器平台,自由设计SoC芯片。当然如果你觉得这部分超出了你的能力范围,跟着上述指南操作到这里,你已经拥有了最酷的兼容Arduino的FPGA开发板啦!
    亮了(0) 273 0 08-14
  • 深度神经网络全面概述:从基本概念到实际模型和硬件基础
    来源机器之心作者:JoelEmer等声明:本文经机器之心(微信公众号:alomosthuman2014)授权转载,禁止二次转载深度神经网络(DNN)所代表的人工智能技术被认为是这一次技术变革的基石(之一)。近日,由IEEEFellowJoelEmer领导的一个团队发布了一篇题为《深度神经网络的有效处理:教程和调研(EfficientProcessingofDeeNeuralNetworks:ATutorialandSurvey)》的综述论文,从算法、模型、硬件和架构等多个角度对深度神经网络进行了较为全面的梳理和总结。鉴于该论文的篇幅较长,机器之心在此文中提炼了原论文的主干和部分重要内容,更多内容请点击文末「阅读原文」下载原论文了解。论文原稿:见附件目前,包括计算机视觉、语音识别和机器人在内的诸多人工智能应用已广泛使用了深度神经网络(deeneuralnetworks,DNN)。DNN在很多人工智能任务之中表现出了当前最佳的准确度,但同时也存在着计算复杂度高的问题。因此,那些能帮助DNN高效处理并提升效率和吞吐量,同时又无损于表现准确度或不会增加硬件成本的技术是在人工智能系统之中广泛部署DNN的关键。本文旨在提供一个关于实现DNN的有效处理(efficientrocessing)的目标的最新进展的全面性教程和调查。特别地,本文还给出了一个DNN综述——讨论了支持DNN的多种平台和架构,并强调了最新的有效处理的技术的关键趋势,这些技术或者只是通过改善硬件设计或者同时改善硬件设计和网络算法以降低DNN计算成本。本文也会对帮助研究者和从业者快速上手DNN设计的开发资源做一个总结,并凸显重要的基准指标和设计考量以评估数量快速增长的DNN硬件设计,还包括学界和产业界共同推荐的算法联合设计。读者将从本文中了解到以下概念:理解DNN的关键设计考量;通过基准和对比指标评估不同的DNN硬件实现;理解不同架构和平台之间的权衡;评估不同DNN有效处理技术的设计有效性;理解最新的实现趋势和机遇。I.导语深度神经网络(DNN)目前是许多人工智能应用的基础[1]。由于DNN在语音识别[2]和图像识别[3]上的突破性应用,使用DNN的应用量有了爆炸性的增长。这些DNN被部署到了从自动驾驶汽车[4]、癌症检测[5]到复杂游戏[6]等各种应用中。在这许多领域中,DNN能够超越人类的准确率。而DNN的出众表现源于它能使用统计学习方法从原始感官数据中提取高层特征,在大量的数据中获得输入空间的有效表征。这与之前使用手动提取特征或专家设计规则的方法不同。然而DNN获得出众准确率的代价是高计算复杂性成本。虽然通用计算引擎(尤其是GPU),已经成为许多DNN处理的砥柱,但提供对DNN计算更专门化的加速方法也越来越热门。本文的目标是提供对DNN、理解DNN行为的各种工具、有效加速计算的各项技术的概述。该论文的结构如下:SectionII给出了DNN为什么很重要的背景、历史和应用。SectionIII给出了DNN基础组件的概述,还有目前流行使用的DNN模型。SectionIV描述了DNN研发所能用到的各种资源。SectionV描述了处理DNN用到的各种硬件平台,以及在不影响准确率的情况下改进吞吐量(thoughtut)和能量的各种优化方法(即产生bit-wiseidentical结果)。SectionVI讨论了混合信号回路和新的存储技术如何被用于近数据处理(near-datarocessing),从而解决DNN中数据流通时面临的吞吐量和能量消耗难题。SectionVII描述了各种用来改进DNN吞吐量和能耗的联合算法和硬件优化,同时最小化对准确率的影响。SectionVIII描述了对比DNN设计时应该考虑的关键标准。II.深度神经网络(DNN)的背景在这一部分,我们将描述深度神经网络(DNN)在人工智能这个大框架下的位置,以及一些促进其发展的的概念。我们还将对其主要的发展历程和现阶段主要的应用领域做一个简单的介绍。A.人工智能和深度神经网络根据JohnMcCarthy的论述,深度神经网络(也称为深度学习)是人工智能(AI)大框架下的一部分。而人工智能(AI)是利用科学与工程学创造具有如同人类那样能实现目标的智能机器。人工智能这个词就是这位计算机科学家在上个世纪50年代所创造出的。深度学习和整个人工智能的关系就如下图所示。图1:深度学习在人工智能大框架下的位置B.神经网络和深度神经网络(DNN)神经网络从神经元涉及对输入值求加权和进行计算这一概念而获得灵感。这些加权和对应于突触完成值的缩放以及其和神经元值间的组合。此外,因为计算与神经元级联相关联,并且其为简单线性代数的运算,所以神经元不会仅仅输出加权和。相反,在神经元中有函数执行组合输入的运算,而这种函数应该是非线性运算。在非线性运算的过程中,神经元只有在输入超过一定阀值时才生成输出。因此通过类比,神经网络将非线性函数运用到输入值的加权和中。我们等一下会描述一些非线性函数。图2:简单的神经网络例子。(a)神经元和突触,(b)为每一层计算加权和,(c)前向和反向(循环)网络,(d)全连接与稀疏(a)中展示了计算神经网络的示意图。图的前端是输入层,该层会接受输入数据值。这些数据值前向传播到神经网络中间层的神经元中,中间层也常称为神经网络的隐藏层。一个或多个隐藏层的加权和最终前向传播到输出层,该输出层会最终向用户呈现神经网络的输出结果。为了将脑启发的术语和神经网络相匹配,神经元的输出通常称为激活(activation),并且突触如(a)所示通常称为权重(weight)。在上方表达式中,W_ij代表着权重、x_i为输入激活、y_i是输出激活,而f(·)就代表着在III-2中描述的非线性激活函数。在神经网络的领域内,有一门称为深度学习的研究。普通神经网络基本上层级不会很多,而在深度学习里,神经网络的层级数量十分巨大,现如今基本上神经网络可以达到5到1000多层。C.推理vs训练这一节中,如图4所示,我们将把图像分类用作训练DNN的一个强劲的实例。评估DNN时,我们输入一个图像,DNN为每一个对象分类输出分值向量;分值最高的分类将成为图像中最有可能的对象分类。训练DNN的总体目标是决定如何设置权重以最大化正确分类(来自标注的训练数据)的分值并最小化其他不正确分类的分值。理想的正确分值与DNN基于其当前权重计算的分值之间的差被称为损失值(L)。因此训练DNN的目标是找到一组权重以最小化大型数据集中的平均损失值。图4:图像分类任务D.开发历史1940年代-神经网络被提出1960年代-深度神经网络被提出1989年-识别数字的神经网(LeNet)出现1990年代-浅层神经网硬件出现(IntelETANN)2011年-DNN语音识别取得突破性进展(Microsoft)2012年-用于视觉的DNN开始替代人工放大(AlexNet)2014年+-DNN加速器研究兴起(Neuflow、DianNao等等)图5的表柱是这些年来ImageNet竞赛中每届冠军的表现。你可以看到最初算法精确度的错误率在25%或更多。2012年,多伦多大学的AlexNet团队通过GPU来提升其计算能力并采用深度神经网络方法,把错误率降低了近10%[3]。他们的成功带来了深度学习风格的算法的井喷,以及图像识别技术的持续进步。图5:ImageNet竞赛[10]结果E.DNN的应用从多媒体到医疗,DNN对很多应用大有裨益。在这一节中,我们将展示DNN正在发挥影响的领域,并凸显DNN有望在未来发挥作用的新兴领域。图像和视频语音和语言医疗游戏机器人F.嵌入vs云执行DNN推断处理的嵌入平台有着严格的能耗、计算和存储成本限制。当DNN推断在云中执行时,语音识别等应用经常有强烈的延迟需求。因此,在本文中,我们将聚焦于推断处理而不是训练的计算需求。III.深度神经网络概述根据应用情况不同,深度神经网络的形态和大小也各异。流行的形态和大小正快速演化以提升模型准确性和效率。所有深度神经网络的输入是一套表征网络将加以分析处理的信息的值。这些值可以是一张图片的像素,或者一段音频的样本振幅或者某系统或者游戏状态的数字化表示。处理输入的网络有两种主要形式:前馈以及循环(图2c)。前馈网络中,所有计算都是在前一层输出基础上进行的一系列运作。最终一组运行就是网络的输出,比如,这张图片包括某个特定物体的概率是多少,某段音频出现某个单词的概率是多少,或者下一步行动的建议等。在这类深度神经网络中,网络并无记忆,输出也总是与之前网络输入顺序无关。相反,循环网络(LSTM是一个很受欢迎的变种)是有内在记忆的,允许长期依存关系影响输出。在这些网络中,一些中间运行生成的值会被存储于网络中,也被用作与处理后一输入有关的其他运算的输入。在这篇文章中,我们关注的是前馈网络,因为到目前为止,少有人关注硬件加速,特别是循环网络的。深度神经网络也可以是全连接的(FC,也指多层感知器),如图2(d)最左部分所示。在一个全连接层中,所有输出与所有输入都是相连接的。这需要相当数量的存储和计算空间。谢天谢地,在许多应用中,我们可以移除激活(activations)之间的一些连接,方法就是将权重设置为零而不影响准确性。结果会产生一个稀疏连接层。图2(d)最右端的层就是一个稀疏连接层。通过限制对结果有影响的权重数量,我们也可以实现更高效的计算。如果每个输出仅仅是一个固定大小输入窗口的函数,就会出现这类结构化稀疏性。如果这套权重被用于每一个输入计算,就会进一步提高效率。这一权重共享能显著降低权重的存储要求。通过将计算构建为卷积,一种非常流行的窗口式的权重共享的网络诞生了,如图6(a)所示,其仅使用少量临近的激活来计算加权和的输出(即,该过滤器有一个有限的接受域,与输入的距离超过特定值的所有权重都将被设置为0),而且这一套权重能被每个输入共享来计算(即,滤波器是空间不变的)。这种结构稀疏性的形式正交于源自网络(修改情况如本文部分VII-B2所述)的稀疏性。所以,卷积神经网络就是一种受欢迎的深度神经网络形式[35]。1)卷积神经网络(CNN)图6:卷积的维度。(a)传统图像处理中的二维卷积,(b)CNN中的高维卷积图7:卷积神经网络表1:CONV/FC层的形状参数给定表I中的形状参数(shaearameters),卷积层的计算可以定义为:2)非线性(Non-Linearity)图8:多种形式的非线性激活函数(来自CaffeTutorial[43])3)池化(Pooling)图9:多种形式的池化(来自CaffeTutorial[43])4)归一化(Normalization)控制输入在层级中的分布能显著地加快训练速度并提升准确度。因此,输入激活在层级上的分布(σ,µ)需要归一化处理,使其变换为均值为0、标准差为1的分布。在批量归一化(batchnormalization)中,归一化值如方程(2)所示将进一步缩放和平移,参数(γ,β)是从训练[44]中学到的两个小常数,它们能避免数值问题。A.流行的DNN模型在过去的二十多年里出现了很多种DNN模型。每一种都称其拥有不同的「网络架构」,因为他们依据不同层级数量、滤波器形状(如过滤尺寸,滤波器和通道的数量)、层级类型以及连接方式而划分。正确地理解这些不同的方法和它们发展的趋势对于提高DNN引擎的效率至关重要。其中包括:LeNet[9]于1989年提出,是最早的CNN方式之一。其中最为人熟知的是第八版的LeNet-5,其中包含两个卷积层和两个全连接层[45]。AlexNet[3]是第一次赢得ImageNet挑战赛的CNN网络(2012年)。它由五个卷积层和三个全连接层组成。Overfeat[46]与AlexNet具有非常相似的架构:五个卷积层和三个全连接层。VGG-16[47]更进一步,使用了16层的深度神经网络,其中包含13个卷积层,3个全连接层。GoogLeNet[48]更深,有22个层,它首次引入了起始模块(见下图)。ResNet[11],即残差网络(ResidualNet),使用残差连接可以让层级更加深入(34层以上)。该网络第一次让DNN在ImageNet挑战赛中的表现超过了人类,to-5错误率在5%以下。图11:GoogleNet[48]的起始模块(Incetionmodule)通道长度实例,其中每个CONV层在ReLU层之后(图中未显示)。图12:ResNet[11]中的快捷模块。其中最后一个CONV层之后的ReLU层被快捷连接。表2:目前流行的DNN[3,11,45,47,48]模型,其中正确率都基于在ImageNet[10]中TOP-5误差。IV.DNN开发资源DNN得以快速发展的一个关键因素是研究社区与产业界使得一系列开发资源变得可用。这些资源对DNN加速器的开发也很关键,提供工作负载的特性、在模型复杂性和准确率上促进权衡性的探索。这一章节将描述了对此领域感兴趣的人能快速上手的一些资源。A.框架(Frameworks)为了DNN开发的简便以及让训练网络可共享,不同的团队开发出了不同的深度学习框架。这些开源库包含了面向DNN的软件库。Caffe在2014年由UC伯克利大学开源,它支持C、C++、Python和MATLAB。TensorFlow由谷歌团队2015年开源,支持C++和Python,也支持多CPU和GPU。它要比Caffe更灵活,计算表达是数据流图到张量管理(多维度阵列)。另一个流行的框架是Torch,由Facebook和NYU开发,它支持C、C++和Lua。当然,还有其他的一些框架,比如Theano、MXNet、CNTK,这在[57]中有所描述。这些框架的存在不只是方便了DNN研究人员和应用设计者,它们对编程高性能或更高效的DNN计算引擎也是无价的。例如,大部分框架可以使用英伟达的cuDNN库在GPU上进行快速运算。这一加速对框架的使用者而言是很明显的。类似地,硬件加速器这种如此易懂的结合也能在Eyeriss这样的芯片上获得[58]。最终,这些框架对硬件研究人员来说也是无价的资源(工作负载),它们可被用于设计不同工作负载的实验、性能分析(rofiling)不同的工作负载、探索硬件与软件之间的权衡。B.模型(Model)C.流行的分类数据集在许多公开的数据集中有许多人工智能任务可用来评估DNN的准确率。公开数据集对对比不同方法的准确率而言非常的重要。最简单也最常见的任务是图像分类。图像分类涉及到在给定的完整图像中,选择出N类物体中的1类,它不需要进行定位于检测。其中包括:MNIST:它包含手写数字的28×28像素的灰度图像,里面有10大类别(10个数字)、6万张训练图像和1万张测试图像。CIFAR:这是一个包含不同物体32×32像素的彩色图像数据集。ImageNet:它包含的图像是256×256彩色像素,有1000多类。图:13MNIST数据集(10类、6万张训练图像、1万张测试图像)[59]vs.ImageNet数据集(1000多类、130万张训练图像、10万张测试图像)[10]D.用于其它任务的数据集V.用于DNN处理的硬件在这部分里,我们将讨论在不同的硬件平台中进行高效处理而不降低准确性的策略(所有在本节中的方法都要输出完全相同的结果)。对于CPU与GPU这样的时间敏感架构,我们将讨论在它们的运行中如何减少乘法次数以增加吞吐量。对于加速器这样的空间敏感架构,我们讨论数据流如何能低成本地从存储器中被调用,以减少能耗。图14:高度并行的计算范式A.在CPU和GPU平台上加速核(kernel)计算图15:映射到全连接层(a)的矩阵乘法,当从单个输入特征图计算单个输出特征图时,使用矩阵向量乘法。(b)当从N个输入特征图计算N个输出特征图时,使用矩阵乘法。图16:映射到卷积层的矩阵乘法(a)将卷积映射到Toelitz矩阵。(b)将Toelitz矩阵扩展到多个通道和滤波器。图17:用于加速DNN的FFT。B.为加速器设计的Energy-EfficientDataflow图18:每个MAC的存取图19:存储层级和数据移动能量图20:DNN中的数据复用机会图22:DNN的数据流。(a)权重固定(WS),(b)输出固定(OS),(c)没有局部复用(NLR)VI.近场数据处理在上一章节中,我们强调了数据流通主导了能源的消耗。虽然空间架构尽可能将储存器安放在离计算很近的位置(如放入PE),但同时我们也在努力将高密度存储器安置在近计算的位置,或者直接将计算集成到存储器本身中。在嵌入式系统中,我们还努力将计算放入到传感器(最先收集数据的元件)中。在本论文的这个章节中,我们将讨论如何通过使用混合信号回路(mixed-signalcircuit)设计和高级存储技术将处理尽可能放置在离数据近的地方以减少数据流通。A.DRAMB.SRAMC.非易失性电阻式存储(Non-volatileResistiveMemories)D.传感器图33。通过(a)SRAMbit-cell和(b)非易失性电阻式存储进行模拟计算VII.DNN模型和硬件的联合设计(CO-DESIGN)对DNN模型和DNN硬件进行联合设计可以为处理效率带来进一步的提升。在传统上,DNN模型的设计目标是最大化准确度,而不会考虑太多实现的复杂性。但是,这可能会使得设计很难实现。DNN模型和硬件和联合设计可以有效地联合最大化准确度和吞吐量,同时最小化能耗和成本,这能增加采用的可能性。这种方法已经在其它重要的且广泛应用的多媒体应用(比如视频压缩)中得到了证明。之前的时候,视频标准大多关注算法开发。从MPEG-2到H.264/AVC,在编码效率上实现了2倍的提升,而解码器复杂性却增加了4倍[110]。最近,最新的视频编码标准H.265/HEVC[111]使用了算法和硬件的联合设计;结果其相对于H.264/AVC在编码效率上实现了又2倍的提升[112],而解码器复杂性也只增加了2倍。在这一节,我们将重点介绍几个DNN模型和硬件联合设计方面的研究。注意和第V节不同,这一节所提出的技术可能会改变准确度;尽管其目标是在最小化准确度改变的同时显著减少能耗并提高吞吐量。这些方法可以大致分为以下几类:降低运算和操作数的精度。这包括将浮点数改为定点数、减少位宽、移到对数域和权重共享。降低运算的数量和模型的大小。其中的技术包括:压缩、剪枝和设计紧凑的网络架构。表3:为AlexNet降低数值精度的方法。这里的准确度是在ImageNet上测得的to-5error。*表示不适用于第一层和/或最后的层VIII.用于DNN评估和比较的基准指标A.DNN模型的指标为了评估一个给定模型的属性,我们应该考虑以下元素:在ImageNet这样的数据集上的to-5error方面的模型准确度。另外,使用了哪种类型的数据增强(比如,多次裁剪、集成模型)。对于该DNN模型,要么应该使用众所周知的模型,要么就应该报告模型的参数,包括层的数量、滤波器大小、滤波器的数量和通道的数量。权重的数量会影响该模型的存储需求,应该报告。如果可能,也应该报告非零权重的数量,因为这能反映理论上的最小存储需求。需要执行的MAC的量应被报告,因为其或多或少指示了给定DNN的运算量和吞吐量。如果可能,也应该报告非零MAC的量,因为这能反映理论上的最小计算需求。表4:流行的DNN指标。稀疏性(sarsity)根据报告的非零(NZ)权重和MAC得到B.DNN硬件的指标为了测量DNN硬件的有效性,我们要考虑这些指标:硬件设计的能量效率,包括每非零MAC(非零权重和激活)的能量和MAC的位宽(bitwidth)。片外(off-chi)带宽(如,DRAM带宽)应该报告的包括片外的每非零MAC(非零权重和激活)的访问和MAC的位宽区域效率(areaefficiency)衡量的是芯片的成本,要考虑内存(寄存器或SRAM)的尺寸和类型和控制逻辑的量。吞吐量(throughut)应该基于多种DNN的运行时间来报告,以考虑映射和内存带宽的影响,这能提供比峰值吞吐量更有用和信息更丰富的指标。表5:Eyeriss基准指标示例[90]IX.总结(略)致谢和参考文献(略)
    亮了(0) 253 0 08-09
  • 【Python + ZYNQ教程】让Python运行在Zybo上:LED呼吸灯
    既然同样是ZYNQ开发板,PYNQ(ArtyZ7-20)可以跑Python进行控制,那么ZYBO是否也可以呢?让我们试一下!所有视频在附件里提供,均为4K视频。硬件准备:一块DigilentZybo开发板;一张8GB以上的MicroSD卡一个SD卡读卡器一根MicroUSB数据线;一根以太网线;软件准备:Vivado2015.4xillinux-1.3.img.gzxillinux-eval-zybo-2.0a.ziPuTTY或者Xshell(Windows系统)Win32DiskImager(Windows系统)操作步骤:1.下载所需要的文件:下载地址Vivado2015.4:htts://www.xilinx.com/suort/download.htmlxillinux-1.3.img.gz:htt://xillybus.com/downloads/xillinux-1.3.img.gzxillinux-eval-zybo-2.0a.zi:htt://xillybus.com/downloads/xillinux-eval-zybo-2.0a.ziWin32DiskImager(Windows系统):htts://sourceforge.net/rojects/win32diskimager/*实际测试中,Xillybus制作的Vivado工程可以在2017年以前的版本,即除2017.1和2017.2版本上进行综合、布线、生成比特流(Bitstream)文件(*.bit)。Digilent官方提供的支持是以2015.4为基础的。因此在这里使用2015.4版本2.解压xillinux-1.3.img.gz,得到xillinux-1.3.img文件3.将MicroSD卡进行格式化成FAT32文件系统格式4.将镜像烧写到SD卡中:选定xillinux-1.3.img镜像,选定SD卡盘符,进行烧写5.解压xillinux-eval-zybo-2.0a.zi,将bootfiles文件夹内的boot.bin和devicetree.dtb拷贝到SD卡第一个分区6.打开Vivado,选择Tools->RunTclScrit,选择解压xillinux-eval-zybo-2.0a.zi目录下blockdesign中的xillydemo-vivado.tcl生成工程7.点击生成bitstream,等待生成bitstream后,在工程目录下找到xillydemo.bit,同样拷贝到SD卡第一个分区8.将SD卡插入Zybo开发板上,确认VGA旁边的JP5跳线连接在SD上,连接网线到路由器上,连接MicroUSB线到电脑上,打开Zybo9.查看设备管理器以确定Zybo使用的串口端口号,使用PuTTY或者Xshell进行连接10.对文件系统部分进行扩展,以防止下边使用过程中SD卡空间不够用:重启之后,使用resize2fs扩展文件系统11.在确定联网的情况下使用sudoat-getudate;sudoat-getugrade;对Xillinux(Ubuntu12.04LTS)进行更新l如果遇到身边没有路由器,只有电脑能够上网,怎么办?l将网线连接在笔记本电脑上lWindows上:1)将以太网的TCP/IPv4协议IP地址设置成192.168.137.1,子网掩码设置成255.255.255.02)设置好自己常用的DNS服务器地址,例如阿里云DNS:223.5.5.5,223.6.6.6;360DNS:123.125.81.6,101.226.4.6114DNS:114.114.114.114,114.114.115.115GoogleDNS:8.8.8.8,8.8.4.43)将能够连接Internet的连接共享给连有Zybo的以太网连接4)确保网络防火墙允许192.168.137.0~192.168.137.255网段的数据能够通过5)在Zybo上设置/etc/network/interfaces文件如下:6)在Zybo上设置/etc/resolv.conf,添加常用的DNS服务器,同时将网关192.168.137.1添加到其中7)重启网络服务,这样,就可以使用Windows为Zybo共享网络了lLinux上:Zybo保持默认设置,Linux上编辑有线连接,将IPv4设置中的方法改成与其它计算机共享,保存即可共享网络*实际测试还是与路由直接连接的时候速度最快,所以尽量使用路由进行连接l除了串口连接,还有什么方法可以连接Zybo上的Linux可以使用OenSSH通过网络进行Linux的访问:首先先安装OenSSH的服务器端,sudoat-getinstalloenssh-server(如果Zybo需要访问其他Linux,需要安装OenSSH的客户端,sudoat-getinstalloenssh-client)OenSSH访问必须需要密码,所以需要asswd命令设置密码:然后使用PuTTY或者Xshell通过输入IP地址,输入用户名和密码,通过OenSSH进行访问12.安装ython:sudoat-getinstallython3ython3-devython3-dbg(在Ubuntu12.04LTS上,Python最高支持3.2版本)13.创建一个ython脚本,添加以下内容:#!/usr/bin/ython3#-*-coding:utf-8-*-imorttimeimortsysimortosdir=0wm=0try:whileTrue:os.system('echo1>/sys/class/leds/mmc_led/brightness')time.slee(0.01*wm/100)os.system('echo0>/sys/class/leds/mmc_led/brightness')time.slee(0.01*(100-wm)/100)ifdir==0:wm=wm+10else:wm=wm-10ifwm>100:dir=1wm=100ifwm<0:dir=0wm=0excetKeyboardInterrut:os.system('echo0>/sys/class/leds/mmc_led/brightness')exit()*对于Linux系统下设备的读写控制,可以参考这篇博客:htts://falsinsoft.blogsot.co.il/2012/11/access-gio-from-linux-user-sace.html*Linux系统下所有的设备都是基于Linux树状结构进行设备挂载,基于文件读写的方式进行操作。向控制结点通过ie管道写入数据,使得LED被点亮*下面是测试的时候的视频:WP_20170805_00_36_34_Pro.m4*ython通过os.system('')调用系统命令进行LED的控制14.执行脚本,可以观察到,MIO7对应的LED呈现呼吸灯状态下面是呼吸灯效果视频:WP_20170805_00_18_34_Pro.m4
    亮了(2) 399 0 08-05
  • Basys3 下载/配置指南
    概述Basys3支持以下三种方式配置/下载程序:lJTAGlQuadSPIFlashlUSBFlashDrive此教程旨在告诉初学者如何开始创建工程项目以及分别通过以上三种方法下载工程项目到Basys3FPGA开发板上。前期准备硬件lBasys3FPGA开发板lMicro-USB线软件lVivadoDesignSuite2017.1Ø新版或旧版Vivado均可使用,但是步骤可能有些许不同源文件lbasys3_sw_demo.zi教程1.创建工程项目首先,我们要创建一个工程项目1.1打开Vivado,在初始界面单击‘CreateProject’。1.2在新弹出的窗口中单击‘Next’。1.3输入创建的项目名称,选择项目的保存路径,然后单击‘Next’。1.4我们将从底层开始完整的创建一个项目,所以这边我们选择创建一个‘RTLProject’,然后单击‘Next’。1.5在这个窗口中,我们可以添加任何项目中需要用到的源文件或者文件夹,创建新的空文件,选择目标编程语言和模拟器语言。在这个教程中,我们只需要添加压缩包中已经编辑好的源文件即可。单击窗口左上角的选择‘AddFiles…’或者直接单击窗口中间的‘AddFiles’,找到解压文件夹中的‘sw_led.v’文件,单击‘OK’。需要勾选‘Coysourcesintoroject’,这样Vivado会复制一份源文件到创建的工程项目文件夹中。否则,Vivado不会复制源文件到项目文件夹中,而是直接读取/修改源文件。单击‘Next’。1.6在这个窗口中可以添加约束文件(.xdc),在这个样例中仿照上一步找到解压文件夹中‘Basys3_sw_Demo.xdc’文件添加即可。单击‘Next’。1.7在这个窗口中,我们要选择Basys3开发板。单击‘Board’,搜索‘Basys3’,选中Basys3开发板,单击‘Next’。1.8这个窗口是创建新的工程项目的总结信息,单击‘Finish’。2.创建下载文件(ProgramFile)Basys3FPGA可以使用三种方式将文件下载到Basys3FPGA开发板上,有两种支持的文件类型,.bit文件和.bin文件。.bit文件可以通过JTAG下载线或者标准USB存储设备下载到Basys3FPGA。.bin文件将在每次通电时自动通过QuadSPI下载到Basys3FPGA。接下来将会介绍配置Basys3的准备步骤:2.1Vivado默认只会生成.bit文件,之后将介绍通过QuadSPI配置Basys3FPGA,所以需要通过如下步骤生成.bin文件。在‘ProjectManager’中单击‘Settings’。在‘ProjectSettings’中单击‘Bitstream’,勾选‘-bin_file’选项,单击‘OK’。2.2接下来,我们需要对工程项目进行综合,单击主界面左侧‘FlowNavigator’中的‘RunSynthesis’。使用默认路径保存综合和实现文件,单击弹出窗口中的‘OK’。2.3综合完成后会弹出窗口,选中‘OenSynthesizedDesign’,单击‘OK’查看综合结果。2.4我们可以在窗口右侧看到工程项目在Basys3FPGA上的综合结果。2.5为了提高.bin文件的下载速度,需要设置Vivado使其允许对比特流进行压缩。单击主工具栏中的‘Tools’>单击‘EditDeviceProerties…’。在弹出窗口的General一项中,将‘EnableBitstreamComression’设置为‘TRUE’。2.6在Configuration一项中将‘ConfigurationRate(MHz)’设置为33MHz。2.7在ConfigurationModes一项中勾选‘MasterSPIx4’。单击‘OK’。2.8对之前的设置进行保存(Ctrl+S)。Vivado会提示需要更新约束文件,单击‘OK’即可。在‘FlowNavigator’中展开‘ProgramandDebug’,单击‘GenerateBitstream’。2.9Vivado会提示还没有对项目进行仿真实现(Imlementation),如下图单击‘Yes’,Vivado会先进行实现,然后生成比特流文件(.bit和.bin),将文件保存在默认路径下,单击‘OK’。2.10Vivado会开始生成.bit文件和.bin文件。完成后,会弹出如下窗口,我们可以选择‘OenImlementedDesign’查看实现的结果,或者选择‘ViewReorts’查看完整的设计报告。至此,我们已经完成了将工程项目下载到Basys3FPGA开发板的准备工作。接下来,将分别介绍通过三种方式下载/配置Basys3FPGA。3.通过JTAG下载/配置Basys3JTAG是通过micro-USB端口和PC进行通信的,主要用于下载,调试和端口探测。这使得Basys3不仅可以通过micro-USB端口供电,而且可以通过micro-USB端口进行下载和调试。3.1首先,将模式跳线JP1设置成JTAG模式,将Basys3通过micro-USB连接到PC的USB接口,打开电源。在‘FlowNavigator’中,单击‘OenTarget’,选择‘AutoConnect’。在Hardware窗口中,我们可以看到Basys3FPGA已经完成了和PC的连接。3.2单击顶部绿色条中的‘Programdevice’或者‘OenHardwareManager’中的相同选项。选择之前生成.bit文件路径,单击‘Program’。当Basys3FPGA开发板右上角的DONELED灯亮起时表示下载完成。在这个设计样例中我们可以通过使用Basys3下方的拨码开关来控制对应的LED灯。4.通过USB闪存设备下载/配置Basys3需要注意的是,通过USB设备下载/配置Basys3只支持FAT32格式。而且USB设备必须是空白的,不能有其他文件或文件夹。我们可以通过以下步骤使用USB设备下载.bit文件到Basys3:4.1将模式跳线JP1设置成USB模式。4.2将U盘格式化成FAT32文件系统。4.3复制.bit文件(路径C:/Vivado/roject_1/roject_1.runs/iml_1/sw_led.bit)4.4粘贴.bit文件到USB设备的根目录。(注意:USB设备的根目录中只能有此次需要下载.bit文件)4.5从PC安全移除USB设备并插入Basys3的USB接口。4.6通过micro-USB端口连接PC为Basys3提供电源。4.7打开Basys3电源,Basys3将立即从USB设备中下载.bit文件。4.8DONELED灯亮起表示下载完成,可以进行调试。5.通过QuadSPI闪存下载/配置Basys3QuadSPI闪存是一种非易失性的存储介质,Basys3FPGA芯片在每次启动(上电)时都会读取里面的内容。这就意味着Basys3只要通电就会自己从QuadSPI闪存中下载/配置,配置的速度非常快,适用于已经完成的设计项目的最终展示或演示使用。QuadSPI闪存支持重复烧写,下一次烧写会擦除上一次烧写的内容。通过QuadSPI闪存下载/配置Basys3仅支持.bin文件或.mcs文件,具体步骤如下:5.1将模式跳线JP1设置成QSPI模式。5.2在HardwareManager窗口中的Hardware下右键已经连接的设备(xc7a35t_0),选择‘AddConfigurationMemoryDevice…’5.3在弹出的窗口中搜索‘sansion’,选择32位的设备(如下图所示)。单击‘OK’。弹出提示窗是否需要现在下载,单击‘OK’。5.4在Configurationfile一栏中添加.bin文件,单击‘OK’。Vivado会开始擦除上一次烧写在QuadSPI闪存中的配置文件,然后将新的配置文件(.bin文件)烧写到闪存中,之后Basys3开发板只要通电就会自动从闪存中配置开发板。
    亮了(1) 220 0 08-02
  • 精品干货 | 学习Vivado如何获取License
    学习Vivado如何获取LicenseVivado入门必看导读老铁,还在为如何获取VivadoLicense而扎心?无论此刻你是一个需要安装XilinxVivado工具链的入门菜鸟,还是已有license过期的Vivado老铁,今儿咱就借着这篇文章,把学习「Vivado如何获取License」这档子事儿给说通透咯~手把手教程,分三部分讲述。码字不易,若是喜欢这篇文章,记得转给身边有需要的朋友们哦!●Part1:如何注册Xilinx官网账号与License申请●Part2:手把手教你安装VivadoHLxWeback版本(含免费License)●Part3:License过期该怎么办■■■01如何注册Xilinx官网账号与License申请01进入XILINX官网(建议使用英文链接www.xilinx.com),依次点击用户->创建新用户。02进入用户注册界面,简单填写相关信息。其中,注册邮箱填写你的个人邮箱。同时注意密码需要包含字母,数字和特殊字符。点击CreateAccount,创建新用户。03完成注册后,提示XILINX官方会发送一封邮件用于激活新注册的账号。04进入个人邮箱,进行激活XILINX账号。点击邮件中红色方框标注的激活链接,激活账号。05激活完成后可以登录账号,进行下一步操作。06在XILINX官网首页,可以找到Suort->Downloads&am;Licensing,下载VivadoHLx软件和申请License注册文件。07官网暂未直接提供License申请的入口链接,可以点击Downloads(软件下载)页面中的LicensingHel(注册申请帮助)。08在注册解决方法中心页面中,点击右上方QuickLinks(快捷链接)下的AccessProductsLicensingSite(产品注册网址)。09进入产品注册页面,勾选VivadoWebackLicense选项,点击CreateNode-LockedLicense(生成锁定节点的注册文件)。10在弹出的创建注册文件对话框中,直接点击next,进入下一步。11再次点击next,生成注册文件。12完成注册后,系统会将注册文件发送至账号邮箱中,同时在License管理页面可以看到新生成的注册文件。13最后,下载邮件中的附件Xilinx.lic文件。02手把手教你如何安装VivadoHLxWeback版本(含免费License)Xilinx更新Vivado安装文件后,提供了一个自动化安装软件,可以实现软件自动下载与安装。同时在2016.1版本之后(含2016.1)集成了免费的WebackLicense,所以在安装新版本Vivado时,不需要再次进行WebackLicense安装。下面以Vivado2016.2为例,详细介绍Vivado安装步骤。01打开Xilinx_Vivado_SDK_2016.2_0605_1_Win64.exe。02由于版本已经更新,所以软件会提示可下载最新版本。此处可以点击Continue,忽略该提示。点击Next,进入安装过程。03输入XILINX官网账号与密码。在此界面,可根据实际情况选择下载并安装软件,或者仅下载软件镜像文件。点击Next,进入下一步。04勾选三个Iagree,同意相关协议。点击Next,进入下一步。05此时,可以根据个人情况选择安装版本。本例仅介绍免费版本(即Weback版本)的安装过程。点击Next,进入下一步。06根据个人学习方向,选择设计工具,器件,以及其他安装选项。建议勾选SoftwareDevelomentkit,SDK,便于后期进行嵌入式软件开发。点击Next,进入下一步。07选择软件安装路径,以及其他相关选项。点击Next,进入下一步。08查看安装信息,确认无误后,点击Install,进行自动下载和软件安装过程。09该过程耗时较长,注意时间分配。下载过程中,需考虑网速。10安装时间主要与电脑硬件相关。11最后,软件会安装硬件驱动,需要将XilinxJtag仿真器与电脑断开。同时会安装WinPca软件,依次安装即可。当弹出安装结束的对话框时,表明整个安装过程完成。12在安装结束前,会弹出VivadoLicenseManager(注册文件管理器):13在ViewLicenseStatus中查看不到任何注册文件状态,包含使用年限,适用版本等信息。这是因为隐藏了软件内建的注册文件,取消勾选HideFreeBuilt-inLicenses。14在新版本Vivado软件包含的内建注册文件使得你可以正常使用软件,但有限制。如高端器件不可用,高级工具(如HLS)不可用,等等。03License过期该怎么办?在使用License文件(后缀名为lic的文件)注册XILINX软件和相关IP核时,License可能会过期,导致软件或IP核无法正常使用。这里我们详细介绍一下此类问题的建议解决方法。01打开License文件存放路径(默认是C:\.Xilinx),删除原有过期License文件。02打开VivadoLicenseManager(注册文件管理器),选择LoadLicense。如果注册文件是.lic结尾的注册文件,则使用CoyLicense加载新申请的注册文件。如果文件类型为XML,则使用ActivateLicense激活注册文件,此过程需要联网操作。03选择获取到的License文件,完成加载操作。04在新的License文件加载后,可以在ViewLicenseStatus中查看注册文件状态,包含使用年限,适用版本等信息。希望此篇教程能对准备或正在使用Vivado过程中碰到License问题的你带来帮助。如果有问题,欢迎给我们留言!特别申明:文章版权所有,转发请注明来源自DIGILENT中文技术社区www.digilent.com.cn/community。违者必究。
    亮了(0) 355 0 07-03
解决问题:55
干货热帖:127
会员总数:5761
总帖数:513
我要发帖

贡献榜

  • hahavchen

    创新创业教育知名圈内人

    常隐匿于江湖的资深攻城狮,拥有超过10年的半导体与测控行业产品研发、技术支持、市场拓展及区域销售经验。目前同时担任上海交通大学本科生企业导师。

    • 王斌Jr

      工程师

      Andorid工程师,书呆子

    • mysunday2

      本科生

      武汉大学在读研究生,懂一点Java,懂一点LabVIEW

    • 风雨兼程

      本科生

      热爱科研,忠于技术,渴望在LabVIEW的世界里遨游。

    • 地板

      媒体人

      资深媒体人,现任职于国内某知名电子行业媒体

  • EltonLiang

    工程师

    汽车电子方向系统集成工程师,坐标北京。精通LabVIEW与测控技术,乐于分享总结。

    • Superlava

      工程师

      国家电网工程师,对于创新创造,我是真爱粉!

    • chnwjian

      研究生

      擅长物理实时测量和ardunio

    • linon

      教师

      东南大学电子科学与工程学院

    • suo ivy

      创业者

      乐忠于机器人的创业少年

  • CC

    研究生

    擅长FPGA以及LabVIEW程序设计,拥有多年项目开发经验,曾开发过高速误码仪、自动泊车系统,研发并将PM2.5检测仪推入市场,目前致力于FPGA的图像处理研究。

    • 冰淇淋

      研究生

      略懂c语言,爱玩爱交流

    • Veritas

      电子技术爱好者

      非电类专业的在校纯技术爱好者

    • 竹杖芒鞋轻胜马

      研究生

      擅长电子电力,电源,逆变器,Matlab的同济骚年

    • 熊猫家的猫

      研究生

      热爱电子设计,熟悉LabVIEW编程,希望和大家一起学习进步。

    • 李比希

      电子技术爱好者

      喜欢LabVIEW,会点c语言,痴迷玩创,让激情碰出创意的火花!

    • 糊涂宝宝

      研究生

      精通C语言与电路设计。善于软硬件结合开发实际工程项目。

    • LabVIEWers

      工程师

      汽车电子电控领域工程师。个人信条:追求卓越。

    • 南瓜粥

      本科生

      致力于精密测量@天津大学

  • philo

    工程师

    刚毕业的新晋TI验证工程师一枚。内心埋有一个小小的希望靠技术改变世界的种子。CLD(认证LabVIEW开发工程师)持有者,并熟悉C语言与MATLAB。

    • 阳光的新手125

      研究生

      Strict coding is the boddy, smart thoughts are the soul.

    • AoduLabVer

      工程师

      华为数字视频领域工程师,技术宅,CLD,热衷LabVIEW

    • 西兰花教负责人

      创业者

      俗称“福建三本“的某985高校毕业,正不务正业地创业中

    • berwin

      创业者

      好奇主义 & 观察者 & 行动派

  • RockMOOC

    教师

    博士,现于哈尔滨工业大学任教。拥有超过8年基于FPGA的数字系统硬件设计经验,精通FPGA开发。

    • wonderm

      本科生

      熟悉LabVIEW/Matlab/Verilog,擅长STM32/K60硬件开发

    • diguaguowang

      研究生

      一直羡慕会各种编程的人,也在向着这个方向努力

    • 阿Q

      工程师

      精通FPGA的酷创达人

    • wigger

      工程师

      Digilent元老级大牛

  • Mr. D

    工程师

    部落的发起者与第一位"Digger",非典型张江男一枚。致力于为有执着有梦想的志同道合者缔造一个可以互相勾搭的中文开源技术社区。