lcytms
发表于 2018-4-5 18:08:27
1010
我们夏老师的这个教材代码里面,我们用了时分的概念。
现在用时分的很少了。
都是做多组件,CPU肯定会有事的。
我们现在做练习,我们真正让它空闲了。
CPU空闲了,这个时候ACC全力以赴地访问它,以硬件的方式来访问memory,完成这次长整运算。
ACC很快就能算完,计算完了以后,ACC如何来通知CPU呢?
当然也可以用查询的方式,但是现在总线的资源已经判给ACC了。
这个时候,CPU在我们现在做的这个练习里面,ACC是没有其它资源可用的,只有一种方式,就是用中断。
也就是说,ACC还要有一根线,必须发送中断。
当它计算完了以后,有中断的输出。
这个只有主从结构的加速器,才会有中断的输出端,而唯一的主机会有终端的输入端。
lcytms
发表于 2018-4-5 18:09:43
1011
上午呢,我们把所有的这些规律总结一下。
主机有命令和地址的输出端,没有输入端。
从机有地址和命令的输入端,没有输出端。
主从都有数据的输入和输出。
加速器既有主机的地址和命令的输出端,也有作为从机的地址和命令的输入端。
作为主从都有的数据的输入和输出,它也有。
然后呢,作为主机,有仲裁请求的输出端,两个主机有。
作为主机,有仲裁结果的输入端。
这个只有主机才有。
lcytms
发表于 2018-4-6 15:51:53
1012
作为加速器,作为主从结构的,有中断的输出端,唯一的主机有中断的输出端。
就这些规律。
先休息十分钟。
然后我们用一个word,用设计的方式,用分享的方式,来完成这个长整加速器。
(休息)
(设计报告)
lcytms
发表于 2018-4-6 15:58:46
本帖最后由 lcytms 于 2018-4-6 16:01 编辑
1127
这个架构是支持的,下面我们就讨论它的精确的实现。
讨论它的精确的实现的时候,我们要知道,如果是一个逻辑来做这些选择,就是做这六种选择,它需要知道哪些信号。
要知道仲裁,要知道命令,命令是做读还是做写。
是不是?
所以说,它要知道这些信号,要知道当前的仲裁结果,要指导当前的控制。
lcytms
发表于 2018-4-6 16:02:21
1128
如果当前仲裁给CPU的,而CPU是发出的写命令有效,当然是CPU要写Memory了,或者CPU要写ACC。
当仲裁结果是给ACC的,当ACC是要执行写的时候,当然是写Memory了。
当ACC或者仲裁write是假的时候,当然是ACC读memory了。
由此,需要得到这些判断,但是有一件事,就是我们刚才说的这两个信号,是得不到的。
这两个信号,一个是仲裁结果,一个是命令的总线,是做ACC的write,还是做CPU的write。
cpu_write_out,acc_write_out,和仲裁结果这三根线,有一件事不能确定。
lcytms
发表于 2018-4-7 11:09:05
1129
其它的都能确定。
就是ACC读写memory它能确定,CPU是不是读写memory能确定。
但是CPU读写memory和CPU读写ACC是同一个动作,就是CPU读写memory和CPU读写ACC的时候,这个时候仲裁结果都是给CPU的。
而CPU发出的write是一样的,要么write为假,要么write为真。
就是CPU如何来甄别CPU是读写memory还是读写ACC呢?
对,地址,所以说,要获得地址的译码。
当前的地址范围,系统要给出一个表,是访问的是ACC,这个时候要判给ACC。
访问的是memory,要判给CPU访问Memory。
lcytms
发表于 2018-4-7 11:10:12
1130
有这些讨论,下面我们就来制作逻辑了。
首先我们要做一个mux的encoder。
复制一个矩形框。
这个我们要用开节点,因为我们的潜伏期都是单拍潜伏期。
lcytms
发表于 2018-4-7 11:11:00
1131
做编码器。
lcytms
发表于 2018-4-8 13:53:47
1132
Sdmux是1:0。
lcytms
发表于 2018-4-8 13:54:35
1133
Swmux。