lcytms 发表于 2017-4-27 20:25:04

跟李凡老师学FPGA图像加速器之D03:加速器基础(20170427课堂笔记)

跟李凡老师学FPGA图像加速器之D03:加速器基础(含长整加速器long_acc_zx1702)(20170427课堂笔记)

用笨笔头整理课堂笔记,用以备忘,温故而知新。
整理文稿的细节处未能一一体现李凡老师讲课精髓和独特风采,有待下一步补充完善。
感谢李凡老师博大精深的学识、孜孜不倦的教诲,并敬请李凡老师原谅本人拙劣的课堂笔记。

近期精彩课程安排如下图。
实际执行可能会有所调整,谨供参考。

lcytms 发表于 2017-4-27 20:27:40

本帖最后由 lcytms 于 2017-4-27 20:29 编辑

0903
        我们这边没有用start,从置位以后开始。
        添加状态机FSM信号。
        小节拍0123。

lcytms 发表于 2017-4-27 20:33:19

0904
        行的边界,到149,回到0。
        昨天我们并没有做到第二帧的计算。
        第二行。
        第三行。
        398行走到第3列。
        走到第3列以后,实际上后面没有做。
        它停下来了。
   

lcytms 发表于 2017-4-27 22:40:06

0905
        但是呢,并不影响我们这一帧。
        昨天我们布置的练习,是让大家处理第二帧。
        让它回到0。
        就相当于行为0,列为0。
        这个不难,很多同学都能完成。
        现在我们来看这一列,就是done。
        完成的这一拍,把它锁住。
        然后是置位的这一拍。也把它锁住。
        点击全局。
        现在两个红线之间所标志的时间段就是一帧。
        完整的一帧。

lcytms 发表于 2017-4-27 22:42:24

0906
        但是这一帧呢,是包含了流水的过程。
        如果我们做两帧,连续做的话呢,就可以把流水的过程都排除掉。
        它会更快一些。
        总之,现在这个速度,实际的运行速度只可能比这个更高。
        这个速度是可以值得参照的。
        我们把它改成ms。
        4.77632ms。
        再显示出频率。
        209帧。
        我们知道,我们现在的电脑显示器是70帧,每秒显示是70帧。
        209帧。
        如果我们要支持现代高清,4K,1080的,那么做到对应的3维的控制。
        70帧,两幅就是140帧。

lcytms 发表于 2017-4-27 22:44:36

0907
        209帧能不能做到,但是140帧应该没问题。
        但是我们现在做这个的是600*400,如果把它扩到1024*768,或者是1080p,或者是4K,这个时候速度可能还会提升。
        但是我们现在时钟是50M啊,我们还没有提升时钟的速度呢,时钟还有潜力。
        所以说这个可以在很高的速度下。
        这段代码可以称之为一段core,一段核。
        我们当初在写这个教材的时候,并没有用硬件逻辑,现在我们是用FPGA来实现,硬件逻辑来实现。
        每一拍都有一个动作。
        我们来看一下memory。
        我把memory调出来。
        因为在状态机里面也看得很清楚,是我们设计的嘛。

lcytms 发表于 2017-4-27 22:45:55

0908
        但是要看全流水呢,最简单的就是看终点,看memory。
        Memory有没有空闲,大家可以看到,memory总线上是满满的,一拍都不空。
        读、写,我们是正逻辑。
        3拍读,1拍写。
        读和写正好是错开的。
        一拍都没停。
        在memory的总线上,每一个总线周期都用了,没有浪费。
        当然就快了。
        而为什么我们在做这个课程的时候,用CPU的方案解决不了。
        CPU无论如何怎么做,绝对保证不了memory上,连续的节拍。

lcytms 发表于 2017-4-27 22:47:45

0909
        因为它有取指、执行,在取指的周期肯定memory要停下来,而指令要完成一个动作,需要若干个指令,所以说指令的本身,运行程序的过程要时钟段。
        而每一条指令的执行也有时间段。
        所以说CPU它虽然架构是固定的,它的架构需要换不同的程序,就可以执行不同的任务。
        这时称之为它的通用性。
        通用性虽然很强,阿兰图灵提出的CPU,通用性很强,成为今天世界的主流,但是它有非常重要的缺陷,就是它是用程序系统来完成的。
        程序系统就要走指令周期,要走程序周期。
        由此使得这种通用架构在完成指定任务的时候,效率很低。

lcytms 发表于 2017-4-27 22:48:38

0910
        用CPU来做,它绝对不能看到,在访问存储器的总线上绝对不可能出现像我们这样的情况,每一拍memory都有事情做。
        它一定会走走停停,走走停停。
        因为它要取指啊、执行啊,即便流水线也是如此。
        以致呢,我们在写这篇教材的时候,即便使用到了美国德州性能比较高的DSP芯片,也没有办法满足H.264的压缩。
        720p,甚至是4K、8K的话,稍微好一点的是1080p,但是720p的时候就做不到。
        720p我们做到25帧。
        用DSP,用CPU的架构,用指令去做,都做不到。
        只能用硬件来做。
        这是用FPGA实现的这个理由。

lcytms 发表于 2017-4-27 22:49:38

0911
        但是呢,我们的这个课程,这个30章,说到一个非常重要的问题,就是加速器。
        虽然FPGA的专用性很强,但是想想看,如果一个空中格斗系统,它应该是安装在一个什么样的环境下面呢?
        肯定是一个CPU的环境。
        它要执行各种不同的任务。
        它一定是在嵌入式的环境下面的,CPU的环境下面,由机载的计算机系统统一指挥。
        所以说通用性仍然不可或缺。
        现在的问题就是这样,如果我们能做成这样一个逻辑,就是做成我们现在仿真看见的210帧的一个图像边缘的检测。
        但是它仅仅是一个专用的功能,必须把它装到CPU里面,用CPU配合来使用。
        也代表了这个世界的方向。
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 跟李凡老师学FPGA图像加速器之D03:加速器基础(20170427课堂笔记)