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.
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.
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.
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ů.
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.