132 5 Języki specyfikacji dla układów programowalnych
c) (a.b.c)•,d.e,i) oznacza a*d,b»e,clf)
d) atb[3..1] oznacza (a4b3,a4b2,a4bl) c) (318) oznacza B"00ii" or b~iooo"
0 (a,b,c)41 oznacza (a40,b40,c4l)
g) (a,b,c)4l = (0,0.1]
h) (a,b,c|4VCC ■ (a,b,c)
Nalcż> pamiętać, źc jest dopuszczalna operacja sygnału grupowego i pojedynczych zmiennych (przykład d), jak też sygnału grupowego i liczby (przykład 0-W tym ostatnim przypadku liczba jest interpretowana binarnie, a liczba jej bitów jest dostosowywana do liczby pozycji sygnału grupowego.
Operatory arytmetyczne i relacyjne
Podstawowe operatory arytmetyczne (suma, różnica), a także operatory relacyjne (tabl. 5.3) ułatwiają zapisy skomplikowanych wyrażeń boolowskich zgodnie z zasadami sygnałów prcdykatowych i ..symboli logicznych”. Na przykład sygnał CS opisany wyrażeniem boolowskim:
CS • iaddr & !addr4 addr 4 addr 4 addr 4 !addr4 addr 4 !addr można, po deklaracji sygnału grupowego: addr (7. .0] zapisać jako (por. przykład 5.9):
' CS - (addr [7. .0]—H"3A-)
Tablica 5.3
Operator |
Przykład |
♦ |
♦1 |
- |
-a(4..1] |
♦ |
count(7..0| ♦ de1ca(7..0] |
_ |
*n - yll |
.. |
addr(19..4] — B~B800“ |
i. |
BI !- b3 |
< |
famę 11 < power[1 |
<. |
moneylJ <- powerIJ |
> |
lowell > nioney[ 1 |
>- |
delta(J >- 0 |
5.2 Język AUDI.
133
5.2.3. Zasady specyfikacji w języku AHDL
W niniejszym punkcie omówimy podstawowe zasady specyfikacji posługując się zestawem odpowiednio dobranych przykładów, które pozwolą lepiej zilustrować i wyjaśnić główne konstrukcje języka AHDL i sposoby ich użycia do tworzenia bardziej złożonych struktur hierarchicznych. Przykłady i zasady są uporządkowane i prezentowane według następującego schematu:
- równania i wyrażenia boolowskie,
- tablice prawdy.
- instrukcje 1F oraz CASE,
- deklarowanie i odwołanie się do rejestrów.
- definiowanie automatów oraz - liczniki.
Równania i wyrażenia boolowskie
Wyrażenia boolowskie są wyrażeniami algebraicznymi, które służą do opisu funkcji logicznych. Mogą składać się z nazw węzłów, liczb, stałych oraz innych wyrażeń rozdzielonych przez operatory, również arytmetyczne i relacyjne. W skomplikowanych wyrażeniach można grupować poszczególne fragmenty z użyciem nawiasów.
Kolejność wyrażeń boolowskich w części opisu projektu nic ma znaczenia, ponieważ stanowią one jako całość opis działania układu, a nie kolejne instrukcje, jak to ma miejsce w językach programowania. W przykładzie S. 11 przedstawione są dwa proste wyrażenia. Na uwagę zasługuje fakt, iż możliwe jest umieszczenie węzła typu ootput (out 1) po prawej stronie wyrażenia out2 - outl I b.
Przykład 5.11
SUBDESIGN boolel
(
aO, al, b : INPUT;
outl, out2 : OOTPUT;
)
BEGIN
outl - al & !a0; out2 - outl • b;