请问在ESI模块启动之后,如果有状态切换,存储ESI Memory里面的PSM state table是如何移位的?每次移位的地址长度又是如何计算的?谢谢支持
下面的文档里面有描述在某一状态里面计算偏移地址,这个可以理解:
不能理解的地方是:如果我采用两个LC sensor,切换状态之后,“current address of PSM State Table ”这个地址是怎么得到的?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
请问在ESI模块启动之后,如果有状态切换,存储ESI Memory里面的PSM state table是如何移位的?每次移位的地址长度又是如何计算的?谢谢支持
下面的文档里面有描述在某一状态里面计算偏移地址,这个可以理解:
不能理解的地方是:如果我采用两个LC sensor,切换状态之后,“current address of PSM State Table ”这个地址是怎么得到的?
针对这个问题,我是按照自己猜测的流程重新写的状态机,目前运行起来似乎没有问题。
我这边采用的3个LC,状态转移过程理论上有64个(2^3 * 2^3),如果两个LC就是16个状态切换过程(2^2 * 2^2)。下面说一下3LC状态机地址的问题:
1。当前状态对应于8个未来状态,未来状态是由PPUS1, PPUS2,PPUS3确定下来的,比如当前状态为010,这时候PPUS1, PPUS2,PPUS3捕获值为101,那么state table就要基于当前的状态地址加上0x101,并取出其值填入(Q7…Q1)。
2。第一步取出的(Q7…Q1)做各种判断,比如Q7为1则代表错误,Q6为1则代表向前爬了一步。然后就是当前状态010如何切换到101状态,这一点是我猜测的,state table直接从基址加上(2^3 * 0x101)
所以在重新写状态机的时候,建议按照这个顺序(000,001,010,011,100,101,110,111)来编写,经过验证这样是没有问题的,状态机可以正确跳转。
如果有特殊需求,我认为状态机的顺序其实也可以打乱的,这个时候Q3,Q4,Q5就要派上用场了,Q3,Q4,Q5代表下一状态,如果状态机的顺序是错乱的,这里Q3,Q4,Q5也要做相应的改变,状态机才能正确跳转。不过这个想法我没有验证。
以上是我对这个问题的总结,希望对后面遇到类似问题的人有帮助吧