Čeština / English
Login

Firmware / Klávesnice 4x4

Autoři: Karel Slaný (); Jan Markovič
Update: 19.3.2009

1. Úvod

Na kitu je přímo osazena alfanumerická klávesnice "AK-1604-A-WWB", která obsahuje 16 tlačítek zapojených do matice 4x4. Zapojení klávesnice je znázorněno na obrázku 1.1.

keyboard_1.png

Obrázek 1.1: Zapojení tlačítek v klávesnici.

Algoritmus skenování stisknutých tlačítek na klávesnici je poměrně jednoduchý. Na vstupy klávesnice KB_KIN přiložíme signál který postupně jednoznačně určí jeden řádek klávesnice a na výstupu klávesnice KB_KOUT zjistíme, která tlačítka jsou ve vybraném řádku zmáčknuta.

2. Implementace řadiče klávesnice 4x4

Podle algoritmu, uvedeného v úvodu, byl navržen řadič, který zajišťuje skenování klávesnice. Řadič se ke klávesnici připojuje signály KB_KIN a KB_KOUT. Která klávesa je stisknuta je možné zjistit pomocí signálu DATA_OUT, jehož platnost určuje signál DATA_VLD. Význam jednotlivých bitů DATA_OUT je uveden v tabulce.

bit

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

klávesa

1

4

7

*

2

5

8

0

3

6

9

#

A

B

C

D

Tabulka : Přiřazení bitů

Pro většinu aplikací je velice nepraktické stále skenovat, zda není stlačena nějaká klávesa na klávesnici, ale je vhodné, aby bylo při stlačení a puštení nějaké klávesy na klávesnici vyvoláno přerušení. K tomuto účelu je možné použít signál DATA_VLD, který je aktivní pouze tehdy, došlo-li oproti předchozímu stavu ke změně stavu tlačítek klávesnice. Časový interval mezi skenováním je řízen jednoduchým čítačem. Nutno zdůraznit, že interval je závislý na vstupním hodinovém signálu.

keyboard_ctrl.png

Obrázek 2.1: Rozhraní komponenty.

Popis jednotlivých signálů rozhraní:

  • CLK - hodinový signál

  • RST - reset

  • KB_KIN - výstupní signál pro připojení ke vstupu klávesnice

  • KB_KOUT - vstupní signál pro připojení k výstupu klávesnice

  • DATA_OUT - stav kláves

  • DATA_VLD - signál určující platnost signálu DATA_OUT

Daná implementace předpokládá, že při stlačení určité klávesy je hodnota na daném vstupu log. 0 a při nestlačení naopak log. 1. Tento předpoklad zajistíme tak, že na výstupu klávesnice přivedeme log. 0 vždy pouze na jediný bit, kterým určíme řádek. Stlačením klávesy tedy zajistíme, že na výstupu stlačené klávesy bude log. 0. Ostatní výstupy se chovají jako nezapojené a jsou tedy ve stavu vysoké impedance. V případě klávesnice je ovšem nutné zaručit, aby nezapojené výstupy měly místo stavu vysoké impedance stav log. 1. Takové změny lze docílit poměrně jednoduše a to připojením pull-up rezistorů.

keyboard_pullup.png

Obrázek 2.2: PULL-UP rezistor.

Připojení pull-up rezistorů umožňuje přímo FPGA. Proto stačí jen nastavit vlastnosti daného portu v souboru s nastavením pinů FPGA, který má příponu .UCF. Tento soubor lze najít v SVN ve složce ctrl s názvem fpga_xc3s50.ucf a dané nastavení se provádí pomocí vyhrazeného slova PULLUP.

Zobrazeno: 2064x Naposledy: 18.11.2017 16:56:16