PicoBlaze lekce 3: sériová komunikace RS232 a testování IP jader pomocí procesoru PicoBlaze Jiří Svozil, Jaroslav Stejskal, Leoš Kafka, Jiří Kadlec

Podobné dokumenty
PicoBlaze lekce 1: assembler, C překladač a simulační prostředí Jiří Svozil, Leoš Kafka, Jiří Kadlec svozil@utia.cas.cz

PicoBlaze lekce 4: Aplikace pro výuku asembleru procesoru PicoBlaze Jiří Svozil, Jaroslav Stejskal, Leoš Kafka, Jiří Kadlec

Řadiče periferií pro vývojovou desku Spartan3E Starter Kit Jaroslav Stejskal, Jiří Svozil, Leoš Kafka, Jiří Kadlec.

MIDAM Simulátor Verze 1.5

Uživatelský manuál. KNXgw232

Popis programu EnicomD

Použití UART a radia na platformě micro:bit

MIDAM Verze 1.1. Hlavní okno :

Práce v návrhovém prostředí Xilinx ISE WebPack 12 BDOM UMEL FEKT Šteffan Pavel

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta informačních technologií

Komunikační protokol

Princip funkce počítače

1. Seznamte se s výukovou platformou FITkit (

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 8

Práce v návrhovém prostředí Xilinx ISE WebPack 9.2i

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

... sekvenční výstupy. Obr. 1: Obecné schéma stavového automatu

Instalační a uživatelská příručka aplikace VHDT

Projekt: Přístupový terminál

9. Rozšiřující desky Evb_Display a Evb_keyboard

Základní popis Toolboxu MPSV nástroje

Obslužný software. PAP ISO 9001

Uživatelský manuál. KNXgal. řízení zabezpečovacích ústředen. Galaxy ze sběrnice KNX. napájeno ze sběrnice KNX. indikace komunikace na KNX

SEMESTRÁLNÍ PROJEKT Y38PRO

Cíle. Teoretický úvod

Uživatelský manuál. Program OK MIFARE je program pro čtení a zápis dat na karty Mifare S50 (1k) na karty Mifare S70 (4k).

Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y. Rovnicí y = x 1. x 0. Přiřazení signálů: ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Albatros MultiV ALBATROS MultiV ALBATROS MultiV-R Datový převodník LG PI485 / MODBUS TCP LG PI485 / MODBUS RTU s možností rozpočítávání spotřeby elekt

Práce v návrhovém prostředí Xilinx ISE WebPack 10.1 BDOM UMEL FEKT Šteffan Pavel

Principy komunikace s adaptéry periferních zařízení (PZ)

Praktické úlohy- 2.oblast zaměření

Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y Rovnicí y = x 1. Přiřazení signálů:

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Měřič krevního tlaku. 1 Měření krevního tlaku. 1.1 Princip oscilometrické metody 2007/

Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5

Vrstvy periferních rozhraní

Modul IRZ návod k použití

Tužka s kamerou EKONOMY, 720x480px

Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5

Uživatelský manuál. KNX232e / KNX232e1k

Uživatelský manuál. KNXgal

Uživatelská příručka

Laboratorní cvičení z předmětu Elektrická měření 2. ročník KMT

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Panel IPP. Ovladač řídící jednotka

Skrytá kamera v peru TCT-SH03

Hard r wa w ro r v o á ko n igu ig ra c řa ř dy d 100V a 200V

SNÍMAČOVÝ EXPANDÉR TB8.1x2 RS232 - ASCII

Demoprojekt Damocles 2404

Studijní skupiny. 1. Spuštění modulu Studijní skupiny

Struktura a architektura počítačů (BI-SAP) 10

Koncept pokročilého návrhu ve VHDL. INP - cvičení 2

SB485. Převodník rozhraní USB na linku RS485 nebo RS422. s galvanickým oddělením. Převodník SB485. RS485 nebo RS422 USB. přepínače PWR TXD RXD

Uživatelský manuál. KNXpar

Použití programovatelného čítače 8253

Technická zpráva. Zpracování akustických signálů pomocí FPGA. Revize Datum Autor Popis změn v dokumentu

LabView jako programovací jazyk II

1. Instalace programu LUPA

Projekt: Přístupový terminál

Testování ochrany při nesymetrickém zatížení generátoru terminálu REM 543

Mikrokontroléry. Doplňující text pro POS K. D. 2001

Řízení IO přenosů DMA řadičem

UC485P. Převodník RS232 na RS485 nebo RS422. Průmyslové provedení s krytím

Cíle. Teoretický úvod. BDIO - Digitální obvody Ústav mikroelektroniky Sekvenční logika - debouncer, čítače, měření doby stisknutí tlačítka Student

Export tabulky výsledků

Typy a použití klopných obvodů

Nápověda k aplikaci EA Script Engine

VComNet uživatelská příručka. VComNet. Uživatelská příručka Úvod. Vlastnosti aplikace. Blokové schéma. «library» MetelCom LAN

Komunikační protokol

Systém souborů (file system, FS)

Špionážní pero s kamerou, 720x480px

Dispatcher PDA Dokumentace

Body Mass Index 3. Instalace

Vstupně - výstupní moduly

ZAŘÍZENÍ PRO VZDÁLENÝ SBĚR A PŘENOS DAT FIRMWARE

Technická dokumentace ČTEČKA ČIPŮ DALLAS. typ DSRS2319 verze 1.2.

UniLog-D. v1.01 návod k obsluze software. Strana 1

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

Ing. Michal Martin. Spojení PLC CLICK s NA-9289

RE3USB programovatelné USB relé

Richard Šusta, verze 1.0 ze dne 10. září 2014, publikováno pod GNU Free Documentation License

Analyzátor sériového rozhraní RSA1B

ČSOB Business Connector

MĚŘICÍ PŘÍSTROJ PRO PC. 4 VSTUPY: 0 10 V ZESÍLENÍ : 1x, 2x, 4x, 8x VÝSTUP: LINKA RS232 RS232 DRAK 4 U1 U2 U3 U4

Komunikace modulu s procesorem SPI protokol

Uživatelský manuál. Format Convert V3.1

TCP-Wedge ZDARMA. Přidává podporu TCP/IP: Sběr dat z adres portu IP na libovolné síti TCP/IP - ethernet / internet.

Connect Genius V2. Instalace programu.

UŽIVATELSKÝ MANUÁL. pro 485COM FW 2.x (MODBUS)

Popis programu: Popis přípon důležitých souborů: *.qpf projektový soubor Quartusu

TW15 KONCOVÝ PRVEK MSKP. Popis výrobku Technická data Návod k obsluze. Technologie 2000 s.r.o., Jablonec nad Nisou

Semestrální práce z předmětu Speciální číslicové systémy X31SCS

Přerušovací systém s prioritním řetězem

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

1 Uživatelská dokumentace

Návrh konstrukce odchovny 3. dil

Základní popis Toolboxu MPSV nástroje

UniLog-L. v0.81 návod k obsluze software. Strana 1

Software pro vzdálenou laboratoř

Transkript:

Technická zpráva PicoBlaze lekce 3: sériová komunikace RS232 a testování IP jader pomocí procesoru PicoBlaze Jiří Svozil, Jaroslav Stejskal, Leoš Kafka, Jiří Kadlec svozil@utia.cas.cz, stejskal@utia.cas.cz Obsah 1. Úvod... 2 2. Moduly pro sériovou komunikaci... 2 2.1 Blokové schéma... 2 2.2 Nastavení přenosové rychlosti... 4 2.3 Připojení modulů k procesoru PicoBlaze... 5 2.4 Programové ovládání v procesoru PicoBlaze... 7 3. Tvorba IP jader pomocí Xilinx Core Generator... 9 3.1 Příklad použití... 9 3.2 Tvorba IP jader... 13 4. Připojení IP jádra k procesoru PicoBlaze... 13 4.1 Blokové schéma... 13 4.2 Připojení IP jader... 14 4.3 Ovládání IP jádra... 16 4.4 Otestování IP jádra v přípravku... 17 5. Obsah a popis přiloženého balíku... 20 6. Reference... 20 Revize Revize Datum Autor Popis změn v dokumentu 0 15.5.2007 Svozil, Stejskal Vytvoření dokumentu 1 7.6.2007 Kafka Revize dokumentu 2 5.9.2007 Svozil Revize dokumentu.

1. Úvod Tato lekce seznamuje uživatele s připojením modulů pro sériovou komunikaci RS232 k procesoru PicoBlaze a SW obsluhou těchto modulů. Dále pak s postupem tvorby IP jader v nástroji Xilinx Core Generator. Lekce dále popisuje tester takto vytvořených IP jader založený na procesoru PicoBlaze. Takto je pak možné provádět verifikaci IP jader z terminálu PC. Tester je zde uveden jako praktický příklad použití procesoru PicoBlaze. 2. Moduly pro sériovou komunikaci Součástí balíčku obsahujícího procesor PicoBlaze jsou moduly pro implementaci sériové linky. Moduly jsou dva: přijímací modul UART_RX a vysílací modul UART_TX. Oba moduly využívají 16 bajtů velkou vyrovnávací paměť FIFO, viz obrázek 1. Moduly používají toto nastavení sériové linky: 1 start bit, 8 datových bitů, žádná parita a 1 stop bit. Přenosová rychlost je volitelná. Oba moduly jsou velmi malé: vysílací modul zabírá na FPGA čipu 18 slice; přijímací modul 22 slice. Obrázek 1 UART vysílač a přijímač (převzato z [3]) 2.1 Blokové schéma Blokové schéma přijímače (UART_RX) je naznačeno na obrázku 2. Hlavní entita uart_rx obsahuje dvě komponenty: kcuart_rx a bbfifo_16x8. Sériová data vstupují do modulu signálem serial_in. Signál en_16_x_baud určuje baudovou rychlost přijímače. Řídícím signálem read_buffer je signalizováno, že aktuální data na výstupu data_out byla přečtena. Signálem reset_buffer se vymaže vyrovnávací paměť FIFO. Výstupní signály buffer_data_present, buffer_half_full a buffer_full indikují stav vyrovnávací paměti FIFO. Výstupní data data_out jsou 8bitová. Obrázek 2 Modul UART přijímač (RX) s pamětí FIFO (převzato z [3]) 2/20

Deklarace modulu přijímače uart_rx je na obrázku 3. Obrázek 3 Deklarace komponenty UART přijímače ve VHDL Blokové schéma modulu vysílače uart_tx je na obrázku 4. Hlavní entita uart_tx obsahuje dvě komponenty, kcuart_tx a bbfifo_16x8. Data do modulu vstupují 8bitovým signálem data_in. Řídící signály jsou obdobné jako u přijímače uart_rx. Namísto signálu read_buffer je zde signál write_buffer, který povoluje zápis dat do vyrovnávací paměti v modulu. Výstupem modulu je signál serial_out. Obrázek 4 Modul UART vysílače (TX) s pamětí FIFO (převzato z dokumentace [3]) 3/20

Deklarace modulu vysílače uart_tx je na obrázku 5. Obrázek 5 Deklarace komponenty UART vysílače ve VHDL 2.2 Nastavení přenosové rychlosti Pro nastavení přenosové rychlosti je nutné nastavit periodu signálu en_16_x_baud podle požadované přenosové rychlosti. Příklad generování tohoto signálu je na obrázku 6. Požadovaná baudová rychlost se nastavuje vhodnou konstantou v podmínce if baud_count = XX then. Hodnota konstanty ClockDivision se vypočítá podle Rovnice 1, kde clk_rate je hodinový kmitočet FPGA a BAUD_RATE je požadovaná přenosová rychlost. Výsledek je pak třeba zaokrouhlit na celé číslo. Příklad na obrázku 6 ukazuje nastavení přenosové rychlosti 115200 Baud při hodinovém kmitočtu 50 MHz. ClockDivis ion = clk _ rate BAUD _ RATE 16 Rovnice 1 Výpočet dělícího kmitočtu pro UART komponenty Obrázek 6 Nastavení přenosové rychlosti pro UART ve VHDL 4/20

2.3 Připojení UART modulů k procesoru PicoBlaze Tato kapitola se zabývá připojením obou modulů pro sériovou komunikaci k procesoru PicoBlaze. Procesor PicoBlaze má jeden výstupní port out_port, vstupní port in_port a adresovací port port_id. Všechny tyto porty jsou 8bitové. To dává možnost adresovat až 256 vstupních a výstupních 8bitových registrů. Zde se budeme zabývat pouze jednoduchým případem, kdy jsou na vstup a výstup procesoru připojeny moduly pro sériovou komunikaci. Blokové schéma zapojení výstupů modulů UART na vstup procesoru je uvedeno na obrázku 7. Výstupní signály tx_half_full, tx_full, rx_data_present, rx_half_full a rx_full jsou sloučeny do jednoho registru s názvem uart_status_port. Spolu s rx_data jsou přes multiplexor připojeny na vstupní port in_port procesoru PicoBlaze. Multiplexor je ovládán nejnižším bitem adresovacího portu port_id. Tímto bitem je spolu se signálem read_strobe generován i řídící signál read_from_uart, který je přiveden na vstup UART přijímače read_buffer. To znamená, že při čtení dat z adres, pro které platí port_id(0) = 1, se přečte bajt z přijímacího modulu a zároveň se toto přečtení indikuje signálem read_from_uart. Obrázek 7 Připojení UART přijímače a vysílače na vstupní port procesoru VHDL kód odpovídající zapojení na obrázku 7 je uveden na obrázku 8. V kódu je patrné sloučení výstupních signálů modulů UART do 8bitového signálu uart_status_port. Proces input_ports pak vytváří dekódovací logiku pro vstupní port procesoru. Tento proces lze případně libovolně rozšířit podle požadavků dalších připojených periferií. 5/20

Obrázek 8 Připojení UART přijímače a vysílače na vstupní port procesoru ve VHDL Připojení výstupu procesoru PicoBlaze na vstupní signály modulu vysílače je na obrázku 9. Na vstup vysílače data_in je přímo připojen výstup out_port procesoru. Signál write_to_uart přivedený na vstup write_buffer vysílače je generován nejnižším bitem signálu port_id a signálem write_strobe. To znamená, že při zápisu dat na adresy, pro které platí port_id(0) = 1, se zapíše bajt do vysílacího modulu UART. Obrázek 9 Připojení UART vysílače na výstupní port procesoru VHDL kód odpovídající zapojení z obrázku 9 je uveden na obrázku 10. Proces output_ports obsahuje dekódovací logiku pro výstupního porty procesoru. Poslední příkaz na obrázku představuje generování signálu write_to_uart. Proces lze případně libovolně rozšířit podle požadavků dalších připojených periferií. 6/20

Obrázek 10 Připojení UART vysílače na výstupní port procesoru ve VHDL 2.4 Programové ovládání v procesoru PicoBlaze V této kapitole je popsáno vyslání a příjem znaků po sériové lince pomocí výše popsaných modulů. Deklarace konstant pro UART moduly je uvedena na obrázku 11. Konstanta status_port představuje adresu, na kterou je namapován registr uart_status_port. Konstanty tx_half_full, tx_full, rx_data_present, rx_half_full, rx_full jsou masky jednotlivých bitů pro tento registr. Konstanty UART_read_port a UART_write_port jsou adresy pro čtení a zápis dat do sériové linky. Dále je použit registr sf, označený UART_data, sloužící pro funkce pro příjem a vyslání ASCII znaku, což bude vysvětleno později. Obrázek 11 Deklarace konstant portů pro UART v programu procesoru 7/20

Ukázka deklarace konstant ASCII znaků je na obrázku 12. Obrázek 12 Deklarace konstant ASCII znaků v programu procesoru Funkce send_to_uart slouží k vyslání znaku po sériové lince. Před její voláním je nutné do registru UART_data zapsat hodnotu vysílaného ASCII znaku, viz fragment kódu na obrázku 13. Vlastní funkce send_to_uart je na obrázku 14. Funkce přečte UART_status_port a testuje bit tx_full indikující plnou paměť FIFO. Pokud je FIFO paměť plná, funkce čeká. V opačném případě skočí na návěští UART_write a vysílaný znak se zapíše do vysílacího modulu. Ten pak provede odeslání znaku. Obrázek 13 Odeslání ASCII znaku přes UART v programu procesoru Obrázek 14 Programové řešení odeslání znaku ASCII přes UART (převzato z [3]) Příjem ASCII znaku po sériové lince je podobný vysílání. Slouží k tomu funkce read_from_uart, která zapíše přijatý znak do registru UART_data. Příklad použití je na obrázku 15. Vlastní funkce read_from_uart je na obrázku 16. Opět se opakovaně čte UART_status_port a testuje bit rx_data_present. Pokud je v paměti FIFO přijímacího modulu k dispozici nový znak, skočí se na návěští read_character a přijatý znak se uloží do registru UART_data. V opačném případě funkce čeká. V obou případech vysílání a příjmu se tedy jedná o blokující operace. Obrázek 15 Funkce pro příjem ASCII znaku přes UART v programu procesoru 8/20

Obrázek 16 Programové řešení příjmu ASCII znaku přes UART (převzato z dokumentace [3]) 3. Tvorba IP jader pomocí Xilinx Core Generator Xilinx Core Generator je nástroj sloužící k vytváření IP jader pro FPGA. Generátor umožňuje generovat širokou řadu IP jader, a to od běžných FIFO pamětí až po specializované funkce jako jsou FIR filtry a PCI-X sběrnice. 3.1 Příklad použití Následující postup slouží jako ukázka práce s Core Generátorem. Posuvné registry různé délky jsou použity jako vzorový příklad. Po spuštění Core Generátoru klikněte v levém horním rohu na položku File a dále vyberte New Project. Otevře se vám nové okno kde zadáte název projektu a adresář, kde se má projekt vytvořit. V případě, že zadaný adresář pro uložení neexistuje, je třeba potvrdit jeho vytvoření v dalším okně. Tento celý postup znázorňuje obrázek 17. Obrázek 17 Založení nového projektu CORE Generátoru 9/20

Posledním oknem při zakládání projektu v Xilinx Core Generatoru je výběr FPGA čipu, pro které má být IP jádro vygenerováno. Toto okno je na obrázku 18. V našem případě byl vybrán čip Spartan 3E XC3S500E s pouzdrem FG320. Pro jiná FPGA je třeba zvolit parametry dle příslušné specifikace, viz Tabulka 2 z Lekce 2. Obrázek 18 Založení projektu -výběr čipu Jako generované IP jádro jsme zvolili jednoduchý posuvný registr (Shift Register). Toto IP jádro bude dále použito v příkladu připojení IP jádra k procesoru PicoBlaze (kapitola 4). Výběr IP jádra provedeme v levém horním podokně aplikace. V záložce View by Function vybereme kategorii Basic Elements a dále podkategorii Registers, Shifters. Zde se pak nachází námi zvolený RAMbased Shift Register, viz obrázek 19. Otevření konfiguračního dialogu generátoru pro vybrané jádro provedeme buď z kontextového menu položky nebo dvojklikem levým tlačítkem myši. Obrázek 19 Výběr IP jádra 10/20

Shift Register má volitelnou šířku datové sběrnice a hloubku registru. Podrobnější informace o IP jádru poskytuje Data Sheet, dostupný z pravého okna Core Generátoru (obrázek 19). Obrázek 20 Nastavení parametrů generovaného Shift Registru Při nastavování parametrů generovaného Shift Registru je třeba nejprve vyplnit název komponenty (Component Name). Název bude Delay_1024x18 1, a to proto, aby vygenerovaná komponenta byla kompatibilní s VHDL soubory přiloženými k této lekci a dala se dále použít při tvorbě projektu v ISE. Dále z parametrů v sektoru Clocking Options zaškrtneme položku signálu clock enable CE a v poslední části pak nastavit šířku Width a hloubku Depth pro generovaný Shift registr, viz obrázek 20. Tlačítkem Next se pak postupuje k dalším volitelným parametrům jádra. Na dalších dvou stranách vyplníme pouze položky Default Data a Asynchronous Init Value nulovými hodnotami a to dle šířky generovaného registru. V našem případě tedy 18 nul. Tlačítkem Finish se pak vygeneruje příslušná komponenta. 1 Při použití FITkitu je třeba vytvořit Shift Registr o velikosti pouze 256x18 s názvem delay_256x18 a to z důvodu menší velikosti čipu. 11/20

Obrázek 21 Výpis vygenerovaných souborů Touto cestou byla do zadaného adresáře vygenerována řada souborů k danému modulu. Jejich výpis i s krátkým popisem je vytvořen po ukončení generování, viz obrázek 21. Pro naše účely je potřeba soubor delay_1024x18.vho, obsahující šablonu připojení IP jádra k signálům (obrázek 22), a soubory *.ngc, *.xco a *.edn (*.edn nemusí být vygenerován, nemá to ale žádný vliv na implementaci příkladu), obsahující přeložené netlisty daného jádra. Obrázek 22 Popis připojení vygenerovaného modulu ve VHDL soubor delay_1024x18_v0.vho 12/20

3.2 Tvorba IP jader Výše uvedeným způsobem vytvořte dvě různá ip jádra. A to dva shift registry o velikostech 1024x18 2 bitů a 768x24 bitů. Názvy jader budou delay_1024x18 a delay_768x24. Tyto budou dále použity v příkladu v kapitole 4. Soubory vygenerovaných IP jader *.ngc, *.xco a *.edn (je-li vytvořen) je nutné pro další práci zkopírovat do složky projektu ISE, ve které se bude s daným IP jádry pracovat. 4. Připojení IP jádra k procesoru PicoBlaze Následující příklad ukazuje použití procesoru PicoBlaze na praktickém příkladě. Jedná se o tester IP jader vytvořených pomocí Xilinx Core Generatoru. Procesor PicoBlaze je připojen sériovou linkou RS232 k PC. Po zaslání příkazu z PC generuje PicoBlaze testovací vektory (sekvenční) a vkládá je na vstup IP jader, vyčítá data z výstupů IP jáder a tato data zasílá pomocí sériové linky zpět na PC terminál. Tímto postupem lze jednoduše ověřit funkčnost vytvořených IP jader. Příklady jsou k dispozici na přiloženém CD pro desky Spartan3E Starter Kit, ML402, ML403, a VUT FITkit. CD obsahuje pro každou desku dva balíčky. První ip_v0.zip obsahuje potřebné zdrojové soubory. Ty je třeba doplnit o vygenerovaná IP jádra, jejichž tvorba je popisována v kapitole 3. Druhý přiložený soubor ip_v0_done je kompletní projekt pro Xilinx ISE. Tento příklad byl vytvořen úpravou příkladu Video line stores [2] od Kena Chapmana. 4.1 Blokové schéma Příklad se skládá z PicoBlaze procesoru, jeho programové paměti a modulů pro sériovou komunikaci. Na vstupy a výstupy PicoBlaze procesoru jsou dále připojeny dvě IP jádra vytvořené pomocí Xilinx Core Generátoru. Obrázek 23 Vnější zapojení ip_tester.vhd 2 Při použití FITkitu je třeba vytvořit jádra menší a to velikostech 256x18 bitů a 128x24 bitů. Názvy jader budou delay_256x18 a delay_128x24. 13/20

Obrázek 24 Schéma zapojeni PicoBlaze procesoru a sériové komunikace - UART Jako testované jádro je použit Shift registr, viz výše. První testované jádro má datovou šířku 24 bitů a délku 768, druhé jádro má šířku 18 bitů a délku 1024. V příkladu jsou označovány jako ip1 a ip2. Obě jádra mají připojené signály CE (clock enable) k PicoBlaze procesoru pro HW krokování. Toto je realizováno signálem line_store_ce (obrázek 24 a 25). Data z výstupů IP jader jsou také čtena po 8 bitech, viz obrázek 25. Obrázek 25 Zapojené dva použité Shift Registry 4.2 Připojení IP jader Před samotným připojením vygenerovaného IP jádra je třeba připravit ISE projekt, do kterého se bude dané jádro vkládat. Z přiloženého CD si z adresáře pro váš přípravek zkopírujte a rozbalte soubor ip_v0.zip. Tato složka obsahuje téměř všechny soubory potřebné k vytvoření příkladu. Doplnit je třeba pouze soubory týkající se IP jader, a to zkopírováním *.ngc, *.xco (případně i *.edn) souborů přímo do adresáře projektu. Do té doby budou odkazy na komponenty ip1 a ip2 v projektu nefunkční. Postup generování IP jádra je popsán v kapitole 3.1. 14/20

Soubory *.xco je pak nutné přidat do projektu ISE. Soubory *.ngc se do projektu nepřipojují, nicméně musejí být v adresáři projektu. Pro naše účely je dále důležitý soubor *.vho, zmiňovaný v kapitole 3. Tento soubor obsahuje fragment VHDL kódu s šablonou připojení modulu na signály. Obrázek 26 zobrazuje strukturu projektu s přidanými IP jádry. Obrázek 26 Struktura zkompletovaného projektu Při připojování IP jádra je nutné dodržet správný název jádra a jména jeho portů. V případě, že porty vygenerovaného IP jádra mají jiné názvy, je nutné poupravit příslušné části souboru ip_tester.vhd (viz obrázek 27 a obrázek 28) podle vygenerovaného souboru *.vho. Po těchto úpravách by měl strom souborů v projektu odpovídat obrázku 26. Obrázek 27 Vložení nové komponenty delay_1024x18_v0 15/20

Obrázek 28 Připojení portů HW modulu 4.3 Ovládání IP jádra V této kapitole se budeme věnovat popisu programu pro procesor PicoBlaze pro výše uvedený příklad. Vstupní a výstupní data pro oba moduly jsou z portů IP jádra čtena a zapisována po osmi bitech. Pro vyšší přehlednost jsou definovány konstanty, které slouží jako adresy jednotlivých částí vstupních a výstupních portů IP jádra, viz obrázek 29. Hodnoty adres jsou totožné s adresami definovanými ve VHDL kódu. Obrázek 29 Namapování vstupů a výstupů v PicoBlaze pro použité moduly 16/20

4.4 Otestování IP jádra v přípravku Pokud máme již vygenerovaný bitstream, který jsme nahráli do našeho kitu, můžeme přistoupit k testování programu. Testování modulu se provádí z PC pomocí připojené sériové linky. Nastavení sériové komunikace PC Hyperterminál. Po spuštění Windows HyperTerminálu je třeba nakonfigurovat nové připojení. To se provede nastavením příslušného portu, ke kterému je připojena sériová linka z přípravku, a dále pak nastavením rychlosti komunikace na 38400 bitů za sekundu, počtu datových bitů na 8, bez parity a s počtem stop-bitů na 1. Tento postup je popsán na obrázku 33. Obrázek 30 Nastavení Hyperterminálu na PC Po vytvoření nového připojení je třeba ještě vybrat položku vlastnosti, zde záložku Nastavení a na ní nastavit v kolonce Emulace hodnotu VT100. Posledním nastavením je na stejné záložce pod tlačítkem Nastavení ASCII zaškrtnutí položky Připojovat kód odřádkování za přicházející znaky. Tento postup je popsán na obrázku 34. 17/20

Obrázek 31 Nastaveni vlastností Hyperterminálu Níže je uvedený seznam příkazu, které lze použít pro testování IP jádra: SET XXXXXX Zadání hodnoty 24 bitového vstupu do IP v hexadecimálním formátu CYCLE n Tester provede n kroků testu. N je decimálně zadaná hodnota 1 9999. AUTO ON nebo AUTO OFF ON v každém kroku inkrementuje hodnotu na vstupu IP. LED svítí OFF neinkrementuje hodnotu na vstupu IP. LED nesvítí FAST ON nebo FAST OFF ON v každém kroku vypisuje výstupy IP. OFF vypíše pouze poslední krok. RESET Inicializace: SET 000001, AUTO ON, FAST OFF 18/20

Nyní lze ověřit funkčnost obou připojených IP jader. Příkazem cycle 770 je na vstup modulů postupně přivedena sekvence 770 vektorů. Po 768 cyklech je pak patrné postupné vybavování dat vložených od prvního cyklu dále, viz obrázek 32. Stejným způsobem pak ověříme funkčnost i druhého IP jádra (delay_1024x18). To provedeme příkazem cycle 1030. Zde je též patrné že po 1024 cyklech jsou vybavována data, vložená na začátku sekvence. Obrázek 32 Ukázka funkčnosti modulu delay_768x24_v0 Tímto jsme ukázali jak jednoduše a testovat moduly vytvořené nástrojem Xilinx Core generator. Tento příklad lze použít jako výchozí návrh pro komplexnější prostředí pro verifikaci IP jader. Program pro PicoBlaze je případně možné upravit, aby generoval složitější sekvence vstupních vektorů, nebo aby vstupní vektory byly závislé na aktuálních výstupech IP jádra. Je ale možné testovat pouze ta jádra, která mají vstupní signál CE. 19/20

5. Obsah a popis přiloženého balíku Ukládaná data jsou dělena dle jednotlivých lekcí. Všechny dostupné soubory pro tuto jsou tedy v adresáři PicoBlaze_Lekce3. Hotové projekty ip_v0_done byly vytvořeny v ISE 8.2.02i. PicoBlaze_Lekce3/ FITkit_VUT/ - ip_v0.zip - ip_v0_done.zip - ip_v0.bit s3esk/ - ip_v0.zip - ip_v0_done.zip - ip_v0.bit ML402/ - ip_v0.zip - ip_v0_done.zip - ip_v0.bit ML403/ - ip_v0.zip - ip_v0_done.zip - ip_v0.bit DOC/ - Picoblaze_lekce3.pdf Složka pro desku FITkit VUT Brno ZIP archív se zdrojovými soubory ZIP archív hotového projektu Bitstream pro FPGA Složka pro desku s3esk (Xilinx Starter Kit) ZIP archív se zdrojovými soubory ZIP archív hotového projektu Bitstream pro FPGA Složka pro vývojovou desku ML402 ZIP archív se zdrojovými soubory ZIP archív hotového projektu Bitstream pro FPGA Složka pro vývojovou desku ML403 ZIP archív se zdrojovými soubory ZIP archív hotového projektu Bitstream pro FPGA Tento dokument 6. Reference [1] Xilinx, Spartan-3E Starter Kit Board Design Examples http://www.xilinx.com/products/boards/s3estarter/reference_designs.htm [2] Xilinx, Spartan-3E Starter Kit Board Design Examples, video line stores http://www.xilinx.com/products/boards/s3estarter/files/s3esk_video_line_stores.pdf [3] Xilinx, PicoBlaze http://www.xilinx.com/picoblaze Poděkování Tato práce byla podpořena projektem ministerstva školství a tělovýchovy číslo 2C06008, http://www.vlam.cz. 20/20