国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于FPGA的4x4矩陣鍵盤控制器verilog開發(fā)實現(xiàn)

這篇具有很好參考價值的文章主要介紹了基于FPGA的4x4矩陣鍵盤控制器verilog開發(fā)實現(xiàn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

歡迎訂閱《FPGA學習入門100例教程》、《MATLAB學習入門100例教程》

目錄

一、理論基礎

二、核心程序

三、測試結(jié)果


一、理論基礎

? ? ? ?基于FPGA的4x4矩陣鍵盤控制器是一種使用FPGA(現(xiàn)場可編程門陣列)來實現(xiàn)對4x4矩陣鍵盤進行控制的設備。該控制器能夠有效地降低硬件資源的使用,提高系統(tǒng)的可靠性和穩(wěn)定性,是現(xiàn)代電子產(chǎn)品中常用的一種輸入設備。

? ? ? ?4x4矩陣鍵盤控制器采用矩陣鍵盤作為輸入設備,通過FPGA對鍵盤的掃描和識別,實現(xiàn)對鍵盤輸入信號的采集和處理。其基本原理是將4行4列的16個按鍵排列成一個二維矩陣,其中行線和列線分別連接到FPGA的輸入輸出端口。在FPGA內(nèi)部,通過編寫程序?qū)崿F(xiàn)鍵盤掃描和識別,將采集到的按鍵信號進行處理并輸出到相應的設備中。

? ? ? ?在4x4矩陣鍵盤控制器的實現(xiàn)過程中,需要使用到一些基本的電子電路和數(shù)字電路知識。其中,最核心的公式是行列消元法,即通過逐行掃描、逐列消元的方式,將按鍵信號解碼并識別出來。具體實現(xiàn)過程中,可以采用如下公式:

對于第i行第j列的按鍵:

  1. 當?shù)趇行與第j列為低電平時,該按鍵未被按下;
  2. 當?shù)趇行與第j列為高電平時,該按鍵被按下;
  3. 對于未被按下的按鍵,其行列電平均為低電平;
  4. 對于被按下的按鍵,其所在的行電平為高電平,而其他行的電平為低電平;
  5. 對于被按下的按鍵,其所在的列電平為高電平,而其他列的電平為低電平。

通過上述公式的應用,可以在FPGA內(nèi)部編寫程序?qū)崿F(xiàn)鍵盤掃描和識別。

基于FPGA的4x4矩陣鍵盤控制器的實現(xiàn)過程主要包括以下幾個步驟:

  1. 設計矩陣鍵盤:根據(jù)實際需求,設計4x4的矩陣鍵盤,將16個按鍵按照規(guī)定的行列排列方式連接起來。
  2. 硬件電路設計:根據(jù)矩陣鍵盤的設計方案,設計相應的硬件電路,包括電源電路、鍵盤接口電路等。
  3. FPGA程序設計:在FPGA開發(fā)平臺上編寫程序,實現(xiàn)鍵盤掃描和識別。具體實現(xiàn)過程中,可以采用Verilog或VHDL等硬件描述語言。
  4. 程序調(diào)試與測試:將編寫好的程序下載到FPGA中,對程序進行調(diào)試和測試,確保程序能夠正確地識別按鍵信號并輸出正確的結(jié)果。
  5. 系統(tǒng)集成:將FPGA與矩陣鍵盤、相關(guān)設備等集成在一起,形成完整的基于FPGA的4x4矩陣鍵盤控制器。

基于FPGA的4x4矩陣鍵盤控制器具有以下優(yōu)點:

  1. 高可靠性:由于采用FPGA作為核心控制器,具有較強的抗干擾能力和穩(wěn)定性,能夠保證長時間穩(wěn)定運行。
  2. 高效率:通過矩陣排列的方式,可以有效地降低硬件資源的使用,提高系統(tǒng)的效率。
  3. 可擴展性:可以根據(jù)實際需求進行擴展和升級,例如增加按鍵數(shù)量、擴展其他外設等。

