Hardware
Mikroprocesor
Firma poza rozwiązaniami dotyczącymi Internetu oraz oprogramownia, ma do zaoferowania gotowy projekt mikroprocesora. Mikroprocesor, wyróżnia się bardzo dobrymi osiągami, oraz nieprzeciętną wydajnością.
Poniżej przedstawione zostały ważniejsze informacje związane z danym projektem oraz przykład współpracy z wyświetlaczem LCD.
Opis
Opis układu został wykonany w języku VHDL. Dokonano podziału projektu na moduły. Wyróżniono trzy moduły:
SEKWENCER - kontroluje linie sterujące M, R, I, E
- M - czytaj z pamięci rozkaz: odczyt jest synchroniczny stan linii M badany jest przy każdym zboczu narastającym
- R - Odłączenie od magistrali danych (stan wysokiej impedancji)
- I - dekodowanie (synchroniczne)
- E - informacja, że dane na magistrali są stabilne
Sekwencer opisany jest za pomocą dwóch procesów - Jeden proces odpowiada za opis rejestru stanów (nazwa procesu: 'seq') a drugi za logikę wyjść i stanu następnego (proces 'refresh').
MEM - składa się z 1 modułu pamięć blockRAM, logiki obsługi skoków, pobierania danych z pamięci oraz wskaźnika adresu. Jako, że sekwencer nie musi pracować z pełną częstotliwością zegara należy zabezpieczyć układ przed sytuacją gdy sekwencer ustawia linię M a pamięć prześle w tym czasie kilka rozkazów (bo działa z pełną częstotliwością). Zabezpieczenie stanowi flaga zerowana po pobraniu rozkazu i ustawiana gdy odczyt jest niemożliwy (M='0').
DEKODER - Dekoder rozdziela magistralę rozkazową na magistralę danych (DB) oraz kod rozkazu. W zależności od rodzaju rozkazu ustawia lub nie linię OE gdy E=1. Wejścia dekodera I oraz clock pozwalają także na dalszą rozbudowę układu.
Przykładowy program
Przykładowy program na układ (współpraca z kontrolerem LCD Hitachi HD44780U):
0 => "000000000001", --reset LCD
1 => "000000111000", --ustalenie długości danych na 8 bit, włącznie 2 linii LCD
2 => "000000001100", --wyłączenie kursora,
3 => "000000000110", --określenie kierunku przesuwania kursora,
4 => "110000000101", --skok pod 6
5 => "001000110001", --wysłanie znaku 1
6 => "001000110010", -- 2
7 => "001000110011", -- 3
8 => "000011000000", --przejście do 2 linii
9 => "001000110100", --wysłanie znaku 4
10 => "001000110101", -- 5
11 => "001000110110", -- 6
12 => "110000001100", --skok pod 12
Schemat kontrolera Hitachi HD44780U:
Symulacja po rozmieszczeniu w układzie, dane na magistrali wyświetlone w kodzie heksadecymalnym:
Parametry pierwotnej wersji układu
Device utilization summary:
---------------------------
Selected Device : 2s30vq100-5
Number of Slices: 24 out of 432 5%
Timing Summary:
---------------
Speed Grade: -5
Minimum period: 9.364ns (Maximum Frequency: 106.792MHz)
Minimum input arrival time before clock: No path found
Maximum output required time after clock: 12.474ns