Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

Přípravek MicroZed APO

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.

Popis hardware použité procesorové desky MicroZed

  • MICROZED EVALUATION KIT
  • ADSAES-Z7MB-7Z010-G
  • XilinX Zynq 7Z010
  • Základní čip: Xilinx Zynq-7000 All Programmable SoC
  • Typ: Z-7010, součástka XC7Z010
  • CPU: Dual ARM® Cortex™-A9 MPCore™ @ 866 MHz (NEON™ & Single / Double Precision Floating Point)
  • 2x L1 32 kB data +32 kB instruction, L2 512 KB
  • FPGA: 28K Logic Cells (~430K ASIC logic gates, 35 kbit)
  • Výpočetní jednotky v FPGA: 100 GMACs
  • Paměti v FPGA: 240 KB
  • Paměť na desce MicroZed: 1GB
  • Operační systém: GNU/Linux
    • GNU LIBC (libc6) 2.28-10
    • Jádro Linux 4.19.59-rt22-00005-gedf9096397ae src
    • Distribuce: Debian 10 Buster
  • Více informací na adrese http://microzed.org/product/microzed

Rozhraní přístupná přímo na desce MicroZed

  • 1G ETHERNET,
  • USB Host, konektor A
  • sériový port UART1 přes převodník na USB, USB mikro-B
  • mikro SD karta
  • na desce je Flash, jedna uživatelská LED, uživatelské

tlačítko a reset tlačítko

Popis rozhraní vývojového kitu MZ_APO

Na výukovém modulu jsou vyvedené v logickém návrhu obsloužené následující periferie

  • malý paralelní LCD display, zatím přístup jen přes command a data register
    • v FPGA lze implementovat automat na zobrazení z framebufferu
  • 32 LED diod pro zobrazení 32-bit slova (připojení k FPGA je přes SPI)
  • dva RGB LED indikátory (připojení SPI)
  • tři rotační ovládací vstupy (IRC) s vyvedenými fázově posunutými signály a kontaktem na stisknutí (připojení přes SPI)
  • čtyři výstupy na modelářská serva, signál a napájeni 5V výstupy jsou přímo připojené na FPGA a doplněné LED diodami dva lze použít i pro připojení 5V PS2 klávesnice
  • audiovstup na převodník v Zynqu, ten má interface do ARM části, ale lze ho sběrnicí připojit i do FPGA Programmable Logic. Na desce je osazený malý mikrofon, při zapojení externího do 3.5 mm červeného JACKa dojde k přepnutí na vnější vstup, jumperem lze nastavit ze zesíleného na klasický 1V linkový standard
  • audio výstup, pouze PWM přímo z FPGA PL, ale při vhodné modulaci lze přehrát i melodii. Na desce je přilepený malý reproduktor s možností přepnutí na sluchátka po zapojení do JACK (pouze mono výstup)
  • 2x PMOD konektor, jedná se o de-facto standard pro připojení pomalých (max. desítky MHz) periferií k FPGA, na každém je vyvedeno 8 FPGA PL signálů, napájení +3.3V a navíc jsou přidané piny pro napájení +5V, s tím že +5V lze odpojovat jumperem. Při zkratu do 3.3 logických signálů hrozí zničení. Není přímo použitý standard PMOD konektoru, který na straně FPGA používá samičku. Důvod je možnost snadného připojení na plochý kabel. Krátkou spojkou je možné zařídit redukci přímo na interface kompatibilní s dostupnými PMOD periferiemi.
  • 1x 40 pin konektor s 36 FPGA 3.3V signály. Odpovídá rozložení signálů na výukových deskách Altera DE2. Část signálů je vedena s ohledem na použitelnost pro rychlé LVDS spojení. Druhá půlka je sdílená s PMOD výstupy. Vyvedené je napájení +3.3V a jumerem připojovaných +5V.
  • 2x rozhraní pro připojení 10-bit paralelních kamer.
  • dva kanály pro připojení CAN sběrnic, budiče do 5 MBd připojení přes FPGA PL buď na integrované kontroléry nebo na radiče v FPGA, ty by bylo možné implemntovat v rámci nějakého projektu s podporou CAN-FD
  • zdroj pro napájení 5.5 mm JACKem z 12 až 24 VDC.
  • na konektor USB B je připojený čip FTDI, který obstarává přístup na sériovou konzoli směrovanou na UART0 obvodu Zynq. Vlastní signály obvodu Zynq a napájení kitu jsou konektoru a signálů USB galvanicky oddělené. S volbou nastavení konzole na piny MIO10 a MIO11 byla upravená a skompilovaná vlastní verze zavaděče U-Boot. Zkompilované bylo na míru jádro operačního systému Linux.
  • při použití UART0 přes převodník FTDI, je možné signálem break aplikovaným po dobu delší než 1s desku resetovat.
  • dvoupinový konektor pro externí reset, například relátkem při použití pro vzdálený přístup a ladění aplikací
  • návrh hardware Ing. Petr Porazil ve firmě PiKRON s.r.o.