具體實現(xiàn)過程如下:

基于FPGA的4x4矩陣鍵盤控制器verilog開發(fā)實現(xiàn)

? ? ? ? 這里第一部分的主要目標是設計一個鍵盤掃描程序,并讀取4*4鍵盤上的鍵盤,并以0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F(xiàn)在7段數(shù)碼管上顯示出來。這里我們將用到開發(fā)板的鍵盤和數(shù)碼管。本模塊分為鍵盤掃描數(shù)碼管顯示兩個部分。這兩個部分非常的簡單,這里我們合在一起設計。鍵盤掃描的其基本原理如下所示:

基于FPGA的4x4矩陣鍵盤控制器verilog開發(fā)實現(xiàn)

? ? ? 通過不斷的掃描來完成鍵盤值的確認。注意這里四行和四列的交界初就是您實際中的16個按鍵,當您按下其中某個按鍵的時候,列信號y1,y2,y3,y4就會在對應的位置顯示出來,比如你按下了第一列第二個按鈕,那么就會在第二列的位置產(chǎn)生一個信號,又由于行信號x是一直在快速的掃描的,如果當?shù)诙姓脪呙柽^的時候,同時檢測到列信號,這說明這個按鈕按下了。這就是鍵盤掃描的基本原理。

? ? ? ?數(shù)碼管,這里,是7段數(shù)碼管,其基本結(jié)構(gòu)如下所示:

基于FPGA的4x4矩陣鍵盤控制器verilog開發(fā)實現(xiàn)

其一共有7個LED來表示一個數(shù)碼管。

二、核心程序

/* 

 
1. Wait buttons and identify key position: according to certain frequency with low level circulation scan lines Y3, Y0 - 

Monitor the status, once listed line judge a listed as low means have key is pressed, 

Stop scans and maintain the current state of lines, then read column line condition to get the current buttons are key code. 

2. Wait buttons pop-up: detection to each column line all become the top flat after restarting the scanning process, waiting for the next buttons 

? 
 
*/ 
 
module key_scanner(
                  clk,
                  rst,
                  row,
                  column,
                  scan_key
                  ); 
 
input clk;
input rst; 
input [3:0] column;//Column line 
output[3:0] row;//lines 
output[3:0] scan_key; 


reg[3:0]  row; 
reg[3:0]  scan_key; // scan code registers
reg[31:0] cnt_scan;// scan frequency counter 


reg      sign;     //sign=1:stop scanning 
					//				  sign=0:restart scanning*/  
reg      restart;  //               
 

always@(posedge clk or negedge rst) 
begin 
	 if(!rst) 
	 begin 
	 row<=4'b1110; 
	 cnt_scan<=0;  
	 end 
