技术论坛

  • FPGA

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

    发帖数

    498
    Eclypse Z7学习笔记(第三期)
    原文作者:sazczmhPart0开发环境主机:AMD3950X、Ubuntu18.04.5、5.4.0-45-generic开发板:Eclyse-Z7软件环境:Vivado2019.1、PetaLinux2019.1、PYNQ2.5实验时间:2020/9/8注意事项:Vivado2019.1、PetaLinux2019.1、PYNQ2.5必须互相匹配,否则据我所知不可能成功。⽽且不同的版本遇到的问题略有差别,这也是我总结这篇博客的原因之⼀;本实验采⽤PYNQ2.5进⾏,如果版本不同步骤会略有差别;采⽤Eclyse-Z7为例进⾏构建PYNQ镜像,其他ZYNQ系列的开发板类似的操作;强烈建议使⽤Ubuntu18.04.5进⾏构建;2020/9/8进⾏的测试,部分软件包会进⾏更新commit,会逐渐修复或遇到其他bug,⽹上也有很多PYNQ构建的⽰例,但如果不完全按照他的环境来,很可能会不成功;使⽤AMD平台进⾏构建的⼩伙伴,可能会遇到⼀个独特的bug,这个我会在后⾯细说,当然也可能是我的理解失误,还请批评指正。个⼈能⼒有限,不合理的地⽅,还望不吝赐教!!!Part01Xilinx开发环境安装1.1Vivado2019.1建议使⽤./xsetu直接进⾏安装,不要使⽤sudo,遇到的权限问题,使⽤chown、chgr对相应的⽂件夹进⾏修改⽤户以及⽤户组。注:Ubuntu下安装与Windows下安装⾮常类似,这⾥就不⼤费周章说明了。1.2PetaLinux2019.1可以直接从官⽹下载PetaLinux⼯具⽂档,⾥⾯有⾮常细致的说明!!!可以直接从官⽹下载PetaLinux⼯具⽂档,⾥⾯有⾮常细致的说明!!!可以直接从官⽹下载PetaLinux⼯具⽂档,⾥⾯有⾮常细致的说明!!!⽂档⾥⾯的软件包安装可以直接复制下⾯的。sudoat-getinstall-ygccgitmakenet-toolslibncurses5-devtftdzlib1g-devlibssl-devflexbisonlibselinux1gnugwgetdiffstatchrathsocatxtermautoconflibtooltarunzitexinfozlib1g-devgcc-multilibbuild-essentialzlib1g:i386screenaxgzi1.3PYNQ2.5建立自己的代码仓库方便管理gitclonehtts://github.com/Xilinx/PYNQcdPYNQgitcheckout-bynq_2.5_eclyse_z7origin/image_v2.5注:⾥⾯的名字ynq_2.5_eclyse_z7可以根据⾃⼰需要进⾏设置,这样⽅便识别管理。后⾯环境的构建可以参考官⽅⽂档PYNQSDCard,也可以听我继续啰嗦。使⽤./sdbuild/scrits/setu_host.sh来进⾏PYNQ开发环境的安装,如果顺利的话可以直接安装成功,如果不的话可以根据log输出利⽤⾕歌进⾏搜索解决。下⾯说⼀下可能遇到的问题之⼀Package'docker-ce'hasnoinstallationcandidate,具体如下图所⽰。解决方案为sudoatinstallat-transort-httsca-certificatescurlsoftware-roertiescommoncurl-fsSLhtts://download.docker.com/linux/ubuntu/gg|sudoat-keyadd-sudoadd-at-reository"deb[arch=amd64]htts://download.docker.com/linux/ubuntubionictest"sudoatudatesudoatinstalldocker-ce如果感兴趣的话,这是我找到解决⽅案的⽹址18.04中的“软件包'docker-ce'没有安装候选程序”1.4设置环境变量可以直接在~/.bashrc中加⼊如下代码,然后利⽤source~/.bashrc进⾏加载对应的环境变量,以后每次打开⼀个新终端,都会⾃动加载。source/tools/Xilinx/Vivado/2019.1/settings64.shsource/tools/Xilinx/etalinux/2019.1/settings.shsource/tools/Xilinx/SDK/2019.1/settings64.shexortPATH=/ot/qemu/bin:/ot/crosstool-ng/bin:$PATH可以再执⾏⼀个etalinux-util--webtalkoff进⾏关闭反馈⼯具使⽤统计数据,具体可以⻅之前提过的官⽅⽂档UG1144Part02创建Vivado工程注:下⾯以Eclyse-Z7官⽅github⾃带的tcl⽂件进⾏重建⼀个基本硬件⼯程,其他板⼦也可以有类似的操作。⾸先从官⽅github上下载对应的仓库。gitclone--recursivecdEclyse-Z7-OOB/打开Vivado,利⽤tcl进⾏⼯程的重建,然后⽣成对应的bit⽂件。setargv"";sourcedigilent-vivado-scrits/digilent_vivado_checkout.tcl在Vivado⼯程中找到如下⽂件roject_name>.runs\iml_1<roject_name>_wraer.bitroject_name>.sdk<roject_name>_wraer.hdf并修改对应的⽂件名为base.bit以及system.hdf。Part03构建镜像的准备工作3.1准备相应的文件从PYNQrootfsarmv2.5下载根⽂件系统,可以加快镜像构建速度。·在./PYNQ/sdbuild/⽬录下新建⽂件夹rebuilt将上⾯下载解压的bionic.arm.2.5.img⽂件拷⻉⾄该⽂件夹·在./PYNQ/boards/⽬录下新建⽂件夹Eclyse-Z7·在Eclyse-Z7中再新建两个⽂件夹分别为base和etalinux_bs·在etalinux_bs中再建⽴⽂件夹hardware_roject·base.bit拷⻉到base;·system.hdf拷⻉到hardware_roject·复制./PYNQ/boards/PYNQ-Z2中的.sec⽂件⾄Eclyse-Z7下并修改⽂件名为Eclyse-Z7.sec修改Eclyse-Z7.sec内容如下注:框中的要特别注意修改。3.2减少构建时间删除不需要的./PYNQ/boards/ZCU104⽂件夹,并进⾏commit具体操作为gitrm-rboards/ZCU104gitcommit-m"DeleteZCU104boardtoseedu,andavoidsomeerrors."感兴趣的话可以使⽤gitlog--stat-进⾏查看commit之后的log。3.3ubuntusudo免密码sudovisudo在%sudoALL=(ALL:ALL)ALL下⾯添加⼀⾏usernameALL=(ALL)NOPASSWD:ALL即可。我的修改截图为Part04构建PYNQ4.1如果幸运的话执⾏如下命令就可以进⼊进⾏⻓时间的镜像构建阶段了。makeBOARDS=Eclyse-Z7PREBUILT=./rebuilt/bionic.arm.2.5.img成功之后可以进⾏镜像烧写启动了sudoddif=./outut/Eclyse-Z7-2.5.imgof=/dev/sdc&am;&am;sync下⾯是板卡启动打印的⼀些信息下⾯是使⽤本板卡的ZMODADC扩展卡做的ADCDemo,证明该PYNQ镜像可以正常使⽤注意事项可能需要重复执⾏这个命令多次,⽬前没有找到原因,希望了解这个情况的胖友可以说明下;镜像烧写要写⼊⾃⼰的TF卡!如果遇到⼀些问题,可以看如下的解决通道4.2Unabletoconnecttobitbakeserver这个问题不是很常⻅,应该是属于环境配置的个性问题,如果再构建的过程中遇到如下情况可以通过删除如下⽂件进⾏解决rm-rf./build/Eclyse-Z7/etalinux_roject/build/bitbake.lock如果找不到对应的⽂件,可以在sdbuild⽬录下进⾏搜索find.-namebitbake.lock即可然后重新执⾏如下命令即可进⾏正常构建。当然也可以sudomakeclean清除所有⽣成的⽂件。具体原因可详⻅Unabletostartbitbakeserver4.3Nosuchfileordirectorywhiletryingtooen/dev/maer/loo112如果你是AMD平台,可能会遇到如下问题找不到对应挂载的loo,然后导致后⾯镜像⽣成错误,解决⽅案如下⾸先umount对应的挂载点,可以通过⽂件夹右边的⼩三⾓进⾏卸载,也可以执⾏相应的命令进⾏卸载。然后修改如下⽂件为注:这个loo的数值修改为报错的那个挂载点,因为⼤部分⼈不会遇到这个问题,所以就不细说了。
    发布于 前天 17:25
  • 开源微控制器(LabVIEW支持)

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

    发帖数

    51
  • 口袋仪器

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

    发帖数

    55
    WaveForms中文版下载教程
    WaveForms终于出中文版啦!快上车跟着操作步骤完成中文设置!资料下载:1.WaveForms3.8.8版本(推荐使用,见附件)2.Chines.txt中文包(见附件)操作方法1.复制Chinese.txt文件到WaveForms程序安装目录的/lang目录下。(默认路径为C:\ProgramFiles(x86)\Digilent\WaveForms3\lang)2.在Settings菜单的Language选项下选择Chinese。重启WaveForms即可。大功告成~
    发布于 11-12

