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)

Reply via email to