DIFENDPROCESS
asy
crxidlerequiresasy
cpresetsi
ceitisclockedbyrxclka
ditsvaluedetermi
eswhetherrxclkgetsge
eratedPROCESSresetrxclkBEGINIFreset1THENrxidle0ELSIFrxclkEVENTa
drxclk1THENrxidleNOTrxidleANDNOTrxreg0ENDIFENDPROCESSasy
ctxioLoadtxholda
dsettxdatardyo
falli
gedgeofwriteCleartxdatardyo
falli
gedgeoftxdo
ePROCESSresetclkx16VARIABLEwr1wr2std_logicwritesig
aldelayed1a
d2cyclesVARIABLEtxdo
e1std_logictxdo
esig
aldelayedo
ecycleBEGINIFreset1THENtxdatardy0wr10wr20txdo
e10ELSIFclkx16eve
tANDclkx161THENIFwr10ANDwr21THENFalli
gedgeo
writesig
alNewdatai
txholdlatchestxdatardy1ELSIFtxdo
e0ANDtxdo
e11THENFalli
gedgeo
txdo
esig
alTxholdhasbee
readtxdatardy0ENDIFDelayedversio
sofwritea
dtxdo
esig
alsforedgedetectio
wr2wr1wr1writetxdo
e1txdo
eENDIF
fENDPROCESSrxioPROCESSresetclkx16VARIABLErd1rd2std_logicReadi
putdelayed1a
d2cyclesVARIABLErxidle1std_logicrxidlesig
aldelayed1cycleBEGINIFreset1THENoverru
0rxholdOTHERS0parityerr0frami
gerr0rxdatardy0rd10rd20rxidle10ELSIFclkx16eve
tANDclkx161THENLookforrisi
gedgeo
idlea
dupdateoutputregistersIFrxidle1ANDrxidle10THENIFrxdatardy1THENOverru
errorifpreviousdataisstillthereoverru
1ELSENooverru
errorsi
ceholdi
gregisterisemptyoverru
0Updateholdi
gregisterrxholdrxregparityge
1ifparityerrorparityerrparityge
Frami
gerrorifstopbitis
ot1frami
gerrNOTrxstopSig
althatdataisreadyforreadi
grxdatardy1ENDIFENDIFrxidle1rxidlerxidledelayed1cycleforedgedetectClearerrora
ddataregisterswhe
dataisread
fIFNOTrd2ANDrd11THENrxdatardy0parityerr0frami
gerr0overru
0ENDIFrd2rd1Edgedetectforreadrd1readMustbeassig
edAFTERrefere
ceIFreset1THENrxdatardy0ENDIFENDIFENDPROCESSDrivedatabuso
lyduri
greaddatarxholdWHENread1ELSEOTHERSZLatchdatabusduri
gwritetxholddataWHENwrite1ELSEtxholdReceivedatareadyoutputsig
alrxrdyrxdatardyTra
smitterreadyforwritewhe
odataisi
txholdtxrdyNOTtxdatardyRu
timesimulatio
checkfortra
smitoverru
ASSERTwrite0ORtxdatardy0REPORT