1. 程式人生 > >五、基於Verilog的低功耗矩陣鍵盤掃描設計

五、基於Verilog的低功耗矩陣鍵盤掃描設計

1、前言

本次設計了一個低功耗的矩陣鍵盤驅動電路驅動一個 16 鍵( 4x4  )的矩陣鍵盤。每個按鍵對應 0~15 的一個值成為按鍵對應的鍵值。當某個按鍵被按下時,輸出該按鍵對應的鍵值;按鍵被釋放後,該鍵值不再輸出。

2、鍵盤電路分析

如下圖,鍵盤電路中共有 16 個按鍵,採用了 8 根線連線到了FPGA,包括行檢測訊號  ROW[3:0] 、列掃描訊號 COL[3:0]。

鍵盤驅動電路的設計思想是:

1、FPGA 把列掃描訊號訊號 COL[3:0] 分別置為 4'b1110、4'b1101、4'b1011、4'b0111對 4 列按鍵依次迴圈掃描, 通過檢測行訊號 ROW[3:0] 每一位的電平來檢測有無按鍵被按下。

2、當COL[3:0] = 4'b1110,即當前時刻正在掃描第一列的 4 個按鍵,如果檢測到 ROW[3:0] 為 4'b1111,說明第一列無按鍵被按下;如果檢測到 4'b11110,說明第一個按鍵被按下。其它按鍵以此類推。

3、問題說明:當 COL[3:0] = 4'b1110時,FPGA正在掃描第一列按鍵,如果此時我們按下第二、三、四列中的任意一個按鍵,由於COL[1]、COL[2]、COL[3] 的電平為 1 ,所以在 ROW[3:0] 訊號中檢測不到低電平,即按鍵無效。

以上是按鍵掃描的核心思想。

 3、功耗優化設計

在第 2 小節中,我們已經完成了鍵盤的掃描設計,但是由於鍵盤驅動電路一直處於掃描狀態,增加了額外的功耗。但在實際中,考慮到按鍵在使用時不會被長期執行按下、釋放操作。所以不需要讓鍵盤驅動電路長期處於掃描狀態,而應該使其處於低功耗或者待機狀態。因此採用如下設計來降低功耗:

1、我們把訊號 COL[3:0] 賦值為 4'b0000,如果無按鍵被按下,ROW[3:0] 會一直為 4'b1111;如果當 16 個按鍵的任意一個被按下時,ROW[3:0] 訊號都不會再等於 4'b1111。通過此種設計來讓鍵盤驅動電路在剛開始時處於非掃描狀態,以降低功耗。同時有效的檢測有無按鍵被按下。

2、如果檢測到 ROW[3:0] 訊號不等於 4'b1111,表明按鍵被按下。此時需要判斷是抖動導致還是按鍵被按下,我們在長達 5ms 的時間內持續檢測 ROW 的值,如果在這 5ms 內均不等於 4'b1111,表明按鍵確定被按下(如果是抖動,抖動時間小於5ms,持續檢測 5ms 可濾除抖動)。

3、我們在確定有按鍵被按下後,需要啟動掃描以判斷是哪個按鍵被按下。此時我們將 COL[3:0] 依次賦值為 4'b1110、 4'b1101、 4'b1011、 4'b0111 掃描 4 列按鍵,當掃描到某列按鍵時,如果ROW[3:0] 訊號不等於 4'b1111 表明該列的按鍵被按下,該列具體的按鍵為 ROW[3:0] 中為低電平的 bit 位,從而確定該列的哪個按鍵。

4、在通過掃描得到按下的按鍵對應鍵值後,我們將 COL[3:0] 再賦值為 4'b0000,再次進入低功耗狀態,同時判斷 ROW 訊號是否為 4'b1111,如果不為 4'b1111,說明按鍵未被釋放;如果為 4'b1111,表明按鍵被釋放,此時持續檢測 ROW 長達 5ms,排除抖動的影響,在 5ms 後,如果仍為 4'b1111,說明按鍵釋放有效,回到初始狀態。

