Hallo, ich muss in ABEL folgenden Baustein programmieren: CPLD vom Typ Match M4A5-128/64 ein Modul für die Realisierung einer ALU. Ich verwende das Programm: "Lattice ispLEVER". Ich muss folgende Operatoren programmieren: not, and, or, add, addc, rl, rr, rrc, rlc und cmp. Die Eingangsoperatoren sind A und B --> jeweils 4 Bit. Es gibt dann noch einen Eingang Carry-in. Ausgang: O(logischerweise wieder 4bit) und halt noch Carry-out. Als Status soll Zero geliefert werden, wenn das ALU-Ergebnis Null ist. Meint man damit einfach einen eigenen Pin machen und wenn O=0 ist, dann soll ich das senden? Oder wie ist das gemeint? Was hat mit diesem Carry in und out aufsich? Welche zweck hat das? Man schickt einfach das Carry rein und wenn es sich im Baustein geänderet hat dann kommst verändert raus und sonst nicht? Nicht mehr und nicht weniger ist das? Das habe ich bis jetzt gemacht: http://pastebin.com/7skv96rT Ich denke die Test-Vectoren bei NOT sind richtig, aber bei OR und AND bin ich mir nicht sicher. Denn da habe ich ja nicht alle möglichkeiten von 4Bit-UND-Verknüpfung durchprobiert oder? Ich mache ja nur: 0001 & 0001 und dann 0010 & 0010 etc. Aber es kann ja 0001 & 0010 auch vorkommen. Kann mir einer nen Tipp geben wie ich das machen könnte? Ansonsten ist alles richtig, was ich bisher gemacht habe? Danke im voraus! mfg
>ich muss in ABEL Wo muss man heute noch ABEL benutzen? Meines Wissens ist das doch inzwischen ganz ungebräuchlich. patrick schrieb: > Als Status soll Zero geliefert werden, wenn das ALU-Ergebnis Null ist. > Meint man damit einfach einen eigenen Pin machen und wenn O=0 ist, dann > soll ich das senden? Wenn das Ergebnis 0 ist, soll Zero '1' sein, sonst '0'. Das ist mit ganz einfacher Logik zu schaffen. patrick schrieb: > Was hat mit diesem Carry in und out aufsich? Welche zweck hat das? Man > schickt einfach das Carry rein und wenn es sich im Baustein geänderet > hat dann kommst verändert raus und sonst nicht? Nicht mehr und nicht > weniger ist das? Was? Carry In und Carry Out haben nichts direkt miteinander zu tun. Natürlich hängt das Carry Out auch vom Carry In ab, aber nicht so, dass Carry Out nur eine Funktion von Carry In ist. Informiere dich mal, wie eine Addition funktioniert, am Besten in Digitaltechnik. Dann wirst du verstehen, was das Carry macht. Im Programm sind die Carries falsch. Wenn ich mich nicht total vertue, muss das Carry Out bei allen logischen Operationen '0' sein. Das Carry bei der Addition ist auf jeden Fall falsch. Versuch die Fehler nacheinander zu beheben, dann kommen wir langsam auf die Lösung.
Dussel schrieb: > Wo muss man heute noch ABEL benutzen? In der Schule^^, als Übungsaufgabe. Zum Carry: Naja ich weiß schon, das ein Carry z.b. bei einer 8Bit Addition entstehen kann, also das 9te Bit ist dann das Carry, in dem Fall ist es bei mir das 5te Bit, weil ich ja 4Bit Additionen habe. Bei ADD muss ich das Carry nicht berücksichtigen und bei ADDC schon. Ja aber was bedeutet dieses Carry in und out jetzt genau?
Das Carry Out ist ein 1-Bit Signal/Pin/Ausgang, das gesetzt ist, wenn bei der 4-Bit Addition ein Überlauf auftritt, also wenn das Ergebnis eigentlich fünfstellig ist. Das Carry In ist entsprechend ein 1-Bit Signal/Pin/Eingang, an den man das Carry der vorherigen Berechnung anlegen kann. Praktisch ist es dann so, dass bei ADDC, also Addition mit Carry das Carry zum Ergebnis addiert wird. ADD ist o=a+b und ADDC ist o=a+b+c. Dabei ist c eben keine vollwertige n-Bit-Zahl, sondern nur ein einzelnes Bit, also kann es auch nur den Wert 1 oder 0 haben.
Mh ich verstehe es noch nicht ganz. Für was brauche ich es dann bei AND und OR, also logische Operationen? Ja ok da ist es halt einfach 0, aber warum? Soll ich dann einfach cout=0 machen? Oder wie kann ich mir da das vorstellen? cin ist dann was bei den log. Operationen?
patrick schrieb: > Ja ok da ist es halt einfach 0, aber warum? Soll ich dann einfach cout=0 > machen? Genau. Bei logischen Operationen wird das Carry nicht benötigt. Deshalb wird das Carry In einfach ignoriert und das Carry Out kann beliebig sein. Auf '0' setzen ist wohl am Besten. Wenn die ALU nur logische Operationen ausführen müsste, könntest du Carry In und Carry Out ganz weglassen, also auch aus der Definition der Ein- und Ausgänge. Da das Carry aber für die Addition (und eventuell auch für Vergleiche) benötigt wird, muss es in der Definition vorhanden sein, wird aber dann bei logischen Operationen nicht benutzt. patrick schrieb: > cin ist dann was bei den log. > Operationen? Ein unbenutzter Eingang. Das ist ähnlich, wie bei dem NOT. Da wird auch nur der Eingang A benutzt und Eingang B ignoriert. Und genauso wird bei allen logischen Operationen das Carry ignoriert, weil es da keine Bedeutung hat.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.