国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

電子工程網(wǎng)

標(biāo)題: 在Study-2812增強(qiáng)版上改寫CPLD增加鍵盤測(cè)試功能 [打印本頁(yè)]

作者: hotpower    時(shí)間: 2009-4-2 23:16
標(biāo)題: 在Study-2812增強(qiáng)版上改寫CPLD增加鍵盤測(cè)試功能
/*------------------------------------------------------------------
在Study-2812增強(qiáng)版上改寫CPLD增加鍵盤測(cè)試功能
1.改壓KEY1~KEY8時(shí)LED1~LED8亮為8位鍵盤測(cè)試,LED位單獨(dú)控制
  讀0x5f00為讀鍵盤
  寫0x5f00為寫LED
2.增加CPLD版本號(hào)測(cè)試功能,按INT1鍵時(shí)LCD顯示"CPLD可鍵盤測(cè)試"
菜農(nóng)HotPower@126.com  2008.4.25  于西安大雁塔菜地
--------------------------------------------------------------------*/
//2006-06-15 還有5個(gè)輸入信號(hào)未分配管腳,分別是PWM7,PWM8,PWM9,PWM10,CANRX0,CANTX,此芯片內(nèi)部資源不足。
module DEV2812(EXINT5,A,D,INT1,CS1,NMI,SE,ME,IOPE6,IOPE5,CS_6963,SPICS,K1,L1,K2,L2,K3,L3,K4,L4,K5,PWM7,PWM8,PWM9,PWM10,CANRX0,CANTX,L5,K6,L6,K7,L7,K8,L8,NMI1,NMI2,EXINT1,EXINT2,EXINT3,EXINT4,WR,RD,DIR,OUT1,OUT2,OUT3,OUT4,OUT5,OUT6,OUT7,OUT8,IN1,IN2,IN3,IN4,IN5,IN6,IN7,IN8,OE485,SICLK,SIDIN,ACICS,CS1581,RS1581,CANTX0,CANRX);
   
    output INT1,NMI,SE,ME,IOPE6,IOPE5,CS_6963,SPICS,L1,L2,L3,L4,L5,L6,L7,L8,DIR,OUT1,OUT2,OUT3,OUT4,OUT5,OUT6,OUT7,OUT8,OE485,SICLK,SIDIN,ACICS,CS1581,RS1581,CANTX0,CANRX;
   
    input EXINT5,CS1,K1,K2,K3,K4,K5,K6,K7,K8,NMI1,NMI2,IN1,IN2,IN3,IN4,IN5,IN6,IN7,IN8,EXINT1,EXINT2,EXINT3,EXINT4,WR,RD,CANRX0,CANTX,PWM7,PWM8,PWM9,PWM10;
    input [5:0] A;
    inout [7:0] D;
    reg [7:0] D_reg;
    reg [7:0] Int_Data_reg;
    reg Int_WR_reg;
    reg RD_reg;
    reg [7:0] OUT_reg;
    reg INT1_reg,NMI_reg;
    reg L1_reg,L2_reg,L3_reg,L4_reg,L5_reg,L6_reg,L7_reg,L8_reg;
    reg CS1581_reg,RS1581_reg,CS_6963_reg,DIR_reg,IOPE5_reg;//SE_reg,ME_reg,IOPE6_reg,RD_reg,WR_reg;
    reg SICLK_reg,SIDIN_reg,ACICS_reg;
    //reg CS_DA_reg,LOAD_DA_reg;
    reg OE485_reg,SPICS_reg;
    reg [7:0] LED_Data_reg;
   
    reg CANTX0_reg;
    reg CANRX_reg;

