Skrócony opis procesora Picoblaze
Cechy procesora:
- Dane: 8-bitowe.
- Wszystkie rozkazy: 16-bitowe, każdy rozkaz wykonuje się przez 2 cykle
zegara.
- Przestrzeń adresowa programu: 8-bitowy adres (256 rozkazów).
- 16 rejestrów 8-bitowych, oznaczonych: s0, s1, s2, ..., sF (brak
wyspecjalizowanego akumulatora, każdy z rejestrów jest akumulatorem).
- 8-bitowa jednostka ALU (wykonuje operacje arytmetyczne na rejestrze podanym
w rozkazie, wynik jest wpisywany do tego samego rejestru,
drugi argument może być stałą wartością lub innym rejestrem).
- Flagi ZERO i CARRY.
- Stos (15 wartości) do operacji CALL/RETURN
- 256 portów wejściowych (8-bitowych). Dostęp do portu odbywa się
poprzez 8-bitowy sygnał IN_PORT oraz 8-bitowy adres portu PORT_ID.
Sygnał READ_STROBE może służyć do
powiadamiania o wczytaniu przez procesor danych z portu.
- 256 portów wyjściowych (8-bitowych). Dostęp do portu odbywa się
poprzez 8-bitowy sygnał OUT_PORT oraz 8-bitowy adres portu PORT_ID.
Sygnał WRITE_STROBE służy do sterowania przerzutnikiem, który
przechwytuje dane z portu wyjściowego.
- Jedno wejście przerwania (przerwanie powoduje wywołanie polecenia
CALL FF). Sygnał przerwania musi trwać 2 okresy zegara.
Wykorzystanie procesora w kodzie VHDL:
Procesor należy osadzić wewnątrz kodu wraz z pamięcią programu (ROM),
jak pokazano na rysunku poniżej:
Rozkazy procesora
Oznaczenia:
"X" i "Y" oznaczają rejestry procesora s0, s1,..., sF.
"kk" oznacza wartość stałą w zakresie 00 do FF.
"aa" oznacza adres o wartości od 00 do FF.
"pp" oznacza adres portu o wartości od 00 do FF.
Kontrola programu:
JUMP aa
JUMP Z,aa
JUMP NZ,aa
JUMP C,aa
JUMP NC,aa
CALL aa
CALL Z,aa
CALL NZ,aa
CALL C,aa
CALL NC,aa
RETURN
RETURN Z
RETURN NZ
RETURN C
RETURN NC
Operacje logiczne:
LOAD sX,kk
AND sX,kk
OR sX,kk
XOR sX,kk
LOAD sX,sY
AND sX,sY
OR sX,sY
XOR sX,sY
Operacje arytmetyczne:
ADD sX,kk
ADDCY sX,kk
SUB sX,kk
SUBCY sX,kk
ADD sX,sY
ADDCY sX,sY
SUB sX,sY
SUBCY sX,sY
Przesunięcia bitowe:
SR0 sX
SR1 sX
SRX sX
SRA sX
RR sX
SL0 sX
SL1 sX
SLX sX
SLA sX
RL sX
Rozkazy obsługi portów wej/wyj.:
INPUT sX,pp
INPUT sX,(sY)
OUTPUT sX,pp
OUTPUT sX,(sY)
Obsługa przerwania:
RETURNI ENABLE
RETURNI DISABLE
ENABLE INTERRUPT
DISABLE INTERRUPT
Asembler
Program asemblera zamienia kod programu na pamięć RAM opisaną
jako moduł w języku VHDL. Pamięć taką osadza się wraz z
procesorem. Każdorazowa zmiana programu w asemblerze powoduje
konieczność uruchomienia programu asemblera, a następnie
przeprowadzenia ponownej implementacji do układu FPGA.
Uruchomienie programu asemblera:
kcpsm.exe <program>.psm
W wyniku działania programu powstanie plik <program>.vhd
.
Asembler umożliwia m.in.:
- korzystanie z etykiet podczas skoków
- definiowanie stałych (polecenie CONSTANT)
- wprowadzanie własnych nazw rejestrów (polecenie NAMEREG)
Dodatkowe informacje
Niniejszy dokument powstał na podstawie materiałów i not aplikacyjnych z firmy
Xilinx.
Opis procesora PicoBlaze:
http://direct.xilinx.com/bvdocs/appnotes/xapp213.pdf .