lcytms
发表于 2018-8-25 09:52:27
1052
那么到第三拍,主机再次捕获到了waitrequest为低电平。
在第三拍上,从机因为某些原因它忙了,从机将waitrequest拉高。
由于在第三拍上,主机捕获到的waitrequest为低电平,于是主机将addr2变为addr3,做第三个地址的流水线。
同时呢,主机捕获到了readdatavalid为高电平,意味着什么?
意味着第一个地址得到的数据到了。
lcytms
发表于 2018-8-26 23:01:34
1053
这是在第三拍。
主机不仅要将地址变换掉,同时要将data1及时地捕获,因为从机在readdata总线上,只有在这一拍上才会出现有效的数据。
主机必须要及时地在第三拍上将data1拿走。
Readdatavalid为第一拍的高电平。
当然是第一个地址的数据data1。
之后呢,在第三拍上,从机将waitrequest重新拉高,它忙了。
第三拍呢,主机又发出了新的地址,addr3,于是在第5拍的位置上,主机捕获到了waitrequest为高电平。
这个时候addr3的读请求,从机没有时间响应,于是主机必须将读命令和addr3一直保持住。
lcytms
发表于 2018-8-26 23:02:12
1054
但是呢,在第5拍的时候呢,主机还有一件事可做。
主机除了要保持,主机同时还捕获到了readdatavalid为高电平,说明addr2,要读的数据到了。
必须要捕获。
所以说主机不仅要保持,还要及时将data2捕获到。
我们写逻辑的时候,为什么要及时去捕获它呢?
因为根据规则,从机没有义务为你保留数据。
lcytms
发表于 2018-8-26 23:02:51
1055
在第5拍的位置上,waitrequest仍然是高电平。
在5和6中间的这一拍,从机不忙了。
从机将waitrequest拉为低电平,它不忙了,它可以响应新的请求。
于是到第六拍,主机捕获到了waitrequest为低电平,才可以将addr3撤销掉,加载addr4。
addr3只保留到,它捕获waitrequest为低电平。
这个时候流水线为第四个地址。
同时在第六拍上,主机捕获到了readdatavalid为低电平。
从机将readdatavalid拉高。
lcytms
发表于 2018-8-27 09:14:19
1056
在第六拍上,从机将readdatavalid拉高。
说明addr3响应了,addr3的数据给出来了。
主机只有到第七拍,才捕获到了readdatavalid为高。
这是data3,及时地将data3捕获到。
同时第七拍上,主机由于捕获到了waitrequest为低电平,它会将addr4撤销掉,重新加载下一个地址addr5。
lcytms
发表于 2018-8-27 09:14:49
1057
到第八拍,这个时候从机读出来的是data4,就是addr4的数据响应了给出来。
在第八拍,主机捕获到了readdatavalid为高电平,于是要将data4捕获到。
捕获到了waitrequest为低电平,接着主机可以主动地选择叫停,它将read置为低电平。
主机用读命令来叫停从机。从机用waitrequest,或者是readdatavalid来叫停主机。
当waitrequest为高电平的时候,储蓄所业务,得保持住,主机得将地址保持住。
当从机发的waitrequest为高电平的时候,说明它要的那个数据,就是流水线的潜伏期,可变潜伏期到了。
lcytms
发表于 2018-8-27 09:15:24
1058
后面我们马上进入SDRAM,都是可变潜伏期。
那么在这个过程之中,第七拍发的addr5,数据还没有读到,所以说从机这个时候只读到了4次readdatavalid为高电平,它必须要得到第五个readdatavalid为高电平。
于是在第九拍前面的这个上升沿上,从机将第五个data的数据data5发出来了。
在第九拍,主机捕获到了第5次readdatavalid为高电平,将data5捕获。
这个过程我们也用状态转移图也来绘制一下。
这个过程稍微复杂一点。
lcytms
发表于 2018-8-28 09:17:11
1059
主机是在第一拍发出了读和addr1。
lcytms
发表于 2018-8-28 09:18:15
1100
然后到addr2。
S1的时候,发的这个命令它将握手。
握手从机的waitrequest,储蓄所的业务。
每一拍都要握手。
当waitrequest为高电平的时候, 必须在s1上等待。
lcytms
发表于 2018-8-28 09:19:17
1101
当waitrequest为假值,读命令没有撤销,仍然是开着的。
接着流水线,加载A2的地址。
接着加载A3。
S2上同样要等待waitrequest,每一拍都要考虑从机是否会叫停。