增加代码,1.仿真了最多202个从站,功能正常;2.测试了读写\广播等操作

This commit is contained in:
2025-09-08 13:12:18 +08:00
parent 41d4805841
commit a63e14e6f6
6 changed files with 96 additions and 21 deletions

View File

@@ -441,13 +441,18 @@ begin
if (!spidata_file) $display("文件打开失败");
`ifdef VCS_COMPILE
$dumpfile("./generated/wave.vcd"); //生成的vcd文件名称
$dumpvars(0, ShinTopSpiTb);//tb模块名称
$dumpfile("./generated/wave.vcd"); //生成的vcd文件名称
$dumpvars(0, ShinTopSpiTb);//tb模块名称
$dumpvars(0, ShinTopSpiTb.s_ShinTop_Mst);//tb模块名称
//$dumpvars(0, ShinTopSpiTb.s_ShinTop_slv124);//tb模块名称
//$dumpvars(0, ShinTopSpiTb.s_ShinTop_slv125);//tb模块名称
//$dumpvars(0, ShinTopSpiTb.s_ShinTop_slv126);//tb模块名称
//$dumpvars(0, ShinTopSpiTb.s_ShinTop_slv127);//tb模块名称
`endif
`ifdef IVERILOG_COMPILE
$dumpfile("./generated/wave.fst"); //生成的fst文件名称
$dumpvars(0, ShinTopSpiTb);//tb模块名称
$dumpfile("./generated/wave.fst"); //生成的fst文件名称
$dumpvars(0, ShinTopSpiTb);//tb模块名称
`endif
end
@@ -525,7 +530,7 @@ end
reg isBusy = 0;
reg [11:0] length;
reg [7:0] idx;
reg [16:0] idx;
reg [11:0] transCnt;
reg [11:0] byteCnt;
@@ -598,7 +603,7 @@ end
//mst slv0~slv3的 内部qspi调用即设置
//sidx为0~4外部spi为5~9外部qspi为10~15
task spi_trans( input [15:0] saddress, input [7:0] scmd, input [12:0] slength,input [7:0] sidx );
task spi_trans( input [15:0] saddress, input [7:0] scmd, input [12:0] slength,input [16:0] sidx );
begin
txBuf[0] <= saddress[15:8];
txBuf[1] <= saddress[7:0];
@@ -660,13 +665,15 @@ task spi_trans( input [15:0] saddress, input [7:0] scmd, input [12:0] slength,in
if (scmd == 0) begin
addr_type = txBuf[_pos + 1] & 8'h3;
dev = (txBuf[_pos] >> 2) * 256 + ((txBuf[_pos + 1] >> 2) & 8'hff);
dev = (txBuf[_pos] * 256) >> 2;
dev = dev + ((txBuf[_pos + 1] >> 2) & 8'hff);
addr = txBuf[_pos + 2] * 256 + (txBuf[_pos + 3] & 8'hff);
cmd = (txBuf[_pos + 4] >> 4) & 8'h0f;
len = (txBuf[_pos + 4] & 8'h0f) * 256 + (txBuf[_pos + 5] & 8'hff);
end else begin
addr_type = rxBuf[_pos + 1] & 8'h3;
dev = (rxBuf[_pos] >> 2) * 256 + ((rxBuf[_pos + 1] >> 2) & 8'hff);
dev = (txBuf[_pos] * 256) >> 2;
dev = dev + ((rxBuf[_pos + 1] >> 2) & 8'hff);
addr = rxBuf[_pos + 2] * 256 + (rxBuf[_pos + 3] & 8'hff);
cmd = (rxBuf[_pos + 4] >> 4) & 8'h0f;
len = (rxBuf[_pos + 4] & 8'h0f) * 256 + (rxBuf[_pos + 5] & 8'hff);
@@ -933,7 +940,7 @@ task wait_comm_finished(input [16:0] dev_idx);
$display("error occur");
is_run = 0;
end
if (($realtime - st) >= 5000000.0)
if (($realtime - st) >= 20000000.0)
begin
$display("comm timeout.");
is_run = 0;