diff --git a/resources/pic/drState.dot b/resources/pic/drState.dot index cb1f11b..0c465aa 100644 --- a/resources/pic/drState.dot +++ b/resources/pic/drState.dot @@ -5,13 +5,17 @@ digraph drState{ edge [arrowhead=normal] IDLE -> REFILL [label= ~cached or hit>] - IDLE -> IDLE [label="cached & hit"] + IDLE -> IDLE [label= & hit>] IDLE -> WA [label= ~hit
~axi.addr_ok>] IDLE -> WD1 [label= ~hit
axi.addr_ok>] - WA -> WD1 [xlabel=" "] - WD1 -> WD2 [xlabel=" "] - WD2 -> WD3 [xlabel=" "] - WD3 -> WD4 [xlabel=" "] - WD4 -> REFILL[xlabel=" "] + WA -> WA [label="~axi.addr_ok"] + WA -> WD1 [label="~axi.rvalid"] + WA -> WD2 [label=& cached>] + WA -> IDLE [label=& ~cached>] + + WD2 -> WD3 [label="axi.rvalid"] + WD3 -> WD4 [label="axi.rvalid"] + WD4 -> REFILL [label="axi.rvalid"] + REFILL -> IDLE [label="sync with dwState"] } \ No newline at end of file diff --git a/resources/pic/drState.svg b/resources/pic/drState.svg new file mode 100644 index 0000000..1e4f675 --- /dev/null +++ b/resources/pic/drState.svg @@ -0,0 +1,147 @@ + + + + + + +drState + + + +IDLE + +IDLE + + + +IDLE->IDLE + + +cached + & hit + + + +REFILL + +REFILL + + + +IDLE->REFILL + + +write + ~cached or hit + + + +WA + +WA + + + +IDLE->WA + + +cached + ~hit + ~axi.addr_ok + + + +WD1 + +WD1 + + + +IDLE->WD1 + + +cached + ~hit + axi.addr_ok + + + +REFILL->IDLE + + +sync with dwState + + + +WA->IDLE + + +axi.rvalid +& ~cached + + + +WA->WA + + +~axi.addr_ok + + + +WA->WD1 + + +~axi.rvalid + + + +WD2 + +WD2 + + + +WA->WD2 + + +axi.rvalid +& cached + + + +WD3 + +WD3 + + + +WD2->WD3 + + +axi.rvalid + + + +WD4 + +WD4 + + + +WD3->WD4 + + +axi.rvalid + + + +WD4->REFILL + + +axi.rvalid + + + diff --git a/resources/pic/dwState.dot b/resources/pic/dwState.dot new file mode 100644 index 0000000..5e7011d --- /dev/null +++ b/resources/pic/dwState.dot @@ -0,0 +1,29 @@ +digraph dwState{ + splines=polyline + compound=true + node [shape=Mrecord] + edge [arrowhead=normal] + + IDLE -> WD1 [label="~axi.wready"] + IDLE -> WD2 [label= & cached>] + IDLE -> WB [label= & ~cached
& ~axi.data_ok>] + IDLE -> WAITR [label="sync with drState"] + + WD1 -> WD2 [label= & cached>] + WD1 -> WB [label= & ~cached
& ~axi.data_ok>] + WD1 -> IDLE [label= & ~cached
& axi.data_ok>] + + WD2 -> WD3 [label="axi.wready"] + + WD3 -> WD4 [label="axi.wready"] + + WD4 -> WB [label= & ~axi.data_ok>] + WD4 -> IDLE [label="sync with drState"] + WD4 -> WAITR [label="sync with drState"] + + WB -> IDLE [label="sync with drState"] + WB -> IDLE [label="sync with drState"] + WB -> WAITR [label="sync with drState"] + + WAITR -> IDLE [label="sync with drState"] +} \ No newline at end of file diff --git a/resources/pic/dwState.svg b/resources/pic/dwState.svg new file mode 100644 index 0000000..068c2ca --- /dev/null +++ b/resources/pic/dwState.svg @@ -0,0 +1,176 @@ + + + + + + +dwState + + + +IDLE + +IDLE + + + +WD1 + +WD1 + + + +IDLE->WD1 + + +~axi.wready + + + +WD2 + +WD2 + + + +IDLE->WD2 + + +axi.wready + & cached + + + +WB + +WB + + + +IDLE->WB + + +axi.wready + & ~cached + & ~axi.data_ok + + + +WAITR + +WAITR + + + +IDLE->WAITR + + +sync with drState + + + +WD1->IDLE + + +axi.wready + & ~cached + & axi.data_ok + + + +WD1->WD2 + + +axi.wready + & cached + + + +WD1->WB + + +axi.wready + & ~cached + & ~axi.data_ok + + + +WD3 + +WD3 + + + +WD2->WD3 + + +axi.wready + + + +WB->IDLE + + +sync with drState + + + +WB->IDLE + + +sync with drState + + + +WB->WAITR + + +sync with drState + + + +WAITR->IDLE + + +sync with drState + + + +WD4 + +WD4 + + + +WD3->WD4 + + +axi.wready + + + +WD4->IDLE + + +sync with drState + + + +WD4->WB + + +axi.wready + & ~axi.data_ok + + + +WD4->WAITR + + +sync with drState + + + diff --git a/resources/pic/dwaState.dot b/resources/pic/dwaState.dot new file mode 100644 index 0000000..7fb79b6 --- /dev/null +++ b/resources/pic/dwaState.dot @@ -0,0 +1,9 @@ +digraph dwaState{ + splines=polyline + compound=true + node [shape=Mrecord] + edge [arrowhead=normal] + + IDLE -> WA [label= & ~axi.addr_ok>] + WA -> IDLE [label="axi.addr_ok"] +} \ No newline at end of file diff --git a/resources/pic/dwaState.svg b/resources/pic/dwaState.svg new file mode 100644 index 0000000..23bb81a --- /dev/null +++ b/resources/pic/dwaState.svg @@ -0,0 +1,40 @@ + + + + + + +dwaState + + + +IDLE + +IDLE + + + +WA + +WA + + + +IDLE->WA + + +req + & ~axi.addr_ok + + + +WA->IDLE + + +axi.addr_ok + + + diff --git a/resources/pic/iState.dot b/resources/pic/iState.dot new file mode 100644 index 0000000..6513f4f --- /dev/null +++ b/resources/pic/iState.dot @@ -0,0 +1,24 @@ +digraph iState{ + splines=polyline + compound=true + node [shape=Mrecord] + edge [arrowhead=normal] + + IDLE -> WA [label=& ~hit
& ~axi.addr_ok>] + IDLE -> WD1 [label=& ~hit
& axi.addr_ok>] + + WA -> WD1 [label=&~axi.rvalid>] + WA -> WD2 [label=&axi.rvalid>] + + WD1 -> WD2 [label="axi.rvalid"] + + WD2 -> WD3 [label=& cached>] + WD2 -> IDLE [label=& ~cached>] + WD3 -> WD4 [label="axi.rvalid"] + WD4 -> WD5 [label="axi.rvalid"] + WD5 -> WD6 [label="axi.rvalid"] + WD6 -> WD7 [label="axi.rvalid"] + WD7 -> WD8 [label="axi.rvalid"] + WD8 -> REFILL [label="sync with dwState"] + REFILL -> IDLE +} \ No newline at end of file diff --git a/resources/pic/iState.svg b/resources/pic/iState.svg new file mode 100644 index 0000000..f3f3b00 --- /dev/null +++ b/resources/pic/iState.svg @@ -0,0 +1,184 @@ + + + + + + +iState + + + +IDLE + +IDLE + + + +WA + +WA + + + +IDLE->WA + + +cached +& ~hit +& ~axi.addr_ok + + + +WD1 + +WD1 + + + +IDLE->WD1 + + +cached +& ~hit +& axi.addr_ok + + + +WA->WD1 + + +axi.addr_ok +&~axi.rvalid + + + +WD2 + +WD2 + + + +WA->WD2 + + +axi.addr_ok +&axi.rvalid + + + +WD1->WD2 + + +axi.rvalid + + + +WD2->IDLE + + +axi.rvalid +& ~cached + + + +WD3 + +WD3 + + + +WD2->WD3 + + +axi.rvalid +& cached + + + +WD4 + +WD4 + + + +WD3->WD4 + + +axi.rvalid + + + +WD5 + +WD5 + + + +WD4->WD5 + + +axi.rvalid + + + +WD6 + +WD6 + + + +WD5->WD6 + + +axi.rvalid + + + +WD7 + +WD7 + + + +WD6->WD7 + + +axi.rvalid + + + +WD8 + +WD8 + + + +WD7->WD8 + + +axi.rvalid + + + +REFILL + +REFILL + + + +WD8->REFILL + + +sync with dwState + + + +REFILL->IDLE + + + + + diff --git a/resources/ping-pong-mips32/game/game/init.S b/resources/ping-pong-mips32/game/game/init.S index 12a122d..7bc6c48 100644 --- a/resources/ping-pong-mips32/game/game/init.S +++ b/resources/ping-pong-mips32/game/game/init.S @@ -208,14 +208,14 @@ bss_init_done: jal PRINT nop - la a0, UART1 - li a1, KB_RESET - jal WRITESERIAL - nop +// la a0, UART1 +// li a1, KB_RESET +// jal WRITESERIAL +// nop -// lui t0, %hi(SEG7) + 1 -// li t1, 0 -// sw t1, %lo(SEG7)(t0) + lui t0, %hi(SEG7) + 1 + li t1, 0 + sw t1, %lo(SEG7)(t0) j RESTART_LOAD nop diff --git a/resources/ping-pong-mips32/game/game/supv.S b/resources/ping-pong-mips32/game/game/supv.S index 96185cf..8a7bf35 100644 --- a/resources/ping-pong-mips32/game/game/supv.S +++ b/resources/ping-pong-mips32/game/game/supv.S @@ -51,6 +51,7 @@ kb_readbuffer: sw t2, -8(t0) 3: bnez s0, SUPV_START + nop la a0, UART0 la a1, resume jal PRINT diff --git a/resources/ping-pong-mips32/game/game/trap.S b/resources/ping-pong-mips32/game/game/trap.S index 85c1707..fb325bc 100644 --- a/resources/ping-pong-mips32/game/game/trap.S +++ b/resources/ping-pong-mips32/game/game/trap.S @@ -9,7 +9,7 @@ .section .text.ebase180 .p2align 2 - + mfc0 k1, CP0_STATUS li k0, 0 mtc0 k0, CP0_STATUS