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

📄 t8255a.v

📁 采用Verilog语言实现了8255A的功能
💻 V
字号:
/*
   //*************************************************************************
   // Project Name: 8255A的功能设计和分析
   // Module Name :	T8255A
   // Author:		    张文涛
   // Created:		  2006-10-25
   // Modified:     2006-10-29
   // Revision:		  3.0
   //
   //*************************************************************************
   // 需要注意的地方:1.可以根据具体要求直接将总线与其它模块相接            
   //*************************************************************************
*/

module  T8255A       (        
                      rst,
                      nCS,
                      nRD,
                      nWR,
                      A,
                      Din,
                      PA_In,
                      PB_In,
                      PC_In,
                      
                      //output
                      Data_En,
                      PortA_IO_En,
                      PortB_IO_En,
                      PortC_IO_En,
                      Dout,
                      PA_Out,
                      PB_Out,
                      PC_Out
                      );
                      
  //------端口声明-----
  input        rst;
  input        nCS;
  input        nRD;
  input        nWR;
  input[1:0]   A;
  input[7:0]   Din;
  input[7:0]   PA_In;
  input[7:0]   PB_In;
  input[7:0]   PC_In;
  
  output       Data_En;
  output       PortA_IO_En;
  output       PortB_IO_En;
  output[7:0]  PortC_IO_En; 
  output[7:0]  Dout;
  output[7:0]  PA_Out;
  output[7:0]  PB_Out;
  output[7:0]  PC_Out;
  
  //-----内部变量-----
  wire          reset;
  wire          PortA_In_Ld;
  wire          PortB_In_Ld;
  wire          PortA_Out_Ld;
  wire          PortB_Out_Ld;
  wire[7:0]     PortC_Out_Ld;
  wire[6:0]     Control_Data;
  wire[1:0]     Dout_Select;
  wire[7:0]     PA_In_Buf;
  wire[7:0]     PB_In_Buf;
  wire[7:0]     PortC_Status;
  
  assign reset = (nCS)?1'b1:rst;     
   
  //-----实例化-----
  Control_Logic U1    (//input
                      .reset(reset),
                      .nRD(nRD),
                      .nWR(nWR),
                      .A(A),
                      .Din(Din),
                      .nSTBA(PC_In[4]),
                      .nSTBB(PC_In[2]),
                      .nACKA(PC_In[6]),
                      .nACKB(PC_In[2]),
                      
                      //output
                      .Data_En(Data_En),
                      .PortA_IO_En(PortA_IO_En),
                      .PortB_IO_En(PortB_IO_En),
                      .PortC_IO_En(PortC_IO_En),
                      .PortA_In_Ld(PortA_In_Ld),
                      .PortB_In_Ld(PortB_In_Ld),
                      .PortA_Out_Ld(PortA_Out_Ld),
                      .PortB_Out_Ld(PortB_Out_Ld),
                      .PortC_Out_Ld(PortC_Out_Ld),
                      .Control_Data(Control_Data),
                      .Dout_Select(Dout_Select)
                      ); 
                      
  Dout_Mux      U2  (//input
                     .reset(reset),
                     .PA_In_Buf(PA_In_Buf),
                     .PB_In_Buf(PB_In_Buf),
                     .PortC_Status(PortC_Status),
                     .Dout_Select(Dout_Select),
                     
                     //output
                     .Dout(Dout)
                     );
                     
  PC_IO         U3  (//input
                     .reset(reset),
                     .nRD(nRD),
                     .nWR(nWR),
                     .A(A),
                     .Din(Din),
                     .PC_In(PC_In),
                     .Control_Data(Control_Data),
                     .PortC_Out_Ld(PortC_Out_Ld),
              
                     //output
                     .PortC_Status(PortC_Status),
                     .PC_Out(PC_Out)
                     );  
                     
  PortA_In      U4   (
                     .reset(reset),
                     .PA_In(PA_In),
                     .PortA_In_Ld(PortA_In_Ld),
                     .PA_In_Buf(PA_In_Buf)
                     );       
                     
  PortA_Out     U5   (
                     .reset(reset),
                     .Din(Din),
                     .PortA_Out_Ld(PortA_Out_Ld),
                     .PA_Out(PA_Out)
                     );
                     
  PortB_In      U6  (
                     .reset(reset),
                     .PB_In(PB_In),
                     .PortB_In_Ld(PortB_In_Ld),
                     .PB_In_Buf(PB_In_Buf)
                     );
                     
  PortB_Out     U7  (
                    .reset(reset),
                    .Din(Din),
                    .PortB_Out_Ld(PortB_Out_Ld),
                    .PB_Out(PB_Out)
                    );
endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -