Blame | Last modification | View Log | Download | RSS feed | ?url?
| | | | | | | | | | | | | | | | | | | | | |
I | I | I | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | I | I | I | - number of cycles left in block
| | | 4 | 4 | 4 | 4 | 3 | 2 | 1 | 0 | 4 | 3 | 2 | 1 | 0 | 0 | 0 | 0 | | | | - number of video cycles left in block
| | r| r| r| r| r| -| -| -| -| | | | | | | | | | | | - cpu requests
| | | z | z | z | z | v | v | v | v | z | v | v | v | v | | | | | | | - cycle type
| | | | | | | | | | | | | | | | | | | | | |
| | | 3 | 2 | 2 | 1 | 0 | 0 | 0 | 0 | 4 | 3 | 2 | 1 | 0 | 0 | 0 | 0 | | | | - number of video cycles left in block
| | | | r| | | | | r| r| | | | | | | | | | | | - cpu requests
| | | v | v | z | v | v | | | z | z | v | v | v | v | | | | | | | - cycle type
| | | | | | | | | | | | | | | | | | | | | |
| | | 4 | 4 | 3 | 3 | 3 | 2 | 1 | 0 | 4 | 4 | 3 | 3 | 3 | 2 | 1 | 0 | | | |
| | r| r| | r| r| | r| -| -| r| | r| r| | r| -| -| r| | |
| | | z | z | v | z | z | v | v | v | z | z | v | z | z | v | v | v | z | z | |
| | | | | | | | | | | | | | | | | | | | | |
| | | S | S | S | S | S | S | S | S | S | S | S | S | S | S | S | S | | | | - stall cycles (BW=1)
| | r| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| | | |
| | | v | v | v | v | v | v | v | v | v | v | v | v | v | v | v | v | z | | |
| | | | | | | | | | | | | | | | | | | | | |
rules:
if nexttype=idle and cpureq then next=cpu
if nexttype=idle and no cpureq then next=rfsh
if nexttype=stall then next=video
if nexttype=block then // block is when BW<1, else stall
begin
if cpureq then
begin
if blk_rem==0 or blk_rem!=vid_rem then next=cpu else next=video
end
else // no cpureq
begin
if vid_rem!=0 then next=video else next=rfsh
end
end
// trace blk_rem and vid_rem
if currtype==idle or (currtype==block and blk_rem==0)
begin
if go then nexttype=block, blk_nrem=7
else nexttype=idle, blk_nrem=0
if
end
else // currtype==block and blk_rem!=0
begin
blk_nrem=blk_rem-1
end
always @(posedge clk) blk_rem<=blk_nrem;