基於FPGA的4x4矩陣鍵盤驅動調試

2021-02-23 矽農

好久不見,因為博主最近兩個月有點事情,加上接著考試,考完試也有點事情要處理,最近才稍微閒了一些,這才趕緊記錄分享一篇博文。FPGA驅動4x4矩陣鍵盤。這個其實原理是十分簡單,但是由於博主做的時候遇到了一些有意思的情況,所以我個人覺得值得記錄分享一下。

首先找了本書看了下矩陣鍵盤的驅動原理,一般來說4x4矩陣鍵盤的原理圖如下,有四根行線和四根列線,行選通和列選通可以確定鍵盤上的一個位置。從原理圖上看出,在沒有操作的情況下,行線上接了一個10K的上拉電阻接vcc,這使得鍵盤在沒有按下時,四根行線始終是高電平。

列線是由處理器輸入給矩陣鍵盤,空閒狀態下保持為0。也就是行空閒時輸出給處理器為四個1,列空閒時由處理器輸入給四個0。

當按下按鍵時,比如第一行第一個按鍵,對應的那一行導通輸出為0,即row_data = 0111,此時由處理器逐漸輸入列掃描信號由col_data = 0111——1110,當所按下按鍵為對應的那一行列的按鍵,矩陣鍵盤的行才會導通輸出為0,否則會回到1111。其他按鍵類似,就是利用這個原理來驅動矩陣鍵盤。

 

最後FPGA部分模塊引腳設計如圖,我們需要對按鍵進行消抖,和普通按鍵一樣,採用20ms的延時對按鍵進行消抖,分為按下消抖和鬆開消抖,中間的狀態轉移,因為列信號需要輸出判斷行信號的變化,所以狀態機狀態轉移用兩個系統時鐘周期跳轉。採用狀態機進行描述,狀態轉移圖如下。

代碼如下:(點擊閱讀原文查看博客) 

代碼部分其實沒啥好說的,有意思的是博主連接硬體做調試的時候,博主的矩陣鍵盤模塊如圖,薄膜鍵盤。某寶客服連原理圖都沒有,有一家給的我原理圖還是錯的。問題在於代碼第一次下載到板子上的時候,沒有出結果,不知道是代碼問題還是硬體電路連接問題,我也是試了好久才猜出來正確的連接順序。

這是,某寶客服給的錯的原理圖,先拿這個看一下,和這個矩陣鍵盤的構造差不多,從圖中可以看到這個圖和文章開頭的原理圖中少了點什麼,上拉電阻。這裡比較迷惑的是,如果沒有上拉電阻,在空閒狀態下,row_data怎麼能保持輸出高電平呢。問了幾個客服,有說不懂的有說不用加上拉電阻的。

我直接上板調試,在鍵盤的基礎上加了個數碼管顯示按下的數值。按下時發現是可以顯示正確的數字的,但是奇怪的是過一會兒數碼管顯示會清零。最開始以為是代碼的問題,檢查後從仿真和邏輯看,按鍵後解碼的數值其實是一直保持不變的,沒有操作是不會發生變化的,但實際情況不太符合。

這樣奇怪的情況發生,這個時候我們要相信科學。這種仿真發現不了問題,但實際運行卻又bug,這個沒法猜出來。在線邏輯分析儀就可以看到你的代碼在開發板上運行的情況,這裡引出Xilinx的Chipscope,用在線邏輯分析儀幾乎可以抓到你的代碼內部的所有信號,這個時候抓到的是你的電路實際運行的情況,配置流程如下。

新建New source界面,選擇如圖Chipscope,next。

 

然後會自動生成一個後綴為.cdc的文件,雙擊打開。

這一步點擊next

同樣next

這裡選擇,觸發信號的數量和位寬,我這裡選擇了三個觸發信號,兩個位寬為4,對應矩陣鍵盤的行和列,一個位寬為1,為復位信號。最後邊的滾輪下拉可以看到全部信號。

這裡設置抓取的信號深度,選擇上升沿採樣信號。完成後點擊next

這裡選擇時鐘信號clk