Kompletní mechanický návrh a návrh elektroniky kitu je k dispozici v GIT repozitáři https://gitlab.com/pikron/projects/mz_apo/microzed_apo

Pro zobrazení a editaci mechanického návrhu je potřeba nainstalovat program FreeCAD https://freecadweb.org/

Pro zobrazení a editaci schémat a pložného spoje pak návrhový systém Ing. Petra Porazila - PEDA https://sourceforge.net/projects/peda/

Tabulka bázových adres jednotlivých periferií

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)
0x43c20000 0x4000 DCSPDRV_REG_BASE_PHYS_0 Periferie pro řízení prvního stejnosměrného motorku
0x43c30000 0x4000 DCSPDRV_REG_BASE_PHYS_1 Periferie pro řízení druhého stejnosměrného motorku

Blok otočných voličů, maticové klávesnice a RGB LED

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.

Paralelní LCD display

K vývojovému kitu je připojený grafický displej s lokálním řadičem, který se stará o obnovování obrazu na TFT LCD display s rozměry 480 x 320 bodů.

Řadič přijímá příkazy zapisované na 16-bitovou bránu mapovanou do fyzického paměťového prostoru na adresu 0x43c00008 (PARLCD_REG_BASE_PHYS+PARLCD_REG_CMD_o).

Většina příkazů pak vyžaduje pro provedení vlastní operace zapsání dat. Data je potřeba zapsat na adresu 0x43c0000c (PARLCD_REG_BASE_PHYS+PARLCD_REG_DATA_o).

Příklady práce s LCD naleznete na stráce cvičení 09.

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.

Výstupu na modelářská serva nebo pro PS2 klávesnici/myš

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.

PWM audio výstup

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.

Periferie pro řízení stejnosměrného motorku

Tato periferie byla původně navržená pro předmět Programování systémů reálného času (B3M35PSR, B4B35PSR). Do FPGA návrhu pro předmět Architektura počítačů je zahrnutá volitelně.

Návrh periferie je zahrnutý dvakrát. Jednou pro připojení výkonového stupně a odečtu polohy ke konektoru PMOD1, pro který jsou registry mapované od adresy DCSPDRV_REG_BASE_PHYS_0 a podruhé pro motor připojený přes konektor PMOD2, bázvá adresa DCSPDRV_REG_BASE_PHYS_1.

Ofset registru Symbolické označení Bity Popis
0x0000 DCSPDRV_REG_CR_o 31 .. 0 Řídicí registr periferie
4 Přímé řízení výstupu PWMA
5 Přímé řízení výstupu PWMB
6 Povolit výstup PWM podle plnění a periody
8 Vynulování načítané polohy v IRC
0x0004 DCSPDRV_REG_SR_o 31 .. 0 Stavový registr periferie
8 Logická úroveň na pinu IRCA
9 Logická úroveň na pinu IRCB
10 Logická úroveň na pinu IRC IRQ
0x0008 DCSPDRV_REG_PERIOD_o 31 .. 0 Nastavení periody PWM po 10 ns (100 MHz)
29 .. 0 Nastavení délky PWM (vhodných 5000, 20 kHz)
0x000C DCSPDRV_REG_DUTY_o 31 .. 0 Regist pro nasvaneí požadované úrovně plnění PWM, jednotka 10 ns
29 .. 0 Maska implementovaných bitů, nastavení délky pulsu/plnění v periodě
30 Volba směru aplikace napětí na motor
31 Volba napětí pro opačný směr otáčení
0x0010 DCSPDRV_REG_IRC_o 31 .. 0 Napočítaný počet inkrementů/poloha/natočení motoru

Implementace periferie se nachází v adresáři /system/ip/dcsimpledrv_1.0/hdl.

Další periferie

Uživatelské tlačítko na procesorovém modulu

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

Uživatelská LED na procesorovém modulu

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

Odkazy

courses/b35apo/documentation/mz_apo/start.txt · Last modified: 2023/01/20 08:20 (external edit)