文档详情

VHDL设计应用实例课件.ppt

发布:2025-04-04约3.74万字共198页下载文档
文本预览下载声明

PROCESSVARIABLEN,EK_1,IK,EK,KP,KI,KD,FREF:REAL;VARIABLEFK,DEK,IREFK,TEMP:REAL;VARIABLEDONE:BIT;PROCEDUREMUL(A,B:INREAL)ISBEGINSIG_IN1=A;SIG_IN2=B;SIG_SEL=1;SIG_COM=2;WAITUNTILRISING_EDGE(CLOCK);SIG_SEL=0;RETURN;ENDMUL;PROCEDUREREP(A:INREAL)ISBEGINSIG_IN1=A;SIG_SEL=1;SIG_COM=1;WAITUNTILRISING_EDGE(CLOCK);SIG_SEL=0;RETURN;ENDREP;PROCEDUREWAITRESULT(X:OUTREAL;Y:OUTBIT)ISBEGINX:=SIG_OUT;Y:=SIG_DONE;WAITUNTILRISING_EDGE(CLOCK);RETURN; ENDWAITRESULT;TYPEROMISARRAY(0TO4)OFREAL;VARIABLEVAL_ROM:ROM:=(2.0*2.0**(-20),2.0,3.0*2.0**(- 20),4.0*2.0**(20),2.0*2.0**(-20));PROCEDUREGETCONSTKP(X:OUTREAL)ISBEGINX:=VAL_ROM(0);ENDGETCONSTKP;PROCEDUREGETCONSTKI(X:OUTREAL)ISBEGINX:=VAL_ROM(1);ENDGETCONSTKI;PROCEDUREGETCONSTKD(X:OUTREAL)ISBEGINX:=VAL_ROM(2);ENDGETCONSTKD;PROCEDUREGETFREF(X:OUTREAL)ISBEGINX:=VAL_ROM(3);ENDGETFREF;PROCEDUREGETN(X:OUTREAL)ISBEGINX:=VAL_ROM(4);ENDGETN;BEGINGETCONSTKP(KP);GETCONSTKI(KI);GETCONSTKD(KD);GETFREF(FREF);IK:=0.0;EK:=0.0;IREFK:=0.0;--WAITFOR50NS;WAITUNTIL(HOSTINTERRUPT=0);WHILE(HOSTINTERRUPT=0)LOOPWAITUNTIL(POSITIONCHANGE=1);GETN(N);REP(N);EK_1:=EK;--WAITUNTIL(DONE=1)WAITRESULT(FK,DONE);WHILE(DONE/=1)LOOPWAITRESULT(FK,DONE);ENDLOOP;IF(FSIGNIN=0)THENEK:=FREF-FK;ELSEEK:=FREF+FK;ENDIF;MUL(KP,EK);DEK:=EK-EK_1;WAITRESULT(IREFK,DONE);WHILE(DONE/=1)LOOPWAITRESULT(IREFK,DONE);ENDLOOP;MUL(DEK,FK);WAITRESULT(TEMP,DONE);WHILE(DONE/=1)LOOPWAITRESULT(TEMP,DONE);ENDLOOP;MUL(TEMP,KD);WAITRESULT(TEMP,DONE);WHILE(DONE/=1)LOOPWAITRESULT(TEMP,DONE);ENDLOOP;IREFK:=IREFK+TEMP;MUL(EK,N);WAITRESULT(TEMP,DONE);WHILE(DONE/=1)LOOPWAITRESULT(TEMP,DONE);ENDLOOP;IK:

显示全部
相似文档