lcytms
发表于 2018-6-23 22:11:59
1008
可以看得到,那些是可综合的,那些是不可综合的。
添加顶层信号到group。
命名为top,收起。
添加machine信号到group。
命名为fsm。
Restart,run –all。
lcytms
发表于 2018-6-24 22:25:03
1009
我们单独地如果没有加速器铺垫,没有图像的铺垫,我们一开始就来研究这段代码,会觉得很复杂。
现在我们就知道了,现在两方面的知识都有了。
我们都看得懂了。
lcytms
发表于 2018-6-24 22:26:48
1010
到列的边界上去,149,0。
行是73。
虽然说这段代码是用状态机写的,仍然是线性序列机。
我们可以看得到,在这段代码里面,我们来看它运行多长时间,早先的绿皮书教材。
它的目标是做到25帧。
我们从置位开始吧,然后到done_set完成计算开始,70Hz。
我们能做到它的三倍,但是70Hz也够了。
都是用50M的时钟驱动的。
当时这个任务我们只要求25帧的。
现在做到了70帧,25帧乘2是50帧,两倍多嘛,将近三倍。
70Hz在当时来讲已经满足了。
而我们现在我们做到了209,差一点就是三倍。
lcytms
发表于 2018-6-24 22:28:46
1011
这个当时是结合加速器来完成的。
加速器放在里面,跟CPU配合。
现在我们回到代码上。
在sim里面我们已经看到了,它的可综合的部分是写到这的。
加速器是在testbench里面写的。
好,下面我们重点进它的Testbench部分。
Testbench是它的加速器。
它的duv是它的可综合的模型。
lcytms
发表于 2018-6-24 22:30:07
1012
Hierarchy上只有一个sobel。
可综合的信号只有这些。
地址发生器,compute,machine状态机,以及从机寄存器。
我们写图像的时候,我们没有做加速器,但是我们写长整的时候有。
现在我们的重点,来分析它的testbench。
Testbench是它的加速器,在加速器的部分,我们可以看到。
因为图像部分我们已经清楚了,就是那么走,两者的结合部分,重点就在它的testbench上。
我们先休息十分钟,之后呢,我们由第四组以分享的形式,一起来参与。
(休息)
lcytms
发表于 2018-6-24 22:31:32
1019
发送文件夹sobel_nativelink。
lcytms
发表于 2018-6-24 22:32:28
1020
打开sobel.ppt。
最终它在testbench上实现的应该是这种形式。
稍候我们分析出来。
我们已经做过了一个长整,所以说我们已经理解了。
无非就是把加速器的部分,算法改一下,原来我们是长整,现在是sobel。
lcytms
发表于 2018-6-24 22:35:19
1021
多路器照样有。
有对应的bus。
有abus,dbus,还有它的控制bus。
只不过我们原来是write bus。
因为我们现在sobel里面,我们是用write和read来做的,所以说可以看成是一个ctl,一个控制的bus。
其它的都类似。
现在我们要做的,是两者结合在一起。
这是它的仿真的时序,单独地要看,确实是有些难。
因为里面三个不同的内容,不同的方向学术。
一个是加速器体系,一个是图像的sobel,还有一个呢,就是算法实现。
三者结合在一起。
现在我们是分开来,一个一个地讨论。
先是做图像,然后又做了加速器,现在我们把它结合在一起。
lcytms
发表于 2018-6-24 22:36:11
1022
我们完成了阅读和欣赏之后,也不容易。
别看这个testbench只有不到200行。
但是把它分析清楚,绝非易事。
分析完了之后,如果还有时间,我们下午来尝试一下,我们来修改加速器,和CPU结合在一起。
CPU仍然做虚拟CPU。
和长整加速器一样的。
只不过把长整让出来,把sobel加上去。
这就是图像加速器了。
lcytms
发表于 2018-6-24 22:36:26
1023
Testbench中添加memory信号。