创客圈

  • 竞赛 & 活动

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

    发帖数

    25
    用labview2020和树莓派做项目
    请问怎么用labview去控制SG90舵机和HC-SR04超声波传感器?
    发布于 11-05
  • 创客小组(项目集散地)

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

    发帖数

    28
    ZYBO、声源定位、波束形成
    使用SystemGenerator实现了一些声音算法,包括声源定位,以及波束形成,工程视频演示:戳这里。
    发布于 07-30
  • 工科街(求职招聘区)

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

    发帖数

    52
    招聘|中国航天科技集团公司第八研究院第八O二研究所(2017.12.27发布)
    发布时间|2017.12.27招聘单位|中国航天科技集团公司第八研究院第八O二研究所公司简介是我国从事光电探测、数据通信、卫星有效载荷、电磁环境效应等技术研究、产品研发、研制、试验、生产的国家重点科研单位,科研条件、专业技术水平处于国内领先地位。建有十个专业研究室,一个国家级重点实验室、三个上海市级重点实验室,并与国内多所高校建立了联合研发中心。现有职工900余人,其中各类专业技术人才600余人,博士、硕士超过450人,高级工程师以上技术专家260余人,国家百千万人才工程专家、国务院政府特殊津贴专家等省部级以上专家约20余人。先后承担数百项国家级和省部级重点科研项目和生产任务,荣获省部级以上科技成果200余项,拥有专利400余项。先后荣获全国五一劳动奖状、“全国模范职工之家”、上海市职工最满意企业称号,蝉联上海市文明单位、集团公司文明单位、上海市高新技术企业。我所坚持“勤勉、专业、激情、包容”的企业文化,努力创造良好的工作环境和文化氛围。热诚欢迎广大优秀人才加盟,携手共创美好未来!招聘专业信息与通信工程仪器科学与技术信号与信息处理控制科学与工程通信与信息系统机械工程电子科学与技术材料科学与工程电磁场与微波技术计算机科学与技术电路与系统光学工程物理电子学电气工程航空宇航科学与技术招聘岗位雷达总体设计师信号处理设计师通信系统设计师数模电路设计师射频微波电路设计师目标特性研究师电磁环境效应研究师天线/天线罩设计师激光雷达(通信)设计师图像处理设计师计算机软件开发设计师FPGA开发工程师DSP开发工程师测试设备设计师智能制造工程师自动化设计师人工智能产品设计师结构工程师电源设计师电讯装配工艺师产品装配测试工程师薪酬福利为职工提供具有行业竞争力的薪酬待遇,薪酬与绩效挂钩,多劳多得,优劳优得。1、富有竞争力的年薪待遇:基本工资+绩效工资+项目奖金等,独立工作后年收入:博士:年薪20万元以上/年,享受一次性安家费(30-36万左右);硕士:年薪15万元以上/年;本科:年薪8万元以上/年;大专及以下:年薪6万元以上/年。2、五险二金、企业年金、大病保险、交通意外保险等;3、交通补贴、工作餐补贴、租房补贴、其他各类补贴等;4、医疗补贴、医疗基金、健康体检、职工疗休养等;5、带薪年休假、探亲假、其他各类假期、各类教育培训机会等;6、社会成熟人才及高层次人才,待遇从优,具体面议。联系方式联系人:骆欢(13817856987)、程冕之(13636527110)办公室电话:021-65666006-222,65662373联系地址:上海市杨浦区黎平路203号人力资源处邮政编码:200090E-mail地址:ht802hr@126.com(可将简历投递至本邮箱,注明“专业-学历-学校-姓名”)应聘时请注明:从DIGILENT中文技术论坛获悉招聘信息
    发布于 2017-12-27

