HWP2 - Aufgabe 4.3 (CPU testen)

Diskussionen rund um Themen und Veranstaltungen des 4. Bachelor-Semesters

Moderator: (M) Mod.-Team Allgemein

Antworten
Benutzeravatar
Otto
TalkING. Freak
TalkING. Freak
Beiträge: 110
Registriert: Fr, 12. Sep. 03, 19:15

HWP2 - Aufgabe 4.3 (CPU testen)

Beitrag von Otto » So, 04. Jul. 04, 17:37

Hallo,

Sitze gerade an der Aufgabe 4.3 (Hardwarepraktikum 2), wo wir den zusammengesetzten CPU testen sollen...

[http://www.tu-harburg.de/ti6/lehre/HWPr ... /afg4.html]

0. Darf ich annehmen, dass der Clock-Eingang des C-FlipFlops nicht ckc wie auf dem Bild, sondern ebenfalls ckl heißen soll, sprich es ein Tippfehler ist?

1. was ist mit dem RW-Ausgangssignal des Prozessors? Soll er auf invertierten CKL geschaltet werden?

2. Wie kann ich dem Prozessor einen RAM mit einem einfachen Programm "vortäuschen"?

Mein Ansatz:
PROCESS(ADR)
BEGIN
case ADR is
when "..." => D_READ <= "...";
when "..." => D_READ <= "...";
when "..." => D_READ <= "...";
end case;
END PROCESS;

Geht das?

3. In Aufgabe 4.4 sollen wir den RAM mit [http://www.tu-harburg.de/ti6/lehre/HWPr ... erung.html] initialisieren. Wie sollen wir das genau machen, wie sollen diese Daten in das Projekt eingebunden werden?


Otto

Benutzeravatar
NightStalker
TalkING. Champion
TalkING. Champion
Beiträge: 891
Registriert: Mo, 21. Okt. 02, 20:40
Wohnort: Downloadbereich

Beitrag von NightStalker » Do, 08. Jul. 04, 18:24

Meinst du, dass außer dir überhaupt schon jemand bis dahin gekommen ist ?
-- Chrz&#261;szcz brzmi w trzcinie w Szczebrzeszynie.
-- &#22909;&#22909;&#23398;&#20064;&#65292;&#22825;&#22825;&#21521;&#19978;&#65281;

Room101
TalkING. Superposter
TalkING. Superposter
Beiträge: 554
Registriert: Fr, 12. Sep. 03, 12:47

Beitrag von Room101 » Do, 08. Jul. 04, 18:42

Hingekommen ja, aber der Prozessor prozesst noch nicht so ganz...

@Otto: Du hast da zu viel nicht verstanden, um as jetzt schnell zu erklären.

z.B. wird das (Test-)Programm per String-Initialisierung direkt ins RAM geschrieben, case ... when ist da völlig überflüssig.
RW ist das Schreib-/Lesesignal für das RAM und wird in Abhängigkeit vom anliegenden Befehl erzeugt.

Benutzeravatar
Otto
TalkING. Freak
TalkING. Freak
Beiträge: 110
Registriert: Fr, 12. Sep. 03, 19:15

Beitrag von Otto » So, 11. Jul. 04, 07:37

Hallo Room101,

>> Du hast da zu viel nicht verstanden, um as jetzt schnell zu erklären.

Da muss ich Dir Recht geben :oops:, aber inzwischen bin ich sehr viel weitergekommen. Mein Prozessor scheint jetzt in der Simulation zu funktionieren: er führt sämtliche Befehle aus, und kommt am Ende in eine Endlosschleife...

Was ich aber entdecke, ist dass der zweite Operand in Hex:0022 bereits beim Anfang nicht wie im offiziellen Quellcode 32 ist, sondern 2048 (Hex:0800). Der zweite Operand stimmt überein und ist eine 8.

Auch das Ergebnis in Hex:0023 und Hex:0024 ist nicht der richtige! Wo liegt der Fehler? Könnte es sein, dass die RAM-Initialisierung unter http://www.tu-harburg.de/ti6/lehre/HWPr ... erung.html fehlerhaft ist?!

Otto

Gast

Beitrag von Gast » So, 11. Jul. 04, 11:29

In der Aufgabenstellung steht unter Punkt 4:
Dies ist der Programmcode eines 16 Bit Multiplizierers. Die beiden Operanden a, b liegen auf den Adressen $0200 und $0202, wobei die Bits von b gespiegelt abgelegt sind.[...]

Hinweis: Der Faktor b muss bitvertauscht sein.
Somit erklährt sich warum b nicht 2048 ist. Aber 32 ist es dann, so wie ich das sehen, immer noch nicht, sondern 16.
Ansonsten sieht die RAM-Initialisierung richtig aus. Und ob du nun 16 * 16 oder 16 * 32 rechnest ist doch eigentlich egal.

Benutzeravatar
Otto
TalkING. Freak
TalkING. Freak
Beiträge: 110
Registriert: Fr, 12. Sep. 03, 19:15

Beitrag von Otto » So, 11. Jul. 04, 15:28

Wie kann ModelSim dazu bringen, mir alle Signale von Anfang an in Hex anzeigen zu lassen?!

Room101
TalkING. Superposter
TalkING. Superposter
Beiträge: 554
Registriert: Fr, 12. Sep. 03, 12:47

Beitrag von Room101 » So, 11. Jul. 04, 17:28

Man kann sich .do-Files erstellen, in denen die Signale stehen, die in der Wave-Ansicht zu sehen sein sollen, das vereinfacht das Testen ganz erheblich. Das ganze geht über "Save Format" oder so im Wave-Fenster.

Benutzeravatar
Otto
TalkING. Freak
TalkING. Freak
Beiträge: 110
Registriert: Fr, 12. Sep. 03, 19:15

Beitrag von Otto » Di, 13. Jul. 04, 23:30

Die do-Files sind schon eine coole sache. Schade nur, dass man für das gesamte Xilinx-Projekt die gleiche Simulationseinstellungen verwenden muss...

Jedenfalls läuft mein Prozessor endlich :)
Das Ende des Assemblerprogramms soll allerdings noch korrigiert werden.

Habe noch versucht, größere Zahlen zu multiplizieren, sodass auch c_high einen Wert > 0 bekommt, aber da funktioniert das ganze nicht mehr. Ist da noch ein Fehler drin?!

Otto

Antworten