跟李凡老师学FPGA图像加速器之D03:加速器基础(20170427课堂笔记)
跟李凡老师学FPGA图像加速器之D03:加速器基础(含长整加速器long_acc_zx1702)(20170427课堂笔记)用笨笔头整理课堂笔记,用以备忘,温故而知新。
整理文稿的细节处未能一一体现李凡老师讲课精髓和独特风采,有待下一步补充完善。
感谢李凡老师博大精深的学识、孜孜不倦的教诲,并敬请李凡老师原谅本人拙劣的课堂笔记。
近期精彩课程安排如下图。
实际执行可能会有所调整,谨供参考。
本帖最后由 lcytms 于 2017-4-27 20:29 编辑
0903
我们这边没有用start,从置位以后开始。
添加状态机FSM信号。
小节拍0123。
0904
行的边界,到149,回到0。
昨天我们并没有做到第二帧的计算。
第二行。
第三行。
398行走到第3列。
走到第3列以后,实际上后面没有做。
它停下来了。
0905
但是呢,并不影响我们这一帧。
昨天我们布置的练习,是让大家处理第二帧。
让它回到0。
就相当于行为0,列为0。
这个不难,很多同学都能完成。
现在我们来看这一列,就是done。
完成的这一拍,把它锁住。
然后是置位的这一拍。也把它锁住。
点击全局。
现在两个红线之间所标志的时间段就是一帧。
完整的一帧。
0906
但是这一帧呢,是包含了流水的过程。
如果我们做两帧,连续做的话呢,就可以把流水的过程都排除掉。
它会更快一些。
总之,现在这个速度,实际的运行速度只可能比这个更高。
这个速度是可以值得参照的。
我们把它改成ms。
4.77632ms。
再显示出频率。
209帧。
我们知道,我们现在的电脑显示器是70帧,每秒显示是70帧。
209帧。
如果我们要支持现代高清,4K,1080的,那么做到对应的3维的控制。
70帧,两幅就是140帧。
0907
209帧能不能做到,但是140帧应该没问题。
但是我们现在做这个的是600*400,如果把它扩到1024*768,或者是1080p,或者是4K,这个时候速度可能还会提升。
但是我们现在时钟是50M啊,我们还没有提升时钟的速度呢,时钟还有潜力。
所以说这个可以在很高的速度下。
这段代码可以称之为一段core,一段核。
我们当初在写这个教材的时候,并没有用硬件逻辑,现在我们是用FPGA来实现,硬件逻辑来实现。
每一拍都有一个动作。
我们来看一下memory。
我把memory调出来。
因为在状态机里面也看得很清楚,是我们设计的嘛。
0908
但是要看全流水呢,最简单的就是看终点,看memory。
Memory有没有空闲,大家可以看到,memory总线上是满满的,一拍都不空。
读、写,我们是正逻辑。
3拍读,1拍写。
读和写正好是错开的。
一拍都没停。
在memory的总线上,每一个总线周期都用了,没有浪费。
当然就快了。
而为什么我们在做这个课程的时候,用CPU的方案解决不了。
CPU无论如何怎么做,绝对保证不了memory上,连续的节拍。
0909
因为它有取指、执行,在取指的周期肯定memory要停下来,而指令要完成一个动作,需要若干个指令,所以说指令的本身,运行程序的过程要时钟段。
而每一条指令的执行也有时间段。
所以说CPU它虽然架构是固定的,它的架构需要换不同的程序,就可以执行不同的任务。
这时称之为它的通用性。
通用性虽然很强,阿兰图灵提出的CPU,通用性很强,成为今天世界的主流,但是它有非常重要的缺陷,就是它是用程序系统来完成的。
程序系统就要走指令周期,要走程序周期。
由此使得这种通用架构在完成指定任务的时候,效率很低。
0910
用CPU来做,它绝对不能看到,在访问存储器的总线上绝对不可能出现像我们这样的情况,每一拍memory都有事情做。
它一定会走走停停,走走停停。
因为它要取指啊、执行啊,即便流水线也是如此。
以致呢,我们在写这篇教材的时候,即便使用到了美国德州性能比较高的DSP芯片,也没有办法满足H.264的压缩。
720p,甚至是4K、8K的话,稍微好一点的是1080p,但是720p的时候就做不到。
720p我们做到25帧。
用DSP,用CPU的架构,用指令去做,都做不到。
只能用硬件来做。
这是用FPGA实现的这个理由。
0911
但是呢,我们的这个课程,这个30章,说到一个非常重要的问题,就是加速器。
虽然FPGA的专用性很强,但是想想看,如果一个空中格斗系统,它应该是安装在一个什么样的环境下面呢?
肯定是一个CPU的环境。
它要执行各种不同的任务。
它一定是在嵌入式的环境下面的,CPU的环境下面,由机载的计算机系统统一指挥。
所以说通用性仍然不可或缺。
现在的问题就是这样,如果我们能做成这样一个逻辑,就是做成我们现在仿真看见的210帧的一个图像边缘的检测。
但是它仅仅是一个专用的功能,必须把它装到CPU里面,用CPU配合来使用。
也代表了这个世界的方向。