lcytms
发表于 2017-5-2 14:57:28
1102
根据这种算法,我们来做它的架构设计,自上而下,先从简单的、顶层的来讨论问题,逐步地把问题细化。
我们当然要准备计算的一个模块。
这个计算的模块,从memory里面得到数据,得到原始图像的像素。
lcytms
发表于 2017-5-2 14:58:44
1103
进去以后,按照这种方法,我们需要发出对3个行的安装信号,load信号。
Load PR、load CR、load NR。
3个行的load信号。
这三个load信号来捕获mem_data,分别把它加载进来,前一行、当前行、下一行。
然后呢,会进入计算阵列,肯定要有控制信号,肯定会有移位信号。
lcytms
发表于 2017-5-2 15:10:21
1104
当移位为真的时候,它就开始移位了。
从行缓存器里面来移位。我们先简单地这么做,然后再逐步地完善它。
Computer有了这些load,按照这个阵列来算,在其中加上了偏导数,它就一定能得到计算结果。
lcytms
发表于 2017-5-2 15:12:00
1105
是导数的输出。
是导数d,我们装配成导数的字。
导数是一个像素的,但是我们把它装成4个字节。
4个像素。
形成了一个存储器的字。
存储器的地址是指向像素的,但是呢它的总线呢是32位的,32位一个字,所以说,这个地址要指向字地址。
lcytms
发表于 2017-5-2 15:13:05
1106
字地址从bit2开始计算。
字地址对齐。
这样就得到导数的一个字,是由4个像素组成的。
lcytms
发表于 2017-5-2 15:14:11
1107
这个架构还是简单的。
根据这种算法,它就能把对应的导数算出来。
但是要写回去,写回到存储区里去,就必须要有一个地址的管理器。
或者说一个地址的生成器。
它要管理读的时候的地址,写的时候的地址。
lcytms
发表于 2017-5-2 15:15:19
1108
我们会用一个状态机,用FSM的形式来发出所有的控制信号。
lcytms
发表于 2017-5-2 15:18:02
1109
当pr_send为真的时候,将前一行的地址送出去。还有cr_send、nr_send。这三个信号也是状态机发出的。
lcytms
发表于 2017-5-2 15:21:37
1110
状态机,我们会用TP图形成挨个可能的动作,发出正确的信号。
当然状态机还要画导数的地址。
这个是读原始数据。
计算完了,还要得到导数。
lcytms
发表于 2017-5-2 15:22:41
1111
还要发一个dr_send。
复位的时候,指向的是原始图像的O_BASE,发送pr_send,就会把O_BASE发出去。
发送pr_send,在O_BASE的基础上加上一个宽度即可。
就到了下一行了。
宽度是600。
加上1200,就到了nr_send。