選擇後點擊make connection,OK。

同樣的選擇其他觸發信號,加入行和列和復位信號。

添加完成OK

點擊完成退出。

 

保存

這裡點擊這裡就會啟動Chipscope了,這個時候板子就可以上電了。

點擊連結板子

照圖點擊下載板子。

配置相關文件

然後會彈出這個窗口,這裡可以設置觸發類型和觸發方式,添加的信號都會顯示出來

設置觸發方式為M2,即復位信號。

點擊上面的按鈕開始運行,復位鍵釋放,就可以抓取到一部分信號了。

按下一個按鍵會看到對應的行列變換。

這是Chipscope的調用流程,通過在線邏輯分析儀,博主發現了問題,在空閒無操作時,觸發復位抓取信號,抓到的row_data有時候是1111。有時候是0000或其他,但是理論上矩陣鍵盤在無操作下應該一直row_data輸出1111。就是這個奇怪的問題導致的錯誤。我們要相信科學。應該是硬體電路的問題,檢查了與開發板連接的杜邦線沒問題後,應該就是矩陣鍵盤自己的問題,上拉電阻這塊的原理,我所使用的矩陣鍵盤沒有上拉電阻,但是實際上這樣的驅動,如果row_data線上沒有上拉電阻,它很難保持為高電平,而這個地方加不加其實和驅動開發板的構造有關,據我了解,有些單片機的I/O引腳會內置上拉電阻,默認情況下是高電平,所以用這些單片機驅動是不需要加上拉電阻的。

我這裡使用FPGA驅動,FPGA的引腳特性來說,還是需要加的,使矩陣鍵盤的信號輸出穩定,對於Xilinx FPGA來說有意思的是,通過綜合工具添加引腳約束可以啟動同樣的效果,比如在ucf文件的引腳電平約束中加上pullup就可以了。

由於我使用的Spartan-3E系列的開發板,從它手冊上可以得到。在引腳約束在電平為3.3v時加上pull up,可以等下出相當於10.8k歐姆的電阻這和矩陣鍵盤的驅動原理是完全相符。

這篇博文主要分享的是硬體的一個調試過程,Chipscope還是很好用的。對於硬體來說,你沒辦法確定他的狀態,所以使用工具抓取他的實際信號,幫助我們更好調試。

