Hallo Kollegen, ich habe jetzt die Skripts für die Pipeline-Simulation (Verhaltenssimulation) erweitert. Martin hat den "asmbin" so erweitert, dass er auch nur das "Codesegment" ausgeben kann (Parameter -c), wodurch das HEX-File direkt in das Instruction-ROM geladen werden kann. Das im DO-File angegebene Assembler-File wird assembliert und in das Working-Directory kopiert und dann in das ROM geladen. Außerdem wird ein File (pisp_ser.dat) das als Input für den UART (in der Simulation) dient in das Working-Directory kopiert (ser_in.dat) und jedes mal, wenn man per "ldc r0,h100001 ldb r9,r0" ein Zeichen vom UART liest, wird es aus diesem File gelesen. In der Simulation ersetzt die Entity "uart_sim" den "uart" im normalen Design. Schreibt man mit "stb r0,r2" auf den UART wird das Byte als Zeichen in "Transcript"-Window von ModelSim ausgegeben. Für das SRAM gibt es eine Entity, welche die externen SRAM Module simuliert (sram_sim). Diese werden bereits in pisp_sim instantiiert und mit dem SRAM Controller (sram) verbunden. Ich bin aber noch nicht dazu gekommen, die Funktionalität dieser Simulation zu prüfen. Man kann diese Module leider nicht mit Werten <> 0 initialisieren. D.h. man muss erst was reinschreiben, bevor man etwas vernünftiges (<>0) wieder auslesen kann. LD/ST Operationen werden bereits dekodiert und bis zur WB-Stage weiter geleitet. Ich habe den Assembler so erweitert, dass der Befehl "ldc" automatisch auf "ldc, ldc12 und ldc24) erweitert wird, wenn man größere Immediates eingibt. Beispielsweise ersetzt der asmbin automatisch ein: "ldc r0,hAB987321" nach "ldc r0,h321 ldc12 r0,h987 ldc24 r0,hAB", "ldc r0,h123" nach "ldc r0,h123" oder ein "ldc r0,h123456" nach "ldc r0,h456 ldc12 r0,h123". Negative Zahlen werden zur Zeit immer komplett expandiert (also 3 ldc Befehle) gute nacht Günther