1112
响应请求之后,数据什么时候返回,这个时候是固定潜伏期的。
我们先休息十分钟。
(休息)
1123
主从之间的信号一定要有概念。
哪些信号是主机给的?
哪些信号是从机给的?
1124
我们写主从之间的状态转移图的时候,我们知道,分子是输入,分母是输出。
什么是主机的输入?
什么是从机的输入?
对于主从传输,master,slave的transfer,一定是地址、主控命令是主机发的。
数据是双向的。
有一个readdata是从机给主机的。
主机给从机的是writedata。
我之前写的一个是data和q,q是从机发给主机的readdata。
然后呢,主从之间的握手,我们在总结一下这个过程。
从典型的开始。主控的是哪些呢?
主机的是读、写, read、write。用这两个信号来控制从机。
1125
主机随时可以读写。
说读就读说写就写,说停就停。
从机有应答主机的义务。
主机有叫停从机的权利。
在典型读写的时候,从机是用waitrequest来叫停主机。
所以说主机有响应waitrequest的义务,从机有发出waitrequest的权利。
当waitrequest为真的时候,主机就必须hold,必须保持住。
在这个规则下面,这个时候主机只能保持住。
这个是有非常清晰的物理规律的。
它不保持住,就会带来效率的丢失。
传输的时候满足我们上面三个要求。
这个时候主机必须保持住,主机不能叫停。
主机只能保持住。
主机什么时候可以叫停呢?
可以发出读写叫停呢?
只有从机发出的waitrequest为低电平的时候,主机才能叫停。
1126
然后呢,固定周期的时候,地址,还有write。
地址信号,一直都是主机发的。
主机可以发读写命令。
读写命令是主机发的。
仍然是主机叫停从机的控制信号,说读就读,说写就写,说停就停。
而从机这个时候,是用固定的周期来握手主机。
就是它响应了读写命令之后,它是用固定的周期来握手的。
然后对于流水线,我们只做流水线的读,就是Avalon并不支持流水线的写。
流水线的读,就是读命令。
主机能够叫停从机的权利就是读。
主机说读就读,说不读就不读。
从机有响应主机发出读的义务。
而从机叫停主机的有两个握手信号。
从机比主机的权利多,体现在什么呢?
本帖最后由 lcytms 于 2018-9-5 21:49 编辑
1127
从机有waitrequest叫停主机,还有readdatavalid叫停主机。
waitrequest叫停主机,相当于什么业务呢?
相当于储蓄所业务。
当waitrequest为真值的时候,它必须要停了,要保持住。
主机必须要hold。
当waitrequest为低电平的时候,说明从机已经应答了主机的请求。
而readdatavalid说明是什么呢?
说明从机响应你的请求,而什么时候返还数据呢?
用readdatavalid说了算。
所以说,从机这个时候有两种叫停主机的权利。
而主机必须应答,有响应这两种权利的义务。
这是流水线,可变潜伏期。
固定潜伏期,仍然有第一种业务,waitrequest。
主机仍然是用读命令来制约从机。
而从机除了waitrequest之外,readdatavalid那根线撤销掉了。
用固定周期来做。
1128
固定周期的读。
然后呢,我们来介绍一下突发,burst。
这个词的词频也很高。
这个词的出处就是LIP,它是从LIP中提出来的。
它指的是什么呢?
一次进行的多个(字或字节)的传输,称为突发(burst)。
因为我们只发出了一个读地址,在流水线的时候,一个读地址,一次读请求,只读一个数据。
但是在很多情况之下会带来效率的丢失。
而突发呢,是给出首次的地址,首次的读写命令,之后就可以按照约定的方式,在主从之间进行指定个数的数据传输。
1129
数据传输的个数,称之为它的burstcount,要么是约定,属性的约定,要么是一个握手。
突发多少个。突发的首地址、首命令要给出。
首地址、首命令给出了以后,在发送的过程之中,就按照约定的burstcount,来进行连续的传输。
突发传输要求从机要有两个状态,就是要有两种握手的权利。
第一种就是waitrequest,就是储蓄所业务。
当它busy的时候,主机发出的请求无法处理。
主机发出的请求必须要保持住,要hold,要进入等待的状态,Wait-State。
第二,就是从机必须要有readdatavalid。
对于突发读写,从机必须要有两种叫停主机的权利。
1130
这张图呢,说的是突发写。
就是首发命令之后,连续地进行写传输。
这个burstcount要求大于1。
因为burstcount如果等于1,说明什么?
它就不是突发了嘛。
突发就是连续地进行传输。
Burstcount也可以用属性来做。
但是我们现在的PPT上,只是一个握手信号,是主机发的。
还有一个属性,constantBurstBehavior。
这个属性,用于主机的时候,它为真,说明在整个突发期间,地址和burstcount要保持。
1131
它为假,只在首发需要有地址和burstcount。
大多数情况,我们都会用首发有效。
从机的时候也是如此。为真的时候保持,为假的时候首发有效。
这里面还有一个信号叫beginbursttransfer。
这个信号除外,这个信号不归constantBurstBehavior这个属性管。
它永远是首发有效。我们看这张时序图。
这张时序图呢,是一个突发长度为4,就是一次访问4个字。
只需要给出首地址。有点像我们做的长整的加速器。
只需要给出一个首地址突发概念就是这样。
所以说constantBurstBehavior设置为假值。
它不需要保持。
就是地址和burstcount是首发有效。
