修复代码中的错误
This commit is contained in:
@@ -589,7 +589,7 @@ always @(posedge sck) begin
|
|||||||
end else begin
|
end else begin
|
||||||
bitCnt <= bitCnt + 1;
|
bitCnt <= bitCnt + 1;
|
||||||
end
|
end
|
||||||
if ( isAQspi ) begin
|
if ( idx >= (`ALL_DEV_NUM * 3) ) begin
|
||||||
if( &bitCnt ) begin
|
if( &bitCnt ) begin
|
||||||
byteCnt <= byteCnt +1;
|
byteCnt <= byteCnt +1;
|
||||||
transCnt <= transCnt + 1;
|
transCnt <= transCnt + 1;
|
||||||
@@ -638,7 +638,7 @@ task spi_trans( input [15:0] saddress, input [7:0] scmd, input [12:0] slength,in
|
|||||||
begin
|
begin
|
||||||
txBuf[0] <= saddress[15:8];
|
txBuf[0] <= saddress[15:8];
|
||||||
txBuf[1] <= saddress[7:0];
|
txBuf[1] <= saddress[7:0];
|
||||||
if (isAQspi) begin
|
if (sidx >=(`ALL_DEV_NUM * 3)) begin
|
||||||
txBuf[2] <= (scmd | slength[12:8]);
|
txBuf[2] <= (scmd | slength[12:8]);
|
||||||
txBuf[3] <= slength[7:0];
|
txBuf[3] <= slength[7:0];
|
||||||
length <= slength + 4;
|
length <= slength + 4;
|
||||||
@@ -658,15 +658,16 @@ task spi_trans( input [15:0] saddress, input [7:0] scmd, input [12:0] slength,in
|
|||||||
@( negedge isBusy) #1000
|
@( negedge isBusy) #1000
|
||||||
begin
|
begin
|
||||||
//$fwrite(spidata_file, "------------%5t------------\n", $realtime);
|
//$fwrite(spidata_file, "------------%5t------------\n", $realtime);
|
||||||
$fwrite(spidata_file, "T:%t \tdev:%4d, addr:0x%02h%02h, %s, len:%4d\n",
|
$fwrite(spidata_file, "T:%t \tdev:%4d(%4d), addr:0x%02h%02h, %s, len:%4d (0x%02h%02h)\n",
|
||||||
$realtime,
|
$realtime,
|
||||||
sidx % (`ALL_DEV_NUM),
|
sidx % (`ALL_DEV_NUM), sidx,
|
||||||
txBuf[0],
|
txBuf[0],
|
||||||
txBuf[1],
|
txBuf[1],
|
||||||
(((txBuf[2] & 8'h80) == 0)? "Write":" Read"),
|
(((txBuf[2] & 8'h80) == 0)? "Write":" Read"),
|
||||||
slength);
|
slength,
|
||||||
|
txBuf[2], txBuf[3]);
|
||||||
|
|
||||||
if (isAQspi) begin _pos = 4; end
|
if (sidx >=(`ALL_DEV_NUM * 3)) begin _pos = 4; end
|
||||||
else begin _pos = 3; end
|
else begin _pos = 3; end
|
||||||
|
|
||||||
if ( ((saddress == 16'h0800)
|
if ( ((saddress == 16'h0800)
|
||||||
@@ -847,10 +848,31 @@ always @(negedge io_int_sig[4]) begin
|
|||||||
$fdisplay(spidata_file, "**SLV3 INT CLEAR: %t", $realtime);
|
$fdisplay(spidata_file, "**SLV3 INT CLEAR: %t", $realtime);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
//`define USING_IQSPI
|
||||||
|
//`define USING_ESPI
|
||||||
|
//`define USING_EQSPI
|
||||||
|
`define USING_AQSPI
|
||||||
|
|
||||||
|
`ifdef USING_IQSPI
|
||||||
|
`define INTERFACE_IDX 0//internal spi
|
||||||
|
`define ARRAY_IDX_OFF 3
|
||||||
|
`endif
|
||||||
|
|
||||||
|
`ifdef USING_ESPI
|
||||||
|
`define INTERFACE_IDX (`ALL_DEV_NUM)//internal spi
|
||||||
|
`define ARRAY_IDX_OFF 3
|
||||||
|
`endif
|
||||||
|
|
||||||
|
`ifdef USING_EQSPI
|
||||||
|
`define INTERFACE_IDX (`ALL_DEV_NUM * 2)//internal spi
|
||||||
|
`define ARRAY_IDX_OFF 3
|
||||||
|
`endif
|
||||||
|
|
||||||
|
`ifdef USING_AQSPI
|
||||||
|
`define INTERFACE_IDX (`ALL_DEV_NUM * 3)//internal spi
|
||||||
|
`define ARRAY_IDX_OFF 4
|
||||||
|
`endif
|
||||||
|
|
||||||
`define INTERFACE_IDX 0 //(`ALL_DEV_NUM * 2)//internal spi
|
|
||||||
`define ARRAY_IDX_OFF 3
|
|
||||||
`define IF_IDX(idx) ((`INTERFACE_IDX)+(idx))
|
`define IF_IDX(idx) ((`INTERFACE_IDX)+(idx))
|
||||||
`define IF_IQSPI(idx) ((idx))
|
`define IF_IQSPI(idx) ((idx))
|
||||||
`define IF_OQSPI(idx) ((`ALL_DEV_NUM * 2) + (idx))
|
`define IF_OQSPI(idx) ((`ALL_DEV_NUM * 2) + (idx))
|
||||||
@@ -931,7 +953,7 @@ task wait_comm_finished(input [16:0] dev_idx);
|
|||||||
txBuf[6] = 8'h00;
|
txBuf[6] = 8'h00;
|
||||||
|
|
||||||
length = 8'h07;
|
length = 8'h07;
|
||||||
idx = `IF_IQSPI(dev_idx);
|
idx = dev_idx;
|
||||||
|
|
||||||
#5
|
#5
|
||||||
@(negedge sck)
|
@(negedge sck)
|
||||||
@@ -948,7 +970,7 @@ task wait_comm_finished(input [16:0] dev_idx);
|
|||||||
while (is_run == 1) begin
|
while (is_run == 1) begin
|
||||||
txBuf[0] = 8'h00;
|
txBuf[0] = 8'h00;
|
||||||
txBuf[1] = 8'h74;
|
txBuf[1] = 8'h74;
|
||||||
if (isAQspi) begin
|
if (dev_idx >=(`ALL_DEV_NUM * 3)) begin
|
||||||
txBuf[2] <= (`SPI_READ | 8'h0);
|
txBuf[2] <= (`SPI_READ | 8'h0);
|
||||||
txBuf[3] <= 8'h04;
|
txBuf[3] <= 8'h04;
|
||||||
length = 8'h08;
|
length = 8'h08;
|
||||||
@@ -960,7 +982,7 @@ task wait_comm_finished(input [16:0] dev_idx);
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
idx = `IF_IDX(dev_idx);
|
idx = dev_idx;
|
||||||
|
|
||||||
#5
|
#5
|
||||||
@(negedge sck)
|
@(negedge sck)
|
||||||
@@ -1019,32 +1041,32 @@ initial begin
|
|||||||
|
|
||||||
begin:SETTING_INTERFACE
|
begin:SETTING_INTERFACE
|
||||||
if ((`INTERFACE_IDX) == `ALL_DEV_NUM) begin
|
if ((`INTERFACE_IDX) == `ALL_DEV_NUM) begin
|
||||||
$fdisplay(spidata_file, "\n\n从内部QSPI配置使用外部的SPI接口访问EasyBus");
|
$fdisplay(spidata_file, "\n\n从SPI配置使用SPI接口访问EasyBus");
|
||||||
txBuf[`ARRAY_IDX_OFF] = 8'h01;
|
txBuf[3] = 8'h01;
|
||||||
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(0)) );
|
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(0)) );
|
||||||
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(1)) );
|
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(1)) );
|
||||||
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(2)) );
|
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(2)) );
|
||||||
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(3)) );
|
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(3)) );
|
||||||
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(4)) );
|
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(4)) );
|
||||||
end else if ((`INTERFACE_IDX) == (`ALL_DEV_NUM * 2)) begin
|
end else if ((`INTERFACE_IDX) == (`ALL_DEV_NUM * 2)) begin
|
||||||
$fdisplay(spidata_file, "\n\n从内部QSPI配置使用外部的QSPI接口访问EasyBus");
|
$fdisplay(spidata_file, "\n\n从SPI配置使用2 QSPI接口访问EasyBus");
|
||||||
txBuf[`ARRAY_IDX_OFF] = 8'h02;
|
txBuf[3] = 8'h02;
|
||||||
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(0)) );
|
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(0)) );
|
||||||
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(1)) );
|
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(1)) );
|
||||||
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(2)) );
|
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(2)) );
|
||||||
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(3)) );
|
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(3)) );
|
||||||
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(4)) );
|
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(4)) );
|
||||||
end else if ((`INTERFACE_IDX) == (`ALL_DEV_NUM * 3)) begin
|
end else if ((`INTERFACE_IDX) == (`ALL_DEV_NUM * 3)) begin
|
||||||
$fdisplay(spidata_file, "\n\n从内部QSPI配置使用外部的ASPI接口访问EasyBus");
|
$fdisplay(spidata_file, "\n\n从SPI配置使用ASPI接口访问EasyBus");
|
||||||
txBuf[`ARRAY_IDX_OFF] = 8'h03;
|
txBuf[3] = 8'h03;
|
||||||
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(0)) );
|
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(0)) );
|
||||||
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(1)) );
|
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(1)) );
|
||||||
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(2)) );
|
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(2)) );
|
||||||
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(3)) );
|
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(3)) );
|
||||||
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(4)) );
|
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(4)) );
|
||||||
end else begin
|
end else begin
|
||||||
$fdisplay(spidata_file, "\n\n从内部QSPI接口访问EasyBus");
|
$fdisplay(spidata_file, "\n\n从SPI配置使用0 QSPI接口访问EasyBus");
|
||||||
txBuf[`ARRAY_IDX_OFF] = 8'h00;
|
txBuf[3] = 8'h00;
|
||||||
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(0)) );
|
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(0)) );
|
||||||
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(1)) );
|
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(1)) );
|
||||||
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(2)) );
|
spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(2)) );
|
||||||
|
|||||||
@@ -241,7 +241,7 @@ def genTrgTransPktCode(gen_name, sm_idx, wlog=True, dev_idx=0):
|
|||||||
|
|
||||||
def genReadAckPktCode(gen_name, sm_idx, wlog=True, dev_idx=0):
|
def genReadAckPktCode(gen_name, sm_idx, wlog=True, dev_idx=0):
|
||||||
return '''\n//等待回包\n'''\
|
return '''\n//等待回包\n'''\
|
||||||
+ '''wait_comm_finished(%d);\n'''%(dev_idx, )\
|
+ '''wait_comm_finished(`IF_IDX(%d));\n'''%(dev_idx, )\
|
||||||
+ f'''$fdisplay(spidata_file, ">>读取回包,使用SM{sm_idx}:");\n'''\
|
+ f'''$fdisplay(spidata_file, ">>读取回包,使用SM{sm_idx}:");\n'''\
|
||||||
+ '''%s( (`MST_RX%d_ADDR), (`SPI_READ), (`DEF_%s_len), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, gen_name, dev_idx)
|
+ '''%s( (`MST_RX%d_ADDR), (`SPI_READ), (`DEF_%s_len), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, gen_name, dev_idx)
|
||||||
|
|
||||||
@@ -278,6 +278,8 @@ def genIFRwDataCode(dev, addr, isWrite = False, data_len=0, data = None, wlog=Tr
|
|||||||
spi_api = "IF_OSPI"
|
spi_api = "IF_OSPI"
|
||||||
elif iface == 2:
|
elif iface == 2:
|
||||||
spi_api = "IF_OQSPI"
|
spi_api = "IF_OQSPI"
|
||||||
|
elif iface == 3:
|
||||||
|
spi_api = "IF_AQSPI"
|
||||||
else:
|
else:
|
||||||
spi_api = "IF_IDX"
|
spi_api = "IF_IDX"
|
||||||
|
|
||||||
@@ -286,9 +288,9 @@ def genIFRwDataCode(dev, addr, isWrite = False, data_len=0, data = None, wlog=Tr
|
|||||||
data=list()
|
data=list()
|
||||||
|
|
||||||
code = ''
|
code = ''
|
||||||
idx = 3
|
idx = 0
|
||||||
for item in data:
|
for item in data:
|
||||||
code = code + '''txBuf[%d]=8'h%02x;\n'''%(idx, item & 0xff)
|
code = code + '''txBuf[`ARRAY_IDX_OFF+%d]=8'h%02x;\n'''%(idx, item & 0xff)
|
||||||
idx = idx + 1
|
idx = idx + 1
|
||||||
|
|
||||||
code = code + '''%s( (16'h%04x), (`SPI_WRITE), (%d), (`%s(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", addr, data_len, spi_api, dev)
|
code = code + '''%s( (16'h%04x), (`SPI_WRITE), (%d), (`%s(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", addr, data_len, spi_api, dev)
|
||||||
|
|||||||
Reference in New Issue
Block a user