[Modified] fix axi, pass func & pref test, but down to 85MHz
This commit is contained in:
@@ -41,49 +41,49 @@ module axi_ctrl_v5
|
||||
output reg [31 :0] uncache_rdata,
|
||||
output reg uncache_refresh,
|
||||
|
||||
//总线侧接口
|
||||
//读地址通道信号
|
||||
output reg [3 :0] arid, //读地址ID,用来标志一组写信号
|
||||
output reg [31:0] araddr, //读地址,给出一次写突发传输的读地址
|
||||
//总线侧接å<EFBFBD>?
|
||||
//读地å<EFBFBD>?通é<EFBFBD>“ä¿¡å<EFBFBD>·
|
||||
output reg [3 :0] arid, //读地å<EFBFBD>?ID,用æ<EFBFBD>¥æ ‡å¿—一组写信å<EFBFBD>·
|
||||
output reg [31:0] araddr, //读地å<EFBFBD>?,给出一次写çª<EFBFBD>å<EFBFBD>‘ä¼ è¾“çš„è¯»åœ°å<EFBFBD>€
|
||||
output reg [3 :0] arlen, //çª<EFBFBD>å<EFBFBD>‘长度,给出çª<EFBFBD>å<EFBFBD>‘ä¼ è¾“çš„æ¬¡æ•°
|
||||
output reg [2 :0] arsize, //突发大小,给出每次突发传输的字节数
|
||||
output reg [2 :0] arsize, //çª<EFBFBD>å<EFBFBD>‘大å°<EFBFBD>,给出æ¯<EFBFBD>次çª<EFBFBD>å<EFBFBD>‘ä¼ è¾“çš„å—节æ•?
|
||||
output reg [1 :0] arburst, //çª<EFBFBD>å<EFBFBD>‘类型
|
||||
output reg [1 :0] arlock, //总线锁信号,可提供操作的原子性
|
||||
output reg [3 :0] arcache, //内存类型,表明一次传输是怎样通过系统的
|
||||
output reg [1 :0] arlock, //总线é”<EFBFBD>ä¿¡å<EFBFBD>·ï¼Œå<EFBFBD>¯æ<EFBFBD><EFBFBD>ä¾›æ“<EFBFBD>作的原å<EFBFBD>æ€?
|
||||
output reg [3 :0] arcache, //内å˜ç±»åž‹ï¼Œè¡¨æ˜Žä¸€æ¬¡ä¼ è¾“æ˜¯æ€Žæ ·é€šè¿‡ç³»ç»Ÿçš?
|
||||
output reg [2 :0] arprot, //ä¿<EFBFBD>æŠ¤ç±»åž‹ï¼Œè¡¨æ˜Žä¸€æ¬¡ä¼ è¾“çš„ç‰¹æ<EFBFBD>ƒçº§å<EFBFBD>Šå®‰å…¨ç‰çº§
|
||||
output reg arvalid, //有效信号,表明此通道的地址控制信号有效
|
||||
input arready, //表明"从"可以接收地址和对应的控制信号
|
||||
//读数据通道信号
|
||||
output reg arvalid, //有效信å<EFBFBD>·ï¼Œè¡¨æ˜Žæ¤é€šé<EFBFBD>“的地å<EFBFBD>?控制信å<EFBFBD>·æœ‰æ•ˆ
|
||||
input arready, //表明"ä»?"å<EFBFBD>¯ä»¥æŽ¥æ”¶åœ°å<EFBFBD>€å’Œå¯¹åº”的控制信å<EFBFBD>·
|
||||
//读数æ<EFBFBD>®é?šé<EFBFBD>“ä¿¡å<EFBFBD>·
|
||||
input [3 :0] rid, //读ID tag
|
||||
input [31:0] rdata, //读数据
|
||||
input [1 :0] rresp, //读响应,表明读传输的状态
|
||||
input rlast, //表明读突发的最后一次传输
|
||||
input rvalid, //表明此通道信号有效
|
||||
input [31:0] rdata, //读数æ<EFBFBD>?
|
||||
input [1 :0] rresp, //读å“<EFBFBD>åº”ï¼Œè¡¨æ˜Žè¯»ä¼ è¾“çš„çŠ¶æ??
|
||||
input rlast, //表明读çª<EFBFBD>å<EFBFBD>‘çš„æœ?å<EFBFBD>Žä¸€æ¬¡ä¼ è¾?
|
||||
input rvalid, //表明æ¤é?šé<EFBFBD>“ä¿¡å<EFBFBD>·æœ‰æ•ˆ
|
||||
output reg rready, //表明主机能够接收读数æ<EFBFBD>®å’Œå“<EFBFBD>应信æ<EFBFBD>¯
|
||||
|
||||
//写地址通道信号
|
||||
output reg [3 :0] awid, //写地址ID,用来标志一组写信号
|
||||
output reg [31:0] awaddr, //写地址,给出一次写突发传输的写地址
|
||||
//写地å<EFBFBD>?通é<EFBFBD>“ä¿¡å<EFBFBD>·
|
||||
output reg [3 :0] awid, //写地å<EFBFBD>?ID,用æ<EFBFBD>¥æ ‡å¿—一组写信å<EFBFBD>·
|
||||
output reg [31:0] awaddr, //写地å<EFBFBD>?,给出一次写çª<EFBFBD>å<EFBFBD>‘ä¼ è¾“çš„å†™åœ°å<EFBFBD>€
|
||||
output reg [3 :0] awlen, //çª<EFBFBD>å<EFBFBD>‘长度,给出çª<EFBFBD>å<EFBFBD>‘ä¼ è¾“çš„æ¬¡æ•°
|
||||
output reg [2 :0] awsize, //突发大小,给出每次突发传输的字节数
|
||||
output reg [2 :0] awsize, //çª<EFBFBD>å<EFBFBD>‘大å°<EFBFBD>,给出æ¯<EFBFBD>次çª<EFBFBD>å<EFBFBD>‘ä¼ è¾“çš„å—节æ•?
|
||||
output reg [1 :0] awburst, //çª<EFBFBD>å<EFBFBD>‘类型
|
||||
output reg [1 :0] awlock, //总线锁信号,可提供操作的原子性
|
||||
output reg [3 :0] awcache, //内存类型,表明一次传输是怎样通过系统的
|
||||
output reg [1 :0] awlock, //总线é”<EFBFBD>ä¿¡å<EFBFBD>·ï¼Œå<EFBFBD>¯æ<EFBFBD><EFBFBD>ä¾›æ“<EFBFBD>作的原å<EFBFBD>æ€?
|
||||
output reg [3 :0] awcache, //内å˜ç±»åž‹ï¼Œè¡¨æ˜Žä¸€æ¬¡ä¼ è¾“æ˜¯æ€Žæ ·é€šè¿‡ç³»ç»Ÿçš?
|
||||
output reg [2 :0] awprot, //ä¿<EFBFBD>æŠ¤ç±»åž‹ï¼Œè¡¨æ˜Žä¸€æ¬¡ä¼ è¾“çš„ç‰¹æ<EFBFBD>ƒçº§å<EFBFBD>Šå®‰å…¨ç‰çº§
|
||||
output reg awvalid, //有效信号,表明此通道的地址控制信号有效
|
||||
input awready, //表明"从"可以接收地址和对应的控制信号
|
||||
//写数据通道信号
|
||||
output reg [3 :0] wid, //一次写传输的ID tag
|
||||
output reg [31:0] wdata, //写数据
|
||||
output reg [3 :0] wstrb, //写数据有效的字节线,用来表明哪8bits数据是有效的
|
||||
output reg wlast, //表明此次传输是最后一个突发传输
|
||||
output reg wvalid, //写有效,表明此次写有效
|
||||
input wready, //表明从机可以接收写数据
|
||||
//写响应通道信号
|
||||
output reg awvalid, //有效信å<EFBFBD>·ï¼Œè¡¨æ˜Žæ¤é€šé<EFBFBD>“的地å<EFBFBD>?控制信å<EFBFBD>·æœ‰æ•ˆ
|
||||
input awready, //表明"ä»?"å<EFBFBD>¯ä»¥æŽ¥æ”¶åœ°å<EFBFBD>€å’Œå¯¹åº”的控制信å<EFBFBD>·
|
||||
//写数æ<EFBFBD>®é?šé<EFBFBD>“ä¿¡å<EFBFBD>·
|
||||
output reg [3 :0] wid, //ä¸?æ¬¡å†™ä¼ è¾“çš„ID tag
|
||||
output reg [31:0] wdata, //写数æ<EFBFBD>?
|
||||
output reg [3 :0] wstrb, //写数æ<EFBFBD>®æœ‰æ•ˆçš„å—节线,用æ<EFBFBD>¥è¡¨æ˜Žå“?8bitsæ•°æ<EFBFBD>®æ˜¯æœ‰æ•ˆçš„
|
||||
output reg wlast, //è¡¨æ˜Žæ¤æ¬¡ä¼ 输是最å<EFBFBD>Žä¸€ä¸ªçª<EFBFBD>å<EFBFBD>‘ä¼ è¾?
|
||||
output reg wvalid, //å†™æœ‰æ•ˆï¼Œè¡¨æ˜Žæ¤æ¬¡å†™æœ‰æ•?
|
||||
input wready, //表明从机å<EFBFBD>¯ä»¥æŽ¥æ”¶å†™æ•°æ<EFBFBD>?
|
||||
//写å“<EFBFBD>应é?šé<EFBFBD>“ä¿¡å<EFBFBD>·
|
||||
input [3 :0] bid, //写å“<EFBFBD>应ID tag
|
||||
input [1 :0] bresp, //写响应,表明写传输的状态 00为正常,当然可以不理会
|
||||
input bvalid, //写响应有效
|
||||
output reg bready //表明主机能够接收写响应
|
||||
input [1 :0] bresp, //写å“<EFBFBD>åº”ï¼Œè¡¨æ˜Žå†™ä¼ è¾“çš„çŠ¶æ?? 00为æ£å¸¸ï¼Œå½“ç„¶å<EFBFBD>¯ä»¥ä¸<EFBFBD>ç<EFBFBD>†ä¼?
|
||||
input bvalid, //写å“<EFBFBD>应有æ•?
|
||||
output reg bready //表明主机能够接收写å“<EFBFBD>åº?
|
||||
|
||||
);
|
||||
reg [CACHELINE_WD -1:0] icache_rdata_buffer;
|
||||
@@ -374,6 +374,15 @@ module axi_ctrl_v5
|
||||
stage_w <= stage_w << 1;
|
||||
end
|
||||
end
|
||||
else if (wready) begin
|
||||
wdata <= dcache_wdata_buffer[dcache_offset_w*32+:32];
|
||||
wvalid <= 1'b1;
|
||||
wlast <= dcache_offset_w == 4'b1111 ? 1'b1 : 1'b0;
|
||||
dcache_offset_w <= dcache_offset_w + 1'b1;
|
||||
if (dcache_offset_w == 4'b1111) begin
|
||||
stage_w <= stage_w << 1;
|
||||
end
|
||||
end
|
||||
end
|
||||
stage_w[2]:begin
|
||||
if (wready) begin
|
||||
|
||||
Reference in New Issue
Block a user