beautypg.com

Digilent Parallel Interface Model User Manual

Page 8

background image

Digilent Parallel Interface Model

Digilent, Inc.

www.digilentinc.com

Copyright Digilent, Inc.

Page 8

regData3 when regEppAdr = "0011" else

regData4 when regEppAdr = "0100" else

regData5 when regEppAdr = "0101" else

regData6 when regEppAdr = "0110" else

regData7 when regEppAdr = "0111" else

rgSwt when regEppAdr = "1000" else

"000" & rgBtn when regEppAdr = "1001" else

"00000000";


------------------------------------------------------------------------

-- EPP Interface Control State Machine

------------------------------------------------------------------------

-- Map control signals from the current state

ctlEppWait <= stEppCur(0);

ctlEppDir <= stEppCur(1);

ctlEppAwr <= stEppCur(2);

ctlEppDwr <= stEppCur(3);


-- This process moves the state machine to the next state

-- on each clock cycle

process (clkMain)

begin

if clkMain = '1' and clkMain'Event then

stEppCur <= stEppNext;

end if;

end process;


-- This process determines the next state machine state based

-- on the current state and the state machine inputs.

process (stEppCur, stEppNext, ctlEppAstb, ctlEppDstb, ctlEppWr)

begin

case stEppCur is

-- Idle state waiting for the beginning of an EPP cycle

when stEppReady =>

if ctlEppAstb = '0' then

-- Address read or write cycle

if ctlEppWr = '0' then

stEppNext <= stEppAwrA;

else

stEppNext <= stEppArdA;

end if;


elsif ctlEppDstb = '0' then

-- Data read or write cycle

if ctlEppWr = '0' then

stEppNext <= stEppDwrA;

else

stEppNext <= stEppDrdA;

end if;


else

-- Remain in ready state

stEppNext <= stEppReady;

end if;


-- Write address register

when stEppAwrA =>