s26kl512s: RESET command not work properly

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
rozh_4786246
Level 1
Level 1

你好,

        我们将数据backdoor到s26kl512s这个hyperflash中,然后控制ospi controller来进行读flash。在读操作之前,通过ospi

controller对flash进行复位——将flash的RESETNeg拉低,经过一段时间后释放复位,将RESETNeg拉高。然后配置flash进行读操作,但读到的不是期望值,是’hff。

        在debug过程中,发现当RESETNeg为低时,flash model中的reseted信号会被拉低;当RESETNeg为高的时候,reseted还是低。但在model中,当reseted为高时,才会对ospi发过来的指令和地址进行采样,所以ospi发的指令和地址根本进不到flash model中。

        我们还发现在驱动reseted信号的逻辑中,有一个条件信号(RESETNeg_in)没有加入到always @后面的敏感列表里,如下图所示:

pastedImage_0.png

        在仿真中我们发现,当RESETNeg由0跳变到1时,程序并没有执行下图红框中的分支。

pastedImage_1.png

随后,我们将RESETNeg_in信号加入到always @后面的敏感列表中,然后进行相同的仿真,这次仿真成功,从波形上看,在reset释放之后,reseted被拉高。

想问一下:

1.     

这是否是这个model的一个bug?

2.     

如果不是的话,那如何配置能避免上述读取失败的问题?

期待回复

0 Likes
3 Replies
VincentH_06
Employee
Employee
10 replies posted 5 replies posted First solution authored

你好:

0)S26系列是HyperBus接口的芯片,需要主控也支持HyperBus协议,不是所有支持OSPI协议的controller都能支持HyperBus协议,首先需要确认controller的协议支持情况

1)请问目前使用的verilog model是哪个版本的?我们1.3版本中修复了一个POR和RESET#信号的问题:

pastedImage_3.png

最新的Verilog model可以从如下链接中获取:

https://www.cypress.com/verilog/s26kl512s-verilog

2)我从最新的1.6版本里面看到的行号跟你截图的不太一样,不知道是不是你们修改过还是因为版本不同,我这边的版本是从1110行开始的:

pastedImage_1.png

3)RESETNeg_in的逻辑状态还与RESETNeg_ipd和RESETNeg有关:

pastedImage_2.png

我们RESET#的信号拉低是有200ns保持时间要求的,不知道仿真信号上这部分有没有满足要求:

pastedImage_0.png

请参考,多谢!

0 Likes

你好,

     1)我们用的model是V1.6版本的。

     2)修改了一下backdoor方式,所以行号有点不同,应该不影响功能,根据后续的仿真,backdoor也是正确的。

     3)reset保持时间超过了200ms。

能帮忙解释一下,为什么下面这个图中的RESETNeg_in信号没有加到aways后面的敏感列表里呢?我们在仿真遇到问题之后,将RESETNeg_in信号加入到敏感列表之后,就没有问题了。

pastedImage_0.png

0 Likes

您好,

我们也内部与做Verilog的团队进行了沟通,他们现在也发现了类似的RESET#信号问题,他们答复可以暂时按照现有方法将RESETNeg_in加入敏感列表来进行后续调试,后面他们会以正式版本形式发布在官方网站上,发布后我也会在这个帖子里进行更新,多谢!

0 Likes