Thanks for the help! Here is what I came up with. It seems to work good (in the simulator!!!). I hope there are no glitches in the 8080 status signals...
Do you see anything I could have done to make the design better? I've included my .PLD and .SIM files.
.PLD file:
Name PowerOnJump ; PartNo 00 ; Date 8/15/2006 ; Revision 01 ; Designer Engineer ; Company Stockly Electronics ; Assembly None ; Location ; Device v750c ;
/*** INPUT PINS ********************** DESCRIPTION
****************************/ PIN 1 = CLK16M ; /
* 16MHz Clock */ PIN 2 = pRESET ; /
* 8080 Reset Signal, Active Low */ PIN 3 = pDBIN ; /
* 8080 Data bus In Signal, Active High */ PIN 4 = na1 ; /
* */ PIN 5 = JMPA15 ; /
* */ PIN 6 = JMPA14 ; /
* */ PIN 7 = JMPA13 ; /
* */ PIN 8 = JMPA12 ; /
* */ PIN 9 = JMPA11 ; /
* */ PIN 10 = JMPA10 ; /
* */ PIN 11 = JMPA9 ; /
* */ PIN 13 = JMPA8 ; /
* */
/*** OUTPUT PINS ********************* DESCRIPTION
****************************/ PIN 14 = CCDSB ; /* Command/Control Disable, Active Low */ PIN 15 = na2 ; /
* CCDSB prevents memory from responding */ PIN 16 = DI0 ; /
* */ PIN 17 = DI1 ; /
* */ PIN 18 = DI2 ; /
* */ PIN 19 = DI3 ; /
* */ PIN 20 = DI4 ; /
* */ PIN 21 = DI5 ; /
* */ PIN 22 = DI6 ; /
* */ PIN 23 = DI7 ; /
* */
/****** PIN NODES ******************** DESCRIPTION
****************************/ PINNODE 25 = Q0 ; /
* */ PINNODE 26 = Q1 ; /
* */ PINNODE 27 = Q2 ; /
* */ PINNODE 28 = na3 ; /
* */ PINNODE 29 = na4 ; /
* */ PINNODE 30 = na5 ; /
* */ PINNODE 31 = na6 ; /
* */ PINNODE 32 = na7 ; /
* */ PINNODE 33 = na8 ; /
* */ PINNODE 34 = na9 ; /
* */
field jmpadr = [JMPA15,JMPA14,JMPA13,JMPA12,JMPA11,JMPA10,JMPA9,JMPA8]; field data = [DI7,DI6,DI5,DI4,DI3,DI2,DI1,DI0]; field count = [Q2, Q1, Q0];
$define S0 'b'000 $define S1 'b'001 $define S2 'b'010 $define S3 'b'011 $define S4 'b'100 $define S5 'b'101 $define S6 'b'110 $define S7 'b'111
!CCDSB = Q2 # Q1; /* Disable Command/Control outputs if count is > 1
*/ data.oe = !CCDSB & pDBIN; /
* Enable data bus if count is > 1 and the data bus is IN */
data = 'h'C3 & count:S3 # 'h'00 & count:S5 # jmpadr & count:S7;
count.ck = CLK16M; count.sp = 'b'000;
SEQUENCE count { /* If count='d'0 - data.oe='b'0 CCDSB='b'1 */ PRESENT S0 if !pRESET next S1; /* If pRESET is low, continue */ if pRESET next S0; /* If pRESET is high, loop */
/* Wait for reset to go high */ PRESENT S1 if pRESET next S2; /* If pRESET is high, continue */ if !pRESET next S1;
/* If count > 'd'1 then data.oe='b'1,CCDSB='b'0 */
/* Wait for pDBIN to go high */ PRESENT S2 if pDBIN next S3; /* If pDBIN is high, continue */ if !pRESET next S0; if !pDBIN next S2;
/* If count=S3 data='h'C3 */ PRESENT S3 if !pDBIN next S4; /* If pDBIN is low, continue */ if !pRESET next S0; if pDBIN next S3;
PRESENT S4 if pDBIN next S5; /* If pDBIN is high, continue */ if !pRESET next S0; if !pDBIN next S4;
/* If count=S5 data='h'00 */ PRESENT S5 if !pDBIN next S6; /* If pDBIN is low, continue */ if !pRESET next S0; if pDBIN next S5;
PRESENT S6 if pDBIN next S7; /* If pDBIN is high, continue */ if !pRESET next S0; if !pDBIN next S6;
/* If count=S7 data=JMPADR */ PRESENT S7 if !pDBIN next S0; /* If pDBIN is low, go to the beginning */ if !pRESET next S0; if pDBIN next S7; }
.SIM file:
Name PowerOnJump; PartNo 00; Date 8/15/2006; Revision 01; Designer Engineer; Company Stockly Electronics; Assembly None; Location ; Device v750c;
ORDER: CLK16M, pDBIN, pRESET, jmpadr, CCDSB, count, data;
VECTORS: C01 'AA' ************ C01 'AA' ************ C00 'AA' ************ C00 'AA' ************ C01 'AA' ************ C01 'AA' ************ C11 'AA' ************ C11 'AA' ************ C01 'AA' ************ C01 'AA' ************ C11 'AA' ************ C11 'AA' ************ C01 'AA' ************ C01 'AA' ************ C11 'AA' ************ C11 'AA' ************ C01 'AA' ************ C01 'AA' ************ C11 'AA' ************ C11 'AA' ************ C01 'AA' ************ C00 'AA' ************ C01 'AA' ************ C01 'AA' ************ C01 'AA' ************ C01 'AA' ************ C11 'AA' ************ C11 'AA' ************ C01 'AA' ************ C01 'AA' ************ C11 'AA' ************ C11 'AA' ************ C01 'AA' ************ C01 'AA' ************ C11 'AA' ************ C11 'AA' ************ C01 'AA' ************ C01 'AA' ************ C11 'AA' ************ C11 'AA' ************ C01 'AA' ************ C01 'AA' ************ C11 'AA' ************ C11 'AA' ************ C01 'AA' ************ C01 'AA' ************