część 2 RISC w VHDL: PicoBlaze firmy Xilinx

Podobne dokumenty
ZL10PLD. Moduł dippld z układem XC3S200

ZL6PLD zestaw uruchomieniowy dla układów FPGA z rodziny Spartan 3 firmy Xilinx

Programator ZL2PRG jest uniwersalnym programatorem ISP dla mikrokontrolerów, o budowie zbliżonej do STK200/300 (produkowany przez firmę Kanda).

Wprowadzenie. Wprowadzenie

ZL19PRG. Programator USB dla układów PLD firmy Altera

ZL11PRG v.2. Uniwersalny programator ISP. Odpowiednik: Byte Blaster II DLC5 Programmer AT89ISP STK-200 Lattice ISP ARM Wiggler

Programowalne Układy Cyfrowe Laboratorium

LITEcomp. Zestaw uruchomieniowy z mikrokontrolerem ST7FLITE19

WOJSKOWA AKADEMIA TECHNICZNA im. Jarosława Dąbrowskiego LABORATORIUM UKŁADÓW PROGRAMOWALNYCH I SPECJALIZOWANYCH

LITEcompLPC1114. Zestaw ewaluacyjny z mikrokontrolerem LPC1114 (Cortex-M0) Sponsorzy:

Układy FPGA w przykładach, część 2

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

Systemy Czasu Rzeczywistego FPGA

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Zestaw uruchomieniowy z mikrokontrolerem LPC1114 i wbudowanym programatorem ISP

Układy FPGA w przykładach, część 1

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

2. Architektura mikrokontrolerów PIC16F8x... 13

Wykorzystanie standardu JTAG do programowania i debugowania układów logicznych

ZL9ARM płytka bazowa dla modułów diparm z mikrokontrolerami LPC213x/214x

ZL2ARM easyarm zestaw uruchomieniowy dla mikrokontrolerów LPC2104/5/6 (rdzeń ARM7TDMI-S)

Krótkie wprowadzenie do ModelSim i Quartus2

Zrób sobie mikrokontroler, część 1

dokument DOK wersja 1.0

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL

Wstęp Architektura... 13

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

Specyfika projektowania Mariusz Rawski

ZL2ARM easyarm zestaw uruchomieniowy dla mikrokontrolerów LPC2104/5/6 (rdzeń ARM7TDMI-S)

ZL1MSP430 Zestaw startowy dla mikrokontrolerów MSP430F11xx/11xxA ZL1MSP430

1. ISE WebPack i VHDL Xilinx ISE Design Suite 10.1 VHDL Tworzenie projektu Project Navigator Xilinx ISE Design Suite 10.1 File

Tab. 1. Zestawienie najważniejszych parametrów wybranych mikrokontrolerów z rodziny LPC2100, które można zastosować w zestawie ZL3ARM.

ZL8AVR. Płyta bazowa dla modułów dipavr

Projektowanie Systemów Wbudowanych

ZL17PRG. Programator ICP dla mikrokontrolerów ST7F Flash

Systemy Czasu Rzeczywistego FPGA

ZL4PIC uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC (v.1.0) Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

Programator ICP mikrokontrolerów rodziny ST7. Full MFPST7. Lite. Instrukcja użytkownika 03/09

Projektowanie z użyciem softprocesora picoblaze w układach programowalnych firmy Xilinx

System on Chip na miarę S P R Z Ę T

SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701.

Projekt prostego procesora

Systemy Czasu Rzeczywistego FPGA

WebPack nadal bezpłatnie, ale z licencją

Projektowanie z użyciem procesora programowego Nios II

ZL9AVR. Płyta bazowa dla modułów ZL7AVR (ATmega128) i ZL1ETH (RTL8019)

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

ZL28ARM. Zestaw uruchomieniowy dla mikrokontrolerów AT91SAM7XC

Bezpieczeństwo informacji oparte o kryptografię kwantową

