📄 t160b3b.v
字号:
ReadData(`AddrSize'hF8000);
#200
oeb = `VIH;
begin: WriteSuspend_
$display("EMBEDDED WRITE SUSPEND TEST");
#200
StartProgram(`AddrSize'h00000, `MaxOutputs'h00A5);
#200
oeb = `VIH;
#200
oeb = `VIL;
#200
oeb = `VIH;
#((`AC_ProgramTime_Word_27_12/2)*`TimerPeriod_)
Suspend;
#200
SetReadMode;
#200
ReadData(`AddrSize'h01000);
#200
ReadData(`AddrSize'h00F00);
#200
oeb = `VIH;
#500
Resume; //Write Operation
#200
oeb = `VIL;
// #500
#(((`AC_ProgramTime_Word_27_12/2)*`TimerPeriod_)-2000)
begin: Poll
forever
begin
oeb = `VIH;
#500
oeb = `VIL;
#500
if (dq[7] == `VIH)
disable Poll;
end
end
#300
SetReadMode;
#200
ReadData(`AddrSize'h00000);
#200
oeb = `VIH;
end //WriteSuspend_
#300
Resume; //Erase Operation
#200
oeb = `VIL;
#(((`AC_EraseTime_Main_27_12/2)*`TimerPeriod_)-1000)
begin: Poll
forever
begin
oeb = `VIH;
#1000
oeb = `VIL;
#1000
if (dq[7] == `VIH)
disable Poll;
end
end
#200
ClearCSRMode;
#300
SetReadMode;
#200
ReadData(`AddrSize'h03000);
#200
address = `AddrSize'hF0000;
#200
address = `AddrSize'h03FFF;
#200
address = `AddrSize'hF4000;
#200
oeb = `VIH;
end //EraseSuspend_
$display("LOW Vpp OPERATION TEST");
#200
vpp =1300;
#100
ProgramData(`AddrSize'h33333, `MaxOutputs'h3333);
#200
EraseBlock(`AddrSize'hF8F00);
#200
vpp = 12000;
#200
SetReadMode;
#200
ReadData(`AddrSize'h33333);
#200
address = `AddrSize'hF8000;
#200
address = `AddrSize'hFFFFF;
#200
oeb = `VIH;
#1000
powerdown;
#1000 $finish;
end
always @(dq or address or ceb or rpb or oeb or web or wpb or vcc or vpp)
begin
$display(
"%d Addr = %h, Data = %h, CEb=%b, RPb=%b, OEb=%b, WEb=%d, WPb=%b, vcc=%d, vpp = %d",
$time, address, dq, ceb, rpb, oeb, web, wpb, vcc, vpp);
end
task powerup;
begin
$display(" POWERUP TASK");
rpb = `VIL; //reset
#200
address = 0;
#200
web = `VIH; //write enable high
#200
oeb = `VIH; //output ts
#200
ceb = `VIH; //disabled
#200
vcc = 3300; //power up vcc
#5000
vpp = 12000; //ramp up vpp
#5000
rpb = `VIH; //out of reset
#500
wpb = `VIL; //blocks locked
#200
oeb = `VIL; //enable outputs
#200
ceb = `VIL; //enable chip
end
endtask
task powerdown;
begin
$display(" POWERDOWN TASK");
address = 0;
#200
rpb = `VIL; //reset
#200
oeb = `VIH; //output ts
#200
web = `VIH; //we high
#200
ceb = `VIH; //disabled
#200
vpp = 0; //power down vpp
#5000
vcc = 0; //ramp down vcc
end
endtask
task ReadData;
input [`AddrSize-1:0] addr;
begin
$display(" READDATA TASK");
oeb = `VIH;
#200
address = addr;
#200
oeb = `VIL;
end
endtask
task SetReadMode;
begin
$display(" SETREADMODE TASK");
oeb = `VIH;
#200
dq_reg = `ReadArrayCmd;
#200
web = `VIL;
#200
web = `VIH;
#200
dq_reg = `MaxOutputs'hz;
end
endtask
task ReadID;
begin
$display(" READID TASK");
oeb = `VIH;
#200
address = `AddrSize'h0;
#200
dq_reg = `ReadIDCmd;
#200
web = `VIL;
#200
web = `VIH;
#200
dq_reg = `MaxOutputs'hz;
#200
oeb = `VIL;
#200
address = `AddrSize'h1;
end
endtask
task ReadCSRMode;
begin
$display(" READCSR MODE TASK");
oeb = `VIH;
#200
dq_reg = `ReadCSRCmd;
#200
web = `VIL;
#200
web = `VIH;
#200
dq_reg = `MaxOutputs'hz;
#200
oeb = `VIL;
end
endtask
task ClearCSRMode;
begin
$display(" CLEARCSRMODE TASK");
oeb = `VIH;
#200
dq_reg = `ClearCSRCmd;
#200
web = `VIL;
#200
web = `VIH;
#200
dq_reg = `MaxOutputs'hz;
end
endtask
task StartProgram;
input [`AddrSize-1:0] addr;
input [`MaxOutputs-1:0] data;
begin
$display(" STARTPROGRAM TASK");
#200
address = addr;
#200
dq_reg = `Program2Cmd;
#200
web = `VIL;
#200
web = `VIH;
#200
dq_reg = data;
#200
web = `VIL;
#200
web = `VIH;
#200
dq_reg = `MaxOutputs'hz;
end
endtask
task ProgramData;
input [`AddrSize-1:0] addr;
input [`MaxOutputs-1:0] data;
begin
$display(" PROGRAMDATA TASK");
StartProgram(addr, data);
#200
oeb = `VIL;
#((`AC_ProgramTime_Word_27_12*`TimerPeriod_)-500)
begin: Poll
forever
begin
oeb = `VIH;
#200
oeb = `VIL;
#200
if (dq[7] == `VIH)
disable Poll;
end //forever
end //Poll
#300
ClearCSRMode;
end
endtask
task StartProgram2;
input [`AddrSize-1:0] addr;
input [`MaxOutputs-1:0] data;
begin
$display(" STARTPROGRAM2 TASK");
#200
address = addr;
#200
dq_reg = `Program2Cmd;
#200
web = `VIL;
#10
ceb = `VIL;
#200
ceb = `VIH;
#10
web = `VIH;
#200
dq_reg = data;
#200
web = `VIL;
#10
ceb = `VIL;
#200
ceb = `VIH;
#10
web = `VIH;
#200
ceb = `VIL;
dq_reg = `MaxOutputs'hz;
end
endtask
task ProgramData2;
input [`AddrSize-1:0] addr;
input [`MaxOutputs-1:0] data;
begin
$display(" PROGRAMDATA2 TASK");
ceb = `VIH;
StartProgram2(addr, data);
#200
oeb = `VIL;
#((`AC_ProgramTime_Word_27_12*`TimerPeriod_)-500)
begin: Poll
forever
begin
oeb = `VIH;
#200
oeb = `VIL;
#200
if (dq[7] == `VIH)
disable Poll;
end //forever
end //Poll
#300
ClearCSRMode;
end
endtask
task StartErase;
input [`AddrSize-1:0] BlockAddr;
begin
$display(" STARTERASE TASK");
#200
address = BlockAddr;
#200
dq_reg = `EraseBlockCmd;
#200
web = `VIL;
#200
web = `VIH;
#200
dq_reg = `ConfirmCmd;
#200
web = `VIL;
#200
web = `VIH;
#200
dq_reg = `MaxOutputs'hz;
end
endtask
task EraseBlock;
input [`AddrSize-1:0] BlockAddr;
time EraseTime;
begin
$display(" ERASEBLOCK TASK");
StartErase(BlockAddr);
#200
oeb = `VIL;
if (BlockAddr < `AddrSize'h08000)
EraseTime = ((`AC_EraseTime_Param_27_12*`TimerPeriod_)-5000);
else
EraseTime = ((`AC_EraseTime_Main_27_12*`TimerPeriod_)-5000);
#EraseTime
begin: Poll
forever
begin
oeb = `VIH;
#1000
oeb = `VIL;
#1000
if (dq[7] == `VIH)
disable Poll;
end //forever
end //Poll
#300
ClearCSRMode;
end
endtask
task Suspend;
begin
$display(" SUSPEND TASK");
#200
dq_reg = `SuspendCmd;
#200
web = `VIL;
#200
web = `VIH;
#200
dq_reg = `MaxOutputs'hz;
#200
oeb = `VIL;
#3000
begin: Poll
forever
begin
oeb = `VIH;
#500
oeb = `VIL;
#500
if (dq[7] == `VIH)
disable Poll;
end //forever
end //Poll
#300
ClearCSRMode;
end
endtask
task Resume;
begin
$display(" RESUME TASK");
#200
dq_reg = `ResumeCmd;
#200
web = `VIL;
#200
web = `VIH;
#200
dq_reg = `MaxOutputs'hz;
/* #200
oeb = `VIL;
#(((`AC_EraseTime_Main_27_12/2)*`TimerPeriod_)-1000)
begin: Poll
forever
begin
oeb = `VIH;
#1000
oeb = `VIL;
#1000
if (dq[7] == `VIH)
disable Poll;
end //forever
end //Poll
#300
ClearCSRMode;
*/
end
endtask
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -