?? tb_else.v
字號:
module tb_else;
reg clk;
reg rst;
reg nCS;
reg nWR;
reg nRD;
reg[1:0] A;
reg[7:0] PAS;
reg[7:0] PBS;
reg[7:0] PCS;
reg[7:0] PDS;
wire[7:0] PA;
wire[7:0] PB;
wire[7:0] PC;
wire[7:0] PD;
assign PA=PAS;
assign PB=PBS;
assign PC=PCS;
assign PD=PDS;
initial
fork
clk=0;
rst=0;
nCS=0;
nRD=1;
A=00;
PAS=8'hzz;
PBS=8'hzz;
PCS=8'hzz;
PDS=8'hzz;
#350 $stop;
join
initial
begin
#1 rst=1;
#3 rst=0;
/////////////////////////////////////
#5 A=11;
PDS=8'b1011_1011; //同時決定B口方式
nWR=0;
#5 nWR=1;
PDS=8'hzz;
#5 A=11;
PDS=8'b00001001;
nWR=0;
#5 nWR=1;
PDS=8'hzz; //置位/復位
PCS=8'hzz;
PCS[4]=1'b1;
#5 A=00;
PCS[4]=1'b0;
PAS=8'h55;
#5 PCS[4]=1'b1;
PAS=8'hzz;
#5 nRD=0;
#5 nRD=1; //A口方式1輸入
PCS=8'hzz; //可以修改置位/復位位來開關中斷,經測試都正確
//時序與P347很符合
#5 PCS[6]=1'b1;
PCS[7]=1'b1;
#5 A=2'b10;
nRD=1'b0;
#5 nRD=1'b1; //讀取C口狀態,以及最高兩位數據位,正確;
PCS=8'hzz;
#5 PCS[2:0]=3'b111;
#5 A=2'b10;
nRD=1'b0;
#5 nRD=1'b1;
PCS=8'hzz; //讀取C口狀態,以及低三位數據位,正確;
/////////////////////////////////////////////////////
#5 A=11;
PDS=8'b00001101;
nWR=0;
#5 nWR=1;
PDS=8'hzz; //置位/復位
#5 A=11;
PCS=8'hzz;
PDS=8'b1010_0110;
nWR=0;
#5 nWR=1;
PDS=8'hzz;
PCS[6]=1'b1;
#5 A=00;
nWR=0;
PDS=8'h99;
#5 nWR=1;
PDS=8'hzz;
#5 PCS[6]=1'b0;
#5 PCS[6]=1'b1; //A口方式1輸出
//可以修改置位/復位位來開關中斷,經測試都正確
//時序與P348很符合)
#5 PDS[5:4]=2'b11;
A=2'b10;
nRD=1'b0;
#5 nRD=1'b1; //讀取C口狀態,以及最高兩位數據位,正確;
PCS=8'hzz;
end
A8255 AA (
.rst(rst),
.nCS(nCS),
.nWR(nWR),
.nRD(nRD),
.A(A),
.PA(PA),
.PB(PB),
.PC(PC),
.PD(PD)
);
endmodule
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -