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();
|