diff --git a/lacpu/doc/mycpu性能计算.xlsx b/lacpu/doc/mycpu性能计算.xlsx
index eeb60c1..017b730 100644
Binary files a/lacpu/doc/mycpu性能计算.xlsx and b/lacpu/doc/mycpu性能计算.xlsx differ
diff --git a/lacpu/rtl/mycpu/axi_ctrl.v b/lacpu/rtl/mycpu/axi_ctrl.v
index 7dc6b54..d325bb3 100644
--- a/lacpu/rtl/mycpu/axi_ctrl.v
+++ b/lacpu/rtl/mycpu/axi_ctrl.v
@@ -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, //读地址,给出一次写突发传输的读地址
+ //总线侧接?
+ //读地?通道信号
+ output reg [3 :0] arid, //读地?ID,用来标志一组写信号
+ output reg [31:0] araddr, //读地?,给出一次写突发传输的读地址
output reg [3 :0] arlen, //突发长度,给出突发传输的次数
- output reg [2 :0] arsize, //突发大小,给出每次突发传输的字节数
+ output reg [2 :0] arsize, //突发大小,给出每次突发传输的字节?
output reg [1 :0] arburst, //突发类型
- output reg [1 :0] arlock, //总线锁信号,可提供操作的原子性
- output reg [3 :0] arcache, //内存类型,表明一次传输是怎样通过系统的
+ output reg [1 :0] arlock, //总线锁信号,可提供操作的原子?
+ output reg [3 :0] arcache, //内存类型,表明一次传输是怎样通过系统?
output reg [2 :0] arprot, //保护类型,表明一次传输的特权级及安全等级
- output reg arvalid, //有效信号,表明此通道的地址控制信号有效
- input arready, //表明"从"可以接收地址和对应的控制信号
- //读数据通道信号
+ output reg arvalid, //有效信号,表明此通道的地?控制信号有效
+ input arready, //表明"?"可以接收地址和对应的控制信号
+ //读数据?道信号
input [3 :0] rid, //读ID tag
- input [31:0] rdata, //读数据
- input [1 :0] rresp, //读响应,表明读传输的状态
- input rlast, //表明读突发的最后一次传输
- input rvalid, //表明此通道信号有效
+ input [31:0] rdata, //读数?
+ input [1 :0] rresp, //读响应,表明读传输的状??
+ input rlast, //表明读突发的?后一次传?
+ input rvalid, //表明此?道信号有效
output reg rready, //表明主机能够接收读数据和响应信息
- //写地址通道信号
- output reg [3 :0] awid, //写地址ID,用来标志一组写信号
- output reg [31:0] awaddr, //写地址,给出一次写突发传输的写地址
+ //写地?通道信号
+ output reg [3 :0] awid, //写地?ID,用来标志一组写信号
+ output reg [31:0] awaddr, //写地?,给出一次写突发传输的写地址
output reg [3 :0] awlen, //突发长度,给出突发传输的次数
- output reg [2 :0] awsize, //突发大小,给出每次突发传输的字节数
+ output reg [2 :0] awsize, //突发大小,给出每次突发传输的字节?
output reg [1 :0] awburst, //突发类型
- output reg [1 :0] awlock, //总线锁信号,可提供操作的原子性
- output reg [3 :0] awcache, //内存类型,表明一次传输是怎样通过系统的
+ output reg [1 :0] awlock, //总线锁信号,可提供操作的原子?
+ output reg [3 :0] awcache, //内存类型,表明一次传输是怎样通过系统?
output reg [2 :0] awprot, //保护类型,表明一次传输的特权级及安全等级
- 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, //有效信号,表明此通道的地?控制信号有效
+ 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, //表明从机可以接收写数?
+ //写响应?道信号
input [3 :0] bid, //写响应ID tag
- input [1 :0] bresp, //写响应,表明写传输的状态 00为正常,当然可以不理会
- input bvalid, //写响应有效
- output reg bready //表明主机能够接收写响应
+ input [1 :0] bresp, //写响应,表明写传输的状?? 00为正常,当然可以不理?
+ input bvalid, //写响应有?
+ output reg bready //表明主机能够接收写响?
);
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
diff --git a/lacpu/rtl/xilinx_ip/clk_pll/clk_pll.xci b/lacpu/rtl/xilinx_ip/clk_pll/clk_pll.xci
index 37df441..6d2938c 100644
--- a/lacpu/rtl/xilinx_ip/clk_pll/clk_pll.xci
+++ b/lacpu/rtl/xilinx_ip/clk_pll/clk_pll.xci
@@ -98,17 +98,17 @@
100.0
0000
0000
- 80.00000
+ 75.00000
0000
0000
100.00000
BUFG
50.0
false
- 80.00000
+ 75.00000
0.000
50.000
- 80.000
+ 75.000
0.000
1
0000
@@ -203,12 +203,12 @@
din
0000
1
- 0.8
- 0.8
- 0.8
- 0.8
- 0.8
- 0.8
+ 0.75
+ 0.75
+ 0.75
+ 0.75
+ 0.75
+ 0.75
dout
drdy
dwe
@@ -246,16 +246,16 @@
false
false
OPTIMIZED
- 12.000
+ 9.000
0.000
FALSE
10.000
10.000
- 15.000
+ 12.000
0.500
0.000
FALSE
- 12
+ 9
0.500
0.000
FALSE
@@ -292,8 +292,8 @@
2
Output Output Phase Duty Cycle Pk-to-Pk Phase
Clock Freq (MHz) (degrees) (%) Jitter (ps) Error (ps)
- _cpu_clk__80.00000______0.000______50.0______120.663_____87.180
- timer_clk__100.00000______0.000______50.0______115.831_____87.180
+ _cpu_clk__75.00000______0.000______50.0______146.170____105.461
+ timer_clk__100.00000______0.000______50.0______137.681____105.461
no_CLK_OUT3_output
no_CLK_OUT4_output
no_CLK_OUT5_output
@@ -414,18 +414,18 @@
100.0
0.010
BUFG
- 120.663
+ 146.170
false
- 87.180
+ 105.461
50.000
- 80.000
+ 75.000
0.000
1
true
BUFG
- 115.831
+ 137.681
false
- 87.180
+ 105.461
50.000
100.000
0.000
@@ -525,16 +525,16 @@
No_Jitter
locked
OPTIMIZED
- 12
+ 9
0.000
false
10.000
10.000
- 15
+ 12
0.500
0.000
false
- 12
+ 9
0.500
0.000
false
diff --git a/lacpu/run_vivado/la32r/la32r.xpr b/lacpu/run_vivado/la32r/la32r.xpr
index c0bb34f..f147868 100644
--- a/lacpu/run_vivado/la32r/la32r.xpr
+++ b/lacpu/run_vivado/la32r/la32r.xpr
@@ -36,13 +36,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -290,6 +290,12 @@
+
+
+
+
+
+
@@ -402,8 +408,8 @@
-
+