⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tb_else.v

📁 采用Verilog语言实现了8255A的功能
💻 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;
    	nWR=1;
    	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 + -