亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? control_logic.v

?? 采用Verilog語言實現了8255A的功能
?? V
字號:
/*
   //*************************************************************************
   // Project Name: 8255A的功能設計和分析
   // Module Name :	Control_Logic
   // Author:		    張文濤
   // Created:		  2006-10-25
   // Modified:     2006-10-29
   // Revision:		  3.0
   //
   //*************************************************************************
   // 需要注意的地方:1.Port_En在等于0時允許輸入,等于1時允許輸出;
   //                2.Port_Ld在等于0時有效,允許數據IO;
   //                3.PortA_IO=0時為輸入,=1時為輸出,與控制字中相反; 
   //*************************************************************************
*/

module  Control_Logic(//input
                      reset,
                      nRD,
                      nWR,
                      A,
                      Din,
                      nSTBA,
                      nSTBB,
                      nACKA,
                      nACKB,
                      
                      //output
                      Data_En,
                      PortA_IO_En,
                      PortB_IO_En,
                      PortC_IO_En,
                      PortA_In_Ld,
                      PortB_In_Ld,
                      PortA_Out_Ld,
                      PortB_Out_Ld,
                      PortC_Out_Ld,
                      Control_Data,
                      Dout_Select
                      );
  
  //-----端口聲明-----                    
  input        reset;                                       //復位信號,高電平有效;
  input        nRD;                                         //讀信號,低電平有效;
  input        nWR;                                         //寫信號,低電平有效;
  input[1:0]   A;                                           //地址信號;
  input[7:0]   Din;                                         //數據口,與CPU通信;
  input        nSTBA;                                       //A口選通信號,由外設輸入;
  input        nSTBB;                                       //B口選通信號,由外設輸入;
  input        nACKA;                                       //A口應答信號,由外設輸入;
  input        nACKB;                                       //B口應答信號,由外設輸入;
  
  output       Data_En;                                     //Data總線選擇信號;
  output       PortA_IO_En;                                 //A口總線選擇信號;
  output       PortB_IO_En;                                 //B口總線選擇信號;
  output[7:0]  PortC_IO_En;                                 //C口總線選擇信號;
  output       PortA_In_Ld;                                 //A口輸入允許信號;
  output       PortB_In_Ld;                                 //B口輸入允許信號;
  output       PortA_Out_Ld;                                //A口輸出允許信號;
  output       PortB_Out_Ld;                                //B口輸出允許信號;
  output[7:0]  PortC_Out_Ld;                                //C口輸出允許信號;
  output[6:0]  Control_Data;                                //給PC_IO的控制信號;
  output[1:0]  Dout_Select;                                 //給Dout_Mux的選擇信號;
  
  //-----內部寄存器聲明-----
  reg          Data_En;
  reg          PortA_IO_En;
  reg          PortB_IO_En;
  reg[7:0]     PortC_IO_En; 
  reg          PortA_In_Ld;
  reg          PortB_In_Ld;
  reg          PortA_Out_Ld;
  reg          PortB_Out_Ld;
  reg[7:0]     PortC_Out_Ld;
  reg[6:0]     Control_Data;
  reg[1:0]     Dout_Select;
  
  reg          Control_Flag;                                //方式選擇控制字標志位;
  reg[1:0]     ModeA;                                       //A口方式;
  reg          PortA_IO;                                    //A口I/O;
  reg          PortC_Up_IO;                                 //C口高四位I/O;
  reg          ModeB;                                       //B口方式
  reg          PortB_IO;                                    //B口I/O;
  reg          PortC_Low_IO;                                //C口低四位I/O;
  reg[2:0]     BitSelect;                                   //置位/復位位選擇;
  reg          PortC_RS;                                    //置位/復位;
  
  ////////////////////////////控制字寄存器賦值/////////////////////////////
  
  //-----控制字標志位-----
  always @ (reset or A or nWR or Din)
    if(reset)
        Control_Flag = 1'b0;
    else if(A==2'b11 && Din[7]==1'b0)
        Control_Flag = 1'b0;
    else
        Control_Flag = 1'b1;
        
   //-----A口方向-----      
   always @ (reset or A or nWR or Din)
    if(reset)
          PortA_IO = 1'b0;
    else if(A==2'b11 && nWR==1'b0 && Din[7]==1'b1 && ModeA!=2'b10)
          PortA_IO = ~Din[4];
    else if(ModeA==2'b10)
      begin
        if(nSTBA==1'b0)
          PortA_IO = 1'b0;
        else if(nACKA==1'b0)
          PortA_IO = 1'b1;
        else 
          PortA_IO = PortA_IO;
      end
    else
          PortA_IO = PortA_IO;
  
  //-----方式選擇控制字-----    
  always @ (reset or A or nWR or Din)
    if(reset)
      begin	                                            
      	ModeA = 2'b00;                                      //復位,寄存器全部清零;
      	PortC_Up_IO = 1'b0;
      	ModeB = 1'b0;
      	PortB_IO =1'b0;
      	PortC_Low_IO =1'b0; 	
     end
    else if(A==2'b11 && nWR==1'b0 && Din[7]==1'b1)          //方式選擇控制字;
      begin
      	PortC_Up_IO = ~Din[3];
      	ModeB = Din[2];
      	PortB_IO = ~Din[1];
      	PortC_Low_IO = ~Din[0];
      	ModeA = (Din[6])?2'b10:{Din[6:5]};    	
      end
    else                                                    //其它情況鎖存原值;
      begin
      	ModeA = ModeA;
      	PortC_Up_IO = PortC_Up_IO;
      	ModeB = ModeB;
      	PortB_IO = PortB_IO;
      	PortC_Low_IO = PortC_Low_IO;
      end
  
  //-----置位/復位控制字-----   
  always @ (reset or A or nWR or Din)
    if(reset)
      begin
        BitSelect = 3'b000;
      	PortC_RS = 1'b0;
      end
    else if(A==2'b11 && nWR==1'b0 && Din[7]==1'b0) 
      begin
        BitSelect = Din[3:1];
      	PortC_RS = Din[0];
      end
    else
      begin
      	BitSelect = 3'b000;
      	PortC_RS = 1'b0;
      end
  
  ////////////////////////////輸入輸出選擇Port_En/////////////////////////////////
  
  //-----Data_En-----
  always @ (reset or nRD or nWR)
    if(reset)
      Data_En = 1'b0;
    else if(!nWR)
      Data_En = 1'b0;
    else if(!nRD)
      Data_En = 1'b1;
    else
      Data_En = 1'b0;
  
  //-----PortA_IO_En-----
  always @ (reset or ModeA or PortA_IO or nACKA)
    if(reset)                                               //復位清0;
      PortA_IO_En = 1'b0;                                 
    else                                                    //由輸入輸出方向決定;
      PortA_IO_En = PortA_IO;                  
           
  //-----PortB_IO_En-----                                   
  always @ (reset or ModeB or PortB_IO)
    if(reset)                                               //復位清0;
      PortB_IO_En = 1'b0;
    else                                                    //由輸入輸出方向決定;
      PortB_IO_En = PortB_IO;
  
  //-----PortC_IO_En-----                                   
  always @ (reset or ModeB or PortC_Low_IO)
    if(reset)                                               //低三位,由B口決定;
      PortC_IO_En[2:0] = 3'b000;                             
    else if(ModeB==1'b1)                                    //B口方式1;
      PortC_IO_En[2:0] = {1'b0,1'b1,1'b1};
    else                                                    //B口方式0;
      PortC_IO_En[2:0] = {3{PortC_Low_IO}};                 
                                                              
     
  always @ (reset or ModeA or PortC_Up_IO or PortC_Low_IO or PortA_IO)
    if(reset)                                               //高5位,由A口決定;
          PortC_IO_En[7:3] = 5'b00000;                        
    else if(ModeA==2'b10)                                   //A口方式2;
          PortC_IO_En[7:3] = 5'b10101;          
    else if(ModeA==2'b01)                                   //A口方式1,與方向有關;                   
      begin
      	if(PortA_IO==1'b0)                                  //A口方式1輸入;
      	  PortC_IO_En[7:3] = {{2{PortC_Up_IO}},1'b1,1'b0,1'b1};
      	else                                                //A口方式2輸入;
      	  PortC_IO_En[7:3] = {1'b1,1'b0,{2{PortC_Up_IO}},1'b1};
      end   
    else                                                    //A口方式0;
          PortC_IO_En[7:3] = {{4{PortC_Up_IO}},PortC_Low_IO};

  ////////////////////////////鎖存允許Port_Ld///////////////////////////
  
  //-----PortA_In_Ld-----
  always @ (reset or A or PortA_IO or nSTBA)
    if(reset)
      PortA_In_Ld = 1'b0;                                   //復位清0;
    else if(ModeA==2'b00 && A==2'b00 && PortA_IO==1'b0)     //A口選中,數據輸入,方式0;
      PortA_In_Ld = 1'b0;
    else if(ModeA!=2'b00 && A==2'b00 && PortA_IO==1'b0 && nSTBA==1'b0)
      PortA_In_Ld = 1'b0;                                   //A口選中,數據輸入,方式1/2,應答信號有效;
    else
      PortA_In_Ld = 1'b1;                                   //其它情況;
      
  //-----PortB_In_Ld-----
  always @ (reset or A or PortB_IO or nSTBB)                
    if(reset)                                               //復位清0;
      PortB_In_Ld = 1'b0;
    else if(ModeA==2'b00 && A==2'b01 && PortB_IO==1'b0)     //B口選中,數據輸入;
      PortB_In_Ld = 1'b0;     
    else if(ModeA!=2'b00 && A==2'b01 && PortB_IO==1'b0 && nSTBB==1'b0)
      PortB_In_Ld = 1'b0;                                   //B口選中,數據輸入,方式1/2,應答信號有效;
    else                                                    //其它情況;
      PortB_In_Ld = 1'b1;
                          
  
  //-----PortA_Out_Ld-----
  always @ (reset or A or PortA_IO)
    if(reset)                                               //復位清0;
      PortA_Out_Ld = 1'b0;
    else if(A==2'b00 && PortA_IO==1'b1)                     //A口選中,數據輸出;
      PortA_Out_Ld = 1'b0;
    else                                                    //其它情況;
      PortA_Out_Ld = 1'b1;   
      
  //-----PortB_Out_Ld-----                           
  always @ (reset or A or PortB_IO)              
    if(reset)                                               //復位清0;
      PortB_Out_Ld = 1'b0;                      
    else if(A==2'b01 && PortB_IO==1'b1)                     //B口選中,數據輸出;                 
      PortB_Out_Ld = 1'b0;     
    else                                                    //其它情況;
      PortB_Out_Ld = 1'b1;                   
         
  //-----PortC_Out_Ld-----
  always @ (reset or Control_Flag or ModeA or ModeB or Din[3:0] or PortA_IO)
    if(reset)
                    PortC_Out_Ld = 8'b00000_000;
    else if(Control_Flag==0)                                //置位復位選擇控制字,相應位為0;
      begin
      	case(Din[3:1])
      	  3'b000:   PortC_Out_Ld = 8'b11111110 ;
      	  3'b001:   PortC_Out_Ld = 8'b11111101 ;
      	  3'b010:   PortC_Out_Ld = 8'b11111011 ;
      	  3'b011:   PortC_Out_Ld = 8'b11110111 ;
      	  3'b100:   PortC_Out_Ld = 8'b11101111 ;
      	  3'b101:   PortC_Out_Ld = 8'b11011111 ;
      	  3'b110:   PortC_Out_Ld = 8'b10111111 ;
      	  3'b111:   PortC_Out_Ld = 8'b01111111 ;
      	  default:  PortC_Out_Ld = 8'b11111111 ;
        endcase     
      end
    else                                                    //方式選擇控制字,作數據IO的相應位為0;
      if(ModeA==2'b00 && ModeB==1'b0)                       //A口方式0,B口方式0;
                    PortC_Out_Ld = 8'b00000000;
      else if(ModeA==2'b00 && ModeB==1'b1)                  //A口方式0,B口方式1;
                    PortC_Out_Ld = 8'b00000111;
      else if(ModeA==2'b01 && PortA_IO==1'b0 && ModeB==1'b0)//A口方式1輸入,B口方式0;
                    PortC_Out_Ld = 8'b00111000;
      else if(ModeA==2'b01 && PortA_IO==1'b0 && ModeB==1'b1)//A口方式1輸入,B口方式1;
                    PortC_Out_Ld = 8'b00111111;
      else if(ModeA==2'b01 && PortA_IO==1'b1 && ModeB==1'b0)//A口方式1輸出,B口方式0;
                    PortC_Out_Ld = 8'b11001000;
      else if(ModeA==2'b01 && PortA_IO==1'b1 && ModeB==1'b1)//A口方式1輸出,B口方式1;
                    PortC_Out_Ld = 8'b11001111;
      else if(ModeA==2'b10 && ModeB==1'b0)                  //A口方式2,B口方式0;
                    PortC_Out_Ld = 8'b11111000;
      else if(ModeA==2'b10 && ModeB==1'b1)                  //A口方式2,B口方式1;
                    PortC_Out_Ld = 8'b11111111;
      else                                                  //其它情況;
                    PortC_Out_Ld = 8'b00000000;
  
  ////////////////////////////其它/////////////////////////////
  
  //-----Control_Data-----
  always @ (reset or Control_Flag or ModeA or ModeB or PortA_IO or PortB_IO)
    if(reset)                                               //輸出給PC_IO的控制信號;
      Control_Data = 7'b0000000;                    
    else
      Control_Data = {PortC_RS,Control_Flag,ModeA,ModeB,PortA_IO,PortB_IO};
      
  //-----Dout_Select-----                                   //輸出給Dout_Mux的選擇信號;
  always @ (reset or A or nRD)
    if(reset)
                   Dout_Select = 2'b00;
    else if(nRD==1'b0)
      case(A)
        2'b00:     Dout_Select = 2'b00;
        2'b01:     Dout_Select = 2'b01;
        2'b10:     Dout_Select = 2'b10;
        default:   Dout_Select = 2'b00;
      endcase
    else
                   Dout_Select = Dout_Select;
endmodule 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱色国产精品免费视频| 日韩av中文字幕一区二区三区| 日韩欧美国产成人一区二区| 欧美亚洲一区三区| 欧美性xxxxxxxx| 欧美亚州韩日在线看免费版国语版| 91福利视频在线| 欧美在线观看一二区| 欧美专区在线观看一区| 日本韩国欧美国产| 欧美少妇bbb| 91麻豆精品国产91久久久更新时间| 欧美精品第1页| 5566中文字幕一区二区电影| 欧美一区二区在线免费观看| 欧美成人国产一区二区| 国产欧美一区二区三区鸳鸯浴 | 日韩欧美区一区二| 久久女同互慰一区二区三区| 久久夜色精品一区| 国产精品网友自拍| 亚洲男女一区二区三区| 亚洲成人av免费| 国产精品一区二区果冻传媒| www.亚洲国产| 4438x亚洲最大成人网| 久久久久久久综合| 一区二区三区视频在线看| 天天操天天干天天综合网| 国产综合色产在线精品| 99麻豆久久久国产精品免费| 制服丝袜中文字幕一区| 国产欧美日韩一区二区三区在线观看| 一区二区三区欧美视频| 免费人成精品欧美精品| av电影天堂一区二区在线观看| 欧美日韩综合色| 欧美国产精品劲爆| 舔着乳尖日韩一区| 91丝袜国产在线播放| 欧美大片在线观看| 亚洲免费视频成人| 国产精品白丝jk白祙喷水网站| 91美女在线观看| 精品国产精品网麻豆系列| 一区二区三区在线不卡| 国产精品2024| 日韩免费观看2025年上映的电影| 亚洲狼人国产精品| 国产美女主播视频一区| 日韩视频在线永久播放| 夜色激情一区二区| 99re热这里只有精品视频| 久久免费看少妇高潮| 日韩vs国产vs欧美| 欧美精品三级在线观看| 亚洲乱码国产乱码精品精的特点| 国产一区二区三区免费| 欧美一卡在线观看| 婷婷成人激情在线网| 在线观看不卡视频| 亚洲欧美综合另类在线卡通| 国产福利电影一区二区三区| 亚洲精品一区二区在线观看| 五月综合激情日本mⅴ| 欧美性受极品xxxx喷水| 亚洲精品一卡二卡| 日本精品一级二级| 亚洲女同ⅹxx女同tv| 99久久伊人精品| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产拍欧美日韩视频二区 | 国产免费观看久久| 韩国精品免费视频| 欧美精品一区二区高清在线观看| 午夜伦欧美伦电影理论片| 欧美在线啊v一区| 亚洲一区二区视频在线| 在线一区二区三区四区五区| 亚洲男人的天堂在线观看| 色综合天天性综合| 一区二区三区精品久久久| 在线观看免费成人| 日韩高清不卡一区二区| 日韩亚洲欧美综合| 国产乱对白刺激视频不卡| 2020国产精品久久精品美国| 国产成人激情av| 中文字幕在线观看不卡视频| 成人av资源站| 一区二区三区精品久久久| 欧美日韩国产大片| 精品综合免费视频观看| 精品国产99国产精品| 成人综合婷婷国产精品久久免费| 国产精品久久久久四虎| 精品视频1区2区3区| 久久99精品国产.久久久久| 日本一区二区三区dvd视频在线| 国产a精品视频| 亚洲视频精选在线| 777午夜精品免费视频| 国产剧情一区在线| 亚洲一区二区在线观看视频| 91精品国产一区二区三区| 高清成人在线观看| 婷婷久久综合九色综合伊人色| 久久一留热品黄| 欧美日韩小视频| 国产精品综合av一区二区国产馆| 亚洲天天做日日做天天谢日日欢 | 日韩 欧美一区二区三区| 久久婷婷国产综合精品青草| 99精品久久99久久久久| 蜜臀av性久久久久av蜜臀妖精| 国产精品国产三级国产aⅴ入口 | 日韩一区在线看| 宅男噜噜噜66一区二区66| 成人三级在线视频| 青青国产91久久久久久| 亚洲欧洲综合另类| 日韩久久久精品| 欧美主播一区二区三区美女| 国产不卡视频在线观看| 视频一区二区中文字幕| 亚洲天堂免费在线观看视频| 欧美成人激情免费网| 欧美三级电影网| 色噜噜狠狠色综合欧洲selulu| 黑人巨大精品欧美黑白配亚洲| 午夜影院久久久| 亚洲精品成人a在线观看| 欧美激情在线一区二区| 精品第一国产综合精品aⅴ| 欧美三级中文字| 色婷婷综合在线| 成人白浆超碰人人人人| 国产一区二区视频在线| 日韩在线一二三区| 亚洲午夜久久久久久久久电影网| 中文字幕一区二区三区四区不卡| 久久综合久久综合久久综合| 欧美一级理论片| 日韩一区二区在线观看视频播放| 欧美亚洲图片小说| 欧美婷婷六月丁香综合色| 99久久国产免费看| av亚洲精华国产精华精华| 国产成人免费高清| 国产91露脸合集magnet | 自拍偷拍亚洲激情| 亚洲国产精品二十页| 国产精品视频在线看| 国产欧美日韩亚州综合| 亚洲国产电影在线观看| 国产精品天干天干在线综合| 国产女同性恋一区二区| 国产精品久久久久久久久久久免费看| 国产女同互慰高潮91漫画| 国产精品色哟哟网站| 亚洲同性gay激情无套| 亚洲一区在线观看免费 | 中文字幕+乱码+中文字幕一区| 国产人伦精品一区二区| 国产精品区一区二区三| 国产欧美视频在线观看| 一区在线播放视频| 亚洲成av人片观看| 久久精品国产久精国产| 国产精一品亚洲二区在线视频| 不卡免费追剧大全电视剧网站| 色综合天天天天做夜夜夜夜做| 欧美日韩免费视频| 精品久久久三级丝袜| 日韩一区在线播放| 青草国产精品久久久久久| 紧缚奴在线一区二区三区| 成人综合婷婷国产精品久久免费| 波多野结衣在线一区| 欧美日韩精品电影| 久久久久久久综合| 亚洲成人三级小说| 国产精品99久久久久久久女警| 色偷偷久久人人79超碰人人澡| 日韩一级欧美一级| 国产精品久久久久久久久图文区 | 欧美群妇大交群中文字幕| 日韩欧美精品三级| 一区二区在线观看视频在线观看| 蜜桃久久精品一区二区| 成人v精品蜜桃久久一区| 欧美视频一区二区三区在线观看| 精品久久久三级丝袜| 一区二区三区免费在线观看| 国产一区二区三区在线看麻豆| 欧美吻胸吃奶大尺度电影| 国产网站一区二区| 美腿丝袜亚洲一区| 欧美在线观看视频在线| 国产欧美日韩亚州综合 |