Altera Quartus II. Opis niektórych komponentów dostarczanych razem ze środowiskiem. Opracował: mgr inż. Leszek Ciopiński

Rys. 1. Schemat ideowy karty przekaźników. AVT 5250 Karta przekaźników z interfejsem Ethernet

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH

ARMputer, część 1 AVT 922

PRUS. projekt dokumentacja końcowa

AVR DRAGON. INSTRUKCJA OBSŁUGI (wersja 1.0)

ADuCino 360. Zestaw uruchomieniowy dla mikrokontrolerów ADuCM360/361

LABORATORIUM ELEKTRONIKA Projektowanie koderów, transkoderów i dekoderów w języku VHDL

Programator procesorów rodziny AVR AVR-T910

ZL29ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Systemy na Chipie. Robert Czerwiński

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Kod produktu: MP01611

PSM niebanalne Flashe

Płytka uruchomieniowa XM64

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH. PROCESORY OSADZONE kod kursu: ETD 7211 SEMESTR ZIMOWY 2017

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Siła (w) pamięci on-chip Implementacje pamięci w układach Cyclone IV firmy Altera

ZL25ARM. Płyta bazowa dla modułów diparm z mikrokontrolerami STR912. [rdzeń ARM966E-S]

Systemy Czasu Rzeczywistego FPGA

Sposoby projektowania systemów w cyfrowych

Lista zadań nr 1. Zagadnienia stosowanie sieci Petriego (ang. Petri net) jako narzędzia do modelowania algorytmów sterowania procesami

Systemy uruchomieniowe

KA-NUCLEO-UniExp. Wielofunkcyjny ekspander dla NUCLEO i Arduino z Bluetooth, MEMS 3DoF, LED-RGB i czujnikiem temperatury

ZL6ARM Zestaw uruchomieniowy dla mikrokontrolerów LPC213x. Tab. 1. Zestawienie najważniejszych parametrów wybranych mikrokontrolerów z rodziny LPC213x

UNO R3 Starter Kit do nauki programowania mikroprocesorów AVR

Jednym z najlepszych sposobów poznawania nowego typu mikrokontrolera

