ahb slave input hready_in的作用

由于ahb的addr phase和data phase是可以overlap的,当发生back-to-back操作的时候,会出现当前cycle是上一个slave的data phase,也是下一个slave的addr phase。
在这时如果S1的heady_out拉低,说此时我最后一个data还没准备好(read access)或还没有准备收(write access); 而此时S2已经看到访问自己的NONSEQ,而且我已经是准备好了的,我就把hready_out拉高了。如下图所示:
这时怎么办?master端只能看到一个hready,到底看S1还是S2的呢?如果看S1,那么他在下一T还会维持NONSEQ,那么S2会认为,我上一T已经收了一个NONSEQ,又来一个NONSEQ而且addr还没递增。在S2会发生protocol fail.如果看S2的,那么S1的最后一个data会被丢掉。
如果在AHB的slave端会多出一个input 的hready_in。这个hready_in在两种作法:
1.通过一个mux,把在data phase的salve的hready_out作为输入连接到所有的slave
2.所有的slave的hready_out相与,连接到所有的slave
slave必须看到自己in_hready&hready_out,才认为一次addrr phase/data phase的成功

PS.为了防止deadlock,一般设计中slave的hready_out的default value是1


以下是一段AHB5 SLV接口verilog协议: module ahb5_slv_interface ( // AHB5 Master Interface input logic HCLK, input logic HRESETn, input logic [31:0] HADDR, input logic [2:0] HPROT, input logic HTRANS, input logic HWRITE, input logic [3:0] HSIZE, input logic [3:0] HBURST, input logic [3:0] HMASTLOCK, input logic [3:0] HWDATA, output logic [3:0] HREADY, output logic [1:0] HRESP, output logic [31:0] HRDATA, output logic [3:0] HREADYOUT, // AHB5 Slave Interface output logic [31:0] HADDR_S, output logic [2:0] HPROT_S, output logic HTRANS_S, output logic HWRITE_S, output logic [3:0] HSIZE_S, output logic [3:0] HBURST_S, output logic [3:0] HMASTLOCK_S, output logic [3:0] HWDATA_S, input logic [3:0] HREADY_S, input logic [1:0] HRESP_S, input logic [31:0] HRDATA_S, input logic [3:0] HREADYOUT_S ); // AHB5 Slave Interface Signals Mapping assign HADDR_S = HADDR; assign HPROT_S = HPROT; assign HTRANS_S = HTRANS; assign HWRITE_S = HWRITE; assign HSIZE_S = HSIZE; assign HBURST_S = HBURST; assign HMASTLOCK_S = HMASTLOCK; assign HWDATA_S = HWDATA; assign HREADY_S = HREADY; assign HRESP_S = HRESP; assign HRDATA_S = HRDATA; assign HREADYOUT_S = HREADYOUT; endmodule 注释:此代码展示了一个典型的AHB5 SLV接口,包括AHB5 Master接口和AHB5 Slave接口。其中,AHB5 Master接口包括多个输入(如HCLK、HRESETn等)和输出(如HREADY、HRESP等)信号,用于控制主设备与从设备之间的数据传输。AHB5 Slave接口则包括与AHB5 Master接口相同的信号,用于控制从设备对主设备的响应。两个接口之间的信号映射通过assign语句实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值