📄 tb_top_8255.v
字号:
link_bus_b=0;
//--------写C口-------------------
#10 cs_n=0;
a1=1;
a0=0;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'hff;
#10 cpu_data=8'h10;
#10 cpu_data=8'h01;
#10 cs_n=1;
cpu_data=8'b10101010;
#10 cs_n=0;
#10 cs_n=1;
link_bus_cpu=0;
//--------对C口进行置位复位---------
#10 cs_n=0;
a1=1;
a0=1;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'b00001110;
#10 cs_n=1;
#10 cs_n=0;
cpu_data=8'h01;
#10 cpu_data=8'b00001101;
#10 cs_n=1;
link_bus_cpu=0;
//--------再写C口-------------------
#10 cs_n=0;
a1=1;
a0=0;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'hff;
#10 cpu_data=8'h10;
#10 cpu_data=8'h01;
#10 cs_n=1;
cpu_data=8'b10101010;
#10 cs_n=0;
#10 cs_n=1;
link_bus_cpu=0;
//------13----A口输出,B口输入,C口上半部输出,下半部输入--------------------------
//----------------写入控制字---
#20 cs_n=0;
a1=1;
a0=1;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'b10000011;
#10 cs_n=1;
link_bus_cpu=0;
//----------写A口--------------
#10 cs_n=0;
a1=0;
a0=0;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'hf0;
#10 cpu_data=8'h0f;
#10 cpu_data=8'h01;
#10 cs_n=1;
cpu_data=8'b10101010;
#10 cs_n=0;
#10 cs_n=1;
link_bus_cpu=0;
//从B口读数据
#10 cs_n=0;
a0=1;
link_bus_b=1;
#40 cs_n=1;
link_bus_b=0;
//-----C口上半部输出------
#10 cs_n=0;
a1=1;
a0=0;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'hf0;
#10 cpu_data=8'h10;
#10 cpu_data=8'h01;
#10 cs_n=1;
cpu_data=8'b10101010;
#10 cs_n=0;
#10 cs_n=1;
link_bus_cpu=0;
//----C口下半部输入------
#10 cs_n=0;
a0=0;
a1=1;
rd_n=0;
wr_n=1;
lk_bus_c_lower=1;
#40 cs_n=1;
lk_bus_c_lower=0;
//--------对C口进行置位复位---------
#10 cs_n=0;
a1=1;
a0=1;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'b00001111;
#10 cs_n=1;
#10 cs_n=0;
cpu_data=8'b00001110;
#10 cpu_data=8'b00001101;
#10 cs_n=1;
link_bus_cpu=0;
//-----再C口上半部输出------
#10 cs_n=0;
a1=1;
a0=0;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'hf0;
#10 cpu_data=8'h10;
#10 cpu_data=8'h01;
#10 cs_n=1;
cpu_data=8'b10101010;
#10 cs_n=0;
#10 cs_n=1;
link_bus_cpu=0;
//------14----A口输出,B口输入,C口上半部输入,下半部输出--------------------------
//----------------写入控制字---
#20 cs_n=0;
a1=1;
a0=1;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'b10001010;
#10 cs_n=1;
link_bus_cpu=0;
//----------写A口--------------
#10 cs_n=0;
a1=0;
a0=0;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'hf0;
#10 cpu_data=8'h0f;
#10 cpu_data=8'h01;
#10 cs_n=1;
cpu_data=8'b10101010;
#10 cs_n=0;
#10 cs_n=1;
link_bus_cpu=0;
//从B口读数据
#10 cs_n=0;
a0=1;
link_bus_b=1;
#40 cs_n=1;
link_bus_b=0;
//-----C口下半部输出------
#10 cs_n=0;
a1=1;
a0=0;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'h0f;
#10 cpu_data=8'h11;
#10 cpu_data=8'h03;
#10 cs_n=1;
cpu_data=8'b10101010;
#10 cs_n=0;
#10 cs_n=1;
link_bus_cpu=0;
//----C口上半部输入------
#10 cs_n=0;
a0=0;
a1=1;
rd_n=0;
wr_n=1;
lk_bus_c_upper=1;
#40 cs_n=1;
lk_bus_c_upper=0;
//--------对C口进行置位复位---------
#10 cs_n=0;
a1=1;
a0=1;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'b00000000;
#10 cs_n=1;
#10 cs_n=0;
cpu_data=8'b00000101;
#10 cpu_data=8'b00000111;
#10 cs_n=1;
link_bus_cpu=0;
//-----再C口下半部输出------
#10 cs_n=0;
a1=1;
a0=0;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'h0f;
#10 cpu_data=8'h13;
#10 cpu_data=8'h07;
#10 cs_n=1;
cpu_data=8'b10101010;
#10 cs_n=0;
#10 cs_n=1;
link_bus_cpu=0;
//------15----A口输出,B口输出,C口上半部输入,下半部输出--------------------------
//----------------写入控制字---
#20 cs_n=0;
a1=1;
a0=1;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'b10001000;
#10 cs_n=1;
link_bus_cpu=0;
//----------写A口--------------
#10 cs_n=0;
a1=0;
a0=0;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'hf0;
#10 cpu_data=8'h0f;
#10 cpu_data=8'h01;
#10 cs_n=1;
cpu_data=8'b10101010;
#10 cs_n=0;
#10 cs_n=1;
link_bus_cpu=0;
//---------写B口---------------
#10 cs_n=0;
a1=0;
a0=1;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'hff;
#10 cpu_data=8'h10;
#10 cpu_data=8'h01;
#10 cs_n=1;
cpu_data=8'b10101010;
#10 cs_n=0;
#10 cs_n=1;
link_bus_cpu=0;
//----C口上半部输入------
#10 cs_n=0;
a0=0;
a1=1;
rd_n=0;
wr_n=1;
lk_bus_c_upper=1;
#40 cs_n=1;
lk_bus_c_upper=0;
//--------对C口进行置位复位---------
#10 cs_n=0;
a1=1;
a0=1;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'b00000000;
#10 cs_n=1;
#10 cs_n=0;
cpu_data=8'b00000101;
#10 cpu_data=8'b00000111;
#10 cs_n=1;
link_bus_cpu=0;
//-----再C口下半部输出------
#10 cs_n=0;
a1=1;
a0=0;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'h0f;
#10 cpu_data=8'h13;
#10 cpu_data=8'h07;
#10 cs_n=1;
cpu_data=8'b10101010;
#10 cs_n=0;
#10 cs_n=1;
link_bus_cpu=0;
//------15----A口输出,B口输出,C口上半部输出,下半部输入--------------------------
//----------------写入控制字---
#20 cs_n=0;
a1=1;
a0=1;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'b10000001;
#10 cs_n=1;
link_bus_cpu=0;
//----------写A口--------------
#10 cs_n=0;
a1=0;
a0=0;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'hf0;
#10 cpu_data=8'h0f;
#10 cpu_data=8'h01;
#10 cs_n=1;
cpu_data=8'b10101010;
#10 cs_n=0;
#10 cs_n=1;
link_bus_cpu=0;
//---------写B口---------------
#10 cs_n=0;
a1=0;
a0=1;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'hff;
#10 cpu_data=8'h10;
#10 cpu_data=8'h01;
#10 cs_n=1;
cpu_data=8'b10101010;
#10 cs_n=0;
#10 cs_n=1;
link_bus_cpu=0;
//-----C口上半部输出------
#10 cs_n=0;
a1=1;
a0=0;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'hf0;
#10 cpu_data=8'h10;
#10 cpu_data=8'h01;
#10 cs_n=1;
cpu_data=8'b10101010;
#10 cs_n=0;
#10 cs_n=1;
link_bus_cpu=0;
//----C口下半部输入------
#10 cs_n=0;
a0=0;
a1=1;
rd_n=0;
wr_n=1;
lk_bus_c_lower=1;
#40 cs_n=1;
lk_bus_c_lower=0;
//--------对C口进行置位复位---------
#10 cs_n=0;
a1=1;
a0=1;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'b00001111;
#10 cs_n=1;
#10 cs_n=0;
cpu_data=8'b00001110;
#10 cpu_data=8'b00001101;
#10 cs_n=1;
link_bus_cpu=0;
//-----再C口上半部输出------
#10 cs_n=0;
a1=1;
a0=0;
wr_n=0;
rd_n=1;
link_bus_cpu=1;
cpu_data=8'hf0;
#10 cpu_data=8'h10;
#10 cpu_data=8'h01;
#10 cs_n=1;
cpu_data=8'b10101010;
#10 cs_n=0;
#10 cs_n=1;
link_bus_cpu=0;
#10 $stop;
end
//与8255的数据总线和A、B、C口总线的数据的产生
assign data_bus=(link_bus_cpu)?cpu_data:8'hzz;
assign a_bus=(link_bus_a)?a_per_data:8'hzz;
assign b_bus=(link_bus_b)?b_per_data:8'hzz;
assign c_bus[3:0]=(lk_bus_c_lower)?c_per_data[3:0]:4'hz;
assign c_bus[7:4]=(lk_bus_c_upper)?c_per_data[7:4]:4'hz;
always #25 a_per_data=a_per_data+2;
always #25 b_per_data=b_per_data+2;
always #25 c_per_data=c_per_data+2;
top_8255 abcd(//input control signal
.rst_n(rst_n),
.cs_n(cs_n),
.a1(a1),
.a0(a0),
.wr_n(wr_n),
.rd_n(rd_n),
//data bus
.data_bus(data_bus),
.a_bus(a_bus),
.b_bus(b_bus),
.c_bus(c_bus)
);
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -