棋子 · 2020年01月14日

PSEL = 0时APB3从机响应

在这里,在IP级别验证中,我们没有问题,因为主APB不会锁存PREADY,而是在SOC级别具有多个APB从站

主设备使用APB SLAVE 1执行一些事务,并且在切换到APB SLAVE 2之前,它将在从设备的时钟周期PREADY = 1之后禁用PSEL = 0&PENABLE = 0。

这会将从设备1置于设置状态或未定义状态,而不处于空闲状态,因为主设备应在与PREADY = 1相同的周期上驱动PSEL = 0&PENABLE = 0。

我猜这里的问题是因为PREADY被锁存,主机和从机不在同步中。

同样允许从ARM Spec ACCESS到IDLE,但不允许从SETUP到IDLE。

作为我的从机,当声明PREADY = 1时,将看到PSEL = 1,它将进入SETUP而不是空闲状态,然后在SETUP中,当我们将PSEL断言为0时,这是从Master违反/未定义的。

请让我知道如何解决此问题。

1 个回答 得票排序 · 时间排序
极术小姐姐 · 2020年01月14日

我不确定我是否了解事件的顺序,但是也许您正在以组合方式查看这些转换,而不是仅在采样信号时在PCLK上升沿查看事件(状态机转换)。

如果APB主设备看到活动的从设备APB1通过在PCLK上升时采样PREADY为高电平来完成传输,然后主设备驱动PSELx = 0和PENABLE = 0,则这将是图4-1左侧从ACCESS到IDLE的路径。在APB协议规范中(PREADY = 1,无传输)。

如果主设备有进一步的传输要执行到APB1(PREADY = 1并进行传输),则只有从ACCESS切换回SETUP-这样才能将PSELx置为有效。

也许这就是您如何解释状态转换箭头上的条件。

目的是“ PREADY = 1且无传输”表示主机在下一个PCLK上升沿采样PREADY高电平,并且当前没有进一步传输以执行到该从机的操作,因此从机的状态机将进入其IDLE状态。

同时,主机可能需要进一步的传输才能执行到不同的从机,因此主机可以在其自己的状态机中从“访问”转到“建立”,但是要声明不同的PSELx线路。然后,由PSELx新选择的新从站将从IDLE移到SETUP。

你的回答
关注数
1
收藏数
0
浏览数
3604
极术小姐姐
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息