background image

 
 
 
 
 
 
 
 
 
 
 
 
 
 

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 

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 

background image

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. 

 
 
 
 
 
 

background image

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 

background image

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 

background image

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)  

background image

 

 

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 

background image

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 

background image

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 

background image

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 

background image

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 

background image

  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' 

background image

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 

background image

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 

background image

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