技术论坛

  • FPGA

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

    发帖数

    495
    基于Arty z7的知识巩固和两个小实验
    如果你在大学时期学过FPGA课程,但由于缺乏实践环境,对于FPGA的工作原理已经记忆模糊,但渴望温故知新的小伙伴,一定不要错过这篇教程!已经有相当多的的书籍和资料在介绍可编程逻辑芯片(如CPLD)背后的理论,这里对于理论部分就不再重复了,本教程更注重对实践的介绍。1所用硬件DIGILENTArtyZ7是一款可以开箱即用的XilinxZynq-7000™全可编程SoC开发套件,它将处理系统(PS)和Xilinx可编程逻辑(PL)集成在一个设备中。即ArtyZ7内部的FPGA部件XC7Z010/20具有用于处理器子系统(PS)的双ARMCortexA9和用于可编程逻辑子系统(PL)的Artix®-7FPGA。在同一芯片中同时具有处理系统和可编程逻辑,使开发人员可以将非关键任务放在PS部件上,将关键任务放在PL端。当然,你还可以使用PL部分来实现MicroBlaze之类的软处理器内核。MicroBlaze是Xilinx的免费软处理器内核,针对Xilinx器件上的嵌入式应用进行了优化。MicroBlaze在Zynq-7000–Arty为协处理器表示FPGA芯片有多大的单位,即可编程逻辑(PL),是可配置逻辑块(CLB)。可在Zynq-7000中,每个CLB包含2个子部分,称为Slices。每个slices由6输入查找表(LUT)和8个存储元素组成。使用这些具有可编程互连的CLB基本上可以实现任何逻辑设计。总的来说,Zynq-7000中的每个CLB都具有以下元素:Slices在CLB中的连接方式:每个Slice的详细图如下所示:下表列出了XC7Z010的CLB和逻辑元素的总数:为了说明这些数字有多大,我们可以检查在带有23K逻辑单元的Z-7007SFPGA中使用一个Microblaze软处理器时需要多少逻辑单元。FPGA与任何其他嵌入式单元一样,需要与物理世界进行交互并捕获或感测电信号。为此,7系列FPGA提供了高性能(HP)和高范围(HR)I/O类型。虽然,XC7Z010-1CLG400C仅具有HR类型。下表显示了两种类型之间的区别:FPGAI/O可用于处理系统(PS)和可编程逻辑(PL),下表显示了所用封装XC7Z010-1CLG400C的可用I/O。现在,该看一下Zynq-7000SoC芯片的总体架构了。介绍完之后,我们对FPGA芯片和开发板内部有一个非常粗略的了解,我们将在下一个实际示例中对其进行处理。2所用软件Xilinx提供了一个名为Vivado的软件套件。下图显示了Vivado设计套件中的设计流程。Vivado在设计流程的每个步骤都有相应工具,或链接到第三方工具。在之后的示例中我们会详细演示。如果FPGA设计使用Microblaze软处理器,则需要使用Xilinx的VitisIDE进行在Microbalze上运行的嵌入式代码的软件开发。Vitis是一种将Xilinx®软件开发的所有方面组合到一个统一环境中的工具。Vitis设计流程Xilinx提供了PetaLinux工具集,它是嵌入式Linux系统开发套件。它提供了完整的Linux发行版以及完整的配置,可以构建和部署Xilinx芯片的环境。PetaLinux包含Yocto可扩展SDK,它将用于构建以下内容:FSBL–U-BOOT–ARMTrustedfirmware–Linux–Librariesandalications.3示例1:开关和LED首先需要将定义Digilent板的所需文件添加到Vivado,以便在项目创建期间使用它们。添加的文件基本上是XML文件,用于定义板上的不同接口。诸如slide开关,按钮,LED,USB-UART,DDR内存,以太网等点击图片查看如何添加DIGILENT文件现在,该打开VivadoIDE并创建一个项目,并在创建项目时指定我们的主板ArtyZ7。本示例中的程序将非常简单,并使用Verilog语言编写。moduleto(inutwireclk,oututreg[1:0]led,inutwire[1:0]sw);always@(osedgeclk)beginif(sw[0]==0)beginled[0]<=1'b0;endelsebeginled[0]<=1'b1;endendendmodule在编译中使诸如clk,led和sw之类的符号被称为Xilinx设计约束(XDC)。该文件会将符号映射到其物理含义。例如:set_roerty-dict{PACKAGE_PINM20IOSTANDARDLVCMOS33}[get_orts{sw[0]}];它指定SW0的引脚号和IO类型。Github上提供了Digilent板的约束文件。设计约束的官方一般定义是:“定义编译流程必须满足的要求,以使设计在板上起作用。”通过使用作为硬件描述语言(HDL)的Verilog编写代码,设计阶段就完成了。在Wikiedia中定义的数字电路设计寄存器传输级别(RTL)中,这称为:“RTL是一种设计抽象,它根据硬件寄存器之间的数字信号(数据)流以及同步信号在硬件寄存器之间的流动来建模同步数字电路。对这些信号执行的逻辑运算。”示例代码比定义还简单。但是,如果我们要将当前阶段映射到设计流程,它将与“RTL开发”阶段匹配。下一个重要阶段是'综合',在Vivado用户指南UG901中通过以下方式定义:“综合是将RTL指定的设计转换为门级表示的过程”。换句话说,它将把设计转换为连接的FPGA逻辑门的网表。它是从RTL到逻辑设计的一种实现。作为合成步骤输出的示例原理图现在轮到“实施”,其中包括将网表(综合步骤的结果)放置和路由到设备资源上所需的所有步骤。最后一步是生成所谓的比特流,即将要加载/编程到FPGA的文件。分步视频:注意:确保已选择跳线JP4中的JTAG选项。选择编程模式。需要重新启动电源才能更改。4示例2:现成的IP在此示例中,Microblaze软处理器将作为现成的IP块添加到设计中。这将需要编写一个代码以在处理器内部运行。为了导出将在VitisIDE中用于编写嵌入式软件的文件,在Vivado中需要执行几个步骤。编译后的嵌入式软件将合并到包含IP块的Bitstream文件中。然后将最终文件编程到FPGA。从Vivado导入项目后,在VitisIDE中使用“IPIntegrator->CreatBlockDesign”,我们将添加MicroblazeIP和所有其他外设,例如GPIO。设计中的所有IP模块将使用AXI接口进行通信。AXI是ARMAMBA总线的一部分。要了解有关该总线的更多信息,请参考《AXI参考指南UG761》。甚至GPIO都有一个名为AXIGPIO的模块,该模块为AXI提供通用的输入/输出接口。AXIGPIO框图记录中显示了构建此软代码的步骤:在Vivado中生成的报告之一中显示了FPGA资源的利用率,如下所示:FPGA如何实现我们的Microblaze示例最终的块设计如下所示。您可以提及内存模块,时钟模块,用于GPIO的AXI模块以及带有调试模块和中断控制器模块的Micobalze模块。更多有关Microblaze的信息,请参考附件MicroBlazeLab2。结论对于初学者而言,XC7Z010和Zynq7000系列比较复杂,因为在同一芯片中包含2个部分,PL部分和PS部分会增加复杂性。但是拥有Digilent的ArtyZ7开发板可以让你一步到位,当你想要学习进阶应用时无需升级板卡,特别是当你对可编程SoC感兴趣时。本文使用Digilent的ArtyZ7开发板大致介绍了XC7Z010/20内部的内容,我们研究了两个简单的示例来完成设计步骤。在下一部分中,我们将更多地关注XC7Z010/20的PS部分,因为该部分主要涉及PL部分。此外,我们应该了解如何在ArtyZ7上运行Linux以及执行该操作所需的条件。
    发布于 11-26
  • 开源微控制器(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) 455 1 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) 178 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) 222 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) 576 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) 4224 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) 1172 0 2019-09-20
解决问题:67
干货热帖:173
会员总数:16918
总帖数:762
我要发帖

贡献榜

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