技术论坛

  • FPGA

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

    发帖数

    302
    pynq的内核源码
    如果我想写ynq的驱动,那么内核源码在哪下,xilinx以前在github上发布的源码linux-xlnx可以直接用不?
    发布于 前天 11:40
  • 开源微控制器(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
  • 工科街(校园话题区)

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

    发帖数

    23
    知乎问答 | 你们都是怎么学Python的?
    来源:知乎答主:路人甲、知乎匿名用户、章程、余博伦、蚩翔原提问学了一个月,感觉自己怎么学都学不进去啊,我感觉自己方法错了,在学习前我有做过规划,现在连入门都不算,我应该怎么办啊,求大神给一个学习思路,我希望大神能给我讲解入门要重点学习那一块,不然我觉得我要失败了...❖~答主:路人甲~无意中听我们院长大人说:Python是一门神奇的语言,在此之前我已经对C/C++/Java等几门语言有了一定得了解和掌握,并做过一些小项目。学习Python大致可以分为以下几个阶段:01刚上手的时候肯定是先过一遍Python最基本的知识,比如说:变量、数据结构、语法等,基础过的很快,基本上1~2周时间就能过完了,我当时是在这儿看的基础:「Python简介|菜鸟教程」www.runoob.com/ython/ython-intro02看完基础后,就是做一些小项目巩固基础,比方说:做一个终端计算器,如果实在找不到什么练手项目,可以在「Codecademy-learntocode,interactively,forfree」www.codecademy.com上面进行练习。03如果时间充裕的话可以买一本讲Python基础的书籍比如「Python编程」,阅读这些书籍,在巩固一遍基础的同时你会发现自己诸多没有学习到的边边角角,这一步是对自己基础知识的补充。04Python库是Python的精华所在,可以说Python库组成并且造就了Python,Python库是Python开发者的利器,所以学习Python库就显得尤为重要:「ThePythonStandardLibrary」htts://docs.ython.org/3.5/library/,Python库很多,如果你没有时间全部看完,不妨学习一遍常用的Python库:「Python常用库整理-知乎专栏」htts://zhuanlan.zhihu.com//2156313005Python库是开发者利器,用这些库你可以做很多很多东西,最常见的网络爬虫、自然语言处理、图像识别等等,这些领域都有很强大的Python库做支持,所以当你学了Python库之后,一定要第一时间进行练习。如何寻找自己需要的Python库呢?推荐我之前的一个回答:「如何找到适合需求的Python库?」www.zhihu.com/question/26909125/answer/14676497806学习使用了这些Python库,此时的你应该是对Python十分满意,也十分激动能遇到这样的语言,就是这个时候不妨开始学习Python数据结构与算法,Python设计模式,这是你进一步学习的一个重要步骤:「faif/ython-atterns」htts://github.com/faif/ython-atterns07当度过艰难的第六步,此时选择你要研究的方向,如果你想做后端开发,不妨研究研究Django,再往后,就是你自己自由发挥了。❖~答主:知乎匿名用户~第一步:熟悉基本的语法这一部分随便找本Python的教程就行了,推荐《ThePythonTutorial》,或者《LearnPythontheHardWay》,或者《AByteofPython》,或者其他什么讲语法的书。了解Python的基本语法:1)函数怎么写;2)类怎么写;3)基本数据类型(str、list、tule、dict)以及它们的常用操作方法;4)如何编写一个可执行的脚本;使用Python3而不是Python2,Python3用最新的3.6。2.7将会在2020年停止维护,初学者应该直接使用最新的版本,加快社区淘汰2.7的速度。现在基本上常用的库都支持3.x,即使有一些不支持的也有替代版本。学会使用REPL(Read,Evaluate,Print,Loo),推荐安装iPython以及Notebook。读一遍PEP8标准,开始的时候就养成规范的代码习惯,给编辑器装上格式检查工具。多多练习,可以选择LeetCode或者Codewar或者其他的OJ。遇到不会的勤查文档和Google,例如我想知道如何给list进行排序,只需要谷歌「ythonlistsort」关键词就可以了,文档是很好的学习资源,初期的时候可以不细看,遇到什么查什么就行了。建议学习周期:有其他语言基础的同学一周时间就够了,我大概花了两节课的时间给只学过C语言的学弟学妹们教会了Python。第二步:实战训练基本有了基本的语法知识就可以实战写一些简单的项目了。对Web开发感兴趣的可以学习一下Flask,然后写一个简单的WebA,或者做微信公众号开发;对数据挖掘感兴趣的可以学一下Pandas、NumPy,爬一些数据下来分析一下,这样还可以顺便学习一下如何进行数据采集(简单的爬虫);机器学习和深度学习方面还可以学习一下TensorFlow。《Python核心编程》,介绍了Python的一些具体领域的开发方法;《Python网络数据采集》,很简单的爬虫入门书;《利用Python进行数据分析》,介绍了Pandas和NumPy的用法;《FlaskWeb开发》,如何用Flask写一个博客。第三步:深入学习Python经过上面两步的学习,可能你已经基本熟悉了Python,但是还有好多东西不理解,比如什么是装饰器,如何自己写一个装饰器,什么是上下文管理器以及如何实现,元编程又是用来做什么的?异步编程如何实现?所以这一步是为了深入学习Python的高级特性以及如何编写出更Pythonic的代码。《PythonCookcook》,DavidM.Beazley大神所写,每一个小节就是一个主题。标准库文档:现在可以系统地读一下各个标准库的文档,可以搭配Python3ModuleoftheWeekhtts://ymotw.com/3/index.html来学习,不知道怎么用就Google,后面加上examle关键字就可以找到用法了。看PyCon往期的视频,每年的PyCon都是很好的学习资源,YouTube上基本都有。看PEP。第四步:阅读各种源码其实这个可以在第二步的时候就同步完成,例如学习Flask的时候就顺便读了一下Flask的源码,学习某个标准库的时候也顺便把它的源码看了。还有GitHub上很多Python的项目可以来阅读。Flask的源码很好读,做Web开发强烈建议读一下;各种标准库的源码,不一定要全读,挑感兴趣的看一下就行,学习一下别人的写法,但是标准库中有很多代码不符合PEP8;初学Python,有哪些Pythonic的源码推荐阅读?aosabook/500lines可以照着教程撸一些项目,大部分都是用Python写的。现在还处在第四步的水平,所以更进阶的以后再更新。❖~答主:章程~我学习新语言的基本套路,不仅只限于ython,常见的语言都可以按这个套路学。仔细读完一本入门教程(如果有比较长的code一定要跟着打下来),我ython用的ython宝典,还能凑活。learnythonthehardway听说升级到3了,如果是的话也能用这本。然后刷codewars。之所以选择codewars,是因为codewars里面有大量帮人熟悉该语言基本语法的题目(不像leetcode和euler强调的是算法)。对初学者的提高很有帮助。刷的觉得基本和别人的答案差不多了,开始读一本进阶,ython的话当然是effectiveython。然后写项目,如果有喜欢的项目别人已经写了,就读源码。❖~答主:余博伦~最早接触Python是大二刚上完C语言的课之后,刚刚读完《C语言程序设计》,看得云里雾里,什么指针内存地址,这种太底层的语言可能不适合我这种右脑稍发达一点的人…然后同学就给我介绍了Python,他告诉我国外的编程入门课程一般都是用Python的,所以Python也被称为教学语言(再早一点可能是Pascal),而且Python编写的程序可以连接其他语言开发的程序,所以Python也可以当胶水语言。而且Python不用写大括号~于是我就欣然接受了他的推荐,当时学校的图书馆里就有一本《Python基础教程》。虽然书名如此,但它的编排对新手并不是特别友好,书很厚,硬着头皮读了一半,虽然没深入学习但至少了解了Python基本的语法。(所以现在你想入门Python的话,不推荐一开始就读这本书,你还可以选择《Python编程快速上手:让繁琐工作自动化》或《Python编程从入门到实践》)真正领略到Python的魅力和强大是大三时一次临危受命的经历。有一天,老师大中午的告诉我下午上课的时候需要一个随机抽取考试题目的小程序,但当时我真正掌握的只有号称全世界最好的语言h,可是如果要用h写的话还得搭本地服务器,还得在网页里,而且还怕有兼容性只能带自己的电脑连到教室的投影上…何必那么麻烦呢?Python号称可以解决任何平台上的任何问题,任何你能想到的需求都已经有人开发出解决它的包了。(要知道当时的我只是会基础的编程,然后了解基本的Python语法)我大概用了半个小时Google,然后找到了一个叫做tkinter的开发图形界面的包,花了二十分钟读文档,然后用了不到一个小时,就把老师的随机考题抽取器的需求实现了。(我是为了说明Python有多好用)后来有个师妹出国留学去学编程。果不其然第一堂入门课就是Python。师妹经常会问我问题,我相当于远程上了个网课。她家老师的理念很好,第一堂课就介绍了TDD的概念,先写测试描述好功能,再编写可以通过测试的程序以完成作业。很多题目都设计的非常有意思,比较简单的是计算载人卫星返回舱落地时如何制动(听起来很高大上其实就是用Python描述一个加速度计算公式),后面还有一些比较好玩的算法题,比如推销员问题,三个火枪手问题,再然后还有编写图形界面的小程序,实现一个投票软件,最后的大作业是用Python写一个小游戏~总之这段经历又让我更系统地学习了一遍Python。再后来就是完全把Python当作工具来用了。比如因为自己管理着许多微信群,而且也经常有知友要求拉进某某某学习交流群的,每次都手动真的特别烦,后来就用Python做了一系列的个人微信号自动化脚本,可以自动加好友,自动邀请入群,甚至还有自动回复转账下单的微商功能。discountry/itchat-examlesPython也可以做Web开发,django和flask用起来也是非常的顺手,和JS的Exress或PHP的Laravel比一点都不差,知乎的后端都是Python写的呢~甚至高端大气上档次的机器学习,大数据等等也都可以使用Python进行研究开发。所以不管是把Python当工具语言还是当作编程开发的主力语言,学习Python都是非常有益处的~一面可以朝着高端程序员岗位进发,另一面也确实能够通过Python方便我们的生活。学习资料Python教程www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000[零基础学Python(第一版)]-看云www.kancloud.cn/kancloud/ython-basic[Python3零起点教程]www.kancloud.cn/thinkh/ython-guide图书:Python编程从入门到实践www.amazon.cn/图书/d/B01ION3VWI/ref=redir_mobile_deskto?ie=UTF8&am;%2AVersion%2A=1&am;%2Aentries%2A=0图书:Python编程快速上手:让繁琐工作自动化www.amazon.cn/%E5%9B%BE%E4%B9%A6/d/B01I0XN8XY/ref=redir_mobile_deskto?ie=UTF8&am;%2AVersion%2A=1&am;%2Aentries%2A=0❖~答主:蚩翔~提示:高点赞不正经篇,女生绕道我觉得学ython要学以致用,用ython做你想做的事。以下是我的ython学习历程:1、看ython简明教程2、用ython刷leetcode和codeforces3、写爬虫抓某数字网站图片专区的图片,用socket发图片给狼友4、抓某某热最新番号,到torrentkitty抓磁力链接5、用ython写智能选股程序,倾家荡产,被迫做了码农6、现在天天用ython写数据处理脚本更多知乎答主分享,请浏览:www.zhihu.com/question/55493026
    发布于 08-08

干货热帖

  • 手把手教你如何在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) 91 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) 144 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
    亮了(0) 184 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开发板只要通电就会自动从闪存中配置开发板。
    亮了(0) 63 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) 209 0 07-03
  • PetaLinux快速入门指南
    这份指南提供了使用PetalinuxBSP的步骤,适用于ArtyZ7(目前仅支持ArtyZ7-20)及Zybo,包括以下内容:1.测试预建的镜像2.建立默认的PetaLinux项目3.测试建立的镜像*推荐阅读详细的指南PetalinuxReferenceGuide(ug1144)来学习Petalinux工具的全部用法,以进一步使用Petalinux创建定制的项目。环境要求1.1系统及硬件要求l4GBRAM内存lPentium42GHzCPUclock或以上l20GB以上硬盘空间(安装Vivado及PetaLinux实际需要大约60G空间,可根据版本查看文件大小)l支持的Linux系统:²RHEL6.6/6.7/7.1/7.2(64-bit)²CentOS7.1(64-bit)²SUSEEnterrise12.0(64-bit)²Ubuntu14.04.3(64bit)1.2支持包要求(参照表格安装相应系统的支持包)下载并安装Vivado在以下网址下载并在Linux系统中安装Vivadohtts://www.xilinx.com/suort/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools.html下载PetaLinuxTools在以下网址下载PetaLinuxInstaller。注意,PetaLinux的版本需和Vivado的版本保持一致。htts://www.xilinx.com/suort/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2017-1.html安装PetaLinuxTools1.建立安装路径,比如:$mkdir/ot/kg2.运行安装文件:$./etalinux-v2016.2-final-installer.run/ot/kg环境设置1.添加source•如果shell是Bash:$source<ath-to-installed-PetaLinux>/settings.sh•如果是CShell:$source<ath-to-installed-PetaLinux>/settings.csh成功运行后将显示如下输出$source/ot/etalinux-v2016.2-final/settings.shPetaLinuxenvironmentsetto’/ot/etalinux-v2016.2-final’INFO:FinalisingPetaLinuxinstallationINFO:CheckingfreedisksaceINFO:CheckinginstalledtoolsINFO:CheckinginstalleddevelomentlibrariesINFO:Checkingnetworkandotherservices2.验证环境设置成功:$echo$PETALINUX安装PetaLinuxBSP方法一:使用gitclone$gitclonehtts://github.com/Digilent/etalinux-bss.git在etalinux-bss文件夹中,你将看到两个文件夹:rojects:存有PetaLinuxBSP项目的源码。每一个下属文件夹包含一个针对不同板卡(ArtyZ7-20及Zybo)的BSP项目。你可以在下属文件夹下直接运行etalinux-xxx指令releases:存有已生成的.bs格式的PetaLinuxBSPs文件。.bs文件的使用方法见方法二。注意:在建立项目之前必须运行"etalinux-config"方法二:从htts://github.com/Digilent/etalinux-bss下载bs文件并使用它来创建一个新的Petalinux项目$etalinux-create-troject-s<ath-to-bs>启动预建立的镜像从JTAG启动将Arty-Z7的JP4编程选择跳线或Zybo的JP5编程选择跳线设置到"JTAG"打开etalinuxroject路径使用Petalinux命令启动启动kernel$etalinux-boot--jtag--rebuilt3当这一步骤完成时,你将能够从USB-UART接口看到kernel启动的输出。(设置串口为115200Baud)启动u-boot$etalinux-boot--jtag--rebuilt2当这一步骤完成时,你将能够从USB-UART接口看到uboot启动的输出。(设置串口为115200Baud)从SD卡启动检查SD卡的第一分区是否为FAT格式拷贝<athtobs>/re-built/linux/images/路径下的以下两个文件到SD卡中:BOOT.BINimage.ub将Arty-Z7的JP4编程选择跳线或Zybo的JP5编程选择跳线设置到"SD"系统将自动启动并提供通过USB-UART的控制窗口(设置串口为115200Baud)配置PetaLinuxBSP这一部分简单介绍了如何重新配置BSP注意:有时etalinux-config命令在退出配置菜单后需要一段时间来完成,这是因为需要捕获用于Kernel/Uboot的远程reo系统整体配置–完整的系统配置,包括生成fsbl,设备树,定制的kernel/u-boot等:$etalinux-configKernel配置:$etalinux-config-ckernelU-Boot配置:$etalinux-config-cubootrootfsconfigurations–选择哪些ackages/as/libs将被安装在rootfs里$etalinux-config-crootfs建立PetalinuxBSP配置完成后,使用指令来建立BSP$etalinux-build这将需要一段时间来完成。注意:在运行etalinux-build之前必须至少运行一次etalinux-config,不然zynqfsbl将不能成功建立。但如果你的项目是使用.bs文件来生成的话则不需要。启动新的镜像从JTAG启动将Arty-Z7的JP4编程选择跳线或Zybo的JP5编程选择跳线设置到"JTAG"打开etalinuxroject路径使用Petalinux命令启动启动u-boot(BITSTREAM在images/linux/路径下):$etalinux-boot--jtag--u-boot--fga--bitstream./images/linux/linux_bd_wraer.bit启动kernel(BITSTREAM在images/linux/路径下):$etalinux-boot--jtag--kernel--fga--bitstream./images/linux/linux_bd_wraer.bit当这一步骤完成时,你将能够从USB-UART接口看到uboot启动的输出。(设置串口为115200Baud)从SD卡启动封装BOOT.BINetalinux-ackage--boot--u-boot--fga./images/linux/linux_bd_wraer.bit--fsbl./images/linux/zynq_fsbl.elf按照从SD卡启动的步骤继续操作。参考资料1.PetaLinuxUserGuidehtts://www.xilinx.com/suort/documentation/sw_manuals/xilinx2016_2/ug1144-etalinux-tools-reference-guide.df2.QuickStartGuideforArtyZ7htts://github.com/Digilent/etalinux-bss/wiki/Quick-Start-Guide-for-Arty-Z7
    亮了(0) 177 0 06-27
解决问题:51
干货热帖:126
会员总数:5316
总帖数:476
我要发帖

贡献榜

  • 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",非典型张江男一枚。致力于为有执着有梦想的志同道合者缔造一个可以互相勾搭的中文开源技术社区。