Technická zpráva Řadiče periferií pro vývojovou desku Spartan3E Starter Kit Jaroslav Stejskal, Jiří Svozil, Leoš Kafka, Jiří Kadlec leos.kafka@utia.cas.cz Obsah 1. Úvod... 2 2. Popis modulů... 2 2.1 LCD... 2 2.2 PWM... 3 2.3 ADC... 4 2.4 DAC... 4 2.5 FREQ_CNT... 5 2.6 FREQ_GEN... 5 2.7 NOR_FLASH... 6 2.8 SPI_FLASH... 6 3. Použité/Potřebné vybavení a nástroje... 7 4. Obsah a popis přiloženého balíku... 7 5. Reference... 8 Revize Revize Datum Autor Popis změn v dokumentu 0 8.12.2008 L.K. Vytvoření dokumentu 1 2.
1. Úvod Tato zpráva popisuje sadu modulů pro ovládání periferií na vývojové desce Spartan3E Starter Kit (S3ESK) [1]. Moduly umožňují ovládání těchto periferií na vyšší úrovni i bez znalostí konkrétního hardware, čímž usnadňují použití těchto periferií v aplikacích na FPGA a urychlují vývoj těchto aplikací. Vývoj modulů byl inspirován příklady [2] pro vývojovou desku S3ESK. 2. Popis modulů Sada zahrnuje celkem osm modulů. Označení a popis modulů je v tabulce Tabulka 1. Všechny moduly jsou založeny na konfigurovatelném wrapperu 8-bitového procesoru Xilinx PicoBlaze [3]. Popis tohoto wrapperu, označovaného jako Universal/UTIA PicoBlaze Wrapper (UPB), je v [4]. Označení LCD PWM ADC DAC FREQ_CNT FREQ_GEN NOR_FLASH SPI_FLASH Popis Tabulka 1 - seznam modulů Modul pro řízení znakového LCD displeje s řadičem HD44780 Modul osmi-kanálové PWM Řadič dvoukanálového A/D převodníku LTC1407A-1 a programovatelného zesilovače LTC6912-1 Řadič čtyřkanálového D/A převodníku LTC2624 Modul čítače frekvence 10Hz - 200MHz Modul generátoru frekvence 20kHz - 25MHz Modul řadiče paměti 128Mbit Intel StrataFlash parallel NOR Flash PROM Modul řadiče paměti M25P16 SPI Serial Flash 2.1 LCD Modul LCD slouží k ovládání znakového LCD displeje s řadičem HD44780. Uživatelské rozhranní představuje paměť RAM. Data zapsaná do této paměti se zobrazí na LCD displeji. Blokové schéma znázorňuje Obrázek 8. Wrapper UPB je nakonfigurován tak, že obsahuje vstupní paměť RAM o velikosti 32x8 bitů a výstupní 8-bitový registr pro řízení displeje. ram_addr ram_din ram_wen ram_dout RAM 32x8b ram_addr ram_dout IO decoder reg_dout reg_wen LCD CORE UPB lcd_data lcd_e lcd_rs lcd_rw clk en PicoBlaze processor Program ROM Obrázek 1 Blokové schéma modulu LCD řadiče 2/8
2.2 PWM Modul PWM představuje řadič osmi-kanálové PWM. Uživatelský interface představuje 8 registrů, z nichž každý obsahuje hodnotu pro jeden kanál PWM, a jeden registr pro povolení zápisu do těchto 8 registrů. Blokové schéma je na obrázku Obrázek 2. Kromě wrapperu UPB byl v tomto případě použit čítač. Obrázek 2 Blokové schéma modulu PWM 3/8
2.3 ADC Modul ADC je řadič dvoukanálového A/D převodníku a programovatelného zesilovače s rozhraním SPI. Uživatelský interface představují čtyři řídící signály a jedna výstupní paměť FIFO, do které jsou zapisována data přečtená z A/D převodníku. Blokové schéma znázorňuje Obrázek 3. Wrapper UPB je nakonfigurován tak, že obsahuje několik registrů pro uživatelský interface a pro komunikaci s převodníkem a jednu výstupní FIFO pro data. Obrázek 3 Blokové schéma modulu A/D řadiče 2.4 DAC Modul DAC představuje univerzální řadiče D/A převodníku s rozhraním SPI. Uživatelský interface představují tři řídící signály a vstupní paměť FIFO, do které se zapisují data pro D/A převodník. Blokové schéma je na obrázku Obrázek 4. DA CORE spi_sdo spi_ready set_one set_cont channel_en processor PicoBlaze IO decoder UPB spi_clk spi_sdi spi_dac_cs spi_dac_clr spi_request da_busy fifo_din fifo_wr clk en FIFO 16x8b fifo_empty fifo_full Obrázek 4 Blokové schéma modulu D/A převodníku 4/8
2.5 FREQ_CNT Modul FREQ_CNT představuje HW modul univerzálního čítače frekvence. Modul umožňuje přesné měření frekvencí v rozsahu 10Hz až 200MHz s možností průměrování. Uživatelský interface představuje vstupní signál měřeného kmitočtu freq_for_meas, vstupní registr pro počet průměrkovaných vzorků a výstupní registr obsahující naměřenou frekvenci. Blokové schéma modulu je na obrázku Obrázek 5. Kromě wrapperu UPB obsahuje modul ještě čítač pro přesné generování časové základny a čítač pro měření periody vstupního signálu. Obrázek 5 Blokové schéma modulu čítače frekvence 2.6 FREQ_GEN Modul FREQ_GEN představuje univerzální generátor frekvence. Modul generátoru umožňuje dělení vstupní uživatelské frekvence danou hodnotou. Výstupní frekvence je dána vztahem clk _ in clk _ out =, kde user_d je v rozsahu od 2 do 255. user _ D Blokové schéma modulu znázorňuje Obrázek 8. FG CORE clk_in user_d control D C M clk_out clk_50mhz en UPB clk_out_ready Obrázek 6 Blokové schéma modulu generátoru frekvence 5/8
2.7 NOR_FLASH Modul NOR_FLASH představuje řadič paměti 128Mbit Intel StrataFlash parallel NOR Flash PROM. K ovládání modulu a jako datový vstup slouží vstupní paměť FIFO o volitelné délce. Jako datový výstup slouží výstupní FIFO, jejíž délka je také volitelná. Blokové schéma modulu znázorňuje Obrázek 8. NOR FLASH CORE clk UPB strataflash_oe strataflash_ce en strataflash_we strataflash_byte NOR Flash strataflash_a [23:0] strataflash_sts strataflash_d [7:0] fifo_in_din fifo_in_wr fifo_out_rd FIFO in FIFO out fifo_in_empty fifo_in_full fifo_out_dout fifo_out_empty fifo_out_full Obrázek 7 Blokové schéma modulu řadiče paměti NOR Flash 2.8 SPI_FLASH Modul SPI_FLASH představuje univerzální řadič paměti SPI Serial Flash. Uživatelský interface je shodný s modulem NOR_FLASH. K ovládání modulu a jako datový vstup slouží vstupní paměť FIFO o volitelné délce. Jako datový výstup slouží výstupní FIFO. Blokové schéma modulu znázorňuje Obrázek 8. Obrázek 8 Blokové schéma modulu řadiče paměti SPI Flash 6/8
3. Použité/Potřebné vybavení a nástroje Moduly byly napsán v programovacím jazyce VHDL. Pro implementaci bylo použito vývojové prostředí Xilinx ISE (WebPack) verze 9.2.04i. Program procesoru PicoBlaze byl napsán v assembleru a k překladu byl použit assembler KCPSM3.exe, který je součástí balíčku procesoru PicoBlaze [3]. Testovací příklad byl vytvořen na vývojovém kitu Xilinx Spartan3E Starter kit (S3ESK) [1]. 4. Obsah a popis přiloženého balíku Moduly jsou na CD umístěny v samostatných adresářích, jméno adresáře odpovídá označení modulu. V těchto adresářích jsou NGC netlisty, příklad pro vývojovou desku S3ESK a uživatelská dokumentace k modulu. CDROM/ appnote_s3esk_peripherals.pdf Tento dokument LCD PWM ADC DAC FREQ_CNT FREQ_GEN NOR_FLASH SPI_FLASH Modul pro řízení znakového LCD displeje s řadičem HD44780 Modul osmi-kanálové PWM Řadič dvoukanálového A/D převodníku LTC1407A-1 a programovatelného zesilovače LTC6912-1 Řadič čtyřkanálového D/A převodníku LTC2624 Modul čítače frekvence 10Hz - 200MHz Modul generátoru frekvence 20kHz - 25MHz Modul řadiče paměti 128Mbit (16MByte) Intel StrataFlash parallel NOR Flash PROM Modul řadiče paměti M25P16 SPI Serial Flash 7/8
5. Reference [1] Xilinx Spartan3E Starter Kit, http://www.xilinx.com/products/devkits/hw-spar3e-sk-us-g.htm [2] Spartan-3E FPGA Starter Kit Board Design Examples, http://www.xilinx.com/products/boards/s3estarter/reference_designs.htm [3] Procesor PicoBlaze, http://www.xilinx.com/picoblaze, Xilinx [4] J. Stejskal, J. Svozil, L. Kafka, J. Kadlec, UPB UTIA PicoBlaze Wrapper. Praha : ÚTIA AV ČR, 2008. 8/8