在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5500|回复: 9

[求助] 【求助】AHB总线操作问题

[复制链接]
发表于 2016-8-2 19:43:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
大家好,我是学习AHB总线的新人,看到“标准AHB-Slave总线接口不支持写操作后立即执行读操作,要求二者之间至少有一个时钟周期的间隔,否则会产生错误。“这句话

不懂为何写操作后的读操作需延时一周期?是因为读写操作是否需要锁存的原因吗?纠结很长时间了,希望能得到大家的解答,谢谢了
发表于 2016-8-9 17:22:49 | 显示全部楼层
那句话的意思翻译一下,其实是想表达:对于无等待周期立即响应的AHB slave, 对同一个地址写操作后紧跟着读,读到的是写操作之前的数据,不是当次写入的数据。这是由于AHB写数据相对写地址命令是晚一拍出现在总线上造成的。

并不是说写之后马上读的操作是错误不允许的,而是说如果你期望读到刚写入的数据,master应该在写操作后等待一个周期再读。或者slave的设计,可以做成每个读burst的第一拍都拉低一个周期的ready信号,这样master就不需要考虑这种限制了
 楼主| 发表于 2016-9-7 10:03:58 | 显示全部楼层
回复 2# 杰克淡定


    907.png 不好意思,才看到你的回复。多谢。
那么是否可以理解为
对于非同一地址的写之后读操作,不用考虑hready_out信号的拉低?因其不存在对同一数据的要求?
图片所示,是我画的同一地址写后读操作,时序图,劳烦帮我看一下是否正确。多谢了
907.png
发表于 2016-9-7 13:53:04 | 显示全部楼层
回复 3# lina13319293389

基本是这个意思,不过你的rd_en时序弄错了,rd_en =  hsel & (~hwrite) & htrans[1] & hready。这里如果用rd_en锁存rdata,就得不到期望时序了 ,所以IO操作读时,可以不用产生rd_en信号,你的rdata根据addr译码选择然后用DFF输出即可。rd_en用于FIFO或者sram的操作里。另外,如果你每个读之前都判断是不是有一个对相同地址的写操作,会把问题弄复杂,不划算。你固定将single读与burst读的第一拍hready拉低即可。
 楼主| 发表于 2016-9-7 17:47:49 | 显示全部楼层
回复 4# 杰克淡定


   好的,终于清楚了,十分感谢了。
 楼主| 发表于 2016-9-7 18:13:11 | 显示全部楼层
回复 4# 杰克淡定


   对了,还想问你一个问题。关于AHB master端的行为。这块对于ready信号对于rd_data和wr_data的延迟有些不是很理解。  下图分别是我画的一总线读操作和总线写操作的时序图。
  

总线写时序

总线写时序

总线读时序

总线读时序

对于ready信号总是延迟上一拍的数据,这块rd_data信号我理解。
但是对于wr_data信号,这上面的数据是源端给的,为何最后一个ready=0使得wr_data信号改变?理解为组合逻辑吗?
我在一篇文章那看过说对于写操作,源端在时钟上升沿若ready=1,就要开始送一拍数据给wr_data信号,照这样说,只要ready=1的话,
下一拍不是应该数据改变了。
发表于 2016-9-8 09:27:15 | 显示全部楼层
你现在图中的wr_data和rd_data都画错了,要提前一个周期才对。读时序图的控制信号要delay一拍。不论是写数据,还是读数据,还是控制信号,在hready为高后才可以改变,在hready为低的周期,都是保持的。
 楼主| 发表于 2016-9-8 11:04:31 | 显示全部楼层
回复 7# 杰克淡定


   嗯,好的。多谢了!
发表于 2018-12-22 18:17:31 | 显示全部楼层
发表于 2019-11-13 16:37:58 | 显示全部楼层
不支持写完立即读应该是针对memory的吧,如果是reg的话是可以的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-22 22:11 , Processed in 0.030342 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表