Technika Cyfrowa 2 Wykład 3
dr in\. Sławomir Sambor
slawomir.sambor@pwr.wroc.pl
ITA, budynek C-5 pokój 708,
Tel. 0 71 320 30 78
http://zstux.ita.pwr.wroc.pl/slawek/
1
Programowanie PLD System CUPL
Programy systemu CUPL
System CUPL składa się z następujących programów: CUPL, CSIM, CBLD, PTOC
CUPL - Universal Compiler for Programmable Logic - uniwersalny kompilator do programowalnych
układów logicznych. Pozwala on na translację zbiorów dyskowych zapisanych w języku
specyfikacji zadania na zbiory zawierające rozkazy dla programatorów programowalnych
układów logicznych.
CSIM - CUPL SIMULATOR - symulator układów logicznych zaprogramowanych kodem
wytworzonym przez kompilator CUPL.
CBLD - CUPL BUILD - program zarządzający bibliotekami urządzeń logicznych dla kompilatora CUPL.
PTOC - PALASM To CUPL Translator - program do tłumaczenia zbiorów dyskowych zapisanych
w formacie programu PALASM na format wejściowy kompilatora CUPL.
Podstawy Techniki Cyfrowej i
Mikroprocesorowej 1
Umo\liwia programowanie układów: Zbiory wyjściowe mogą być wyprowadzone w formatach:
" PROM (Programmable ROM, " .JED - JEDEC z wektorami testu lub bez (dla większości
" PAL (Programmable Array Logic), programatorów),
" PLA (Programmable Logic Array), " .HEX - dla układów PROM,
" PGA (Programmable Gate Array) " .HL - dla układów ImFL firmy Signetics,
" PLS (Programmable Logic Sequencer). " .DOC - zbiory dokumentacyjne,
" .LST - wykazy błędów kompilacji,
" .SO - wykazy błędów wykrytych podczas symulacji.
Składnia
Komentarze
Komentarze rozpoczyna się znakami /* i kończy */. Znaki te mogą obejmować jedną i więcej linii
- koniec linii nie oznacza końca komentarza.
Identyfikatory
Identyfikatorem jest ciąg znaków alfanumerycznych (cyfry, litery, podkreślenia) zawierający co najmniej
jedną literę, o długości nie większej ni\ 31 znaków.
Przykłady poprawnych identyfikatorów:
a0, A0, 8250_ENABLE, _address;
Identyfikatory indeksowe
Identyfikatorem indeksowym jest identyfikator zakończony liczbą dziesiętną z zakresu od 0 do 31:
idn;
gdzie n jest liczbą dziesiętną.
Identyfikator pola bitowego o indeksie 0 zawsze oznacza najmniej znaczący bit.
Przykłady poprawnych identyfikatorów indeksowych:
A0, Al, A2, counter_bit_3;
Listy
Przykłady:
[UP,DOWN,LEFT,RIGHT]; [A0..7];
[A0..7, B0..3]; [select, OUT0..3];
Podstawy Techniki Cyfrowej i
Mikroprocesorowej 2
Stałe liczbowe
W pliku zródłowym przyjmuje się przez domniemanie, \e u\ywane stałe są w zapisie szesnastkowym,
oprócz oznaczeń wyprowadzeń z układów (pinów), dla których przyjmuje się, \e są w systemie
dziesiętnym.
Przykłady
'B'1101, BA, 'O'[300..477], 'b' 1X11, 'O'0X6, d 29
Operatory
Bitowe operatory logiczne.
! - negacja (dopełnienie) - NOT,
& - koniunkcja - AND,
# - alternatywa - OR,
$ - ró\nica symetryczna - XOR;
Przykłady
wyra\enie:
[D0, D1, D2, D3] & read;
jest równowa\ne wyra\eniu:
[DO & read, D1 & read, D2 & read, D3 & read];
wyra\enie:
[A0, Al, A2, A3] # [B0, B1, B2, B3];
jest równowa\ne wyra\eniu:
[AO # B0, A1 # B1, A2 # B2, A3 # B3];
Listowe operatory logiczne.
Przykład
Wyra\enie:
[D0, D1, D2, D3]:&; jest równowa\ne wyra\eniu ;D0 & D1 & D2 & D3;
Operator przyrównania
Operator przyrównania jest operatorem dwuargumentowym. Argumentami mogą być lista i stała
oraz lista i zakres stałych, wynikiem zaś pojedyncze wyra\enie boolowskie.
Lista mo\e być zapisana w sposób niejawny jako pole bitowe.
Przykłady
Wyra\enie:
[A3..0]:D; oznacza: A3 & A2 & !A1 & A0;
Wyra\enie:
[A3..0]:[C..F]; oznacza:[A3..0]:C # [A3..0]:D # [A3..0]:E # [A3..0]:F;
czyli:
A3 & A2 & ! A1 & ! A0
# A3 & A2 & ! A1 & A0
# A3 & A2 & A1 & ! A0
# A3 & A2 & A1 & A0;
Podstawy Techniki Cyfrowej i
Mikroprocesorowej 3
Zapis:
[A3..0]:'b'1X0X; jest równowa\ny zapisowi: A3 & !Al;
Listowy operator przypisania
Operator przypisania między listami identyfikatorów oraz poszczególnymi wartościami wejść i wyjść
jest stosowany przy specyfikacji układu za pomocą tablic prawdy.
Przykład
Konwerter z kodu binarnego na BCD:
TABLE [in3..0] => [out4..0]{
0=>00; 1=>01; 2=>02; 3=>03;
4=>04; 5=>05; 6=>06; 7=>07;
8=>08; 9=>09; A=>10; B=>11;
C=>12; D=>13; E=>14; F=>15;
}
Instrukcja APPEND
Instrukcja umo\liwia wielokrotne przypisywanie identyfikatorowi ró\nych wyra\eń,
następnie łączonych operatorem alternatywy.
Przykład
wyra\enia:
APPEND Y = AO & Al;
APPEND Y = BO & B1;
APPEND Y = CO & C1;
są równowa\ne wyra\eniu:
Y = AO & A1 # BO & B1 # CO & C1;
Deklaracje
Deklaracje wyprowadzeń z układów Deklaracje pól bitowych
Przykłady Przykiady
PIN 1 = clock; FIELD count=[Q3..0];
PIN 2 = !enable; FIELD mode =[clr,dir];
PIN [3..4] = ![stop,go];
PIN [5..7] = [a0..2];
Rozszerzenia
W celu wskazania na specyficzną funkcję pełnioną przez identyfikator mo\na do niego dodać
rozszerzenie, np. .D oznacza wejście przerzutnika typu D, a .OE wejście uaktywniające
trójstanowy bufor wyjściowy.
Q0.d
Q0.oe
Podstawy Techniki Cyfrowej i
Mikroprocesorowej 4
Opis automatów
Opis układu sekwencyjnego jest mo\liwy przez zastosowanie instrukcji o następującym formacie:
SEQUENCE lista zmiennych stanu{
PRESENT stan_n0 podinstrukcje
.
.
.
PRESENT stan_nn podinstrukcje
}
Podinstrukcje zapewniają mo\liwość opisu automatów synchronicznych i asynchronicznych.
Konstrukcja instrukcji warunkowej ma postać:
CONDITION{
IF wyr0 OUT id0;
.
.
.
IF wyrn OUT idn;
[DEFAULT OUT ;]
Słu\y ona tylko do opisu automatów asynchronicznych.
Format podinstrukcji instrukcji SEQUENCE jest następujący:
podinstrukcja zmiany stanu:
NEXT stan_Y;
podinstrukcja asynchronicznego wyprowadzenia sygnału:
OUT id1 ... OUT idn;
podinstrukcja warunkowej zmiany stanu:
IF wyrl NEXT stan_Y1;
.
.
IF wyrn NEXT stan_Yn;
[DEFAULT NEXT stan_Yn+1 ;]
Przykład
Licznik binarny modulo 5
Sequence Q2..0 {
present 0 next 1;
present 1 next 2;
present 2 next 3;
present 3 next 4;
present 4 next 5;
}
Podstawy Techniki Cyfrowej i
Mikroprocesorowej 5
Program WINCUPL
www.atmel.com
Przykładowe programy
Program realizujący funkcję:
f(x4, x3, x2, x1, x0) = Ł(0, 2, 4, 6, 8, 10, 12, 14, 25, 27, 29, 30, 31)
Name fun5 ;
PartNo 00 ;
Date 05-05-15 ;
Revision 01 ;
Designer S.Sambor ;
Company PWR ;
Assembly None ;
Location ;
Device g16v8 ;
/* *************** INPUT PINS *********************/
PIN [1..5] = [x0..4] ; /* */
/* *************** OUTPUT PINS *********************/
PIN 19 = fun ; /* */
PIN 18 = fun1 ; /* */
PIN 17 = fun2 ; /* */
/*f(x4, x3, x2, x1, x0)= S(0, 2, 4, 6, 8, 10, 12, 14, 25, 27, 29, 30, 31)*/
fun = !x4&!x3&!x2&!x1&!x0 # !x4&!x3&!x2&x1&!x0 # !x4&!x3&x2&!x1&!x0
# !x4&!x3&x2&x1&!x0 # !x4&x3&!x2&!x1&!x0 # !x4&x3&!x2&x1&!x0
# !x4&x3&x2&!x1&!x0 # !x4&x3&x2&x1&!x0 # x4&x3&!x2&!x1&x0
# x4&x3&!x2&x1&x0 # x4&x3&x2&!x1&x0 # x4&x3&x2&x1&!x0 # x4&x3&x2&x1&x0;
fun1 = [x4..0]:[0,2,4,6,8,A,C,E,19,1B,1D,1E,1F];
Podstawy Techniki Cyfrowej i
Mikroprocesorowej 6
TABLE x4..0 => fun2 {
'b'00000 => 'b'1;
'b'00001 => 'b'0;
'b'00010 => 'b'1;
'b'00011 => 'b'0;
'b'00100 => 'b'1;
'b'00101 => 'b'0;
'b'00110 => 'b'1;
'b'00111 => 'b'0;
'b'01000 => 'b'1;
'b'01001 => 'b'0;
'b'01010 => 'b'1;
'b'01011 => 'b'0;
'b'01100 => 'b'1;
'b'01101 => 'b'0;
'b'01110 => 'b'1;
'b'01111 => 'b'0;
'b'10000 => 'b'0;
'b'10001 => 'b'0;
'b'10010 => 'b'0;
'b'10011 => 'b'0;
'b'10100 => 'b'0;
'b'10101 => 'b'0;
'b'10110 => 'b'0;
'b'10111 => 'b'0;
'b'11000 => 'b'0;
'b'11001 => 'b'1;
'b'11010 => 'b'0;
'b'11011 => 'b'1;
'b'11100 => 'b'0;
'b'11101 => 'b'1;
'b'11110 => 'b'1;
'b'11111 => 'b'1;}
Wstawianie tabeli prawdy przy pomocy polecenia Insert Table
Podstawy Techniki Cyfrowej i
Mikroprocesorowej 7
*******************************************************************************
fun5
*******************************************************************************
CUPL(WM) 5.0a Serial# 60008009
Device g16v8s Library DLIB-h-40-9
Created Sat Jun 03 12:18:24 2006
Name fun5
Partno 00
Revision 01
Date 05-05-15
Designer S.Sambor
Company PWR
Assembly None
Location
===============================================================================
Expanded Product Terms
===============================================================================
fun =>
!x0 & !x4
# x0 & x3 & x4
# !x0 & x1 & x2 & x3
fun1 =>
!x0 & !x4
# x0 & x3 & x4
# !x0 & x1 & x2 & x3
fun2 =>
!x0 & !x4
# x0 & x3 & x4
# !x0 & x1 & x2 & x3
1
===============================================================================
Symbol Table
===============================================================================
Pin Variable Pterms Max Min
Pol Name Ext Pin Type Used Pterms Level
--- -------- --- --- ---- ------ ------ -----
fun 19 V 3 8 2
fun1 18 V 3 8 2
fun2 17 V 3 8 2
x0 1 V - - -
x1 2 V - - -
x2 3 V - - -
x3 4 V - - -
x4 5 V - - -
LEGEND D : default variable F : field G : group
I : intermediate variable N : node M : extended node
U : undefined V : variable X : extended variable
T : function
Podstawy Techniki Cyfrowej i
Mikroprocesorowej 8
1
===============================================================================
Fuse Plot
===============================================================================
Syn 02192 - Ac0 02193 x
Pin #19 02048 Pol - 02120 Ac1 x
00000 ---x---------x------------------
00032 --x-----x---x-------------------
00064 x--xx---x-----------------------
00096 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00128 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00160 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00192 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00224 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Pin #18 02049 Pol - 02121 Ac1 x
00256 ---x---------x------------------
00288 --x-----x---x-------------------
00320 x--xx---x-----------------------
00352 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00384 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00416 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00448 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00480 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Pin #17 02050 Pol - 02122 Ac1 x
00512 ---x---------x------------------
00544 --x-----x---x-------------------
00576 x--xx---x-----------------------
00608 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00640 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00672 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00704 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00736 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Pin #16 02051 Pol x 02123 Ac1 -
00768 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00800 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00832 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00864 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00896 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00928 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00960 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00992 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Pin #15 02052 Pol x 02124 Ac1 -
01024 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01056 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01088 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01120 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01152 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01184 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01216 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01248 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Pin #14 02053 Pol x 02125 Ac1 -
01280 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01312 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01344 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01376 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01408 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01440 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01472 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01504 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Pin #13 02054 Pol x 02126 Ac1 -
01536 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01568 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01600 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01632 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01664 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01696 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01728 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01760 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Podstawy Techniki Cyfrowej i
Mikroprocesorowej 9
Pin #12 02055 Pol x 02127 Ac1 -
01792 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01824 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01856 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01888 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01920 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01952 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01984 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
02016 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
LEGEND X : fuse not blown
- : fuse blown
1
===============================================================================
Chip Diagram
===============================================================================
______________
| fun5 |
x0 x---|1 20|---x Vcc
x1 x---|2 19|---x fun
x2 x---|3 18|---x fun1
x3 x---|4 17|---x fun2
x4 x---|5 16|---x
x---|6 15|---x
x---|7 14|---x
x---|8 13|---x
x---|9 12|---x
GND x---|10 11|---x
|______________|
Wynik symulacji
Podstawy Techniki Cyfrowej i
Mikroprocesorowej 10
Projekt dekodera z trzech linii na 8, wyjścia aktywne sygnałem wysokim.
Name dekoder3na8 ;
PartNo 00 ;
Date 05-05-15 ;
Revision 01 ;
Designer S.Sambor ;
Company PWR ;
Assembly None ;
Location ;
Device g16v8 ;
/* *************** INPUT PINS *********************/
PIN [1..3] = [i0..2] ; /* kod wejsciowy */
/* *************** OUTPUT PINS *********************/
PIN [12..19] = [o0..7] ; /* kod wyjsciowy */
TABLE [i2..0] => [o7..0] {
'b'000 => 'b'00000001;
'b'001 => 'b'00000010;
'b'010 => 'b'00000100;
'b'011 => 'b'00001000;
'b'100 => 'b'00010000;
'b'101 => 'b'00100000;
'b'110 => 'b'01000000;
'b'111 => 'b'10000000;}
Projekt dekodera z trzech linii na 8, wyjścia aktywne sygnałem niskim.
Name dekoder3na8 ;
PartNo 00 ;
Date 05-05-15 ;
Revision 01 ;
Designer S.Sambor ;
Company PWR ;
Assembly None ;
Location ;
Device g16v8 ;
/* *************** INPUT PINS *********************/
PIN [1..3] = [i0..2] ; /* kod wejsciowy */
/* *************** OUTPUT PINS *********************/
PIN [12..19] = ![o0..7] ; /* kod wyjsciowy*/
TABLE [i2..0] => [o7..0] {
'b'000 => 'b'00000001;
'b'001 => 'b'00000010;
'b'010 => 'b'00000100;
'b'011 => 'b'00001000;
'b'100 => 'b'00010000;
'b'101 => 'b'00100000;
'b'110 => 'b'01000000;
'b'111 => 'b'10000000;}
Podstawy Techniki Cyfrowej i
Mikroprocesorowej 11
Dekoder adresów do systemu mikroprocesorowego 8051. Dodatkowo umo\liwienie odczytu 2 sygnałów
poprzez magistralę danych, oraz generowanie sygnału pobudzania watchdog a
Name fdd ;
PartNo 00 ;
Date 05-05-14 ;
Revision 01 ;
Designer S.Sambor ;
Company PWR ;
Assembly None ;
Location ;
Device g16v8 ;
/******************************************************************/
/* Dekoder adresu, bufor wejsciowy i sterowanie wdog */
/* Ver. 1.0 */
/******************************************************************/
/** Inputs **/
Pin 1 = !CLK ; /* Sygnal zegarowy */
Pin [2,3,4,5] = [A12..A15] ; /* Linie adresowe */
Pin 8 = READY ; /* Sygnal gotow FDD */
Pin 9 = PWRDOWN ; /* Informacja o zaniku nap. */
/** Outputs **/
Pin 12 = !CSRAM ; /* Wybor Ramu */
Pin 13 = !LDCR ; /* Wybor LDCR */
Pin 14 = !LDOR ; /* Wybor LDOR */
Pin 15 = !CSWD ; /* Wybor WD */
Pin 16 = WDI ; /* Pobudzanie wdoga */
Pin [17,18] = D0,D1 ; /* Linie danych */
Pin 19 = !CLKOUT ; /* Wyjscie zegara */
/** Declarations and Intermediate Variable Definitions **/
Podstawy Techniki Cyfrowej i
Mikroprocesorowej 12
/** Logic Equations **/
field adr = [A15..A12];
====================================================================
CSRAM = adr:[0..7FFF];
Expanded Product Terms
LDCR = adr:[8000..8FFF];
====================================================================
LDOR = adr:[9000..9FFF];
CSWD = adr:[A000..AFFF];
CLKOUT =>!A12 & !A13 & A14 & A15
READY_PWRDOWN = adr:[B000..BFFF];
CLKOUT = adr:[C000..CFFF];
CSRAM =>!A15
D0 = READY;
CSWD =>!A12 & A13 & !A14 & A15
D1 = PWRDOWN;
D0 => READY
D0.oe = READY_PWRDOWN;
D1.oe = READY_PWRDOWN;
D0.oe =>A12 & A13 & !A14 & A15
D1 =>PWRDOWN
WDI.d = !WDI;
D1.oe =>A12 & A13 & !A14 & A15
LDCR =>!A12 & !A13 & !A14 & A15
LDOR =>A12 & !A13 & !A14 & A15
READY_PWRDOWN =>A12 & A13 & !A14 & A15
WDI.d =>!WDI
adr =>A15 , A14 , A13 , A12
CLKOUT.oe =>1
CSRAM.oe =>1
CSWD.oe =>1
LDCR.oe =>1
LDOR.oe =>1
========================
P !
W ! C
RR C!!! L
!DE SLLC K
COA RDDS WO
LWD ACOWDDDU
KNYadr MRRD01IT
========================
0001: K010000LHHHZZLH
0002: K010001LHHHZZHH
0003: K010010LHHHZZLH
0004: K010011LHHHZZHH
0005: K010100LHHHZZLH
0006: K010101LHHHZZHH
0007: K010110LHHHZZLH
0008: K010111LHHHZZHH
0009: K011000HLHHZZLH
0010: K011001HHLHZZHH
0011: K011010HHHLZZLH
0012: K011011HHHHHLHH
0013: K011100HHHHZZLL
0014: K011101HHHHZZHH
0015: K011110HHHHZZLH
0016: K011111HHHHZZHH
0017: K001011HHHHLLLH
0018: K011011HHHHHLHH
0019: K101011HHHHLHLH
0020: K111011HHHHHHHH
0021: K110000LHHHZZLH
Podstawy Techniki Cyfrowej i
Mikroprocesorowej 13
Licznik binarny dekadowy z zerowaniem i ustawianiem.
Name Count10;
Partno CA0018;
Date 12/19/99;
Revision 02;
Designer S.Sambor;
Company PWR;
Assembly None;
Location None;
Device g16v8a;
/** Inputs **/
Pin 1 = clk; /* sygnal zegarowy */
Pin 2 = s0; /* wejscie sterujace */
Pin 3 = s1; /* wejscie sterujace */
Pin [4..7] = [i0..3]; /* wejscie rownolegle */
Pin 11 = !oe; /* OE */
/** Outputs **/
Pin [14..17] = [Q3..0]; /* wyjscie licznika */
Pin 18 = carry; /* przeniesienie */
/** Declarations and Intermediate Variable Definitions **/
field count = [Q3..0]; /* deklaracja pola licznika */
$define S0 'b'0000 /* deklaracja stanow */
$define S1 'b'0001
$define S2 'b'0010
$define S3 'b'0011
$define S4 'b'0100
$define S5 'b'0101
$define S6 'b'0110
$define S7 'b'0111
$define S8 'b'1000
$define S9 'b'1001
field mode = [s1,s0];
up = mode:0; /* up = !s1 & !s0 */
down = mode:2; /* down = s1 & !s0 */
clear = mode:1; /* clear = !s1 & s0 */
set = mode:3; /* set = s1 & s0 */
/** Logic Equations **/
append count.d = [i3..0] & set;
Sequenced count { /* free running counter */
present S0 if up next S1;
Q0.d =>
if down next S9;
!Q0 & !Q3 & !s0
if clear next S0;
# i0 & s0 & s1
if down out carry;
# !Q0 & !Q1 & !Q2 & !s0
present S1 if up next S2;
if down next S0;
Q1.d =>
if clear next S0;
i1 & s0 & s1
present S2 if up next S3;
# Q0 & Q1 & !Q3 & !s0 & s1
if down next S1;
# !Q0 & Q1 & !Q3 & !s0 & !s1
if clear next S0;
# Q0 & !Q1 & !Q3 & !s0 & !s1
present S3 if up next S4;
# !Q0 & !Q1 & !Q2 & Q3 & !s0 & s1
if down next S2;
# !Q0 & !Q1 & Q2 & !Q3 & !s0 & s1
if clear next S0;
present S4 if up next S5;
Q2.d =>
if down next S3;
i2 & s0 & s1
if clear next S0;
# !Q0 & Q1 & Q2 & !Q3 & !s0
present S5 if up next S6;
# Q0 & Q2 & !Q3 & !s0 & s1
if down next S4;
# !Q1 & Q2 & !Q3 & !s0 & !s1
if clear next S0;
# !Q0 & !Q1 & !Q2 & Q3 & !s0 & s1
present S6 if up next S7;
# Q0 & Q1 & !Q2 & !Q3 & !s0 & !s1
if down next S5;
if clear next S0;
Q3.d =>
present S7 if up next S8;
i3 & s0 & s1
if down next S6;
# Q0 & !Q1 & !Q2 & Q3 & !s0 & s1
if clear next S0;
# !Q0 & !Q1 & !Q2 & !Q3 & !s0 & s1
present S8 if up next S9;
# !Q0 & !Q1 & !Q2 & Q3 & !s0 & !s1
if down next S7;
if clear next S0;
# Q0 & Q1 & Q2 & !Q3 & !s0 & !s1
present S9 if up next S0;
if down next S8;
if clear next S0;
if up out carry; /* assert carry output */
}
Podstawy Techniki Cyfrowej i
Mikroprocesorowej 14
Podstawy Techniki Cyfrowej i
Mikroprocesorowej 15
Wyszukiwarka
Podobne podstrony:
TECHNIKA CYFROWA 2 wyklad4TECHNIKA CYFROWA 2 WYKLAD2TECHNIKA CYFROWA1 WYKLAD10TECHNIKA CYFROWA 2 wyklad6TECHNIKA CYFROWA 2 WYKLAD1Technika cyfrowaBM w TM Stobiecka Technika drabinkowa wykład turystyka(1)technika cyfrowa ukl synchr i asynchrwięcej podobnych podstron