Hardware Aufgabe

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Hardware Aufgabe
Es soll ein Inkrementierer in Hardware aufgebaut werden.Als Eingabe werden 4 Leitungen angenommen.Als Ausgabe sollen 4 Leitungen für die Signalisierung des normalen Ergebnisses dienen.Zusätzlich ist ein Übertrag über eine fünfte Leitung zu signalisieren.
Für die Implementierung des Schaltnetzes dürfen AND,OR,XOR sowie NOT Gatter verwendet werden.

So hab nur eine Ahnung wie ich eine eins als Ausgabe bekomme und diese hinten an das Ende der Zahl theoretisch ANDen könnte…würde alle 4 eingaben jeweils verordern die ergebnisse wieder verordern dann das ergebniss mit einem not auch verodern dann hätte ich egal was vorher in der Eingabe stand endlich meine eins zum inkrementieren(vielleicht gehts auch einfacher)aber wie mache ich das nun mit der addition habe ja keinen volladierer…hab da null plan


mein ansatz wäre: kvs-diagramm für jede ausgabe aufstellen → minimieren → synthetisieren.
falls mein intuitiver ansatz (stoyansche-so-hiar-programmiereung) nicht klappen soolte


man nehme vier halbaddierer - dem ganz rechts verpasst man eine 1 am unbenutzen eingang. Das cary wird jeweils eine stelle weiter links an den eingang angeschlossen. Das carry des ha links wird eine neue zustätzliche stelle.

http://de.wikipedia.org/wiki/Halbaddierer


darf ich dort einfach eine eins reinschieben oder muss ich diese wie ich oben beschrieben habe erst errechnen?


naja, wenn du da statt einer 1 eine null reinbaust an dem unbenutzen eingang des rechten ha, dann rechnest du halt zahl + 0 was im grunde wieder die gleiche zahl ergibt. Is halt dann nicht wirklich eine Inkrementierung :wink:


hab das mal gemalt sieht zwar übel aus aber ichhoffe man erkennt was…kann mit paint nicht malen :wink:

Attachment:
inkrementieren.bmp: https://fsi.cs.fau.de/unb-attachments/post_22451/inkrementieren.bmp


ja, so in etwa sollte das aussehen. Btw tust du dich leichter da Kästchen mit Namen Halbaddierer mit zwei Ein- und Ausgängen in die Grafik hinzumalen und drunter einen Halbaddierer, damit der korrektor merkt dass du weißt was ein ha is. Dann liest sich das schöner (in meiner klausur damals so gemacht und volle punktzahl auf die Aufgabe bekommen)


ach so ja klingt logisch dachte das wäre nicht erlaubt…dann mache ich das mal auch so wenn das montag dran kommt :wink:


hätte da allerdings noch so eine Aufgabe bei der ich Probleme habe…
Es soll ein Vergleicher gebaut werden .Zu vergleichen sind zwei vorzeichenlose je 3 Bit breite Operanden(A und B).Es sind zwei Signale auszugeben.
-ob die beiden Operanden gleich groß sind (Equal)
-ob A größer ist als B

Für die Implementierung des Schaltnetzes dürfen AND-,OR-,XOR sowie NOT Gatter verwendet werden…

Nun ja…ich würde sagen ich muss irgendwie bei beiden es schaffen ein cmp zu bauen oder?nur da hab ich keinen Plan wie ich das umsetzen soll…


hatte gerade ne idee für mein equal vielleicht kann mir ja wer sagen ob das richtig ist…gibt ne eins aus wenn es equal ist sonst 0

Attachment:
equal.bmp: https://fsi.cs.fau.de/unb-attachments/post_22455/equal.bmp


Ich denke das müsste so funktionieren, aber kein Gewähr…
Für das größer muss man denk ich vom höchsten zum niedrigsten Bit durchgehen und vergleichen, sobald 2 unterschiedlich sind ist das Ergebnis entschieden… für mehrere Bits musst du das Ganze dann immer im Bit eins drunter in die Berechnung mit einbeziehen, so dass das Gesamtergebnis richtig bleibt - dann alle Ergebnisse zusammen in ein and oder or (je nachdem) und fertig (denk ich - hab das damals auch gebaut, weiß aber nicht mehr wie das genau aussah)
Hoffe das gibt dir den richtigen Hinweis und dass ich nix falsches getextet hab’…


hä verstehe ich nicht…kannst du mir das anhand des Beispieles:
A=001 und B=011 Ergebnis müsste ja 0 sein da A kleiner

erklären?


Hab da jetzt mal was gemalt ist zwar unglaublich hässlich aber ich hoffe das stimmt so jetzt :-/

Attachment:
alles.bmp: https://fsi.cs.fau.de/unb-attachments/post_22458/alles.bmp


Btw:
Beim cmp-Befehl werden die beiden operanden voneinander abgezogen und danach das signed, zero und overflow flag betrachtet.
Könntest also einen Vergleicher auch als Subtraktion machen.


ist meine Zeichnung dann richtig?oder habe ich da nen denkfehler?


man müsste das erste argument invertieren und auf das zweite draufaddieren (subtraktion). Tritt bei dieser Addition ein Carry am Ende auf, so weiß man, dass das erste Argument kleiner als das zweite war. Besteht das Ergebniss nur aus einsen, dann sind die zahlen identisch. Oder hab ich da gerade einen Denkfehler drin?


hmm klingt gut habs mal gemalt hoffe du meintest es auch so bei mir wirds am schluss negiert da ich ja ne eins haben möchte falls es größer ist und ne null wenn kleiner

Attachment:
nochmal.bmp: https://fsi.cs.fau.de/unb-attachments/post_22465/nochmal.bmp