else begin 
			 if(sign==1'b0) 
			 begin 
				 restart<=0; 
				 cnt_scan<=cnt_scan+1; 
				 
				 //if(cnt_scan==32'h0000ffff) 
				// begin 			 
					 row[3:1]<=row[2:0]; 
					 row[0]<=row[3];  //4 root lines circulation send out low level 

					// cnt_scan<=0; 
				 //end 
			 end 
		else if(sign==1'b1) 
			 begin 
			  row<=row; 
			  if(column==4'b1111) 
			  restart<=1;
			  //Detect each column is high level 
			 end 
	 end 
end 
 
 
always@(posedge clk or negedge rst) 
begin 
	 if(!rst) 
	 begin 
	 scan_key<=0; 	 
	 end 
else begin 
		  if(restart) 
		  begin 
		  sign<=0; 
		  scan_key<=0; 
		  end 
     else begin 
		  case(row)  //This case results testing where key press 
			4'b1110: 
				case(column) 
					4'b1110: begin 
					    sign<=1; 
						scan_key<=0; 
					 end 
					4'b1101: begin 
						sign<=1; 
						scan_key<=1; 
					 end 
					4'b1011: begin 
						sign<=1; 
						scan_key<=2; 
					 end 
					4'b0111: begin 
						sign<=1; 
						scan_key<=3; 
					 end 
				 endcase 
			4'b1101: 
				case(column) 
					4'b1110: begin 
						sign<=1; 
						scan_key<=4; 
					 end 
					4'b1101: begin 
						scan_key<=5; 
						sign<=1; 
					 end 
					4'b1011: begin 
						scan_key<=6; 
						sign<=1; 
					 end 
					4'b0111: begin 
						scan_key<=7; 
						sign<=1; 
					 end 
				 endcase 
			4'b1011: 
				case(column) 
					4'b1110: begin 
						scan_key<=8; 
						sign<=1; 
					 end 
					4'b1101: begin 
						scan_key<=9; 
						sign<=1; 
					 end 
					4'b1011: begin 
						scan_key<=10; 
						sign<=1; 
					 end 
					4'b0111: begin 
						scan_key<=11; 
						sign<=1; 
					 end 
				 endcase 
			4'b0111: 
				case(column) 
					4'b1110: begin 
						scan_key<=12; 
						sign<=1; 
					 end 
					4'b1101: begin 
						scan_key<=13; 
						sign<=1; 
					 end 
					4'b1011: begin 
						scan_key<=14; 
						sign<=1; 
					 end 
					4'b0111: begin 
						scan_key<=15; 
						sign<=1; 
					 end 
				 endcase 
			 default: 
				scan_key<=15; 
		 endcase 
	 end 
	end 
end 
 
endmodule		

三、測試結(jié)果

其仿真結(jié)果如下所示:

基于FPGA的4x4矩陣鍵盤控制器verilog開發(fā)實現(xiàn)

注意col進行掃描的時候,data分別輸出0,1,2,3等鍵盤值。

Clk

系統(tǒng)時鐘

Rst

系統(tǒng)復位

Col

由鍵盤輸入產(chǎn)生的列掃描信號

Data

鍵盤值

LED_display

7LED數(shù)值顯示

Rows

行掃描信號

LED_select

數(shù)碼管的選擇

A02-37文章來源地址http://www.zghlxwxcb.cn/news/detail-505131.html

到了這里,關(guān)于基于FPGA的4x4矩陣鍵盤控制器verilog開發(fā)實現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • C51單片機-按下K0至K15,顯示按鍵標號(4x4矩陣鍵盤電路,1個數(shù)碼管)

    C51單片機-按下K0至K15,顯示按鍵標號(4x4矩陣鍵盤電路,1個數(shù)碼管)

    keil uVision4界面: proteus仿真界面:

    2024年02月04日
    瀏覽(27)
  • 多軸機械臂運動控制:4x4坐標變換矩陣該用C語言的二維數(shù)組還是一維數(shù)組?

    ????????做多軸機械臂的運動控制,免不了要對4x4的坐標變換矩陣進行乘法,C語言中可以用二維數(shù)組或者一維數(shù)組來實現(xiàn)矩陣,下面來比較一下二維數(shù)組和一維數(shù)組的性能差異。 ????????開發(fā)環(huán)境:Visual Studio 2022,分別在Debug和Release模式下測試函數(shù)Multi4x4和Multi16,Re

    2024年03月25日
    瀏覽(21)
  • STM32CubeMX驅(qū)動4x4鍵盤模塊

    STM32CubeMX驅(qū)動4x4鍵盤模塊

    4x4鍵盤模塊是一種常用的電子組件,它由16個按鈕或開關(guān)以矩陣方式排列而成,可以與微控制器或其他數(shù)字電路設備一起使用。該模塊通常用于數(shù)據(jù)輸入、操作界面等各種應用場合。 如果你的單片機已經(jīng)有足夠的GPIO引腳可供使用,可以把4x4鍵盤模塊中的16個按鍵分別連接到

    2024年01月21日
    瀏覽(22)
  • word 如何編寫4x4矩陣

    word 如何編寫4x4矩陣

    百度上給的教程,打印出來沒有對齊 https://jingyan.baidu.com/article/6b182309995f8dba58e159fc.html 百度上的方式試了一下,不會對齊。導致公式看起來很奇怪。 下面方式會自動對齊 摸索了一下發(fā)現(xiàn)可以用下面這種方式編寫 4x4 矩陣。先創(chuàng)建一個 3x3矩陣,然后選擇其中一個矩陣,右鍵插入

    2024年02月04日
    瀏覽(21)
  • 矩陣乘法優(yōu)化:4x4矩陣塊優(yōu)化方法

    MMult_4x4_3.h 一次計算C中的4x4小塊 0.24gflops 2.1% 1 MMult_4x4_4.h 一次計算C中的4x4小塊 0.24gflops 2.1% 1 MMult_4x4_5.h 一次計算C中的4x4小塊,將16個循環(huán)合并一個 0.25gflops 2.2% 1 MMult_4x4_6.h 一次計算C中的4x4小塊(我們在寄存器中累加C的元素,并對a的元素使用寄存器) 1.75gflops 16.0% 1 MMult_4x4_7.h 在

    2024年02月15日
    瀏覽(30)
  • UG\NX二次開發(fā) 獲取部件的4x4矩陣

    UG\NX二次開發(fā) 獲取部件的4x4矩陣

    文章作者:里海 來源網(wǎng)站: https://blog.csdn.net/WangPaiFeiXingYuan 輸入部件occ,獲取矩陣。用函數(shù)UF_ASSEM_ask_transform_of_occ(),比較直接。 輸入部件的實例或事例,獲取矩陣。用函數(shù)UF_ASSEM_ask_component_data()。 通過部件事例獲取實例的方法

    2024年02月14日
    瀏覽(26)
  • UG\NX二次開發(fā) 獲取部件的4x4矩陣的方法

    UG\NX二次開發(fā) 獲取部件的4x4矩陣的方法

    文章作者:里海 來源網(wǎng)站: https://blog.csdn.net/WangPaiFeiXingYuan 方法1: 輸入部件occ,獲取矩陣。用函數(shù)UF_ASSEM_ask_transform_of_occ(),比較直接。 方法2: 輸入部件的實例或事例,獲取矩陣。用函數(shù)UF_ASSEM_ask_component_data()。 通過部件事例獲取實例的方法 相關(guān)函數(shù): ? ?

    2024年02月12日
    瀏覽(27)
  • STM32 Proteus仿真4x4矩陣15位搶答器數(shù)碼管TM1637顯示-0039

    STM32 Proteus仿真4x4矩陣15位搶答器數(shù)碼管TM1637顯示-0039

    STM32?Proteus仿真4x4矩陣15位搶答器數(shù)碼管TM1637顯示-0039 Proteus 仿真小實驗: STM32?Proteus仿真4x4矩陣15位搶答器數(shù)碼管TM1637顯示-0039 功能: 硬件組成:STM32F103R6單片機?+TM1637驅(qū)動4位數(shù)碼管+4x4矩陣鍵盤+蜂鳴器 1.有一個開啟鍵,點擊后蜂鳴器短響一聲,開始搶答。此后4位數(shù)碼管倒計

    2024年02月08日
    瀏覽(21)
  • C語言——求一個4X4矩陣的主對角線(從矩陣的左上角到右下角的元素)元素之和
  • C創(chuàng)建一個4x4的矩陣,顯示該矩陣。求該矩陣的外圍元素之和、主對角線元素之和以及副對角線元素之和。

    ????????編寫程序,創(chuàng)建一個4x4的矩陣,矩陣的值為{{1,2,4,5},{6,7,8,9},{10,11,12,13},{14,15,16,17}},顯示該矩陣。求該矩陣的外圍元素之和、主對角線元素之和以及副對角線元素之和。 ????????求三類元素的和,可以定義3 個不同的和變量,在遍歷數(shù)組元素的循環(huán)中通過三次條件

    2024年02月11日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包