- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
你好,
我们将数据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 @后面的敏感列表里,如下图所示:
在仿真中我们发现,当RESETNeg由0跳变到1时,程序并没有执行下图红框中的分支。
随后,我们将RESETNeg_in信号加入到always @后面的敏感列表中,然后进行相同的仿真,这次仿真成功,从波形上看,在reset释放之后,reseted被拉高。
想问一下:
1.
这是否是这个model的一个bug?
2.
如果不是的话,那如何配置能避免上述读取失败的问题?
期待回复
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
你好:
0)S26系列是HyperBus接口的芯片,需要主控也支持HyperBus协议,不是所有支持OSPI协议的controller都能支持HyperBus协议,首先需要确认controller的协议支持情况
1)请问目前使用的verilog model是哪个版本的?我们1.3版本中修复了一个POR和RESET#信号的问题:
最新的Verilog model可以从如下链接中获取:
https://www.cypress.com/verilog/s26kl512s-verilog
2)我从最新的1.6版本里面看到的行号跟你截图的不太一样,不知道是不是你们修改过还是因为版本不同,我这边的版本是从1110行开始的:
3)RESETNeg_in的逻辑状态还与RESETNeg_ipd和RESETNeg有关:
我们RESET#的信号拉低是有200ns保持时间要求的,不知道仿真信号上这部分有没有满足要求:
请参考,多谢!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
你好,
1)我们用的model是V1.6版本的。
2)修改了一下backdoor方式,所以行号有点不同,应该不影响功能,根据后续的仿真,backdoor也是正确的。
3)reset保持时间超过了200ms。
能帮忙解释一下,为什么下面这个图中的RESETNeg_in信号没有加到aways后面的敏感列表里呢?我们在仿真遇到问题之后,将RESETNeg_in信号加入到敏感列表之后,就没有问题了。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
您好,
我们也内部与做Verilog的团队进行了沟通,他们现在也发现了类似的RESET#信号问题,他们答复可以暂时按照现有方法将RESETNeg_in加入敏感列表来进行后续调试,后面他们会以正式版本形式发布在官方网站上,发布后我也会在这个帖子里进行更新,多谢!