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 @@