4、狀態機設計

低功耗待機  —> 5ms持續掃描確定按鍵有效  —> 列掃描一遍按鍵,得出鍵值,進入低功耗,並檢測按鍵是否被釋放  —> 如果被釋放,5ms持續檢測確定釋放有效  —> 低功耗狀態。

5、總結

相關推薦

基於Verilog功耗矩陣鍵盤掃描設計

1、前言 本次設計了一個低功耗的矩陣鍵盤驅動電路驅動一個 16 鍵( 4x4  )的矩陣鍵盤。每個按鍵對應 0~15 的一個值成為按鍵對應的鍵值。當某個按鍵被按下時,輸出該按鍵對應的鍵值;按鍵被釋放後,該鍵值不再輸出。 2、鍵盤電路分析 如下圖,鍵盤電路中共有 16 個

基於Verilog的訊號發生器DDS的設計

1、前言 採用 Verilog 設計了一個簡單的訊號發生器,可輸出正弦波、方波、三角波、鋸齒波這 4 種頻率、相位和幅值可調的波形。 2、具體功能 module dds( input wire clk, input wire rst_n,

基於STM32L151//STM32F407的矩陣鍵盤程式(不規則介面):

void KeyPress(void){           int KeyValues;    while(1)  {   if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_11)||GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)||GPIO_

CC2500RGPR是一種成本單片2.4G 收發器,為功耗無線應用而設計

5.6 應用電路 -1 健康 低功耗 電路 分銷商 價格 國內 CC2500RGPR是一種低成本單片2.4G 收發器,為低功耗無線應用而設計。2400~2483.5MHz ISM及SRD頻率波段。高度集成的RF收發芯片,可以配置基帶調制解調,最高速率可以到500Kbps。

功耗MCU系統軟硬體設計考慮

http://bbs.21ic.com/icview-2401364-1-1.html 電子產品的低功耗問題經常讓產品設計者頭痛而又不得不面對。以微控制器(MCU)為核心的系統,其功耗主要由微控制器功耗和微控制器外圍電路功耗組成。要降低微控制器系統的功耗,需要從硬體和軟體兩方面入手。

4X4矩陣鍵盤掃描程式

4X4矩陣鍵盤掃描: 1. 4根行線的GIO均設為Output,根列線的GIO均設為Input; 2. 4根行線的GIO分別置為0111、1011、1101、1110,讀逐一讀取列線GIO的值,可確定是哪一個按鍵; 電路圖如下: 注意: 1. 圖中用作輸入的GIO,一

矩陣鍵盤掃描原理詳解——微控制器

矩陣鍵盤掃描原理詳解 根據原理圖 鍵盤掃描方法是:行線P10~P13為輸出線,列線P14~P17為輸入線。一開始微控制器將行線(P10~P13)全部輸出低電平,此時讀入列線資料,若列線全為高電平則沒有鍵按下,當列線有出現低電平時呼叫

verilog語言的ps2鍵盤驅動設計

PS/2介面是目前最常見的滑鼠介面,最初是IBM公司的專利,俗稱“小口”。這是一種滑鼠和鍵盤的專用介面,是一種6針的圓型介面。本設計完成了ps2鍵盤驅動,並將鍵盤對應的16進位制ascii碼值在數碼管輸出。 一、ps2介面協議 主要內容:常見的PS/2埠有兩類:一種5腳的

樹莓派的矩陣鍵盤掃描程式,python開發

樹莓派可以很方便的拓展矩陣鍵盤用做人機互動,今天教大家如何驅動4*4矩陣鍵盤。 先貼上程式碼: import time class keypad(object):KEYPAD=[['1','2','3','*'],['4','5','6','#'],['7','8','9

藍芽學習()-- 功耗藍芽(BLE)主機:屬性服務

 在BLE中服務、屬性、特性、行為很難理解。講得極其抽象,讓我疑惑的是它是一種邏輯上面的概念還是資料結構上的概念? 服務是一種或多種特性的組合,特性則由一種或多種屬性組成 BLE的對於服務上的概念上居然是來源於“面向物件程式設計(OOP)”: 類 物件 屬

Zabbix():高級應用-web方案被動監控基於snmp協議被動監控proxy配置測試實例

zabbix proxy1.web方案web scenario:web監控方案,web場景;web scenarios指的是監控指定的web站點的資源下載及頁面響應時間等數據指標;(1)創建web監控需要先定義一個web scenario(方案):一個web方案包括一個或多個HTTP請求或步驟(steps)

基於ROS使用Arduino讀取矩陣鍵盤的輸入

1. 硬體 Arduino控制板:1個; 矩陣鍵盤:1個; 杜邦線:若干; 1.1 接線方式 接線方式為: 來張實際的照片(略麻煩): 2 程式    #include <Keypad.h> #include &l

ESP8266功耗電流注意問題

在使用8266模組時,特別是使用電池gong供電的情況下,就不得不去關注其待機dian電流和最大峰值的最大峰值電流了。 但是使用過程中也發現了幾個不盡如人意的地方,例如: 1。 進入Deep-Sleep模式,官方手冊手冊是10uA,結果調來調去,把外部電路全部都去掉了,最終定格在20uA

如何打造便捷功耗成本的物聯網解決方案—專注電子產品方案開發

物聯網時代的來臨,如何打造便捷、低功耗、低成本的物聯網解決方案是一個值得思考的問題。專注電子產品方案開的Enroo 給你帶來分享。發現在的世界是越來越互聯互通,除了人機網路外,人與人之間的互聯互通也逐漸增多了。這樣的互聯需要有很多裝置,應用到包括智慧城市、智慧家居等在內的眾多場景,同時也會積

NB-IoTLoRasigfox功耗廣域物聯網技術,未來的爭奪之戰

  物聯網從2009年開始提出,到現在已經發展將近10年時間了,然而還未到爆發階段。究其原因,在於部分傳輸技術還未研發出來或還未進行部署,文中講述了目前,正在發展的三大主要低功耗廣域物聯網路技術,分別為NB-IoT、LoRa和Sigfox,分析了三者的主要應用場景。 物聯網通過通訊技術將人與

基於QoE的實時視訊編碼優化:功耗延時,高質量

在實時通訊領域,只有當Codec的優化適應了當前的網路狀況,裝置平臺及應用場景,使用者才能得到最佳的體驗。在LiveVideoStackCon2018大會中聲網Agora視訊工程師吳曉然詳細介紹瞭如何設計與實現基於QoE的實時視訊編碼優化。本文由LiveVideoSt

[BLE]功耗藍芽之GAPGATT

轉載自: https://blog.csdn.net/qq_21842557/article/details/50771077 一、開篇     本篇主要介紹一下關於BLE開發過程中必須瞭解的兩個協議:GAP(通用訪問協議)、GATT(通用屬性協議

演算法學習筆記() 遞迴之 快速冪斐波那契矩陣加速

遞迴的定義 遞迴和迭代是程式設計中最為常用的基本技巧,而且遞迴常常比迭代更為簡潔和強大。它的定義就是:直接或間接呼叫自身。經典問題有:冪運算、階乘、組合數、斐波那契數列、漢諾塔等。其演算法思想: 原問題可分解子問題(必要條件);原與分解後的子問題相似(遞迴方程);分解次數有

功耗藍芽BLE之連線事件連線引數和更新方法

連線事件 在一個連線當中,主裝置會在每個連線事件裡向從裝置傳送資料包。一個連線事件是指主裝置和從裝置之間相互發送資料包的過程。連線事件的進行始終位於一個頻率,每個資料包會在上個數據包發完之後等待 

[藍芽]功耗藍芽之 GAPGATT

低功耗藍芽之 GAP、GATT 低功耗藍芽之 GAP、GATT 基礎介紹 BLE GAP GAP 協議 GAP 裝置角色 GAP 廣播資料 GAP 廣播流程