Universitatea Politehnica București
Facultatea de Automatică si Calculatoare
Analiza si sinteza dispozitivelor numerice
PROIECT
Realizat de:
Grupa 321C
Indrumător: as. ing.
Dispozitovele numerice se împart in două mari familii:
-dispozitive numerice combinaționale;
-dispozitive numerice secvențiale;
Un dispozitiv numeric 121s1816b este caracterizat prin variabilele de intrare si variabilele de ieșire. Variabilele de ieșire depind in mod explicit de variabilele de intrare.
Structura generală a unui circuit numeric combinațional
X1,.,Xn- intrări; Z1,.Zp- ieșiri;
Xi(nT)=Xi(n);
Zi(n)=f(X1(n),.,Xm(n))
De fapt Z(n+d)'f(X(n)) unde d este întârzierea.
Structura generală a unui circuit numeric secvențial:
Zi(n)=f(X1(n),.,Xm(n),Z1(n-1),.,Zp(n-1))
Z=f(X(n),Z(n-1))
Automat secvențial
e1,e2,. -variabile de excitație;
y1,y2,. -variabile de stare;
Elemente de teoria algebrică structurală a automatelor secvențiale
Realizarea unui automat secvențial impune o discuție teoretică asupra tuturor situațiilor de funcționare. Pentru a ușura această discuție se folosesc elemente specifice teoriei algebrice structurale.
Astfel, pentru un automat secvențial cu n intrări și p ieșiri regimul de funcționare este codificat printr-o diagramă de stări. Fiecărei stări îi corespund două stări următoare în funcție de intrarea de la momentul n.
Xn
Sn | ||
S0 |
S3,1 |
S2,1 |
S1 |
S2,1 |
S1,0 |
S2 |
S1,0 |
S2,0 |
S3 |
S0,0 |
S1,0 |
Partiții consistente
Folosirea partițiilor are ca scop obtinerea unei codificări a stărilor astfel încât cât mai puține variabile de stare la momentul n+1 să depindă de cât mai puține variabile de intrare de la momentul n.
O partiție este formată din blocuri disjuncte și conține toate stările.
Partiții consistente pe intrare
Prin definiție, o partiție este consistentă pe intrare dacă pentru fiecare stare curentă stările urmatoare fac parte din același bloc al partiției.
Partiții consistente pe ieșire
Prin definitie o partiție este consistentă pe ieșire dacă pentru orice bloc al tuturor stărilor le corespund aceeași valoare de ieșire pentru fiecare variabilă de intrare.
Xn
Sn | ||
S0 |
S2,0 |
S3,0 |
S1 |
S3,0 |
S3,0 |
S2 |
S0,1 |
S1,0 |
S3 |
S4,0 |
S2,0 |
S4 |
S1,1 |
S0,0 |
_____ ___
rI
Program de calcul al partițiilor consistente pe iesire.
Realizat de DOBRE LAURENTIU grupa 321C
14:05:1997
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#define N 50
int n;
// Procedura de citire a datelor dintr-un fisier tip
void citire(int s[N][4], char *fis)
m=fscanf(fp,"%d",&n);
if(m>0)
for(i=0;i<n;i++)
fclose(fp);
void main(void)
//Calculul partițiilor:
//-se ia fiecare stare si se memoreaza S in functie de iesirile
// stărilor urmatoare (00,01,10,11).
lim=0;
k=0;
//Vectorul dim memoreaza dimensiunea fiecarui bloc din partiție.
//Initial dimensiunile sint 0.
for(i=0;i<4;i++) dim[i]=0;
//Pentru a identifica blocurile am initializat matricea cu -1.
for(i=0;i<n;i++)
for(j=0;j<4;j++) c[i][j]=-1;
//Pentru fiecare stare se citeste pozitia ei prin valorile de iesire
// ale stărilor incare poate trece.
for(i=0;i<n;i++)
//Variabila lim memoreaza dimensiunea blocului maxim.
//Matricea c contine pe fiecare coloana un bloc.
//Citirea partițiilor consistente
clrscr();
printf("\n Tabela de tranzitii:");
printf("\n\n Sn Xn\n");
printf(" ----- ----- ----------\n");
for(i=0;i<n;i++)
printf(" S%d S%d ,%d S%d ,%d \n",i,s[i][0],s[i][1],s[i][2],s[i][3]);
gotoxy(30,23);
printf(" Apasati o tasta!");
getch();
clrscr();
printf("\n\n\n Partiția consistenta maximala pe iesire: \n\n");
i=0;u=0;
//In matricea c daca capul de coloana este pozitiv se citesc stările.
//Stările de pe aceasi coloana formeaza un bloc.
for(j=0;j<4;j++)
if(c[0][j]>=0)
if((c[i][j]<0)||(i==lim-1))
}
printf("\n\n Partiția contine %d blocuri.",u);
fclose(fi);
gotoxy(10,23);
printf("\t Doriti sa reluati programul (d sau n): ");
cc=getche();
if((cc=='d')||(cc=='D')) goto et;
clrscr();
|