initial//初始化模塊好像無(wú)?
begin
CS1581_reg=1;      //上電時(shí)1581不片選
RS1581_reg=1;//1581上電后不處于復(fù)位狀態(tài)
Int_Data_reg=0;
RD_reg=0;
Int_WR_reg=0;
OUT_reg=0;
SICLK_reg=1;
SIDIN_reg=1;
ACICS_reg=1;
CS_6963_reg=1;
IOPE5_reg=1;
DIR_reg=1;
//LED_Data_reg=8'b11111111;
LED_Data_reg=8'h00;//開機(jī)LED全滅
end
always @ (  CS1)
begin
    if(CS1==1'b0)   
        if(A==6'b010111)
         CS1581_reg=0;  //片選1581,地址為0x5700,讀寫地址相同。
        else
         CS1581_reg=1;                              
    else
         CS1581_reg=1;
end

always @ (  negedge RD  )        
begin  
        
        if(CS1==1'b0)
         begin
          if( A==6'b011110)        //1581復(fù)位低地址為0x5e00,讀操作;
             RS1581_reg=0;
          else if(A==6'b011101)    //1581復(fù)位高地址為0x5d00,讀操作。
             RS1581_reg=1;
          else if(A==6'b011100)   //外部中斷讀地址為0x5c00,讀操作。
             begin
             RD_reg=1;
             D_reg=Int_Data_reg;
             end
          else if(A==6'b011011)//8路開關(guān)量輸入,地址為0x5b00,讀操作。
             begin
             RD_reg=1;
             D_reg={IN8,IN7,IN6,IN5,IN4,IN3,IN2,IN1};
             end
/*-------------------------------------------------------------
    在此加入鍵盤測(cè)試功能,//8個(gè)按鍵地址,0x5f00
--------------------------------------------------------------*/
          else if(A==6'b011111)
             begin
             RD_reg=1;
             D_reg={K8,K7,K6,K5,K4,K3,K2,K1};
    end
/*-------------------------------------------------------------
    在此加入CPLD芯片接入測(cè)試功能
--------------------------------------------------------------*/
          else if(A==6'b010101)  //CPLD自檢地址0x5500
             begin
             RD_reg=1;
             D_reg=8'h5a;
    end
          else
             RD_reg=0;   
        end     
end
always @ (  posedge WR )  //寫信號(hào)要用上升沿,否則數(shù)據(jù)可能不穩(wěn)      
begin  
        
        if(CS1==1'b0)
         begin
           if(A==6'b011100)   //外部中斷標(biāo)志位寫地址為0x5c00,寫操作。
             Int_WR_reg=1;
           else if(A==6'b011011)  //8路開半量輸出,地址為0x5b00,寫操作。
              begin
              OUT_reg=D;
              end
           else if(A==6'b011010) //AIC芯片模擬SPI口各信號(hào)選通,寫操作,地址0x5a00
              begin
                              
              //   LOAD_DA_reg=D[4];
              //    CS_DA_reg=D[7];
                  ACICS_reg=D[2];
                  SIDIN_reg=D[1];
                  SICLK_reg=D[0];
              end
            else if(A==6'b010001)     //LCM命令寫低,地址0x5100           
                    begin  
                    IOPE5_reg=0;      
                    CS_6963_reg=0;
                    end      
            else if(A==6'b010010)     //LCM命令寫高,地址0x5200           
                    begin  
                    IOPE5_reg=0;      
                    CS_6963_reg=1;
                    end               
            else if(A==6'b010011)     //LCM數(shù)據(jù)寫低,地址0x5300            
                    begin  
                    IOPE5_reg=1;
                    CS_6963_reg=0;
                    end
            else if(A==6'b010100)     //LCM數(shù)據(jù)寫高,地址0x5400            
                    begin  
                    IOPE5_reg=1;
                    CS_6963_reg=1;
                    end  
            else if(A==6'b010101)  //SPI片選信號(hào),地址0x5500
                    begin
                    SPICS_reg=D[0];
                    end
            else if(A==6'b010110) //485片選信號(hào),地址0x5600
                    begin
                    OE485_reg=D[0];
                    end
           else if(A==6'b011111)       //8個(gè)發(fā)光二極管地址,0x5f00
                    begin
                    LED_Data_reg=D;
                    end
           else
             Int_WR_reg=0;
        end     
end

always @(  EXINT1 or EXINT2 or EXINT3 or EXINT4 or EXINT5 or NMI1 or NMI2 )
begin
    INT1_reg=EXINT1 & EXINT2 & EXINT3 & EXINT4 & EXINT5;
    NMI_reg=NMI1 & NMI2;
    Int_Data_reg = (Int_WR_reg ==1) ? 0:Int_Data_reg;//此模塊應(yīng)順序執(zhí)行,但目前這樣寫也能正常工作
    if(  ~(INT1_reg & NMI_reg) )
           Int_Data_reg={ 1'b0,~EXINT5 ,~EXINT4 ,~EXINT3, ~EXINT2, ~EXINT1,~NMI2, ~NMI1};
end


always //8個(gè)按鍵任按下一個(gè)時(shí),對(duì)應(yīng)的二極管發(fā)光,也可由DSP程序控制二極管發(fā)光,寫相應(yīng)位為1時(shí)發(fā)光
begin
/*---------------------------------------
//去除按鍵LED燈亮的不好功能   
L1_reg=K1 & ~LED_Data_reg[0];
    L2_reg=K2 & ~LED_Data_reg[1];
    L3_reg=K3 & ~LED_Data_reg[2];
    L4_reg=K4 & ~LED_Data_reg[3];
    L5_reg=K5 & ~LED_Data_reg[4];
    L6_reg=K6 & ~LED_Data_reg[5];
    L7_reg=K7 & ~LED_Data_reg[6];
    L8_reg=K8 & ~LED_Data_reg[7];
---------------------------------------*/
L1_reg=~LED_Data_reg[0];
    L2_reg=~LED_Data_reg[1];
    L3_reg=~LED_Data_reg[2];
    L4_reg=~LED_Data_reg[3];
    L5_reg=~LED_Data_reg[4];
    L6_reg=~LED_Data_reg[5];
    L7_reg=~LED_Data_reg[6];
    L8_reg=~LED_Data_reg[7];
end
always   begin
   CANTX0_reg=CANTX;
   CANRX_reg=CANRX0;  
end

assign L1=L1_reg;
assign L2=L2_reg;
assign L3=L3_reg;
assign L4=L4_reg;
assign L5=L5_reg;
assign L6=L6_reg;
assign L7=L7_reg;
assign L8=L8_reg;
assign CS1581=CS1581_reg;
assign INT1=INT1_reg;
assign NMI="1";
assign SE="1";
assign ME="1";
assign IOPE6=0;//LCM讀寫控制線,暫只提供寫功能,故一直為低
assign IOPE5=IOPE5_reg;
assign CS_6963=CS_6963_reg;
assign SPICS="SPICS"_reg;
assign DIR="1" ;//暫只提供寫操作,故方向控制一直為高,即數(shù)據(jù)線只從左到右

assign SICLK="SICLK"_reg;
assign SIDIN="SIDIN"_reg;
assign ACICS="ACICS"_reg;
assign RS1581=RS1581_reg;

assign CANTX0=CANTX0_reg;
assign CANRX="CANRX"_reg;
assign OE485 = OE485_reg;
assign D = (RD_reg == 1 && RD==1'b0) ? D_reg :8'hz;
assign {OUT8,OUT7,OUT6,OUT5,OUT4,OUT3,OUT2,OUT1}=OUT_reg;
endmodule
作者: Howard    時(shí)間: 2009-6-18 01:26
竟然沒人坐菜地里的沙發(fā)




歡迎光臨 電子工程網(wǎng) (http://m.qingdxww.cn/) Powered by Discuz! X3.4
主站蜘蛛池模板: 婷婷亚洲国产成人精品性色| 午夜性色一区二区三区不卡视频| 亚洲精品国自产拍在线观看| 欧美成人剧场| 午夜网页| 性性欧美| 亚洲精品国产一区二区在线| 国产成人无码区免费内射一片色欲| 麻豆AV蜜桃AV久久| 亚洲九九视频| 偷窥福利视频| 人人艹人人射| 视频在线观看免费| 97 sese| 区产品乱码芒果精品P站在线| 中文字幕亚洲无限码| 午夜精品区| 五月婷婷在线观看| 洗濯屋动漫在线观看| 中文天堂最新版www官网在线| 国内精品乱码卡一卡2卡三卡新区| 乌克兰成人性色生活片| 酥酥影院一级毛片在线看| 天天躁夜夜躁| 一二三四视频免费观看高清版在线 | 四虎影免看黄| 日韩a级片在线观看| 婷婷综合亚洲| 国产AV无码成人黄网站免费 | 日本撒尿特写| 骚视频在线观看| 亚洲男人的天堂久久香蕉网 | 97蜜桃网123| 无限资源在线观看高清| 青青视频国产| 天天操天天射天天操| 亚洲系列国产系列| 久久久GOGO无码啪啪艺术| 亚洲欧美日韩动漫| 青娱乐综合网| 午夜国产福利视频一区|