i
130
5 Języki specyfikacji dla układów programowalnych
5 2 Język AHDl.
Liczby i stale
Zgodnie z zasadami języków HDL liczby w AHDL są zapisywane ciągami cyfr ograniczonych cudzysłowem i poprzedzonych odpowiednim prefixem. Stosowane są systemy zapisu: dziesiętny, binarny, oktalny i heksadecymalny:
Dziesiętne (Decimal) |
<ciąg cyfr od 0 do 9> |
Binarne (Binary) |
B"<ciąg 0. 1, X>", gdzie X = „don’t carc*’ |
Octalnc (Octal) |
o"<ciąg cyfr od 0 do 7>" lub o~<ciąg cyfr od 0 do 7> |
Heksadecymalnc (Hacadecimal) |
x«<ciąg cyfr od 0 do 9 i liter od A do F>" H"<ciąg cyfr od 0 do 9 i liter od A do F>" |
zastosowano operator równości, którego znaczenie jest szersze w kontekście uproszczonych zapisów wyrażeń boolowskich (patrz przykład 5.10).
Stale są stosowane w celu nadania wartościom liczbowymi lub łańcuchom tekstowym symbolicznych nazw. do których można się odwoływać w części opisowej projektu. Używając stałych możemy wszelkie zmiany ich wartości ograniczyć do zmian w linii, w których są one definiowane. Poniższy przykład dotyczy specyfikacji dekodera adresowego z przykładu 5.9, z uwzględnieniem stałej:
Przykład 5.10
CONSTANT IOADDRESS - H"0370";
Zatem w zapisie AHDL:
2596 oznacza liczbę dziesiętną;
B"0110X1X10" oznacza kostkę, czyli zbiór wektorów binarnych: 011001010,011001110.011011010.011011110; q-4671223- oznacza liczbę oktalną, która w zapisie binarnym jest:
h"123aecf~ oznacza liczbę hcksadecymalną, czyli binarnie: 0001001000111010111011001111.
Kolejny przykład ilustruje zastosowanie skróconych zapisów liczb do specyfikacji dekodera adresowego.
Przykład 5.9
SUBDESIGN decodel (
address(15..0) : INPUT;
chip_enable : OUTPUT;
)
BEGIN
chip_enable - (addressl15..01 ** H"0370“);
END;
Liczby dziesiętne 0 i 15 służą do wskazania bitów szyny adresowej. Liczba H-0370- określa dekodowany adres. Litera H wskazuje na zapis w kodzie szesnastkowym Wyrażenie Chip_enable przyjmuje wartość I. gdy wartość wektora na
szynie address będzie równa 0370 w kodzie szesnastkowym. W przykładzie
a(15..0] chipenable
: INPUT;
: OUTPUT;
chip_enable - <a[15..0J — IO_ADDRESS);
fi W przykładzie tym liczbę H"0370" zastąpiono nazwą stałej. Wartość stałej jest iw pierwszej linii po słowie kluczowym CONSTANT.
Wyrażenia boolowskie i operatory logiczne
AHDL posługuje się typowymi operatorami logicznymi, oznaczanymi symbolami «lub słowami kluczowymi:
NOT
AND
NAND
OR
NOR
XOR
XNOR
Jednak ich zastosowanie jest istotnie wzbogacone przez możliwość używania sygnałów grupowych, a następnie operatorów relacyjnych.
Podane przykłady wyjaśniają interpretację operacji logicznych na sygnałach grupowych.
•) !a(4. .1) s (U4, !a3, !«2,!al) b) ! 9 oznacza ! B"l 001", czyli B"0110"