lcytms
发表于 2018-9-12 09:18:59
1141
并且给出首发的beginbursttransfer。
但是第二拍的时候,从机右侧逼近,将waitrequest拉高。
因此在第三拍,主机捕获到了waitrequest为高电平。
它的第二拍发的B主机的A1地址,可以保持住。
除了首发的beginbursttransfer,读命令也保持住。
一直保持到第四拍。
主机捕获到了waitrequest为低电平,知道从机已经响应了第二拍发的A1地址。
于是,它可以将读命令撤掉,地址可以撤掉。
Don’t care。
不用管了。
fpga_feixiang
发表于 2018-9-12 15:17:27
顶~~~~~~~~~~~~~~~~~~~~~~~~~~
wood帅哥
发表于 2018-9-12 22:02:30
非常有用,感谢持续分享
fpga_feixiang
发表于 2018-9-13 14:46:39
顶~~~~~~~~~~~~~~
lcytms
发表于 2018-9-14 09:16:53
1142
之后呢,由于我们要求突发读的时候,要有一个车管所业务。
所以说在第三拍,从机发出了readdatavalid,第一次将readdatavalid拉高,发出第一个数。
由于主机A要读4个数,第一次捕获在第4拍,第一次捕获到readdata为高电平,知道是A0的地址的4个数里面的第一个数,A0到了。
在第五拍,第二次捕获到了readdata为高电平,知道是A0的第二个数到了。
之后,在第五拍以后,这里有一个从机的readdatavalid叫停。
从机可以选择叫停。
接着再第三次捕获到了readdata为高电平,是A0+2,是A0的第三个数到了。
lcytms
发表于 2018-9-14 09:17:46
1143
之后是A0+3,是A0的第四个数到了,第四次捕获到了readdata为高电平。
再往后面是readdata为高电平,应该是什么?
前一个突发的4已经结束了,是后面突发的主机B的A1地址的突发的2个数的第一个数,A1到了。
A1的第一个数到了,接着再下面,是第六次捕获到了readdatavalid为高电平,知道是A1地址的第二个数到了。
A1+1这个数到了。
是连续有这么一个过程。
在突发读这个过程之中,我们也总结一下,进入突发,仍然是用主从,是用读和waitrequest来互相控制。
主机是用读命令来进入突发的序列,突发的transfer,从机是用waitrequest来叫停主机,这个没有问题。
lcytms
发表于 2018-9-14 09:18:39
1144
可是一旦进入突发序列了以后,这个时候,主机是没有叫停权力的,而从机可以叫停,从机可以用readdatavalid来叫停。
主机只能静静地接受。
主机一旦进入突发序列以后,主机是没有任何权利的,主机只能跟readdatavalid来握手,只能响应从机的叫停权利。
进入突发读以后,从机说停就停,说走就走,而主机只能静静地接受。
之所以选择这种规则,这是有有它的根据的,因为做突发读的时候,是连续地读突发数据。
如果主机选择了做突发读,发出了做突发读的命令的时候,主机就应该有这种能力,它能够接收数据了。
所以说这个时候,主机是不能走的,它只能等待readdatavalid为高电平,并且一拍一拍地数着。
Sunlife
发表于 2018-9-14 16:43:05
回复学习
lcytms
发表于 2018-9-15 09:17:19
1145
注意,这是它的非常重要的一个区别。
就是突发写的时候,进入突发读,进入突发写的过程,进入的这个阶段,都一样。
都需要用waitrequest来握手。
而进入之后却不一样。突发写的时候,主从都可以互相叫停,而一旦进入突发读以后,主机是不能停的。
主机是没有叫停权力的,只有从机可以叫停。
好,现在我们来写一下这个时序。
写一下这个状态转移图。
说到底,waitrequest就是从机它有没有响应主机的请求。
Waitrequest为低电平的时候,说明它响应了你的请求。
响应了请求,我才能把A1撤掉,或者停下来,或者发下一个数据。
lcytms
发表于 2018-9-15 09:18:22
1146
全部是同步电路。
可变潜伏期的流水线读,3和4之间,它有点类似于真实的物理信号,所以说在3的轴线上,主机捕获到的是低。
这个时候就不要看同步电路的规则了。