restructure and add ipi texs
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
Analyzer::Analyzer (int m)
|
||||
{
|
||||
n = m; // Merke Groesse, Eingang n
|
||||
a = new Wire*[n]; // n Zeiger auf Wires
|
||||
for (int i=0; i<n; i=i+1) a[i] = 0; // nix angeschlossen
|
||||
b = c = 0; // nix angeschlossen
|
||||
w.ConnectInput(*this,0); // Ich -> Draht
|
||||
w.ConnectOutput(*this,n); // Draht->Ich
|
||||
actionFlag=true; // nix aktiviert
|
||||
Sim.StoreCircuitEvent(*this); // Starte Auswertung
|
||||
}
|
||||
|
||||
Analyzer::~Analyzer()
|
||||
{
|
||||
delete[] a;
|
||||
}
|
||||
|
||||
void Analyzer::ChangeInput (State s, int pin)
|
||||
{
|
||||
// Sorge dafuer, dass Gatter neu berechnet wird, wenn
|
||||
// alle Zustaende der Eingaenge (Draehte) festliegen
|
||||
if (!actionFlag)
|
||||
{
|
||||
Sim.StoreCircuitEvent(*this);
|
||||
actionFlag=true;
|
||||
}
|
||||
}
|
||||
|
||||
void Analyzer::Action ()
|
||||
{
|
||||
// Lese Eingangssignale
|
||||
std::cout.width(10);
|
||||
std::cout << Sim.GetTime();
|
||||
for (int i=n-1; i>=0; i=i-1)
|
||||
if (a[i]!=0)
|
||||
{
|
||||
if (a[i]->GetState()==low) std::cout << " 0";
|
||||
if (a[i]->GetState()==high) std::cout << " 1";
|
||||
if (a[i]->GetState()==unknown) std::cout << " U";
|
||||
}
|
||||
else std::cout << " ";
|
||||
std::cout << std::endl;
|
||||
|
||||
// Selbstaktivierung im naechsten Zeitschritt
|
||||
if (c->GetState()==unknown) c->ChangeState(Sim.GetTime()+1,high);
|
||||
if (c->GetState()==low) c->ChangeState(Sim.GetTime()+1,high);
|
||||
if (c->GetState()==high) c->ChangeState(Sim.GetTime()+1,low);
|
||||
|
||||
// erlaube neue Auswertung
|
||||
actionFlag=false;
|
||||
}
|
||||
|
||||
void Analyzer::ConnectInput (Wire& w, int pin)
|
||||
{
|
||||
// Wird von Connect-Funktion des Drahtes aufgerufen
|
||||
if (pin>=0 && pin<n) a[pin] = &w;
|
||||
if (pin==n) b = &w;
|
||||
}
|
||||
|
||||
void Analyzer::ConnectOutput (Wire& w, int pin)
|
||||
{
|
||||
// Wird von Connect-Funktion des Drahtes aufgerufen
|
||||
c = &w;
|
||||
}
|
||||
Reference in New Issue
Block a user