Tato stránka obsahuje podrobný popis hardware a periferií připravených pro cvičení a semestrální úlohy. Návody jak se se k přípravku připojit naleznete na stránce Nápověda k práci s přípravkem MicroZed APO.
Rozhraní přístupná přímo na desce MicroZed
tlačítko a reset tlačítko
Na výukovém modulu jsou vyvedené v logickém návrhu obsloužené následující periferie
| Fyzická adresa | Rozsah | Symbolické označení | Popis |
|---|---|---|---|
| 0x43c40000 | 0x4000 | SPILED_REG_BASE_PHYS | Blok periferií, otočných voličů, maticové klávesnice a RGB LED |
| 0x43c00000 | 0x4000 | PARLCD_REG_BASE_PHYS | Paralelní LCD display |
| 0x43c50000 | 0x4000 | SERVOPS2_REG_BASE_PHYS | Řízení až čtyř modelářských serv, alternativně PS2 |
| 0x43c60000 | 0x4000 | AUDIOPWM_REG_BASE_PHYS | Jednoduchý audio výstup (zatím jen PWM) |
Sada registrů začíná na fyzické adrese SPILED_REG_BASE_PHYS
| Ofset registru | Symbolické označení | Bity | Popis |
|---|---|---|---|
| 0x004 | SPILED_REG_LED_LINE_o | 31 .. 0 | Řádka 32 žlutých LED diod mapovaná přímo do paměti |
| 0x010 | SPILED_REG_LED_RGB1_o | 23 .. 0 | Zápis RGB hodnot do PWM registrů pro RGB LED 1 |
| 23 .. 16 | Červená složka R | ||
| 15 .. 8 | Zelená složka G | ||
| 7 .. 0 | Modrá složka B | ||
| 0x014 | SPILED_REG_LED_RGB2_o | 23 .. 0 | Zápis RGB hodnot do PWM registrů pro RGB LED 2 |
| 23 .. 16 | Červená složka R | ||
| 15 .. 8 | Zelená složka G | ||
| 7 .. 0 | Modrá složka B | ||
| 0x018 | SPILED_REG_LED_KBDWR_DIRECT_o | 31 .. 0 | Přímý zápis do LED a výstupu/scanu klávesnice |
| 2 .. 0 | Přímý výstup (or) na R, G a B diody RGB LED 1 | ||
| 5 .. 3 | Přímý výstup (or) na R, G a B diody RGB LED 2 | ||
| 6 | Samostatná stavová LED dioda | ||
| 7 | Samostatná stavová LED dioda | ||
| 11 .. 8 | Výběr řady klávesnice | ||
| 0x020 | SPILED_REG_KBDRD_KNOBS_DIRECT_o | 31 .. 0 | Zpětná odezva klávesnice a otočných voličů |
| 3 .. 0 | Zpětná odezva klávesnice | ||
| 16 | Nefiltrovaný stav kanálu A modrého voliče B | ||
| 17 | Nefiltrovaný stav kanálu B modrého voliče B | ||
| 18 | Nefiltrovaný stav tlačítka modrého voliče B | ||
| 19 | Nefiltrovaný stav kanálu A zeleného voliče G | ||
| 20 | Nefiltrovaný stav kanálu B zeleného voliče G | ||
| 21 | Nefiltrovaný stav tlačítka zeleného voliče G | ||
| 22 | Nefiltrovaný stav kanálu A červeného voliče R | ||
| 23 | Nefiltrovaný stav kanálu B červeného voliče R | ||
| 24 | Nefiltrovaný stav tlačítka červeného voliče R | ||
| 0x024 | SPILED_REG_KNOBS_8BIT_o | 31 .. 0 | Filtrované hodnoty voličů jako 8 bit čísla |
| 7 .. 0 | Relativní natočení modrého voliče B | ||
| 15 .. 8 | Relativní natočení zeleného voliče G | ||
| 23 .. 16 | Relativní natočení červeného voliče R | ||
| 24 | Filtrovaná hodnota tlačítka modrého voliče B | ||
| 25 | Filtrovaná hodnota tlačítka zeleného voliče G | ||
| 26 | Filtrovaná hodnota tlačítka červeného voliče R |
Další informace pro zájemce o vlastní návrh periferie pro integrovaný procesor v hradlovém poli
Implementace periferie se nachází v adresáři /system/ip/spi_leds_and_enc_1.0/hdl. Protože se v případě LED diod a otočných voličů jedná o pomalé periferie a množství pinů využitelných pro zajímavější a rychlejší rozhraní jako jsou kamery je velké, tak jsou pro přenesení vstupně výstupních signálů z a do pomalých periferií využité sériově (SPI sběrnice) připojené GPIO expandery. Přenášená je v obou směrech posloupnost 48 bitů. O přenos se stará instance spi_leds_and_enc_v1_0_spi_fsm_inst komponenty spi_leds_and_enc_v1_0_spi_fsm. O realizaci sady registrů připojených k CPU sběrnicí AXI se pak stará komponenta spi_leds_and_enc_v1_0_S00_AXI. V odkazované části na konci zdrojového kódu je zřetelně vidět, jak jsou jednotlivé logické signály a jejich skupiny mapované do bitů a bitových polí v jednotlivých registrech AXI periferie.
Sada registrů začíná na fyzické adrese PARLCD_REG_BASE_PHYS
| Ofset registru | Symbolické označení | Bity | Popis |
|---|---|---|---|
| 0x000 | PARLCD_REG_CR_o | 31 .. 0 | Řídicí registr periferie |
| 1 | Generování signálu reset pro display | ||
| 0x008 | PARLCD_REG_CMD_o | 7 .. 0 | Generování řídicího cyklu/zápis příkazu do řadiče LCD |
| 0x00C | PARLCD_REG_DATA_o | 15 .. 0 | Generování datového 16-bit cyklu/zápis příkazu do řadiče LCD |
| 0x00C | PARLCD_REG_DATA_o | 31 .. 0 | Generování dvou datových cyklů pro řadič (15 .. 0) a (31 .. 16) |
Implementace periferie se nachází v adresáři /system/ip/display_16bit_cmd_data_bus_1.0/hdl.
Sada registrů začíná na fyzické adrese SERVOPS2_REG_BASE_PHYS
| Ofset registru | Symbolické označení | Bity | Popis |
|---|---|---|---|
| 0x000 | SERVOPS2_REG_CR_o | 31 .. 0 | Řídicí registr periferie a přímé ovládání |
| 0 | Nastavení klidové hodnoty (H/L) pro LED/SERVO1 | ||
| 1 | Nastavení klidové hodnoty (H/L) pro LED/SERVO2 | ||
| 2 | Nastavení klidové hodnoty (H/L) pro LED/SERVO3 | ||
| překrývá se s PS2 Clock | |||
| 3 | Nastavení klidové hodnoty (H/L) pro LED/SERVO4 | ||
| překrývá se s PS2 Data, defaultně třetí stav | |||
| 8 | řízení směru signálu SERVO4/PS DATA, 0 .. in, 1 .. out | ||
| 0x00C | SERVOPS2_REG_PWMPER_o | 23 .. 0 | Perioda PWM cyklu v kroku 10 ns |
| 0x010 | SERVOPS2_REG_PWM1_o | 23 .. 0 | Plnění PWM signálu SERVO1 v kroku 10 |
| 0x014 | SERVOPS2_REG_PWM2_o | 23 .. 0 | Plnění PWM signálu SERVO2 v kroku 10 |
| 0x018 | SERVOPS2_REG_PWM3_o | 23 .. 0 | Plnění PWM signálu SERVO3 v kroku 10 |
| 0x01C | SERVOPS2_REG_PWM4_o | 23 .. 0 | Plnění PWM signálu SERVO4 v kroku 10 |
Implementace periferie se nachází v adresáři /system/ip/servo_led_ps2_1.0/hdl.
Sada registrů začíná na fyzické adrese AUDIOPWM_REG_BASE_PHYS
| Ofset registru | Symbolické označení | Bity | Popis |
|---|---|---|---|
| 0x000 | AUDIOPWM_REG_CR_o | 31 .. 0 | Řídicí registr periferie |
| 0x008 | AUDIOPWM_REG_PWMPER_o | 23 .. 0 | Perioda PWM cyklu v kroku 10 ns |
| 0x00C | AUDIOPWM_REG_PWM_o | 23 .. 0 | Plnění PWM signálu v kroku 10 |
Implementace periferie se nachází v adresáři /system/ip/audio_single_pwm_1.0/hdl.
Tlačítko je přivedené na pin PS_MIO51_501 SoC Zynq. V jádru Linux je pro MIO nastaven offset 906.
Pro přístup k uživatelskému tlačítku je tedy potřeba přistupovat k GPIO pinu 957 (= 906 + 51).
echo 957 > /sys/class/gpio/export cat /sys/class/gpio/gpio957/value
LED je přivedená na pin PS_MIO47_501 SoC Zynq. V jádru Linux je pro MIO nastaven offset 906.
Pro přístup k uživatelské LED je tedy potřeba přistupovat k GPIO pinu 953.
echo 953 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio953/direction echo 1 > /sys/class/gpio/gpio953/value