TITLE "Prepare DAD data for cluster making"; include "lpm_ff.inc"; FUNCTION svxdecode (channel[7..0],clock,validin,disable,init,timeout,grterror, chipid[7..0][4..0],toomanyclust,nchipexpect[3..0]) RETURNS (chip[2..0],endeventword[14..0],endevent,endeventstate, validout,idlestate,headerstate,runningstate); SUBDESIGN hmready ( channel[7..0] : INPUT; adc[7..0] : INPUT; clock : INPUT; dav : INPUT; grterror : INPUT; disable : INPUT; init : INPUT; timeout : INPUT; chipid[7..0][4..0] : INPUT; toomanyclust : INPUT; nchipexpect[3..0] : INPUT; endeventword[14..0] : OUTPUT; endevent : OUTPUT; endeventstate : OUTPUT; outdata[17..0] : OUTPUT; validout : OUTPUT; idlestate : OUTPUT; headerstate : OUTPUT; runningstate : output; ) VARIABLE achannel :lpm_ff WITH (LPM_WIDTH=8); aadc :lpm_ff WITH (LPM_WIDTH=8); validin :lpm_ff WITH (LPM_WIDTH=1); outdatareg :lpm_ff WITH (LPM_WIDTH=18); svxdecoder :svxdecode; BEGIN achannel.data[] = channel[]; achannel.clock = clock; achannel.aclr = init; aadc.data[] = adc[]; aadc.clock = clock; aadc.aclr = init; validin.data[] = dav; validin.clock = clock; validin.aclr = init; svxdecoder.grterror = grterror; svxdecoder.disable = disable; svxdecoder.init = init; svxdecoder.timeout = timeout; svxdecoder.validin = validin.q[]; svxdecoder.clock = clock; svxdecoder.channel[] = achannel.q[]; svxdecoder.chipid[][] = chipid[][]; svxdecoder.toomanyclust = toomanyclust; svxdecoder.nchipexpect[] = nchipexpect[]; outdatareg.data[17..15] = svxdecoder.chip[2..0]; outdatareg.data[14..8] = achannel.q[6..0]; outdatareg.data[7..0] = aadc.q[7..0]; outdatareg.clock = clock; outdatareg.aclr = init; idlestate = svxdecoder.idlestate; headerstate = svxdecoder.headerstate; runningstate = svxdecoder.runningstate; outdata[] = outdatareg.q[]; endeventstate = svxdecoder.endeventstate; validout = svxdecoder.validout; endeventword[] = svxdecoder.endeventword[]; endevent = svxdecoder.endevent; END;