相關焦點

  • 基於FPGA的RS232行列式矩陣鍵盤接口設計
    一、引言本文引用地址:http://www.eepw.com.cn/article/245960.htm本方案是用VHDL語言來實現的基於RS232按位串行通信總線的行列式矩陣鍵盤接口電路
  • 基於RS232行列式矩陣鍵盤接口的設計方案
    >RS232按位串行通信總線的行列式矩陣鍵盤接口電路,具有復位和串行數據的接收與發送功能,根據發光二極體led0-led2的顯示狀態可判斷晶片的工作情況;實現所有電路功能的程序均是在美國ALTERA公司生產的具有現場可編程功能的晶片EPM7128SLC84
  • 液晶和矩陣鍵盤SOPC外設組件設計開發
    摘要:本文利用NiosII軟核設計LCD和矩陣鍵盤接口,以中斷代替查詢完成對矩陣鍵盤的控制;設計點陣型LCD與NiosII的接口,實現對LCD中英文顯示的支持。本文以NiosII 可重編程、可重配置用戶外設 組件的方法為指導,結合PDA 項目設計需要,設計製作了LCD 和矩陣鍵盤到FPGA 的接 口,提出一種新的矩陣鍵盤和LCD 中英文二級字庫顯示的嵌入式實現方法,克服傳統矩陣 鍵盤軟體設計麻煩且浪費CPU系統資源等缺點,降低系統中LCD支持中英文字顯示的成本、 功耗和控制複雜度,並且實現的組件和驅動程序具有可重用
  • Windows CE.Net下矩陣鍵盤開發設計詳解
    藉助於完善的作業系統功能和開發工具,Windows CE.Net提供了構建、調試和部署基於Windows CE.Net的定製設備所需的一切特性。Windows CE.Net的最大好處是具有可定製性。當它自帶的驅動程序不能滿足用戶的要求時,需要用戶自己編寫相應的驅動程序。Windows CE.Net的開發工具Platform Builder就可以完成相應的驅動程序開發。
  • 基於Windows CE的7×3手機鍵盤驅動實現
    前言矩陣鍵盤是嵌入式設備中常用的輸入設備。它具有堅固耐用、響應速度快、小巧方便、原理簡單、價格便宜、易於交流等諸多優點。利用矩陣鍵盤,用戶只要用手指按下鍵盤上的數字或符號鍵就能實現對嵌入式設備進行相應的操作,從而使人機互動更為直接,是極方便的交互設備。矩陣鍵盤的應用範圍非常廣泛,特別是在手機、PDA等手持產品的運用更為廣泛。
  • 基於USB2I2C接口的CMOS圖像傳感器在線調試系統
    文中詳細介紹了基於USB2I2C接口實現對CMOS圖像傳感器的在線調試系統的設計過程,包括固件程序的設計方法,基於WDM模型的驅動程序設計和MFC的應用軟體設計開發。1 CMOS圖像傳感器該圖像傳感器為自主設計、研發並流片的一款SoC(System—on—a—Chip)晶片——CUST1089。
  • 基於複數浮點運算的協方差矩陣的FPGA實現
    本文以空間譜估計作為研究背景,研究了複數據運算和浮點運算的特點,提出了一種適用於任何陣列流型、任意陣元的基於複數浮點運算的協方差矩陣的FPGA實現方案。   複數乘法器的工作原理如圖3所示,其中所用到的加法、減法和乘法器都是基於浮點的運算。值得一提的是,在實現浮點加減法的時候,可以將尾數連同符號位轉化為變形補碼形式後再進行加減運算。
  • 我的矩陣鍵盤使用筆記——基於msp430g2553
    byzhangbin2012-09-06versions:12_09_01AllRightsReserved這裡主要記錄我的使用矩陣鍵盤在系統的設計中,輸入數據是經常遇到的,而矩陣鍵盤是最常用的輸入設備。如果矩陣鍵盤的掃描沒有了問題,那麼怎樣用矩陣鍵盤輸入數據呢,例如我要輸入253.45這個數,該怎麼實現呢。下面是我用的兩個實現方法:一、是借用一個詭異的值,也就是鍵盤掃描時不可能掃到的值,這個數與鍵盤完全無關,主要是用來標誌有新的按鍵按下。
  • 基於VHDL的矩陣鍵盤及顯示電路設計
    矩陣鍵盤作為一種常用的數據輸入設備,在各種電子設備上有著廣泛的應用,通過7段數碼管將按鍵數值進行顯示也是一種常用的數據顯示方式。在設計機械式矩陣鍵盤控制電路時,按鍵防抖和按鍵數據的解碼顯示是兩個重要方面。
  • Windows CE設備小巧玲瓏 矩陣鍵盤開發大有乾坤
    3.矩陣鍵盤驅動程序的設計和實現  (1)矩陣鍵盤驅動程序模型  Windows CE的最大好處是具有可定製性,當它自帶的驅動程序不能滿足用戶的要求時,用戶可以自己編寫相應的驅動程序。Windows CE一般可以分為獨立驅動和層次型驅動兩類。
  • 基於JTAG接口實現ARM的FPGA在線配置
    SDR終端的實現往往都是基於可重配置的硬體環境,如現場可編程邏輯陣列(Field Programmable Gate Array,FPGA)、數位訊號處理器(Digital Signal Processor,DSP),而不是專用集成電路(Application Specific Integrated Circuit,ASIC)等特定的硬體電路和晶片。
  • 基於CORDIC 2FSK調製器的FPGA設計
    但是DDS傳統的實現方式是基於查找表思想,即通過查找預先存儲的正餘弦表來產生需要的正餘弦值。當頻率、精度要求越高,需要存儲的值也就越多,考慮FPGA的RAM資源有限,傳統的DDS實現方式就有了應用瓶頸。因此導致開發成本過高,甚至無法實現,不適合現代通信系統的發展。
  • 標緻Boxer 4x4露營車
    標緻Boxer 4x4露營車標緻和雪鐵龍是同屬PSA集團旗下,它們剛剛在一系列旨在將人們帶到戶外的貨車概念中添加了第三個。它始於幾年前略為緊湊的雪鐵龍SpaceTourer 4x4 E概念,並延續到甚至更小的Peugeot Rifter 4x4。現在,該公司專注於頻譜的另一端,上面顯示的是全尺寸標緻Boxer 4x4。標緻Boxer的越野燈安裝在高屋頂上,看上去非常堅固。它具有全輪驅動和全地形輪胎,後者可能有助於增加離地間隙。它還具有帶獨木舟的行李架,可通過梯子進入。
  • Arduino-4*4矩陣鍵盤
    沛華LabVIEW基礎課程|第46講『LabVIEW+Arduino』4*4矩陣鍵盤這期內容比較簡單實用,我們將演示如何使用常見的4*4矩陣鍵盤控制RGB LED。實物接線圖實物接線圖這期內容用到的材料如下:1.4*4矩陣鍵盤;2.Arduino UNO開發板;3.麵包板及麵包線若干
  • JTAG調試接口電路圖設計
    JTAG接口主要包括以下四個引腳:TMS TCK TDI和TCO及一個可選配的引腳TRST,用於驅動電路模塊和控制執行規定的操作。各引腳的功能如下:  TCK:JTAG測試時鐘,為TAP控制器和寄存器提供測試參考。在TCK的同步作用下通過TDI和TDO引腳串行移入或移出數據及指令。同時,TCK為TAP控制器狀態機提供時鐘。
  • 基於FPGA的m序列信號發生器設計
    基於FPGA與Verilog硬體描述語言設計井實現了一種數據率按步進可調、低數據誤碼率、反饋多項式為本文引用地址:http://www.eepw.com.cn/article/263588.htm    1 m序列信號發生器的組成  基於FPGA的m序列信號發生器硬體結構極其簡單,僅需兩個獨立按鍵(一個是復位按鍵與另一個控制數據率切換按鍵)、一個48 MHz的用於提供系統時鐘有源晶振、系統電源、一塊配置晶片、幾個簡單的電阻與電容即可實現。
  • 單片機 4*4 矩陣鍵盤應用
    在單片機按鍵使用過程中,當鍵盤中按鍵數量較多時 為了減少埠的佔用通常將按鍵排列成矩陣 形式如下圖所示,在矩陣式鍵盤中 每條水平線和垂直線在交叉處不直接連通而是通過一個按鍵加以連接,到底這樣做是出意何種目的呢?
  • 51單片機系列連載8—獨立鍵盤與矩陣鍵盤
    在前面我們講的都是向單片機中向外輸出數據,今天我們開始介紹一下如何向單片機裡面輸入數據,也就是鍵盤。本文引用地址:http://www.eepw.com.cn/article/201611/322440.htm鍵盤有兩種,獨立式鍵盤與行列式矩陣鍵盤。
  • 無線鍵盤及工業鍵盤的9個實用設計,附電路圖、原理
    基於傳感器的新型非接觸式鍵盤本設計用Microchip公司生產的高性能MIPS核MCU--PIC32MX460F512L開發板Cerebot 32MX4 Board作為主控板,並採用的是廉價的、用途廣等諸多優點的LED作為此設計的核心部件之一。LED作為感應器件的同時又可以作為發光源,美觀、大方等實用性和商業性的諸多優點。
  • 基於FPGA的實時中值濾波器硬體實現
    但是以上研究都是基於標清圖像的中值濾波器,處理的圖像大小一般為256×256、512×512的灰度圖等,很少有實現高清圖像的中值濾波器。本文在文獻[3]、[4]的理論基礎上,在蘇光大主持研製成功的NIPC-3鄰域圖像並行處理機上實時實現了1 920×1 080×8 bit的高清圖像的中值濾波器。