實驗四 4X4 矩陣鍵盤實驗 4X4 矩陣鍵盤輸入並輸出至七段式顯示器. 底板子 4x4...
-
date post
21-Dec-2015 -
Category
Documents
-
view
246 -
download
9
Transcript of 實驗四 4X4 矩陣鍵盤實驗 4X4 矩陣鍵盤輸入並輸出至七段式顯示器. 底板子 4x4...
實驗四 4X4 矩陣鍵盤實驗
4X4 矩陣鍵盤輸入並輸出至七段式顯示器
底板子 4x4 矩陣按鍵
按鍵與 FPGA 之接線示意圖
FPGA
VCC
R R R R
col[0] col[1] col[2] col[3]
row[0]
row[2]
row[1]
row[3]
1 2 3 4
5 6 7 8
9 a b c
fd e 0
FPGA
VCC
R R R R
col[0] col[1] col[2] col[3]
row[0]
row[2]
row[1]
row[3]
1 2 3 4
5 6 7 8
9 a b c
fd e 0
按鍵掃瞄之狀態機圖
按鍵掃瞄之狀態 按鍵掃瞄之有限狀態機電路,總共分有 6 個狀態:
狀態 S_0: Idle State 沒有任何按鍵發生時,都停留在此狀態,如果偵測到 S_Row=1( 亦即有按鍵發生 ) 就跳至 S_1 狀態。
狀態 S_1: 發出掃瞄 column 0 即 col=4’b1110 的狀態,並讀回 row值作比較:
① 如果讀到 row 不等於 f (4’b1111) 就代表在 column 0 上的 4 個按鍵( 4 , 8 , d , 0 )有其中一個被按下,於是跳至 S_5 做等待使用者放開按鍵的處理。
② 如果讀到 row 等於 f (4’b1111) 就代表在 column 0 上的 4 個按鍵( 4 , 8 , d , 0 )沒有被按下,於是跳至 S_2 做掃瞄 column 1 的按鍵。
狀態 S_2: 發出掃瞄 column 1 即 col=4’b1101 的狀態並讀回 row 值作比較:
① 如果讀到 row 不等於 f (4’b1111) 就代表在 column 1 上的 4 個按鍵( 3 , 7 , c , f )有其中一個被按下,於是跳至 S_5 做等待使用者放開按鍵的處理。
② 如果讀到 row 等於 f (4’b1111) 就代表在 column 1 上的 4 個按鍵( 3 , 7 , c , f )沒有被按下,於是跳至 S_3 做掃瞄 column 2 的按鍵。
按鍵掃瞄之狀態 狀態 S_3: 發出掃瞄 column 2 即 col=4’b1011 的狀態並讀
回 row 值作比較:① 如果讀到 row 不等於 f (4’b1111) 就代表在 column 2 上的 4 個按鍵
( 2 , 6 , b , e )有其中一個被按下,於是跳至 S_5 做等待使用者放開按鍵的處理。
② 如果讀到 row 等於 f (4’b1111) 就代表在 column 2 上的 4 個按鍵( 2 , 6 , b , e )沒有被按下,於是跳至 S_4 做掃瞄 column 2 的按鍵。
狀態 S_4: 發出掃瞄 column 3 即 col=4’b0111 的狀態並讀回 row 值作比較:① 如果讀到 row 不等於 f (4’b1111) 就代表在 column 3 上的 4 個按鍵
( 1 , 5 , c , d )有其中一個被按下,於是跳至 S_5 做等待使用者放開按鍵的處理。
② 如果讀到 row 等於 f (4’b1111) 就代表在 column 3 上的 4 個按鍵( 1 , 5 , c , d )沒有被按下,於是跳回至 S_0 ,因此 FSM 跳回 Idle state 即掃描完 4 個 column 都沒有發現任何按鍵被按下。
狀態 S_5: 等待使用者放開按鍵的狀態,如果使用者沒放開按鍵就一直停留在此,如果放開了,就跳回 S_0 狀態。
電路架構
Pin assignment set_location_assignment PIN_138 -to col[0] set_location_assignment PIN_139 -to col[1] set_location_assignment PIN_140 -to col[2] set_location_assignment PIN_141 -to col[3] set_location_assignment PIN_134 -to row[0] set_location_assignment PIN_135 -to row[1] set_location_assignment PIN_136 -to row[2] set_location_assignment PIN_137 -to row[3]