<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 專(zhuān)用鍵盤(pán)接口芯片的一種CPLD實(shí)現方案

專(zhuān)用鍵盤(pán)接口芯片的一種CPLD實(shí)現方案

作者: 時(shí)間:2012-04-14 來(lái)源:網(wǎng)絡(luò ) 收藏




其工作原理如下:(1)鍵盤(pán)掃描控制及編碼電路中內含一個(gè)環(huán)形計數器。該計數器計數輸出至KSL[0~3]端作為鍵盤(pán)掃描信號。每當掃描信號發(fā)生變化時(shí),鍵盤(pán)掃描控制器從KRL[0~3]端讀入某一行按鍵的狀態(tài)信號。如果沒(méi)有按鍵被按下,則掃描下一行;如果有按鍵被按下,則控制器鎖定被掃描行,并延遲約10ms去抖動(dòng),然后再次掃描被鎖定行以確定按鍵是否誤讀。如果按鍵被證實(shí)按下,則一直等待直至用戶(hù)松開(kāi)該鍵。與此同時(shí),數字鍵碼將被保存到先進(jìn)先出存儲器,功能鍵則直接產(chǎn)生中斷請求信號IRQ,通知CPU讀取鍵碼DBO[0~7]。(2)FIFORAM中數據容量為16位。每4位對應一個(gè)字形符,所以七段LED數碼管需要4位。(3)掃描發(fā)生器一方面產(chǎn)生LED的位選信號DSL[0~3],另一方面產(chǎn)生掃描顯示輸出控制電路的位數據選通信號。掃描顯示輸出控制電路根據位數據選通信號讀取FIFO RAM中相對應的數據,然后送七段譯碼電路輸出DP[0~6]驅動(dòng)LED顯示屏的段選信號電極。(4)接口控制電路一方面用來(lái)識別CPU的讀時(shí)序;另一方面用來(lái)對地址信號線(xiàn)A1A0譯碼,實(shí)現對輸出數據的選擇。若A0A1=“00”,則輸出FIFO RAM中的低字節數據;若A0A1=“01”,則輸出FIFO RAM中的高字節數據;若A0A1=“10”,則輸出控制數據(表明ROW、COL、DAT中哪一個(gè)被按下);若A0A1=“11”,則不輸出FIFO RAM中的任何數據。

3 專(zhuān)用芯片核心部分的與實(shí)現

為了實(shí)現上述專(zhuān)用芯片功能結構,利用可編程邏輯技術(shù)對各個(gè)功能塊進(jìn)行邏輯的序描述和實(shí)現。由于鍵盤(pán)掃描控制和去抖的邏輯時(shí)序設計較復雜并具典型性,因此下面將對鍵盤(pán)掃描控制和去抖部分的設計思想進(jìn)行介紹。

鍵盤(pán)掃描時(shí)序的基本原理[4]可能用圖3所示的狀態(tài)圖表示。狀態(tài)圖的輸入變量為RST(復位)、KEY-PRESS(有按鍵)、TIMER-OVER(去抖動(dòng)延時(shí)結束);輸出變量包括EN-SCAN(掃描行轉移)、EN-CODED(鍵盤(pán)編碼啟動(dòng))、START-TIMER(開(kāi)啟去抖動(dòng)延時(shí))。從圖3中知道,狀態(tài)S0→S1→S2為按鍵掃描狀態(tài)鍵,狀態(tài)S3→S4→S5為去抖延時(shí)狀態(tài)鏈,狀態(tài)S6為按鍵保持期。當按鍵被按下時(shí),進(jìn)入啟動(dòng)(S3)去抖延時(shí)狀態(tài)鏈;去抖延時(shí)結束后(S5),若按鍵沒(méi)有按下則恢復掃描狀態(tài)鍵(S0);若按鍵確認被按下則進(jìn)入保持期(S6),并輸出按鍵編碼,維持至按鍵松開(kāi)。



根據狀態(tài)圖3和上述的狀態(tài)轉移描述,進(jìn)行鍵盤(pán)掃描控制電路的設計,結果如圖4所示。其中H3是6位循環(huán)移位寄存器,由時(shí)鐘CLK觸發(fā)實(shí)時(shí)狀態(tài)移位。移位寄存器的輸出Q0~Q5分別代表鍵盤(pán)掃描控制電路的狀態(tài)S0~S6,當然它們并非一一對應,但實(shí)現的功能相同。值得一提的是,如果專(zhuān)用鍵盤(pán)芯片KB-CORE的外部時(shí)鐘CLK來(lái)自單片機的ALE信號(如圖1所示),當單片機時(shí)鐘為6MHz時(shí),則專(zhuān)用鍵盤(pán)芯片KB-CORE的外接時(shí)鐘為1MHz的方波信號,信號周期為1μs。如果將該時(shí)鐘信號經(jīng)過(guò)一個(gè)分頻器,使其輸出的信號周期約為T(mén)clk=1μs×2 12≈4ms,然后再作為H3的時(shí)鐘信號。這意味著(zhù)鍵盤(pán)掃描控制電路約4ms掃描一行按鍵。如果H3中的Q2態(tài)沒(méi)有被使用,則可以實(shí)現約8ms的去抖動(dòng)延時(shí)。通過(guò)這樣的設計,可以免除延時(shí)計數器,簡(jiǎn)化電路。



4 專(zhuān)用芯片的實(shí)現

根據實(shí)時(shí)數據校正系統的設計要求,使用了34上自定義I/O引腳和PC44封裝的來(lái)實(shí)現專(zhuān)用鍵盤(pán)接口芯片KB-CORE。芯片型號的選擇依據綜合所需要的宏單元(Macrocells)個(gè)數決定。如果借助硬件描述語(yǔ)言VHDL[5]對上述設計進(jìn)行描述,綜合結果需要約140個(gè)宏單元;如果改用原理圖輸入方式,則只需約60個(gè)宏單元。因此選用XC9572芯片可以滿(mǎn)足上述專(zhuān)用鍵盤(pán)接口芯片KB-CORE的要求。實(shí)際使用如圖1和圖2所示。操作結果表明鍵盤(pán)接口芯片性能穩定。

上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>