lcytms
发表于 2018-9-26 09:30:49
1335
进入之后,从机可以叫停主机,主机不能叫停从机。
所以我们把这一段都做一下。
我来找一下,我有一段Avalon的代码,看能不能找到。
在时标线1的位置上,主机发出了A0的地址,发出了首发的beginbursttransfer,以及burstcount。
从机这个时候是发了waitrequest。
从机的状态转移图,我就不绘制了。
下午我们统一来做一下。
lcytms
发表于 2018-9-27 09:30:56
1336
地址发的A0。
首发的beginbursttransfer。
这个是首发有效,相当于一个start命令。
Waitrequest是输入,从机发的。
Burstcount是主机发的。
Burstcount=4。
突发读。
读命令。
Readdata是主机的输入,是从机的输出。
lcytms
发表于 2018-9-27 09:31:58
1337
这是这一拍。
时标线为1。
接着s2,是主机的状态转移图。
主机发的这个过程,是进入的过程。
主机首发的命令,从机是否会响应呢?
主机发了命令之后,当然要检查一下,从机是否响应这个命令,waitrequest。
lcytms
发表于 2018-9-27 09:32:33
1338
当waitrequest为高电平,说明从机忙了,busy了,主机就得hold,除非它不忙了。
不忙了应该是在什么地方?
哪一拍能够捕获到它不忙了,waitrequest为低电平?
当然在这张时序图上,是在时标线为2的位置上,主机捕获到waitrequest为低电平。
lcytms
发表于 2018-9-28 09:23:25
1339
于是,主机要做什么事?
说明这个请求被从机应答了。
是不是?
接着主机要么发新的请求。
第一个突发请求,从机已经接受了,waitrequest为低电平。
所以说主机要么停下来,要么再发下一个突发读。
现在,这张时序图,发下一个。
A1,首发的读命令,首发的beginbursttransfer。
S1上要写一个NBD的动作,首发的命令一定关掉。
lcytms
发表于 2018-9-28 09:24:16
1340
首发的只有一拍有效,beginbursttransfer,这个我写S1的NBD。
就是进入S1,无论做什么,都得把beginbursttransfer关闭。
读命令,地址,burstcount=2,这是在时标线为2的那一拍上,主机发出来的动作。
lcytms
发表于 2018-9-29 09:33:55
1341
然后进入S2,S2仍然要等待,第二次突发的命令,仍然要等待waitrequest。
中间有一个第三拍,这个时候捕获到了waitrequest是高电平。
当waitrequest为低电平,应该是时标线为4的位置上。
lcytms
发表于 2018-9-29 09:34:35
1342
时标线为4的这个位置上,主机捕获到了waitrequest为低电平,这次主机就知道,这个命令从机应答了。
在这张时序图上,主机就喊停了,我只做着两个事情,一个突发为4,一个突发为2。
fpga_feixiang
发表于 2018-9-29 14:39:32
顶~~~~~~~~~~~~~~~~
lcytms
发表于 2018-9-30 09:53:11
1343
接着就把读关了。
我还没有写这个readdatavalid,就是它的握手的部分。
在第四拍上面动作以后,右侧逼近,主机就把读关掉了。
那个S2上,也是把beginbursttransfer关掉。