干货热帖

  • WaveForms中文版下载教程
    WaveForms终于出中文版啦!快上车跟着操作步骤完成中文设置!资料下载:1.WaveForms3.8.8版本(推荐使用,见附件)2.Chines.txt中文包(见附件)操作方法1.复制Chinese.txt文件到WaveForms程序安装目录的/lang目录下。(默认路径为C:\ProgramFiles(x86)\Digilent\WaveForms3\lang)2.在Settings菜单的Language选项下选择Chinese。重启WaveForms即可。大功告成~
    亮了(0) 651 2 11-12
  • 【Chapter2】Lab2 使用TCL命令界面
    这个实验练习演示如何基于现有的VivadoHLS项目创建Tcl命令文件并使用Tcl接口。步骤1创建一个TCL文件1.打开VivadoHLS命令提示符window系统:Start>AllPrograms>XilinxDesignTools>Vivado2019.2>VivadoHLS>VivadoHLS2019.2CommandPromt创建HLS项目时,TCL文件会自动保存在项目的层次结构中,在Lab1中的文件夹可以找到这2个TCL文件。2.打开Lab1创建的项目,在资源管理器中展开soluton1,展开constraints,双击scit.tcl,在信息窗格中查看①scrit.tcl文件中包含一些TCL命令,用于创建包含特定文件的项目,并运行HLS流程的所有步骤。②directives.tcl文件中包应用于设计解决方案的优化。由于在lab1中没有使用任何优化指令,因此directives.tcl文件为空。在本次实验中,你将使用lab1中的scrit.tcl文件,为lab2创建一个TCL文件3.关闭lab1的HLS用户界面,这个项目已经不需要了4.在VivadoHLS命令指示符下,使用一下指令为lab2创建一个TCL文件①将工作路径切换到Introduction文件夹所在的路径(这里根据自己保存的位置来写)cdC:\Users\sd\Deskto\HLS_note\ug871-design-files\Introduction②将lab1中的scrit.tcl复制到lab2的文件夹中,并重命名为run_hls.tclclab1\fir_rj\solution1\scrit.tcllab2\run_hls.tcl③切换到lab2文件夹cdlab25.使用文本编辑器对run_hls.tcl做修改①在oen_roject指令后添加-reset选项,因为你经常在同一个项目上重复运行TCL文件,所以最好覆盖所有现有的项目信息②在oen_solution指令后添加-reset选项,当TCL文件在同意给解决方案重新运行时,这个指令将会删除所有现有的解决方案信息③保留被注释掉的source指令④在最后一行添加exit指令使用TCL文件,你可以以批处理模式运行VivadoHLS6.在VivadoHLS命令提示符中,输入指令vivado_hls-frun_hls.tclVivadoHLS将会执行lab1的所有步骤,完成之后,可以在项目目录fir_rj中查看运行结果①综合报告位于fir_rj\solution1\syn\reort②仿真结果位于fir_rj\solution\sim\reort③输出IP包位于fir_rj\solution1\iml\i④最终输出RTL位于fir_rj\solution1\iml注意:从VivadoHLS项目复制RTL结果的时候,必须使用iml文件夹下的RTL文件。
    亮了(0) 184 1 09-17
  • 【Chapter2】Lab1 创建一个HLS项目
    该实验解释了如何建立一个高级综合(HLS)项目,并执行HLS设计流程中的所有主要步骤:验证C代码、创建并合成一个解决方案、验证RTL并封装IP。步骤1创建新项目双击打开HLS的用户界面显示欢迎界面1.在欢迎界面,点击Createnewroject打开项目向导2.定义HLS项目名称和路径位置①输入项目名称为fir_rj②点击Browse导航至lab1文件夹的位置③选择lab1文件夹,点击OK④点击Next3.指定C设计文件①点击AddFiles②选择fir.c,点击OK③点击Browse,选择fir.c作为顶层函数④点击Next4.添加测试文件①点击AddFiles②选择fir_test.c和out.gold.dat③点击OK④点击Next5.默认解决方案名称为solution1,时钟周期为10ns,时钟不确定度未定义,默认为时钟周期的12.5%6.选择板卡部分①点击PartSelection的省略号按钮打开Partselection窗口②搜索xcvu9-flgb2104-1③点击OK7.点击Finish打开HLS项目8.窗口介绍①资源管理器ProjectexlorerPane显示项目层次结构,继续validationsynthesisverificationIPackaging,会分别产生csimsynsimiml的文件夹②信息窗格ImformationPane显示从资源管理器中打开的所有文件内容③辅助窗格AuxiliaryPane根据信息窗格中的文件,动态显示④控制台ConsolePane显示HLS运行时生成的消息、错误和警告⑤工具栏按钮ToolbarButtons⑥透视图Persectives调整GUI中的窗口步骤2验证C源码1.查看main函数①在资源管理器中展开TestBench文件夹②双击fir_test.c文件在信息窗格中查看③在辅助窗格中,选择outline选项卡中的main,跳转至main函数部分2.编译和执行C设计点击RunCSimulation按钮,或者在菜单栏中Projecy>RunCSimulation3.在CSimulation对话框中,点击OK4.Simulation已经成功运行步骤3高级综合将C设计综合RTL设计,并查看综合报告1.点击RunCSynthesis按钮,或者在菜单栏Solution>RunCSynthesis>ActiveSolution综合完成之后,报告文件自动打开。2.在Outline选项卡中点击PerformanceEstimates,查看性能分析3.Detail下展开Loo①在timing>Summary中,我们可以看到时钟周期设置为10ns,不确定度为1.25ns(也就是12.5%),不确定度确保了一定的时间裕度②预计的时钟周期(最坏情况下的延迟)为5.772ns,满足10ns-1.25ns=8.75的延时要求。③在Latency>Summary中,我们可以看到该设计有34个时钟周期的延迟(需要34个时钟周期的时间来输出结果);间隔为34个时钟周期(在34个时钟周期之后读取下一组输入)。④在Detail>Loo中,我们可以看到该设计没有采用并行设计⑤在Latency>Detail中,点击Instance下展开没有内容,说明该设计中没有子块;所有延迟都是由名为Shift_Accum_Loo的循环综合RTL逻辑造成的⑥这个逻辑执行11次(Tricount),每次执行需要3个时钟周期(IterationLatency),总共33个时钟周期来执行由该循环综合逻辑产生的所有延迟(Latency)4.在outline选项卡中,点击UtilizationEstimates,查看利用率估算①该设计使用一个单独的内存时间为LUTRAM(因为它至少包含1024个元素),3个DSP48,175的触发器(FF),196个LUT。②这里是资源数量估计值,因为RTL综合可能执行额外的优化,所以它们在RTL综合之后可能发生改变。5.在Detail中展开Exression部分①乘法器实例占用了所有的DSP48②乘法器是一个并行乘法器,它出现在Exression部分,说明它是一个子块。③标准乘法器没有层次结构,而且被列在Exression部分6.在outline选项卡中,点击Interface,查看由接口综合产生的端口和I/O协议①设计中还有时钟(a_clk)、复位端口(a_reset)②综合自动添加了一些块级控制端口a_start、a_done、a_idle、a_ready③输出y是一个32位数据端口,带有一个相关的输出有效信号指示器(y_a_vld)④函数输入参数c(一个数组)被实现为一个块RAM接口,它有一个4为输出地址端口(c_address)、一个输出CE端口(c_ce0)、一个32位输入数据端口(c_q0)⑤标量输入参数x被实现为没有I/O协议的数据端口(a_none)步骤4RTL验证高级综合可以重复使用C的testbench对RTL进行仿真验证1.点击RunC/RTLCoSimulation按钮或者在菜单栏Solution>RunC/RTLCoSimulation2.在C/RTLCo-Simulation对话框中点击OKRTL协同仿真默认选项是使用vivado仿真器和verilogRTL执行仿真过程RTL协同仿真完成后,报告会自动在信息窗格中答打开。仿真过程:①Ctestbench为TRL设计提供输入向量②仿真RTL设计③来自RTL设计的输出向量返回值Ctestbench④Testbench中验证结果是否正确,返回0值说明仿真通过3.仿真通过步骤5封装IP将设计打包成IP块,以便于与vivado中其他工具一起使用1.点击ExortRTL按钮或者在菜单栏Solution>ExortRTL2.确认FormatSelectin中为IPCatalog3.点击OK4.在资源管理器中展开solution15.展开由RTLexort生成的iml文件夹6.展开IP文件夹,找到zi文件,它可以被添加至VivadoIPCatalog
    亮了(0) 226 0 09-16
  • Zybo-z7-20 Linux+PL嵌入式开发入门实验
    Zybo-z7-20linux+PLexerimentNucleuslyk@gmail.comEnviroment:CentOS7.8.2003:Vivado2019.2+Vitis2019.264bitWindows10:Putty0.72Workingath:~/zybo_z7_linux1.Preaareworkingath:Prearetwofolderforthisexeriment,“ref”foralldownloadedresources,and“work”forallruntimerojectfiles.cd~/zybo_z7_linuxmkdir–refwork2.InstallDigilentboardfilesintoVivadoGoto~/zybo_z7_linux/refanddownloadboardfile:cd~/zybo_z7_linux/refgitclonehtts://github.com/Digilent/vivado-boards.gitweonlyneedboardfilesforzybo-z20,socoyittoyourVivadoinstallationdirectory(inmycase,it’s/tools/Xilinx/Vivado/2019.2).Andyoumayneedrootermission.c-rf~/zybo_z7_linux/ref/vivado-boards/new/board_files/zybo-z7-20/tools/Xilinx/Vivado/2019.2/data/boards/board_filesNowwedon’tneed“vivado-boards-master”,sowecandeleteit:rm–rfvivado-boards3.SettingenvironmentvariablesGoto~/zybq_z7_linux/work,createanewfile“setu.csh”.Thefilecontentsshouldbeasbelow(TheXILINX_HOMEshouldbethesameasyoudidinSte2).setenvARCHarmsetenvCROSS_COMPILEarm-linux-gnueabihf-setenvPATH${PATH}:${PWD}/u-boot-xlnx-xilinx-v2019.2/toolssetenvPATH${PATH}:${PWD}/u-boot-xlnx-xilinx-v2019.2/scrits/dtcsetenv${XILINX_HOME}/Vivado/2019.2/settings64.cshAddexecutableermissiontosetu.cshandsourceit:chmod+x./setu.csh|source./setu.csh4.PreareVivadorojectGoto~/zybo_z7_linux/work:reareworkingdirectoryforVivadoanVitis:mkdir-vivado_rojvitis_rojGotovivado_rojandthenlaunchVivadocdvivado_rojvivado&am;SelectCreateProject->Next,setProjectnameto“zybo_z7_20_linux”,ensureProjectlocationis“~/zybo_z7_linux/work/vivado_roj”,anddeselect“Createrojectsubdirectory”.Next->Next->Next->NexttoDefaultart,switchtoBoardsotionthenselect“ZyboZ7-20”,Next->Finish.Select“CreateaBlockDesign”,set“Designname”to“cu”,theclick“OK”.Click“+”buttontoaddIP.Searchfor“ZYNQ”andaddit.Thenclick“RunBlockAutomation”,select“rocessing_system7_0”theclick“OK”.Connect“FCLK_CLK0”to“M_AXI_GP0_ACLK”.ThenweneedtoaddacustomAXI4-liteIPtothisroject,andweexecttocontrolisformembeddedLinuxsystem.SelectTools->CreateandPackageNewIP->Next,thenselect“CreatingAXI4Periheral”.Changethenameasyouwant.Inmycase,forexamle:Name:myledVersion:1.0Dislayname:myled_v1.0Descrition:MynewAXIIPIPlocation:~/zybo_z7_linux/work/vivado_roj/myled_i_reoBeensurethe“IPlocation”isundervivado_roj,justforeasymanagement.Inthe“AddInterface”age,wedon’tneedtochangeanything,leaveitasdefault.ClickNextandselect“EditIP”,thenfinish.Modifyyourdesignsourcefile“myled_v1_1_S00_AXI.v”asEmbedded-Linux-Tutorialdoes(Reference[1],Ste9).a.Adduserortsb.AdduserlogicModifyyourdesignsourcefile“myled_v1_0.v”asEmbedded-Linux-Tutorialdoes(Reference[1],Ste10).a.Adduserortsb.ConnectortsininstanceSwitchto“PackageIP-myled”age.Click“FileGrous->Mergechanges…”.“ClickCustomizationParameters->Merge…”.Click“ReviewandPackage->Re-PakageIP”.Click“Yes”toclosethistemoraryIP-ackagerojectintheromtingage.Backto“DiagramPage”,Click“+”buttontoaddIP.Searchfor“myled_v1.0”andaddit(theinstancenameis“myled_0”).Afterthatclick“RunConnectionAutomation”(afterconnectionautomation,youcanswitchto“AddressEditor”agetoobservewhich“OffsetAddress”isassignedtoAXI-slaveIP“myled_0”.Inmycase,It’s0x43C0_0000,leaserememberit).Rightclickanyblankositioninthe“Diagram”window,click“RegerateLayout”.Rightclickort“led[3:0]”ofmyled_0IP,select“CreatePort”andclick“OK”.NowyoursimleSoClookslikethis:Closethe“BLOCKDESIGN-cu”ageandgobackto“PROJECTMANAGER”.Rightclickthe“cu.bd”inthe“Sources”columnandselect“CreateHDLWraer->LetVivadomanagewraerandauto-udate”.IgnoreseveralcriticalwarningsaboutDDR.Nowweneedtoaddconstraintsforthe“myled”IPwhichresidesinthePL(ProgrammableLogic)Part.Select“AddSources->Addorcreateconstaints->Next->CreateFile”.Inutany“Filename”youwant,forexamle“cu_wraer”,thenclick“Finish”.Edit“cu_wraer.xdc”inthe“Sources”columnlikethis(justcorresondingto4LEDsontheboard):#GPIOset_roerty-dict{PACKAGE_PINM14IOSTANDARDLVCMOS33}[get_ortsled[0]];#led[0]set_roerty-dict{PACKAGE_PINM15IOSTANDARDLVCMOS33}[get_ortsled[1]];#led[1]set_roerty-dict{PACKAGE_PING14IOSTANDARDLVCMOS33}[get_ortsled[2]];#led[2]set_roerty-dict{PACKAGE_PIND18IOSTANDARDLVCMOS33}[get_ortsled[3]];#led[3]Click“GenerateBitstream”andwaitforawhile.Select“File->Exort->ExortHardware”,tick“Includebitstream”thenclick“OK”.Nowyoucanfinda“cu_wraer.xsa”filerearedforVitisunder“vivado_roj”directory.5.PreareVitisFSBLrojectGotovitis_rojandthenlaunchVitis:cdvitis_rojvitis&am;Select“Worksace”to~/zybo_z7_linux/work/vitis_rojintheromtedwindow.Anddon’tselect“Usethisasdefault…”.SelectFile->New->AlicationProjecttocreateanewroject.Setrojectnameto“fsbl”,forexamleandthenclicknext.Inthe“Platformage”,select“Createanewlatformformhardware(XSA)”,clickthe“+”button,findthe“cu_wraer.xsa”fileinste4(itshouldbeunder~/zybo_z7_linux/work/vivado_roj)andthenclick“Next”.Inthe“Domain”age,keeeverythingasdefault(s7_cortexa9_0/standalone/C)andclick“Next’.Inthetemlatesage,select“ZynqFSBL”,thenclick“Finish”.Afterthe“Finish”buttonisclicked,therojectwillbeautomaticallyestablished(a“cu_wraer”latformrojectanda“fsbl_system”alicationroject).Press“Ctrl+B”tobuildthemall.Nowyoucanfinda“fsbl.elf”fileundervitis_rojdirectory.Don’tcloseVitisandgotoste6.6.CreatedevicetreeCreateafoldernamed“dts”under~/zybo_z7_linux/work,andthengobacktoVitisGUI.Select“Xilinx->GenerateDeviceTree”.Set“HardwareSecificationFile”to“cu_wraer.xsa”mentionedinSte4&am;5.Set“OututDirectory”to~/zybo_z7_linux/work/dtswhichisjustcreated,thenclick“Generate”.Nowyoucanfindseveralfilesunder~/zybo_z7_linux/work/dts.Esecially“l.dtsi”,youcanusevimtooenitandtakeinsightintois.Youcanfindthevalue“0x43c00000”of“reg”domainisequaltowhatismentionedinSte4.Andthisisjustthebridgeformhardwaretosoftware.Andremembervalueof“comatible”,itwillbeusedinSte11.Oen“system-to.dts”,andmodifythefirst3“#include”to“/include/”.Andthenrunthiscommandunder~/zybo_z7_linux/work/dtstogeneratefile“devicetree.dtb”(don’tchangeittoanotherfilename).Nowyoucanfind“devicetree.dtb”under~/zybo_z7_linux/work/dts.Createanewfoldernamed“sd_image”under~/zybo_z7_linux/work.Allfilesinthisfolderlaterwillbecoiedtothemicro-sdcard.Nowcoyfile“devicetree.dtb”into“sd_image”.c~/zybo_z7_linux/work/dts/devicetree.dtb~/zybo_z7_linux/work/sd_image7.BuildXilinxu-bootGoto~/zybq_z7_linux/refanddownloadXilinxu-bootreository:cd~/zybo_z7_linux/refwgethtts://github.com/Xilinx/u-boot-xlnx/archive/xilinx-v2019.2.ziGoto~/zybo_z7-linux/work,andunziithere.cd~/zybo_z7_linux/work|unzi../ref/u-boot-xlnx-xilinx-v2019.2.ziGotou-boot-xlnx-xilinx-v2019.2directory,andaddtwonewlinestoconfigs/zynq_zybo_z7_defconfig:CONFIG_OF_EMBED=yCONFIG_CMD_NET=nCONFIG_OF_EMBED=yembedsdevicetreefortheboardintobinary.CONFIG_CMD_NET=nreventsBOOTPtriesfewtimesbeforebootmruns.Buildit:makezynq_zybo_z7_defconfigmakeNowyoucanfinda“u-boot”fileunderu-boot-xlnx-xilinx-v2019.2directory:8.BuildXilinxLinuxkernelGoto~/zybq_z7_linux/refanddownloadXilinxLinuxkernelreository:wgethtts://github.com/Xilinx/linux-xlnx/archive/xlnx_rebase_v4.19_2019.2.ziGoto~/zybo_z7-linux/work,andunziitherecd~/zybo_z7_linux/work|unzi../ref/linux-xlnx-xlnx_rebase_v4.19_2019.2.ziGotolinux-xlnx-xlnx_rebase_v4.19_2019.2directoryandbuildit:makexilinx_zynq_defconfigmakeNowyoucanfinda“zImage”fileunderlinux-xlnx-xlnx_rebase_v4.19_2019.2directory:zImagefileisziedandneedstobeconvertedtouImage(unzied).makeUIMAGE_LOADADDR=0x8000uImageNowyoucanfinda“uImage”fileunderlinux-xlnx-xlnx_rebase_v4.19_2019.2directory:Coyfile“uImage”into“sd_image”.c~/zybo_z7_linux/work/linux-xlnx-xlnx_rebase_v4.19_2019.2/arch/arm/boot/uImage~/zybo_z7_linux/work/sd_image9.MakeRAMdiskDownloadarm_ramdisk.image.gzfromthislinkbelow:htts://xilinx-wiki.atlassian.net/wiki/saces/A/ages/18842473/Build+and+Modify+a+RootfsMovearm_ramdisk.image.gzto~/zybo_z7-linux/refandthengoto~/zybo_z7-linux/work/sd_imagetocreateuramdisk.image.gzmkimage-Aarm-Tramdisk-Cgzi-d../../ref/arm_ramdisk.image.gzuramdisk.image.gzNowyoucanfinda“uramdisk.image.gz”fileundersd_imagefolder.10.CreatebootimageGoto~/zybo_z7-linux/workandcreateanewfoldernamed“boot_image”,gointoit.Thencoyallfileneededintoit(don’tcoyu-boot.elf,coyu-bootandrenameittou-boot.elf).mkdir–~/zybo_z7-linux/work/boot_imagecd~/zybo_z7-linux/work/boot_imagec~/zybo_z7_linux/work/vivado_roj/cu_wraer.bit./c~/zybo_z7_linux/work/vitis_roj/fsbl/Debug/fsbl.elf./c~/zybo_z7_linux/work/u-boot-xlnx-xilinx-v2019.2/u-boot./u-boot.elfCreateanewfilename“boot.bif”withcontentsbelow:image:{[bootloader]fsbl.elfcu_wraer.bitu-boot.elf}Usethiscommandtogenerate“boot.bin”(don’tchangeittoanotherfilename).bootgen-imageboot.bif-oiboot.binCoy“boot.bin”to“sd_image”folfer.c~/zybo_z7-linux/work/boot_image/boot.bin~/zybo_z7-linux/work/sd_image11.CreatekerneldriverGoto~/zybo_z7-linux/workandcreateanewfoldernamed“drivers”.Gointoit,createafilenamednamed“myled_0.c”(mustbesamewiththeinstancenameinste3).Thecontentsofitcanbefindfromthelinkbelow:htts://cdn.instructables.com/ORIG/FX8/HRRR/HX1W69D4/FX8HRRRHX1W69D4.cThissourcefileneedsalittlemodification:a.addthreeheaderfilesatthebeginning.#include<linux/uaccess.h>#include<linux/slab.h>#include<linux/mod_devicetable.h>b.changemacrovalueof“DRIVER_NAME”to“myled_0”.c.changestructuremyled_of_match’smembervalveof“comatible”to“xlnx,myled-1.0”(sameaswhatyouseein~/zybo_z7_linux/work/dts/l.dtsimentionedinste6).CreateasimleMakefile(contentsasbelow):obj-m:=myled_0.oall:make-C../linux-xlnx-xlnx_rebase_v4.19_2019.2/M=$(PWD)modulesclean:make-C../linux-xlnx-xlnx_rebase_v4.19_2019.2/M=$(PWD)cleanAndmakeit:makeNowyoucanfindafilenamed“myled_0.ko”underdriversdirectory:Coy“myled_0.ko”to“sd_image”folfer.c~/zybo_z7-linux/work/drivers/myled_0.ko~/zybo_z7-linux/work/sd_image12.CreateuseralicationfordriverGoto~/zybo_z7-linux/workandcreateanewfoldernamed“user_a”.Gointoit,createafilenamednamed“led_blink.c”.Thecontentsisasbelow:#include<stdio.h>#include<stdlib.h>#include<unistd.h>intmain(){FILE*f;while(1){f=foen("/roc/myled_0","w");if(f==NULL){rintf("Cannotoen/roc/myledforwrite\n");return-1;}futs("0x0F\n",f);fclose(f);slee(1);f=foen("/roc/myled_0","w");if(f==NULL){rintf("Cannotoen/roc/myledforwrite\n");return-1;}futs("0x00\n",f);fclose(f);slee(1);}return0;}CreateasimleMakefile(contentsasbelow):CC=arm-linux-gnueabihf-gccCFLAGS=-gall:led_blinkled_blink:led_blink.o$(CC)$(CFLAGS)$^-o$@clean:rm-rf*.orm-rfled_blink.PHONY:cleanAndmakeit:makeNowyoucanfindafilenamed“led_blink”underuser_adirectory:Coy“led_blink”to“sd_image”folfer.c~/zybo_z7-linux/work/user_a/led_blink~/zybo_z7-linux/work/sd_imageTillnow,allfilesforsdcardisready,theyshouldbelooklike:13.BoottheboardPreareamicro-sdcard,formatistoFAT32filesystem(inmycase,it’s8GBsize).Coyallfilesin“sd_imgae”directorymentionedinste12aboveintothefirstartitionofthemicore-sdcard(ifmorethanoneartitionexist).Plugonemicro-usbcablefrom“PROGUART”ortontheboardtothecomuter.Plugthemicro-sdcardtothe“SDMICRO”slotonthebackoftheboard.Switchjumerof“JP5”to“SD”mode.Now,it’stimetoswitchontheoweroftheboard.TheredLEDof“PGOOD”shouldbeonimmediately,andthegreenLEDof“DONE”shouldbeonafteraboutonesecond,too.AndthenflashingoftwoyellowLEDsnearthe“PROGUART”ortindicatesthatthesystemiscorrectlybooting.14.LogintheboardUseanyUARTclienttologintheboard,suchas:utty(forwindows),icocom(forLinux).Thelogwindowisshownasbelow:Select“Connectiontye”to“Serial”,tyeincorrect“Serialline”(inmycase,it’sCOM4),andchange“Seed”to115200,thenclick“Oen”.Nowyoumayseewindowlikethis:Thefollowedsteswilltestthekerneldriveranduseralicationa.Mountthefirstartitionofmicro-sdcardtofilesystemby(ignorewarning):mount/dev/mmcblk01/mntAnduselsmodtoseeallinstalledkernelmodule:b.Goto/mntandinstallLinuxkerneldriver“myled_0.ko”by(ignore“out-of-treewarning”,thiswarningneedstobefixedbutdoesn’taffectthenextstes):cdmntinsmodmyled_0.koc.Runexecutablefile“led_blink”,youmayseeLEDsontheboardblink,butinmycaseitgiveswaringlikethis:Itmightbesomethingwrongwiththedynamiclinklibrary,I’mstillworkingonit.d.Actually,thekernelmoduleiscorrectlyinstalled,asyoucanfindafilename“myled_0”under“/roc”directory.Andnowit’stimetoverifyifthecustomizedAXI-liteIPhardwarecircuitisworkingroerly,justby:echo15>/roc/myled_0Nowyoucanfindall4LEDsontheboardareon,as“15”indicatesthebinarynumber4’b1111.e.Uninstallthekernelmodule“myled_0”by(ofcourse,4LEDsareoffifyouremovekernelmodule):mkdir/lib/modules/`uname-r`rmmodmyled_0Reference[1]htts://www.instructables.com/id/Embedded-Linux-Tutorial-Zybo/[2]htts://qiita.com/yhmtmt/items/cba5330ad7ded151882d[3]htt://www.ece.tamu.edu/~sunilkhatri/courses/ee449/labs/lab3.df[4]htt://www.ece.tamu.edu/~sunilkhatri/courses/ee449/labs/lab4.df[5]htt://www.ece.tamu.edu/~sunilkhatri/courses/ee449/labs/lab5.df[6]htt://www.ece.tamu.edu/~sunilkhatri/courses/ee449/labs/lab6.df
    亮了(0) 596 0 07-02
  • 【RISC-V】2020 DIGILENT
    随着物联网(IoT)、5G通信、人工智能(AI)等技术的不断发展,行业对芯片的需求也变得越来越严苛,无论是从芯片的超低功耗方面还是差异化方面,都存在不小的挑战。RISC-V这一基于精简指令集计算(RISC)设计原则的开放指令集架构(ISA)凭借其特有的开放性和免费性成为硅谷、中国乃至全球IC设计圈的热门话题,有人将之比作“半导体行业的Linux”。对多年来一直寻求突破的中国芯片产业来说,RISC-V将成为我们实现自主、可控、创新和繁荣的新希望。DIGILENT作为Xilinx全球重要生态合作伙伴,为广大的IC设计工程师们提供了种类丰富的FPGA原型验证平台。2020年1月,由工信部人才交流中心牵头主办的第四届全国大学生集成电路创新创业大赛已经拉开大幕,我们也希望通过此次杯赛帮助更多IC设计创新人才披荆斩棘,展露锋芒!为此我们特别整理了这个汇总帖供大家参考,让我们在实现自主可控CPU设计的道路上走的不那么的坎坷。【ArtyA7】·在ArtyA7-100T上搭建RISC-VCPU(htt://www.digilent.com.cn/roject/details/216.html)·【教程】在ArtyA7-100T上部署SiFiveFreedomE310(htt://www.digilent.com.cn/community/709.html)·SiFiveRISC-V核(E和U系列)评估版本,包括预编译适用于ArtyA7-100T的bit和mcs文件(请见附件)·蜂鸟E200开源RISC-V核(htts://github.com/SI-RISCV/e200_oensource)·基于FreedomE300的MultiZoneSecureIoTStack(htts://github.com/hex-five/multizone-fga)【NexysA7/Nexys4DDR】·lowRISC开源项目(htts://github.com/lowRISC/lowrisc-nexys4)·lowRISC开源项目(htts://www.lowrisc.org/docs/minion-v0.4/fga/)·基于lowRISCSoC平台运行FedoraLinux系统(htts://fedoraroject.org/wiki/Architectures/RISC-V/FPGA)·移植Freedom开源SoC到NexysA7(htts://github.com/DigilentChina/Freedom_on_Nexys_A7)·在NexysA7上搭建InstantSoC(htts://www.fga-cores.com/instant-soc/)【NexysVideo】·OenPiton+Ariane开源项目(美国普林斯顿大学和瑞士苏黎世理工学院合作)o单核CPU主频高达30MHz·OenTitan(谷歌开源项目)ohtts://docs.oentitan.org/doc/ug/quickstart/【Genesys2】·OenPiton+Ariane开源项目o单核或双核CPU主频高达66MHz·ArianeRISC-VCPU(瑞士苏黎世理工学院开源项目)ohtts://github.com/ul-latform/ariane【Zybo/ZyboZ7】·在ZynqFPGA上运行一个RISC-VRocket核(htts://github.com/ucb-bar/fga-zynq)【SWORD】·敬请期待【本贴将持续更新,欢迎来踩!】
    亮了(1) 4251 1 01-22
  • Analog Discovery Studio学习资料汇总贴
    不少小伙伴发现AnalogDiscoveryStudio已经上市了,这里小编就给大家介绍下这个口袋实验室系列的全新产品,并附上使用指导等。1.AnalogDiscoveryStudio介绍首先,什么是AnalogDiscoveryStudio?简单来讲,AnalogDiscoveryStudio是一款功能齐全的便携式测试和测量设备,可将任何跨功能空间转变为弹出式电子实验室。配备13种仪器,包括示波器,逻辑分析仪,频谱分析仪,波形发生器等;提供了一整套台式仪器,具有方便,可更换和面包板的界面,非常适合学生随时随地学习,并提供免费的Mac,Linux和Windows兼容软件WaveForms。《AnalogDiscoveryStudio介绍及测评》:详细介绍产品参数及测评2.教程(英文原版)包含:校准Digilent测试和测量设备保存和共享WaveForms工作区使用交叉触发使用外部触发器使用数据记录器使用数字I/O.使用阻抗分析仪使用逻辑分析仪使用网络分析仪使用示波器使用模式生成器使用电源使用协议分析器使用脚本编辑器使用频谱分析仪使用电压表使用波形发生器3.动手项目:《使用AnalogDiscoveryStudio分析DAC,ADC和SPI数据》《AnalogDiscoveryStudio的音频混音器项目》4.自学视频:(远程实验)产学合作明星课-北京邮电大学AD2教程(中文字幕)AnalogDiscovery2(AD2)入门教程
    亮了(0) 1186 0 2019-09-20
解决问题:67
干货热帖:173
会员总数:16965
总帖数:765
我要发帖

贡献榜

  • hahavchen

    创新创业教育知名圈内人

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

    • 工程师

      Andorid工程师,书呆子

    • mysunday2

      本科生

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

    • 风雨兼程

      本科生

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

    • 媒体人

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

  • 工程师

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

    • 工程师

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

    • chnwjian

      研究生

      擅长物理实时测量和ardunio

    • 教师

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

    • suo ivy

      创业者

      乐忠于机器人的创业少年

  • CC

    研究生

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

    • 冰淇淋

      研究生

      略懂c语言,爱玩爱交流

    • Veritas

      电子技术爱好者

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

    • 竹杖芒鞋轻胜马

      研究生

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

    • 熊猫家的猫

      研究生

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

    • 李比希

      电子技术爱好者

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

    • 糊涂宝宝

      研究生

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

    • LabVIEWers

      工程师

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

    • 南瓜粥

      本科生

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

  • 工程师

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

    • 阳光的新手125

      研究生

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

    • 工程师

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

    • 西兰花教负责人

      创业者

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

    • berwin

      创业者

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

  • 教师

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

    • wonderm

      本科生

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

    • diguaguowang

      研究生

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

    • 阿Q

      工程师

      精通FPGA的酷创达人

    • 工程师

      Digilent元老级大牛

  • Mr. D

    工程师

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