I'm thinking it may be sufficient with 128 byte of program memory with 1
byte instructions where the top bit selects a jump, and no subroutines.
But if the instruction memory fills up with noop, we might need a (short)
repeat count for it.
Preliminary instructions format
0AAA AAAA jump AAAAAAA (relative or absolute, whichever is easier)
10AA AAAA if_row_hit AAAAAA (relative PC, -32..31 or maybe 0..63?)
1100 RRRR noop^RRRR
1111 0000 open_row
1111 0001 close_row
1111 1000 shift_out_4
1111 1001 shift_in_4
1111 1111 done
I have made some wild guesses here about the character of the problem,
but all these detail should expose the wrong assumptions.
Based also on wild guesses and the datasheet for the Samsung memory
listed in the wiki...
Instruction set:
00omCCCC NOOP / DELAY for (CCCC+1) cycles
01omXX00 PRECHARGE CURRENT BANK
01omXX10 PRECHARGE ALL BANKS
01omXX01 REFRESH
10omXXXX BANK ACTIVE & ROW ADDRESS
11omXX0r SEND COLUMN ADDRESS AND DATA(write) SEND COLUMN ADDRESS(read)
11omXX1r GET DATA(read) NOOP (write)
Flags:
o - execute instruction only when the needed row is not open
m - execute instruction only on a row miss
r - reset the instruction pointer to 0 after executing this instruction
Notes:
* When a request is made, the instruction pointer is reset to 0 and
execution begins.
* Every instruction that completes resets the delay counter.
* Skipped instructions are merged into the next NOOP unless a different
instruction is executed before an NOOP, in which case, it is an 1 cycle
delay.
* NOOP waits until the delay counter reaches a specific value before
continuing.
* Jumps do not exists, it just turns some instructions into NOOP's based
on flags.
* SEND and GET instruction's bit0 is a program counter reset.
As an example:
[m] NOOP #5
[m] PRECHARGE CURRENT BANK
[o] NOOP #4
[o] ACTIVE
NOOP #4
SEND
GET(reset)
This program meets these requirements:
* read/write 5 cycles after row select
* precharge 7 cycles after read/write
* precharge 12 cycles after row select
* read/write every 5 cycles
* data 1 cycle after read
* 8 bytes of program code
_______________________________________________
Open-graphics mailing list
[email protected]
http://lists.duskglow.com/mailman/listinfo/open-graphics
List service provided by Duskglow Consulting, LLC (www.duskglow.com)