zoukankan      html  css  js  c++  java
  • (待)vivado入门的入门经验,北航智能计算体系结构课程经验和感想

    刚刚助教告诉我上一届有留经验,我没动力了。等我心情好再写8。

    告诉大家,vgg16 15级有留代码,大家可以去git上找。

     入门的时候就是特别乱,后期就好了,大家要挺住!杨老师给分还是不错的(实话)。

    文中没有技术细节,建议大家看着大思路,然后配合具体的教程学习。

    2016级各lab任务如下:

      矩阵向量乘仿真(约3周),矩阵向量乘上板(2周),lenet(3周?),vgg16(6天(因为和编译、考期撞了,实际上应该是一个月左右)),没有团队作业。

      我基本上都没写完,主要是知识太杂,前两周没怎么分时间,后面的调试又因为经验少花了很多多余的时间。但是相信大家看完我的总结后都能写完。 

      我掌握的情况大概有:vivado开发流程;高效调试的经验;PS端SD卡读写、中断控制、DMA的demo;AXI-lite总线slave端的两种改法。

    一、vivado软件本身的学习

      开发的基本流程:仿真、综合、布线、生成比特流、导出到SDK、SDK导出到开发板。

      可以这么理解:想要一个程序在板子上运行,需要硬件(因为是fpga)和软件两部分。

      在硬件上,如何让板子知道自己的电路被编成什么样了呢?用的就是vivado导出的比特流。比特流是根据verliog代码综合、布线得出的。其中,综合时把verliog代码转成硬件,这个大家计组已经学过了。布线,我个人理解是把综合出来的电路映射到开发板上,想一下烧板子的思路。最后根据布线的结果生成比特流,硬件看见简单粗暴的比特流就知道自己应该怎么烧了。

      在软件上,用到的是SDK软件编程。这个方面我不是很熟悉。基本上是编写c代码的程序,然后SDK软件给你编译成mips,导出到板子上的arm的代码区。这个过程大家学过计组也很熟悉了,就是往内存里写汇编指令。

      硬件部分称为PL部分,软件部分称为PS部分。

      vivado除了verliog文件外,还有一个叫约束的东西。约束就是指定你自定义的信号对应到物理的哪个部分。比如有个信号a想控制led等亮,如何让vivado知道a控制的是led呢?就要用约束文件,将led与a信号连接起来。这部分比较偏硬件,实验中基本用不上,可以跳过去。

      vivado中编写verliog的方法除了徒手编程外,还有一个拖拽连线的方法,diagram。画板就是把已经编好的模块摆到一起,然后将模块间的线连好。加入system(后面会说)的过程也是在画板上完成的。然后verliog可以自动根据连线生成verliog代码。

     

    二、硬件开发部分

    (1)diagram

      在哪里:

      

      本质:就是一个画布,可以像logisim那样手动连线和加模块(ip(类似库函数)和model(还没有封装成ip的,自己编写的verliog模块))。连完线后,vivado可以将画布转成verliog代码,后面用这个verliog代码完成后续的仿真等工作。

      小技巧:连线(按ctrl取消连续连线);删线(可以单独删去某端口的线,不用整体关联的都删)

      添加ip(就是已经编好的模块,后面会讲)

      添加model:

    (2)ip

      IP:vivado中的ip就是已经编好的模块,可以直接用(天知道我第一节课听杨老师讲了一节课的ip有多迷茫。。。)。有别人编好的自带的ip,如加法器,乘法器,bram(存储器)。自己编好的verliog也可以制作成ip(相当于封装了一个硬件“函数”),下面是一些ip的使用事项

      BRAM:双口bram有两个时钟的延迟。设计的时候要看一下深度和宽度,防止存不下(前期应该都没问题)。

      乘法器:可以调延迟周期。会根据输入有推荐的延迟周期。

      system:

      自定义ip:

        方法:

        IP的修改:

        经验:不要急着封装成ip,因为改起来麻烦,还难保证正确性。使用add model。

       注意:IP和model更改后vivado会自己检测和更新接口等,不用手动删了重新加。

    (3)仿真

      想办法仿真,每一步都是可以仿真的。

      子模块仿真:

      顶层仿真(数据通路,实际实现需要ps控制的):

    三、建议每个lab完成的思路

      (1)弄明白网络结构,可以先看一下我对应的博客:

      (2)设计(最好避开中断,太麻烦了):

      (3)测试单个模块(尤其是设计PS端的协同,一定要设计demo):

      (4)数据通路

      (5)顶层仿真

      (6)编写PS

    四、调试经验

  • 相关阅读:
    C# GridView点击某列打开新浏览器窗口
    大白话系列之C#委托与事件讲解(二)
    大白话系列之C#委托与事件讲解(一)
    Razor语法大全
    Expression<Func<T,TResult>>和Func<T,TResult>
    C#委托的介绍(delegate、Action、Func、predicate)
    Android--样式经验
    Android--onSaveInstanceState()保存数据
    Android--ActivityLiving生命周期
    android--快捷键
  • 原文地址:https://www.cnblogs.com/iwanna/p/10278950.html
Copyright © 2011-2022 走看看