Sprawozdanie z ćwiczenia numer 3
Data wykonania ćwiczenia: 2006-12-04
Temat ćwiczenia:
Projektowanie systemów cyfrowych w oparciu o układy programowalne
Laboratorium Mikroinformatyki
Rok akademicki
Termin
Rodzaj studiów
Kierunek
Prowadzący
Grupa
Sekcja
poniedziałek
2006/2007
14:45 – 17:00
Dzienne
INF
BSz
4
2
Skład sekcji:
Marcin Dybich
Piotr Górski
Kamil Lebek
Michał Liszka
Michał Kornalewski
Michał Niwiński
Dawid Pulnar
Maciej Smyczek
Marcin Strzelczyk
Dawid Wiącek
Witold Zajfert
Zadanie 1:
Należało napisać program w języku ABEL sumujący dwie liczby 3-bitowe z
uwzględnieniem wyjścia przeniesienia.
module bb
CARRY macro (X,Y,Z) { ((?X # ?Y) & ?Z) # (?X & ?Y) }; " deklaracje makrodefinicji
SUMA macro (X,Y,Z) { ?X $ ?Y $ ?Z }; " odpowiedzialnych za przeniesienie i za sume
cout0,cout1,cout2,c0,c1,c2 pin istype 'com'; "wyjscia
a0,a1,a2,b0,b1,b2,cin pin; "wejscia
A = [a2,a1,a0];
B = [b2,b1,b0];
equations
c0 = SUMA(a0,b0,cin); "obliczenie wartosci kolejnych wyjsc
cout0 = CARRY(a0,b0,cin);
c1 = SUMA(a1,b1,cout0);
cout1 = CARRY(a1,b1,cout0);
c2 = SUMA(a2,b2,cout1);
cout2 = CARRY(a2,b2,cout1);
" segment symulacji
test_vectors( [A, B,cin] -> [cout2,c2,c1,c0])
[7,7,1]->15;
@const aa = 0;
@repeat 8{
@const bb = 0;
@repeat 8{
@const cc = 0;
@repeat 2{
[aa,bb,cc]->aa+bb+cc;
@const cc=cc+1;
}
@const bb=bb+1;
}
@const aa=aa+1;
}
end
Program nasz polega na dodawaniu kolejnych bitów liczb podawanych z
wejsc: a0,a1,a2,b0,b1,b2. Wejście cin odpowiada za przeniesienie, które może
nastąpić z poprzedniego sumowania – w przypadku połączenia kilku urządzeń
sumujących. Wyjścia cout0,cout1,cout2 oznaczają kolejne przeniesienia jakie
następują w wyniku sumowania bitów, przy czym wyjście cout2 to przeniesienie,
które otrzymujemy po zsumowaniu całych liczb i jest wyjściem, o którym mowa w
poleceniu.
Testowanie :
Simulate EZ-ABEL 4.30 Date: Mon Dec 4 16:54:36 19:6
Fuse file: 'bb.tt1' Vector file: 'bb.tmv' Part: 'PLA'
c
o
c u
a a a b b b i t c c c
2 1 0 2 1 0 n 2 2 1 0
V0001 1 1 1 1 1 1 1 H H H H
V0002 0 0 0 0 0 0 0 L L L L
V0003 0 0 0 0 0 0 1 L L L H
V0004 0 0 0 0 0 1 0 L L L H
V0005 0 0 0 0 0 1 1 L L H L
V0006 0 0 0 0 1 0 0 L L H L
V0007 0 0 0 0 1 0 1 L L H H
V0008 0 0 0 0 1 1 0 L L H H
V0009 0 0 0 0 1 1 1 L H L L
V0010 0 0 0 1 0 0 0 L H L L
V0011 0 0 0 1 0 0 1 L H L H
V0012 0 0 0 1 0 1 0 L H L H
V0013 0 0 0 1 0 1 1 L H H L
V0014 0 0 0 1 1 0 0 L H H L
V0015 0 0 0 1 1 0 1 L H H H
V0016 0 0 0 1 1 1 0 L H H H
V0017 0 0 0 1 1 1 1 H L L L
V0018 0 0 1 0 0 0 0 L L L H
V0019 0 0 1 0 0 0 1 L L H L
V0020 0 0 1 0 0 1 0 L L H L
V0021 0 0 1 0 0 1 1 L L H H
V0022 0 0 1 0 1 0 0 L L H H
V0023 0 0 1 0 1 0 1 L H L L
V0024 0 0 1 0 1 1 0 L H L L
V0025 0 0 1 0 1 1 1 L H L H
V0026 0 0 1 1 0 0 0 L H L H
V0027 0 0 1 1 0 0 1 L H H L
V0028 0 0 1 1 0 1 0 L H H L
V0029 0 0 1 1 0 1 1 L H H H
V0030 0 0 1 1 1 0 0 L H H H
V0031 0 0 1 1 1 0 1 H L L L
V0032 0 0 1 1 1 1 0 H L L L
V0033 0 0 1 1 1 1 1 H L L H
V0034 0 1 0 0 0 0 0 L L H L
V0035 0 1 0 0 0 0 1 L L H H
V0036 0 1 0 0 0 1 0 L L H H
V0037 0 1 0 0 0 1 1 L H L L
V0038 0 1 0 0 1 0 0 L H L L
V0039 0 1 0 0 1 0 1 L H L H
V0040 0 1 0 0 1 1 0 L H L H
V0041 0 1 0 0 1 1 1 L H H L
V0042 0 1 0 1 0 0 0 L H H L
V0043 0 1 0 1 0 0 1 L H H H
V0044 0 1 0 1 0 1 0 L H H H
V0045 0 1 0 1 0 1 1 H L L L
V0046 0 1 0 1 1 0 0 H L L L
V0047 0 1 0 1 1 0 1 H L L H
V0048 0 1 0 1 1 1 0 H L L H
V0049 0 1 0 1 1 1 1 H L H L
V0050 0 1 1 0 0 0 0 L L H H
V0051 0 1 1 0 0 0 1 L H L L
V0052 0 1 1 0 0 1 0 L H L L
V0053 0 1 1 0 0 1 1 L H L H
V0054 0 1 1 0 1 0 0 L H L H
V0055 0 1 1 0 1 0 1 L H H L
V0056 0 1 1 0 1 1 0 L H H L
V0057 0 1 1 0 1 1 1 L H H H
V0058 0 1 1 1 0 0 0 L H H H
V0059 0 1 1 1 0 0 1 H L L L
V0060 0 1 1 1 0 1 0 H L L L
V0061 0 1 1 1 0 1 1 H L L H
V0062 0 1 1 1 1 0 0 H L L H
V0063 0 1 1 1 1 0 1 H L H L
V0064 0 1 1 1 1 1 0 H L H L
V0065 0 1 1 1 1 1 1 H L H H
V0066 1 0 0 0 0 0 0 L H L L
V0067 1 0 0 0 0 0 1 L H L H
V0068 1 0 0 0 0 1 0 L H L H
V0069 1 0 0 0 0 1 1 L H H L
V0070 1 0 0 0 1 0 0 L H H L
V0071 1 0 0 0 1 0 1 L H H H
V0072 1 0 0 0 1 1 0 L H H H
V0073 1 0 0 0 1 1 1 H L L L
V0074 1 0 0 1 0 0 0 H L L L
V0075 1 0 0 1 0 0 1 H L L H
V0076 1 0 0 1 0 1 0 H L L H
V0077 1 0 0 1 0 1 1 H L H L
V0078 1 0 0 1 1 0 0 H L H L
V0079 1 0 0 1 1 0 1 H L H H
V0080 1 0 0 1 1 1 0 H L H H
V0081 1 0 0 1 1 1 1 H H L L
V0082 1 0 1 0 0 0 0 L H L H
V0083 1 0 1 0 0 0 1 L H H L
V0084 1 0 1 0 0 1 0 L H H L
V0085 1 0 1 0 0 1 1 L H H H
V0086 1 0 1 0 1 0 0 L H H H
V0087 1 0 1 0 1 0 1 H L L L
V0088 1 0 1 0 1 1 0 H L L L
V0089 1 0 1 0 1 1 1 H L L H
V0090 1 0 1 1 0 0 0 H L L H
V0091 1 0 1 1 0 0 1 H L H L
V0092 1 0 1 1 0 1 0 H L H L
V0093 1 0 1 1 0 1 1 H L H H
V0094 1 0 1 1 1 0 0 H L H H
V0095 1 0 1 1 1 0 1 H H L L
V0096 1 0 1 1 1 1 0 H H L L
V0097 1 0 1 1 1 1 1 H H L H
V0098 1 1 0 0 0 0 0 L H H L
V0099 1 1 0 0 0 0 1 L H H H
V0100 1 1 0 0 0 1 0 L H H H
V0101 1 1 0 0 0 1 1 H L L L
V0102 1 1 0 0 1 0 0 H L L L
V0103 1 1 0 0 1 0 1 H L L H
V0104 1 1 0 0 1 1 0 H L L H
V0105 1 1 0 0 1 1 1 H L H L
V0106 1 1 0 1 0 0 0 H L H L
V0107 1 1 0 1 0 0 1 H L H H
V0108 1 1 0 1 0 1 0 H L H H
V0109 1 1 0 1 0 1 1 H H L L
V0110 1 1 0 1 1 0 0 H H L L
V0111 1 1 0 1 1 0 1 H H L H
V0112 1 1 0 1 1 1 0 H H L H
V0113 1 1 0 1 1 1 1 H H H L
V0114 1 1 1 0 0 0 0 L H H H
V0115 1 1 1 0 0 0 1 H L L L
V0116 1 1 1 0 0 1 0 H L L L
V0117 1 1 1 0 0 1 1 H L L H
V0118 1 1 1 0 1 0 0 H L L H
V0119 1 1 1 0 1 0 1 H L H L
V0120 1 1 1 0 1 1 0 H L H L
V0121 1 1 1 0 1 1 1 H L H H
V0122 1 1 1 1 0 0 0 H L H H
V0123 1 1 1 1 0 0 1 H H L L
V0124 1 1 1 1 0 1 0 H H L L
V0125 1 1 1 1 0 1 1 H H L H
V0126 1 1 1 1 1 0 0 H H L H
V0127 1 1 1 1 1 0 1 H H H L
V0128 1 1 1 1 1 1 0 H H H L
V0129 1 1 1 1 1 1 1 H H H H
129 out of 129 vectors passed.
Zadanie 2:
Napisać program w języku ABEL, opisujący 4 bitowy licznik dwukierunkowy.
Wejście „dir” określa kierunek liczenia, wejście „load” ładuje do licznika zadaną
wartość. Piny q0-q3 wyjscia licznika, piny w0-w3 wejscia ładujące
Module licz_2
q3, q2, q1, q0 pin istype ‘reg’; „piny wyjsciowe
w3, w2, w1, w0 pin; „piny sluzace do ladowania
dir pin; „kierunek zliczania
load pin; „gdy = 1 -> ladujemy liczbe z wej
clk pin; „wejscie taktujace
wyj = [q3,q2,q1,q0];
wej = [w3,w2,w1,w0];
equations
„zataktuj przerzutnik
wyj.clk = clk;
„jeśli load = 1 -> zaladuj liczbe z ‘wej’
when load then
wyj := wej
„jeśli brak ladowania zmodyfikuj wartosc licznika
else
„zwiekszenie o 1 (dla 15 ‘przekrecenie’ na 0)
when dir then
wyj := wyj + 1
„analogicznie dekrementacja o 1
else
wyj := wyj – 1;
test_vectors( [clk,load,dir,wej] -> wyj )
[.c.,1,0,0] -> 0;
@const i = 1;
@repeat 100 {
[.c., 0, 1, .x.] -> i%16;
@const i=i+1;
}
@const i = 99;
@repeat 100 {
[.c., 0, 0, .x.] -> i%16;
@const i=i-1;
}
@const i = 0;
@repeat 16 {
[.c., 1, .x., i] -> i;
@const i=i+1;
}
end
Testowanie:
Simulate EZ-ABEL 4.30 Date: Mon Dec 4 15:51:59 19:6
Fuse file: ‘licz_2.tt1’ Vector file: ‘licz_2.tmv’ Part: ‘PLA’
l
c o d
l a i w w w w q q q q
k d r 3 2 1 0 3 2 1 0
V0001 C 1 0 0 0 0 0 L L L L
V0002 C 0 1 0 0 0 0 L L L H
V0003 C 0 1 0 0 0 0 L L H L
V0004 C 0 1 0 0 0 0 L L H H
V0005 C 0 1 0 0 0 0 L H L L
V0006 C 0 1 0 0 0 0 L H L H
V0007 C 0 1 0 0 0 0 L H H L
V0008 C 0 1 0 0 0 0 L H H H
V0009 C 0 1 0 0 0 0 H L L L
V0010 C 0 1 0 0 0 0 H L L H
V0011 C 0 1 0 0 0 0 H L H L
V0012 C 0 1 0 0 0 0 H L H H
V0013 C 0 1 0 0 0 0 H H L L
V0014 C 0 1 0 0 0 0 H H L H
V0015 C 0 1 0 0 0 0 H H H L
V0016 C 0 1 0 0 0 0 H H H H
V0017 C 0 1 0 0 0 0 L L L L
V0018 C 0 1 0 0 0 0 L L L H
V0019 C 0 1 0 0 0 0 L L H L
V0020 C 0 1 0 0 0 0 L L H H
V0021 C 0 1 0 0 0 0 L H L L
V0022 C 0 1 0 0 0 0 L H L H
V0023 C 0 1 0 0 0 0 L H H L
V0024 C 0 1 0 0 0 0 L H H H
V0025 C 0 1 0 0 0 0 H L L L
V0026 C 0 1 0 0 0 0 H L L H
V0027 C 0 1 0 0 0 0 H L H L
V0028 C 0 1 0 0 0 0 H L H H
V0029 C 0 1 0 0 0 0 H H L L
V0030 C 0 1 0 0 0 0 H H L H
V0031 C 0 1 0 0 0 0 H H H L
V0032 C 0 1 0 0 0 0 H H H H
V0033 C 0 1 0 0 0 0 L L L L
V0034 C 0 1 0 0 0 0 L L L H
V0035 C 0 1 0 0 0 0 L L H L
V0036 C 0 1 0 0 0 0 L L H H
V0037 C 0 1 0 0 0 0 L H L L
V0038 C 0 1 0 0 0 0 L H L H
V0039 C 0 1 0 0 0 0 L H H L
V0040 C 0 1 0 0 0 0 L H H H
V0041 C 0 1 0 0 0 0 H L L L
V0042 C 0 1 0 0 0 0 H L L H
V0043 C 0 1 0 0 0 0 H L H L
V0044 C 0 1 0 0 0 0 H L H H
V0045 C 0 1 0 0 0 0 H H L L
V0046 C 0 1 0 0 0 0 H H L H
V0047 C 0 1 0 0 0 0 H H H L
V0048 C 0 1 0 0 0 0 H H H H
V0049 C 0 1 0 0 0 0 L L L L
V0050 C 0 1 0 0 0 0 L L L H
V0051 C 0 1 0 0 0 0 L L H L
V0052 C 0 1 0 0 0 0 L L H H
V0053 C 0 1 0 0 0 0 L H L L
V0054 C 0 1 0 0 0 0 L H L H
V0055 C 0 1 0 0 0 0 L H H L
V0056 C 0 1 0 0 0 0 L H H H
V0057 C 0 1 0 0 0 0 H L L L
V0058 C 0 1 0 0 0 0 H L L H
V0059 C 0 1 0 0 0 0 H L H L
V0060 C 0 1 0 0 0 0 H L H H
V0061 C 0 1 0 0 0 0 H H L L
V0062 C 0 1 0 0 0 0 H H L H
V0063 C 0 1 0 0 0 0 H H H L
V0064 C 0 1 0 0 0 0 H H H H
V0065 C 0 1 0 0 0 0 L L L L
V0066 C 0 1 0 0 0 0 L L L H
V0067 C 0 1 0 0 0 0 L L H L
V0068 C 0 1 0 0 0 0 L L H H
V0069 C 0 1 0 0 0 0 L H L L
V0070 C 0 1 0 0 0 0 L H L H
V0071 C 0 1 0 0 0 0 L H H L
V0072 C 0 1 0 0 0 0 L H H H
V0073 C 0 1 0 0 0 0 H L L L
V0074 C 0 1 0 0 0 0 H L L H
V0075 C 0 1 0 0 0 0 H L H L
V0076 C 0 1 0 0 0 0 H L H H
V0077 C 0 1 0 0 0 0 H H L L
V0078 C 0 1 0 0 0 0 H H L H
V0079 C 0 1 0 0 0 0 H H H L
V0080 C 0 1 0 0 0 0 H H H H
V0081 C 0 1 0 0 0 0 L L L L
V0082 C 0 1 0 0 0 0 L L L H
V0083 C 0 1 0 0 0 0 L L H L
V0084 C 0 1 0 0 0 0 L L H H
V0085 C 0 1 0 0 0 0 L H L L
V0086 C 0 1 0 0 0 0 L H L H
V0087 C 0 1 0 0 0 0 L H H L
V0088 C 0 1 0 0 0 0 L H H H
V0089 C 0 1 0 0 0 0 H L L L
V0090 C 0 1 0 0 0 0 H L L H
V0091 C 0 1 0 0 0 0 H L H L
V0092 C 0 1 0 0 0 0 H L H H
V0093 C 0 1 0 0 0 0 H H L L
V0094 C 0 1 0 0 0 0 H H L H
V0095 C 0 1 0 0 0 0 H H H L
V0096 C 0 1 0 0 0 0 H H H H
V0097 C 0 1 0 0 0 0 L L L L
V0098 C 0 1 0 0 0 0 L L L H
V0099 C 0 1 0 0 0 0 L L H L
V0100 C 0 1 0 0 0 0 L L H H
V0101 C 0 1 0 0 0 0 L H L L
V0102 C 0 0 0 0 0 0 L L H H
V0103 C 0 0 0 0 0 0 L L H L
V0104 C 0 0 0 0 0 0 L L L H
V0105 C 0 0 0 0 0 0 L L L L
V0106 C 0 0 0 0 0 0 H H H H
V0107 C 0 0 0 0 0 0 H H H L
V0108 C 0 0 0 0 0 0 H H L H
V0109 C 0 0 0 0 0 0 H H L L
V0110 C 0 0 0 0 0 0 H L H H
V0111 C 0 0 0 0 0 0 H L H L
V0112 C 0 0 0 0 0 0 H L L H
V0113 C 0 0 0 0 0 0 H L L L
V0114 C 0 0 0 0 0 0 L H H H
V0115 C 0 0 0 0 0 0 L H H L
V0116 C 0 0 0 0 0 0 L H L H
V0117 C 0 0 0 0 0 0 L H L L
V0118 C 0 0 0 0 0 0 L L H H
V0119 C 0 0 0 0 0 0 L L H L
V0120 C 0 0 0 0 0 0 L L L H
V0121 C 0 0 0 0 0 0 L L L L
V0122 C 0 0 0 0 0 0 H H H H
V0123 C 0 0 0 0 0 0 H H H L
V0124 C 0 0 0 0 0 0 H H L H
V0125 C 0 0 0 0 0 0 H H L L
V0126 C 0 0 0 0 0 0 H L H H
V0127 C 0 0 0 0 0 0 H L H L
V0128 C 0 0 0 0 0 0 H L L H
V0129 C 0 0 0 0 0 0 H L L L
V0130 C 0 0 0 0 0 0 L H H H
V0131 C 0 0 0 0 0 0 L H H L
V0132 C 0 0 0 0 0 0 L H L H
V0133 C 0 0 0 0 0 0 L H L L
V0134 C 0 0 0 0 0 0 L L H H
V0135 C 0 0 0 0 0 0 L L H L
V0136 C 0 0 0 0 0 0 L L L H
V0137 C 0 0 0 0 0 0 L L L L
V0138 C 0 0 0 0 0 0 H H H H
V0139 C 0 0 0 0 0 0 H H H L
V0140 C 0 0 0 0 0 0 H H L H
V0141 C 0 0 0 0 0 0 H H L L
V0142 C 0 0 0 0 0 0 H L H H
V0143 C 0 0 0 0 0 0 H L H L
V0144 C 0 0 0 0 0 0 H L L H
V0145 C 0 0 0 0 0 0 H L L L
V0146 C 0 0 0 0 0 0 L H H H
V0147 C 0 0 0 0 0 0 L H H L
V0148 C 0 0 0 0 0 0 L H L H
V0149 C 0 0 0 0 0 0 L H L L
V0150 C 0 0 0 0 0 0 L L H H
V0151 C 0 0 0 0 0 0 L L H L
V0152 C 0 0 0 0 0 0 L L L H
V0153 C 0 0 0 0 0 0 L L L L
V0154 C 0 0 0 0 0 0 H H H H
V0155 C 0 0 0 0 0 0 H H H L
V0156 C 0 0 0 0 0 0 H H L H
V0157 C 0 0 0 0 0 0 H H L L
V0158 C 0 0 0 0 0 0 H L H H
V0159 C 0 0 0 0 0 0 H L H L
V0160 C 0 0 0 0 0 0 H L L H
V0161 C 0 0 0 0 0 0 H L L L
V0162 C 0 0 0 0 0 0 L H H H
V0163 C 0 0 0 0 0 0 L H H L
V0164 C 0 0 0 0 0 0 L H L H
V0165 C 0 0 0 0 0 0 L H L L
V0166 C 0 0 0 0 0 0 L L H H
V0167 C 0 0 0 0 0 0 L L H L
V0168 C 0 0 0 0 0 0 L L L H
V0169 C 0 0 0 0 0 0 L L L L
V0170 C 0 0 0 0 0 0 H H H H
V0171 C 0 0 0 0 0 0 H H H L
V0172 C 0 0 0 0 0 0 H H L H
V0173 C 0 0 0 0 0 0 H H L L
V0174 C 0 0 0 0 0 0 H L H H
V0175 C 0 0 0 0 0 0 H L H L
V0176 C 0 0 0 0 0 0 H L L H
V0177 C 0 0 0 0 0 0 H L L L
V0178 C 0 0 0 0 0 0 L H H H
V0179 C 0 0 0 0 0 0 L H H L
V0180 C 0 0 0 0 0 0 L H L H
V0181 C 0 0 0 0 0 0 L H L L
V0182 C 0 0 0 0 0 0 L L H H
V0183 C 0 0 0 0 0 0 L L H L
V0184 C 0 0 0 0 0 0 L L L H
V0185 C 0 0 0 0 0 0 L L L L
V0186 C 0 0 0 0 0 0 H H H H
V0187 C 0 0 0 0 0 0 H H H L
V0188 C 0 0 0 0 0 0 H H L H
V0189 C 0 0 0 0 0 0 H H L L
V0190 C 0 0 0 0 0 0 H L H H
V0191 C 0 0 0 0 0 0 H L H L
V0192 C 0 0 0 0 0 0 H L L H
V0193 C 0 0 0 0 0 0 H L L L
V0194 C 0 0 0 0 0 0 L H H H
V0195 C 0 0 0 0 0 0 L H H L
V0196 C 0 0 0 0 0 0 L H L H
V0197 C 0 0 0 0 0 0 L H L L
V0198 C 0 0 0 0 0 0 L L H H
V0199 C 0 0 0 0 0 0 L L H L
V0200 C 0 0 0 0 0 0 L L L H
V0201 C 0 0 0 0 0 0 L L L L
V0202 C 1 0 0 0 0 0 L L L L
V0203 C 1 0 0 0 0 1 L L L H
V0204 C 1 0 0 0 1 0 L L H L
V0205 C 1 0 0 0 1 1 L L H H
V0206 C 1 0 0 1 0 0 L H L L
V0207 C 1 0 0 1 0 1 L H L H
V0208 C 1 0 0 1 1 0 L H H L
V0209 C 1 0 0 1 1 1 L H H H
V0210 C 1 0 1 0 0 0 H L L L
V0211 C 1 0 1 0 0 1 H L L H
V0212 C 1 0 1 0 1 0 H L H L
V0213 C 1 0 1 0 1 1 H L H H
V0214 C 1 0 1 1 0 0 H H L L
V0215 C 1 0 1 1 0 1 H H L H
V0216 C 1 0 1 1 1 0 H H H L
V0217 C 1 0 1 1 1 1 H H H H
217 out of 217 vectors passed.
Zadanie 3:
Napisać 5 bitowy, dwukierunkowy licznik w języku ABEL. Licznik ma posiadać
asynchroniczne wejście zerujące oraz wejście b. Dla b = 1 ma liczyć z krokiem 3, a
dla b = 0 z krokiem 1.
module licznik
title 'Licznik 2-kierunkowy 5-bitowy'
a1,a2,a3,a4,a5 pin istype 'reg'; "wyjscia
dir pin; "kierunek
clr pin; "zerowanie
b pin; "krok; 0 - krok 1, 1 - krok 3
clk pin; "zegar
count = [a5,a4,a3,a2,a1];
equations
count.ar = !clr;
count.clk = clk;
"dodawanie, krok 1
when (dir & !b) then
count := count+1
"odejmowanie, krok 1
when (!dir & !b) then
count := count - 1;
"dodawanie, krok 3
when (dir & b) then
count := count + 3 ;
"odejmowanie, krok 3
when (!dir & b) then
count := count - 3;
test_vectors( [clk, clr, dir, b] -> count )
[.k., 0 , .X., .X.] -> 0;
@const i=1;
@repeat 35 {
[.C., 1, 1, 0] -> i;
@const i=i+1;
}
@const i=34;
@repeat 35 {
[.C., 1, 0, 0] -> i;
@const i=i-1;
}
@const i=3;
@repeat 35 {
[.C.,1,1,1] -> i;
@const i=i+3;
}
[.k., 0, .X., .X.] -> 0;
@const i = 29;
@repeat 35 {
[.C.,1,0,1]->i;
@const i = i - 3;
}
end
Testowanie:
Simulate EZ-ABEL 4.30 Date: Mon Dec 4 16:07:24 19:6
Fuse file: 'licznik.tt1' Vector file: 'licznik.tmv' Part: 'PLA'
Licznik 2-kierunkowy 5-bitowy
c c d
l l i a a a a a
k r r b 5 4 3 2 1
V0001 K 0 0 0 L L L L L
V0002 C 1 1 0 L L L L H
V0003 C 1 1 0 L L L H L
V0004 C 1 1 0 L L L H H
V0005 C 1 1 0 L L H L L
V0006 C 1 1 0 L L H L H
V0007 C 1 1 0 L L H H L
V0008 C 1 1 0 L L H H H
V0009 C 1 1 0 L H L L L
V0010 C 1 1 0 L H L L H
V0011 C 1 1 0 L H L H L
V0012 C 1 1 0 L H L H H
V0013 C 1 1 0 L H H L L
V0014 C 1 1 0 L H H L H
V0015 C 1 1 0 L H H H L
V0016 C 1 1 0 L H H H H
V0017 C 1 1 0 H L L L L
V0018 C 1 1 0 H L L L H
V0019 C 1 1 0 H L L H L
V0020 C 1 1 0 H L L H H
V0021 C 1 1 0 H L H L L
V0022 C 1 1 0 H L H L H
V0023 C 1 1 0 H L H H L
V0024 C 1 1 0 H L H H H
V0025 C 1 1 0 H H L L L
V0026 C 1 1 0 H H L L H
V0027 C 1 1 0 H H L H L
V0028 C 1 1 0 H H L H H
V0029 C 1 1 0 H H H L L
V0030 C 1 1 0 H H H L H
V0031 C 1 1 0 H H H H L
V0032 C 1 1 0 H H H H H
V0033 C 1 1 0 L L L L L
V0034 C 1 1 0 L L L L H
V0035 C 1 1 0 L L L H L
V0036 C 1 1 0 L L L H H
V0037 C 1 0 0 L L L H L
V0038 C 1 0 0 L L L L H
V0039 C 1 0 0 L L L L L
V0040 C 1 0 0 H H H H H
V0041 C 1 0 0 H H H H L
V0042 C 1 0 0 H H H L H
V0043 C 1 0 0 H H H L L
V0044 C 1 0 0 H H L H H
V0045 C 1 0 0 H H L H L
V0046 C 1 0 0 H H L L H
V0047 C 1 0 0 H H L L L
V0048 C 1 0 0 H L H H H
V0049 C 1 0 0 H L H H L
V0050 C 1 0 0 H L H L H
V0051 C 1 0 0 H L H L L
V0052 C 1 0 0 H L L H H
V0053 C 1 0 0 H L L H L
V0054 C 1 0 0 H L L L H
V0055 C 1 0 0 H L L L L
V0056 C 1 0 0 L H H H H
V0057 C 1 0 0 L H H H L
V0058 C 1 0 0 L H H L H
V0059 C 1 0 0 L H H L L
V0060 C 1 0 0 L H L H H
V0061 C 1 0 0 L H L H L
V0062 C 1 0 0 L H L L H
V0063 C 1 0 0 L H L L L
V0064 C 1 0 0 L L H H H
V0065 C 1 0 0 L L H H L
V0066 C 1 0 0 L L H L H
V0067 C 1 0 0 L L H L L
V0068 C 1 0 0 L L L H H
V0069 C 1 0 0 L L L H L
V0070 C 1 0 0 L L L L H
V0071 C 1 0 0 L L L L L
V0072 C 1 1 1 L L L H H
V0073 C 1 1 1 L L H H L
V0074 C 1 1 1 L H L L H
V0075 C 1 1 1 L H H L L
V0076 C 1 1 1 L H H H H
V0077 C 1 1 1 H L L H L
V0078 C 1 1 1 H L H L H
V0079 C 1 1 1 H H L L L
V0080 C 1 1 1 H H L H H
V0081 C 1 1 1 H H H H L
V0082 C 1 1 1 L L L L H
V0083 C 1 1 1 L L H L L
V0084 C 1 1 1 L L H H H
V0085 C 1 1 1 L H L H L
V0086 C 1 1 1 L H H L H
V0087 C 1 1 1 H L L L L
V0088 C 1 1 1 H L L H H
V0089 C 1 1 1 H L H H L
V0090 C 1 1 1 H H L L H
V0091 C 1 1 1 H H H L L
V0092 C 1 1 1 H H H H H
V0093 C 1 1 1 L L L H L
V0094 C 1 1 1 L L H L H
V0095 C 1 1 1 L H L L L
V0096 C 1 1 1 L H L H H
V0097 C 1 1 1 L H H H L
V0098 C 1 1 1 H L L L H
V0099 C 1 1 1 H L H L L
V0100 C 1 1 1 H L H H H
V0101 C 1 1 1 H H L H L
V0102 C 1 1 1 H H H L H
V0103 C 1 1 1 L L L L L
V0104 C 1 1 1 L L L H H
V0105 C 1 1 1 L L H H L
V0106 C 1 1 1 L H L L H
V0107 K 0 0 0 L L L L L
V0108 C 1 0 1 H H H L H
V0109 C 1 0 1 H H L H L
V0110 C 1 0 1 H L H H H
V0111 C 1 0 1 H L H L L
V0112 C 1 0 1 H L L L H
V0113 C 1 0 1 L H H H L
V0114 C 1 0 1 L H L H H
V0115 C 1 0 1 L H L L L
V0116 C 1 0 1 L L H L H
V0117 C 1 0 1 L L L H L
V0118 C 1 0 1 H H H H H
V0119 C 1 0 1 H H H L L
V0120 C 1 0 1 H H L L H
V0121 C 1 0 1 H L H H L
V0122 C 1 0 1 H L L H H
V0123 C 1 0 1 H L L L L
V0124 C 1 0 1 L H H L H
V0125 C 1 0 1 L H L H L
V0126 C 1 0 1 L L H H H
V0127 C 1 0 1 L L H L L
V0128 C 1 0 1 L L L L H
V0129 C 1 0 1 H H H H L
V0130 C 1 0 1 H H L H H
V0131 C 1 0 1 H H L L L
V0132 C 1 0 1 H L H L H
V0133 C 1 0 1 H L L H L
V0134 C 1 0 1 L H H H H
V0135 C 1 0 1 L H H L L
V0136 C 1 0 1 L H L L H
V0137 C 1 0 1 L L H H L
V0138 C 1 0 1 L L L H H
V0139 C 1 0 1 L L L L L
V0140 C 1 0 1 H H H L H
V0141 C 1 0 1 H H L H L
V0142 C 1 0 1 H L H H H
142 out of 142 vectors passed.
Wnioski :
-
język ABEL znacząco zmniejsza czas potrzebny do zaprogramowania matrycy
-
mechanizm testowania umożliwia szybkie odnalezienie błędnych fragmentów kodu
-
makroinstrukcje ułatwiają testowanie dużych partii danych testowych
-
struktura języka ABEL jest na tyle prosta, że czas potrzebny na jego naukę jest
relatywnie krótki
-
istnieje możliwość tworzenia unikalnych układów o specyficznych zadaniach