关于记忆游戏按键与led灯不匹配的问题

在我们功能测试与性能测试已经通过的情况下测试记忆游戏,发现偶尔会有几次按键与led灯不匹配的问题,使用ila将相关信号拉出来看发现是从confreg里面读出的按键信息与刚才的按键操作不匹配,截图如下
捕获1.PNG

捕获3.PNG

而正常的情况如下
捕获4.PNG

捕获2.PNG

可以看出rdata在不正确的时间读取了btn_key的值,导致读回cpu的数据是错误的。请问造成这种情况的原因会是什么
已邀请:

龙芯杯答疑

赞同来自:

如果方便的话,请将confreg模块的state、key_sample也抓出来。
 
现在问题应该聚焦在 btn_key_r记录的按键值从0000->1000->?->0x8000是3次按键还是一次按键?

potato

赞同来自:

你好,我现在把相关的信号拉出来了,信号如下
捕获5.PNG

上面圈出来的地方就是导致问题出现的地方,当按键按下state变化后,每次都会有一个周期使得btn_key_tmp变为1000,而此时btn_key_row的值还是为7,此时被错误判断为按下最左边的那个按键,btn_key_r存入错误值,直到state到达按下键所属列后才变化为正确值,而如果cpu在这个错误的时间来请求数据就会出错。这个问题好像不是cpu设计导致的,请问该如何处理?

要回复问题请先登录注册