Lista zadań nr 5. Ścieżka projektowa Realizacja każdego z zadań odbywać się będzie zgodnie z poniższą ścieżką projektową (rys.

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

Projektowanie Urządzeń Cyfrowych

ZL2AVR. Zestaw uruchomieniowy z mikrokontrolerem ATmega8

Konfiguracja i programowanie sterownika GE Fanuc VersaMax z modelem procesu przepływów i mieszania cieczy

IIPW_SML3_680 (Z80) przewodnik do ćwiczeń laboratoryjnych

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH Wydziałowy Zakład Metrologii Mikro- i Nanostruktur SEMESTR LETNI 2016

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

epstick Programator ISP/ICP dla mikrokontrolerów ST7

Płytka uruchomieniowa XM32

Parametryzacja przetworników analogowocyfrowych

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

KAmduino UNO. Płytka rozwojowa z mikrokontrolerem ATmega328P, kompatybilna z Arduino UNO

Programowanie mikrokontrolerów AVR

Laboratorium Projektowania Systemów VLSI-ASIC Katedra Elektroniki Akademia Górniczo-Hutnicza

ZL5ARM. Zestaw uruchomieniowy dla mikrokontrolerów LPC2119/2129 (rdzeń ARM7TMDI-S) Kompatybilność z zestawem MCB2100 firmy Keil

Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.

BF20 JTAG dla ARM ów z interfejsem USB Instrukcja obsługi

Ćwiczenie 1 VHDL - Licznik 4-bitowy.

ZACHODNIOPOMORSKI UNIWERSYTET TECHNOLOGICZNY

Układy reprogramowalne i SoC Implementacja w układach FPGA

o Instalacja środowiska programistycznego (18) o Blink (18) o Zasilanie (21) o Złącza zasilania (22) o Wejścia analogowe (22) o Złącza cyfrowe (22)

Transkrypt:

P R O J E K T Y Zrób sobie mikrokontroler, część 2 RISC w VHDL: PicoBlaze firmy Xilinx AVT-457 Zgodnie z obietnicami, w tej części artykułu przedstawiamy uniwersalną platformę sprzętową wykonaną na układzie FPGA z rodziny Spartan 3, która może posłużyć między innymi do implementacji mikrokontrolera PicoBlaze. Pokażemy w paru krokach jak to zrobić, przy okazji prezentując także dostępne bezpłatnie narzędzia projektowe. Rekomendacje: opracowanie przeznaczone zarówno dla entuzjastów PLD, jak i wszelkiej maści techniki cyfrowej. Mikrokontrolery potrafią przecież wszystko! Platforma sprzętowa Jak wspomniałem w poprzedniej części artykułu, PicoBlaze jest miękkim mikrokontrolerem, opisanym w języku VHDL. Miękkim oznacza, że użytkownik może samodzielnie wybrać (oczywiście w określonych granicach) typ układu PLD, w jakim mikroprocesor zostanie zaimplementowany. W wersji prezentowanej w artykule, PicoBlaze zoptymalizowano pod kątem aplikowania w układach z rodzin: Spartan 3 oraz Virtex II i Virtex II PRO, lecz drobne modyfikacje plików źródłowych (nie jest to zgodne z licencją!) pozwalają zaimplementować go także w układach PLD produkowanych przez firmy inne niż Xilinx. Dodatkową, choć łatwą do pokonania, trudnością jest zoptymalizowanie kompilatora asemblera pod kątem układów firmy Xilinx. Piszę o tym wyłącznie po to, żeby pokazać uniwersalność i elastyczność rozwiązań IP core owych. Poznanie zarówno samego Pico- Blaze a, jak i możliwości współczesnych układów, ułatwi prosta platforma sprzętowa, zbudowana na bazie układu XC3S200VQ100 firmy Xilinx. Jest to drugi od dołu układ z rodziny Spartan 3, charakteryzujący się doskonałym wyposażeniem wewnętrznym i niską ceną (patrz tab. 1, EP5/2005). Zaimple- PODSTAWOWE PARAMETRY Płytka o wymiarach 56 x 56 mm Zasilanie +5 V/200 ma Możliwość zastosowania układu XC3S50 lub XC3S200 Wbudowany konfigurator XCF01S Liczba dostępnych linii I/O: 61 W ofercie AVT są dostępne: - [AVT-457C] moduł zmontowany i uruchomiony Listingi do tego artykułu są umieszczone na płycie CD EP6/2005 oraz na stronie http://download.ep.com.pl 31

Bezpłatny rdzeń Pliki źródłowe, dokumentację w postaci elektronicznej oraz kompilator asemblera dla mikrokontrolerów PicoBlaze można pobrać ze strony internetowej firmy Xilinx: http:// www.xilinx.com/ipcenter/processor_central/ picoblaze/index.htm. Rys. 7. Konfiguracja łańcucha JTAG w zestawie List. 3. Listing przykładowego programu napisanego w asemblerze PicoBlaze vhdl ROM_form.vhd, pico_te.vhd, PROG_ROM wyjscie equ s0 licznik equ s1 led_port dsout $00 start: load wyjscie, 01 load wyjscie, 00 jump start delay: load licznik, $ff loop1: sub licznik, 1 jump nz, loop1 load licznik, $ff ret Rys. 6. Schemat elektryczny zestawu mentowanie w tym układzie mikroprocesora PicoBlaze zabiera zaledwie 5% zasobów logicznych i jeden blok pamięci BlockRAM. Schemat elektryczny urządzenia pokazano na rys. 6. Na płytce drukowanej, oprócz układu XC3S200, zamontowano także pamięć konfigurującą XCF01S (typu Flash), która służy do przechowywania danych o konfiguracji układu FPGA i umożliwia automatyczne odtworzenie pamięci konfigurującej SRAM wbudo- Da się, lecz nie wolno PicoBlaze da się zaimplementować także w układach innych producentów niż Xilinx, lecz wymaga to pewnych modyfikacji kodu źródłowego i nie jest zgodne z licencją. wanej w układ FPGA po każdorazowym włączeniu zasilania. Zawartość pamięci Flash można modyfikować za pomocą prostego programatora ISP, dołączonego do złącza JP3. Pamięć Flash i pamięć konfigurująca SRAM wbudowana w FPGA są połączone szeregowo w łańcuchu JTAG, którego budowę pokazano na rys. 7. Pierwszym układem (od strony wejścia TDI) jest XC3S200, natomiast drugim konfigurator XCF01S. Dodatkowo jak widać na rys. 7 konfigurator jest dołączony do FPGA za pomocą specjalnego interfejsu szeregowego, który służy do automatycznego konfigurowania układu FPGA po włączeniu zasilania. Taki zestaw połączeń umożliwia użytkownikowi przeprowadzenie następujących operacji: programowania (via JTAG) pamięci Flash, której zawartość będzie automatycznie kopiowana do pamięci konfigurującej FPGA po każdym włączeniu zasilania, bezpośredniego modyfikowania zawartości (via JTAG) pamięci konfigurującej SRAM układu FPGA, dzięki czemu można prowadzić niedestrukcyjne (jak w przypadku pamięci Flash, która po każdym kasowaniu się degraduje), wielokrotne modyfikacje jej zawartości, automatycznego konfigurowania FPGA poprzez skopiowanie zawartości pamięci Flash do pamięci konfigurującej (proces ten można zainicjować ręcznie poprzez wciśnięcie S1). Pierwsze dwie z wymienionych operacje można wykonać za pomocą taniego i łatwego w wykonaniu programatora, którego schemat elektryczny przedstawiamy na rys. 8 32

Kurs obsługi WebPacka (i nie tylko!) dla każdego Czytelnikom zamierzającym poznać z bliska system projektowy WebPack firmy Xilinx polecamy książkę Układy programowalne, pierwsze kroki (http://www. btc.pl/index.php?id=uppk), dostępną w ofercie handlowej AVT. Książka zawiera CD ROM z WebPackiem i narzędziami projektowymi firmy Altera. Rys. 8. Schemat elektryczny programatora ISP dla układów firmy Xilinx (szczegółowo opisany w Miniprojektach w EP4/2001, można zastosować także nowocześniejszy UnISProg, który został opisany w EP1/2004). Dioda świecąca D1 sygnalizuje poprawne skonfigurowanie układu FPGA. Rys. 9. Schemat montażowy zestawu Montaż i uruchomienie Urządzenie zmontowano na dwustronnej płytce drukowanej, której schematy montażowe (elementy są rozlokowane na obydwu stronach PCB) pokazano na rys. 9. Ze względu na zastosowanie układów o bardzo małych odstępach pomiędzy wyprowadzeniami (0,5 mm), ręczny montaż płytek jest mocno utrudniony osoby mające niewielką wprawę w lutowaniu powinny pomyśleć o zakupie gotowych (zmontowanych) modułów. Sposobem lutowania ręcznego dającym niezłe wyniki (mam tu na myśli wyłącznie skuteczność) jest po dokładnym wypozycjonowaniu układu na punktach lutowniczych przylutowanie go z użyciem dużej ilości stopu lutowniczego, którego nadmiar jest później usuwany za pomocą miedzianej plecionki (najlepiej ze sproszkowaną kalafonią). Po lutowaniu płytkę trzeba dokładnie umyć, na przykład za pomocą rozpuszczalnika Kontakt PCC (dostarczanego w butelce ciśnieniowej ze szczotką). Narzędzia projektowe Korzystanie z PicoBlaze a wymaga zastosowania zestawu dwóch programów narzędziowych, spośród trzech które są dostępne bezpłatnie: WebPacka ISE w dowolnej wersji powyżej 3.3WP8.0 udostępniony przez firmę Xilinx (www. xilinx.com), kompilatora asemblera dla Pico- Blaze a (kcpsm3.exe) udostępniony przez firmę Xilinx (www. xilinx.com), opcjonalnie można skorzystać z IDE z symulatorem PicoBlaze a program pblazide opracowany i udostępniony bezpłatnie przez holenderską firmę Mediatronix (www.mediatronix.com/tools). Niezależnie od tego czy będziemy stosować liniowy kompilator asemblera, czy też zostanie wykorzystane środowisko zintegrowane (widok okna pblazide pokazano na rys. 10), narzędziem niezbędnym do zaimplementowania projektu w układzie PLD jest WebPack kompletne środowisko projektowe dla układów firmy Xilinx. To właśnie WebPack odpowiada za prawidłową implementację samego procesora i wykorzystywanej przez niego pamięci programu w strukturę docelowego układu PLD. Na rys. 11 zilustrowano pracę asemblera kcpsm3.exe, który na wejściu, oprócz pliku źródłowego potrzebuje także trzech plików zawierających formatki opisu pamięci w językach Verilog (ROM_form.v) Rys. 10. Widok okna programu pblazide i VHDL (ROM_form.vhd) oraz w formacie COEfficient (ROM_form.coe), stosowanym (rzadko) przez niektóre narzędzia syntezy logicznej. Pliki zawierające formatki udostępnia firma Xilinx wraz z asemblerem, ich zawartości zalecam nie modyfikować. Projektantów przyzwyczajonych do Windows (czyli jak szacuję 99,9 % czytających) surowy interfejs (w zasadzie jego brak) asemblera kcpsm3.exe z pewnością będzie deprymował. Wszystkich zdeprymowanych zachęcam do sięgnięcia po program pblazide, którego efekty działania są w zasadzie identyczne jak kcpsm3. Różnice w menmonikach Mnemoniki niektórych rozkazów rozpoznawanych przez pblazide są inne niż ustalone pierwotnie przez autora PicoBlaze a. Różnice zestawiono w tab. 4. 33

FPGA i wyłączanie zasilania Z małymi wyjątkami, układy FPGA mają przedziwną konstrukcję: za ich konfigurację (czyli spełnianą funkcję) odpowiada pamięć SRAM, która jest pamięcią ulotną nie potrafi przechowywać danych bez zasilania. Tak więc, bez dodatkowych zabiegów, FPGA po włączeniu zasilania nie może poprawnie działać! Jak rozwiązano ten problem? Otóż przez krótki czas (do kilkuset milisekund od chwili włączenia zasilania) FPGA jest konfigurowany, co oznacza po prostu odtworzenie poprawnej zawartości konfigurującej pamięci SRAM. Dostępnych jest wiele sposobów konfiguracji, z których największą popularnością w p r a k t y c e c i e s z ą s i ę wyspecjalizowane, zewnętrzne pamięci Flash z wyjściem szeregowym, k t ó r e s ą przystosowane do automatycznego konfigurowania układów FPGA. Należy pamiętać, że niektóre rodziny układów FPGA są wyposażone w drugi rodzaj pamięci SRAM, która w odróżnieniu od pamięci konfigurującej jest dostępna dla aplikacji użytkownika. W układach Spartan 3 pamięć ta jest podzielona na bloki o nazwie BlockRAM. Rys. 13. pblaz wyraźnie wskazuje błędy wykryte w programie różnice, do tego częściowo zniwelowane przez wbudowany w pblazide, ale warto o nich wiedzieć, dlatego w tab. 4. znajduje się ich zestawienie. Rys. 11. Obieg plików projektowych przy uzyciu asemblera kcpsm3.exe exe (rys. 12), a daje on dodatkowo możliwość symulowania pracy PicoBlaze a! pblazeide obsługuje dwa formaty plików wejściowych i wyjściowych zapisanych w VHDL lub w Verilogu. Zapewnia to wystarczającą uniwersalność narzędzia, ponieważ wszystkie znane mi współczesne syntezery języków HDL radzą sobie z implementacją pamięci ROM. pblazeide generuje pliki Rys. 12. Obieg plików projektowych przy użyciu pblazide wyjściowe zawierające opis zawartości pamięci na podstawie szablonów (ROM_form.vhd i ROM_form.v). Konieczne jest użycie w pliku *.psm dyrektywy: vhdl ROM_form.vhd, pico_te.vhd lub (wbrew sugestii zawartej w nazwie dyrektywy) vhdl ROM_form.v, pico_te.v, gdzie pico_te.vhd i pico_te.v to nazwy plików wynikowych. Pliki wynikowe są generowane w chwili zainicjowania pracy symulatora, a ewentualne błędy są automatycznie wskazywane przez program, jak to widać na rys. 13 (opis po znaku? w lewej części okna). Warto zwrócić uwagę, że mnemoniki niektórych p o l e c e ń r o z p o z n a w a n e przez pblazide różnią się od przyjętych jako standardowe w liniowej wersji asemblera. Nie są to duże Mamy program implementacji krok następny Po napisaniu i przesymulowaniu programu nadchodzi czas implementacji rdzenia procesora i pamięci programu wraz z jej zawartością. Prosty program przykładowy, służący do zilustrowania implementacji pokazano na list. 3. Spełnia on niezwykle fantazyjne zadanie migania diodą LED dołączoną do portu wyjściowego o adresie 00. Kody poleceń dla procesora są zapisane (w prezentowanym przykładzie) w pliku pico_ te.vhd (jego najważniejsze frag- Tab. 4. Różnice pomiędzy mnemonikami rozpoznawanymi przez pblazide i kompilator KCPSM pblazide KCPSM RET RETURN RETI RETURNI ADDC ADDCY SUBC SUBCY IN INPUT OUT OUTPUT EINT ENABLE INTERRUPT DINT DISABLE INTERRUPT 34

menty pokazano na list. 4, całość udostępniamy na CD EP6/2005B). Opis HDL PicoBlaze a domyślnie domaga się pliku zawierającego jednostkę (entity) PROG_ROM (rys. 14). W przygotowanym przez nas pliku pico_te.vhd tak właśnie została ona nazwa, dzięki czemu List. 4. Najważniejsze fragmenty pliku zawierającego opis programu library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; library unisim; use unisim.vcomponents.all; entity PROG_ROM is Port ( address : in std_logic_ vector(9 downto 0); instruction : out std_logic _vector(17 downto 0); clk : in std_logic); end PROG_ROM; architecture low_level_definition of PRO G_ROM is attribute INIT_00 : string; attribute INIT_01 : string; attribute INIT_02 : string; attribute INITP_05 : string; attribute INITP_06 : string; attribute INITP_07 : string; attribute INIT_00 of ram_1024_ x_18 : label is 540EC10101F- F540BC10101FF5408C10101F- F40000007C00000000007C0000001 ; attribute INIT_01 of ram_1024_x_18 : label is 00000000000000000000000000 0000000000000000000000000000000000A- 000 ; attribute INIT_02 of ram_1024_x_18 : label is 0000000000000000000000000000 000000000000000000000000000000000000 ; attribute INITP_07 of ram_1024_x_18 : label is 0000000000000000000000000000 000000000000000000000000000000000000 ; begin generic map ( INIT_00 => X 540E- C10101FF540BC10101FF5408C10101F- F40000007C00000000007C0000001, INIT_01 => X 000000000 0000000000000A000, INIT_02 => X 000000000 X 000000000000000000000000000000000000 00000000000 INIT_3E => X 000000000 INIT_3F => X 000000000 INITP_00 => X 000000000 000000002D34D3E38, INITP_01 => X 000000000 INITP_06 => X 000000000 INITP_07 => X 000000000 00000000000000000 ) port map( DI => 0000000000000000, DIP => 00, EN => 1, WE => 0, SSR => 0, CLK => clk, ADDR => address, DO => instruction(15 downto 0), DOP => instruction(17 downto 16)); end low_level_definition; List. 5. Zmodyfikowana wersja programu testowego Wyjscie equ s0 licznik1 equ s1 licznik2 equ s2 led_port dsout $00 start: load wyjscie, 01 load wyjscie, 00 jump start delay: load licznik2, $ff loop1: load licznik1, $ff loop2: sub licznik1, 1 jump nz, loop2 sub licznik2, 1 jump nz, loop1 ret WYKAZ ELEMENTÓW Rezystory (obudowy 0805) R1, R2: 4,7 kv R3: 270 V Kondensatory (obudowy 0805/A) C1, C2, C3, C4, C5, C7, C9, C10, C11, C12, C14, C16, C17, C18, C19: 100 nf C6, C8, C13, C15: 10 mf/10 V Półprzewodniki U1: XC3S200 5VQ100 U2: XCF01SVO20C VR1: LT1963 3,3 VR2: LT1963 2,5 VR3: LD1117 1,2 D1: LED (0805) Inne JP1, JP2: gold piny 2x16 JP3: ZWS10 Rys. 14. PicoBlaze ma przedefiniowaną pamięć w jednostce PROG-ROM po dołączeniu tego pliku do projektu (rys. 15), można go od razu poddać kompilacji. Jeżeli zakończy się ona sukcesem, należy jeszcze przypisać nazwy sygnałów do odpowiednich wyprowadzeń układu FPGA i projekt ponownie skompilować. W projekcie udostępnionym na płycie przypisania sygnałów nie zostały wymuszone, co wynika z uniwersalnej budowy płytki uruchomieniowej. Podczas prób należy zwrócić uwagę na to, że maksymalne częstotliwości taktowania PicoBlaze a są dość wysokie, a procedura opóźnienia określająca czas trwania świecenia i wygaszenia LED trwa zaledwie 1030 taktów zegara. W związku z tym podczas pierwszych prób zalecam stosowanie źródła sygnału zegarowego o częstotliwości 5 10 khz lub zmodyfikowanie procedury opóźnienia (choćby w sposób pokazany na list. 5), żeby wydłużyć czas jej trwania (opóźnienie zabiera 261632 taktów zegara), ewentualnie weryfikować pracę procesora za pomocą oscyloskopu dołączonego do linii portu, na której jest generowany sygnał prostokątny. Podsumowanie Po kilkudniowych, bardzo intensywnych, testach PicoBlaze a doszedłem do wniosku, że jest to obecnie najlepszy, pośród dostępnych bezpłatnie, rdzeń mikrokontrolera na znanym mi świecie. Ze względu na dużą wydajność, stabilność działania, kompletną listę instrukcji (zwłaszcza w wersji na rodzinę Spartan 3), dobrej jakości narzędzia projektowe (także dostępne bezpłatnie), niewielkie zasoby wymagane do pełnej implementacji projektu, do tego dobrze przygotowany opis HDL (gwarantujący przenośność pomiędzy różnymi platformami) Pico- Blaze jest wart polecenia wszystkim użytkownikom układów PLD, którzy preferują wygodne, nowoczesne rozwiązania sprzętowo programowe (hardware software codesign). Piotr Zbysiński, EP piotr.zbysinski@ep.com.pl Rys. 15. Widok okna WebPacka po zadeklarowaniu pliku z opisem pamięci programu 35