第10章++车载DVD位控系统的设计与.ppt_第1页
第10章++车载DVD位控系统的设计与.ppt_第2页
第10章++车载DVD位控系统的设计与.ppt_第3页
第10章++车载DVD位控系统的设计与.ppt_第4页
第10章++车载DVD位控系统的设计与.ppt_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章车载DVD位控系统的设计与分析,10.1系统设计要求10.2系统设计方案10.3主要VHDL源程序10.4系统仿真/硬件验证10.5设计技巧分析10.6系统扩展思路,10.1系统设计要求,根据某车载移动DVD产品机械操作分析结果的要求,具体设计如下:(1)OPEN_CLOSE操作:当系统测试到有一个OPEN_CLOSE高电平信号时,系统就驱动马达1(MOTOR11端),显示屏从机盒内伸出,距离为142mm,时间为3s。水平移动到指定位置后,关断马达信号MOTOR11。,(2)自测向上翻转操作(此操作只在正常开机或关机时使用):开机时显示屏从机内伸出,到达指定位置,从传感器SENSOR1返回一信号,则开通信号MOTOR21,马达运行时间为3s,向上翻转110,从传感器SENSOR2返回的信号表明到达指定位置,切断MOTOR21信号。开机过程完成。(3)关机操作:当OPEN_CLOSE为低电平时,系统通过相应的处理模块检测到显示屏所在位置,然后做出相应对策。向下翻转至水平位置后,水平缩进机内。,(4)角度调整与水平位置调整操作(TILT调节操作):如果TILT信号为高电平,系统先测试其为高电平的时间宽度。若为2s时,则调节水平位置,共三个位置,相邻位置间隔为1.5cm;若小于2s时,则调节角度,共三个角度调节位置,相邻角度大小为15。(5)异常情况处理(异常情况就是在某一运行过程,由于人为地阻止显示屏的正常移动,从而造成长时间的马达过载异常):由实际情况进行判断,如果是异常情况,则关断马达信号并报警出错;等待OPEN_CLOSE低电平的到来,然后返回机盒内。,(6)位置识别、异常情况判断、状态显示、时间显示:在系统对马达进行驱动控制时,都要进行位置识别、异常情况判断,并把检测到的信号通过状态显示模块处理输出。在每一运行过程,输出模块均把此时的时间显示出,最小时间单位为1s。根据以上各种操作及要求,我们可得到各种操作的状态转换图如图10.1所示,系统的有关控制时序如图10.2和图10.3所示。,图10.1各种操作的状态转换图,图10.2行走(142mm3s)与翻转(1203s)控制时序图,图10.3角度调整和水平位置调整控制时序图,图10.2和图10.3中的信号说明如下:OPEN/CLOSE:外部开关操作输入信号;TILT:角度调整和水平位置调整信号输入端;P00/IC2.6,P01/IC2.5,P02/IC1.6,P03/IC1.5:驱动信号,高电平有效;M1.1,M1.2:行走马达控制信号,高电平有效,电压为9V;M2.1,M2.2:翻转马达控制信号,高电平有效,电压为9V;Sensor1,Sensor2:分别为行走马达和翻转马达的返回电压信号,系模拟信号。,10.2系统设计方案,10.2.1系统的总体结构设计根据系统的设计要求,我们可得到移动DVD位控系统DVDWKXT的输入和输出接口如图10.4所示。图中的信号说明如下:CLKIN:外部时钟端输入,8MHz晶振;OPEN_CLOSE:外部开关操作输入电平信号;,TILT:外部输入位置调节信号;DATA:8位传感器返回数据;ADCABC00:传感器通道选择信号输出;ADCCLK:模拟转换器的时钟信号;EOC,OP,READ,WRITE:ADC0809的控制信号;MOTOR11_OUT,MOTOR12_OUT,MOTOR21_OUT,MOTOR22_OUT:驱动马达控制信号;,DS_TIME,DS_UNIT:时间及单位输出信号;ERROR00,GOOD00:异常,正常输出信号;V_POS1,V_POS2,V_POS3:水平位置输出信号;H_POS1,H_POS2,H_POS3:角度位置输出信号。根据实际要求,上面的各个信号输出为TTL标准电平,输出电流约为510mA。,图10.4DVDWKXT的输入和输出接口图,经过对系统的设计要求进行分析,我们可将整个系统分为7个模块:分频模块FINI、OPEN_CLOSE操作模块OPEN_OP、TILT操作模块TILT_OP、位置判断模块POS_DIFF、异常判断及处理模块ABN_DIFF、判断输出模块OUTPUT、时间及位置显示模块DISPLAY。整个系统的组成框图如图10.5(略)所示。,10.2.2系统内各模块的设计分频模块FINI:其功能为对外部输入时钟进行分频,得到周期为1.5ms计数器,并根据反馈信号TIME_S对计时器进行清零。其输入输出接口如图10.6所示,图中的CLKIN为外部时钟输入,TIME_S为定时器清零信号。,图10.6分频模块FINI输入输出接口图,OPEN_CLOSE操作模块OPEN_OP:其功能为根据反馈的数据和相关的信号,做出具体的马达控制输出。其输入输出接口如图10.7所示,图中的信号TILT_BCD、TILT_FGH为从TILT模块返回的控制信号,TIME_S是内部计时器的清零信号,ERROR0为异常警告信号。,图10.7OPEN_CLOSE操作模块OPEN_OP输入输出接口图,TILT操作模块TILT_OP:其功能为根据反馈的数据和相应的信号,做出具体的马达控制输出。其输入输出接口如图10.8所示,图中的信号TILT_BCD0、TILT_FGH0为小范围内调整控制信号,ADCABCP5是ADC0809通道选通信号。,图10.8TILT操作模块TILT_OP输入输出接口图,位置判断模块POS_DIFF:其功能为对每个周期内的移动显示屏的位置进行判断,并把信号输出。其输入输出接口如图10.9所示,图中的VPA、VPB、VPC、VPD、HPE、HPF、HPG、HPH、VPAB、VPBC、VPCD、HPEF、HPFG、HPGH为输出位信号。,异常判断及处理模块ABN_DIFF:其功能为在每一个周期内对系统的运行异常情况判断,并把信号输出。针对不同的位置,在相应的操作里,设定的时间内,如没有到达规定的位置,则判断为异常,并关断马达的运行。其输入输出接口如图10.10所示。,图10.9位置判断模块POS_DIFF输入输出接口图,图10.10异常判断及处理模块ABN_DIFF输输出接口图,判断输出模块OUTPUT:其功能为根据以上模块的各判断输出信号,进行再次判断,并输出到外部。由以上模块进行操作,得到不同的信号,从而进行输出控制;主要是针对模拟通道的选择,以及对马达1和马达2的控制。其输入输出接口如图10.11所示。,图10.11判断输出模块OUTPUT输入输出接口图,时间及位置显示模块DISPLAY:其功能为对外显示每一移动过程所用时间。其输入输出接口如图10.12所示,图中的DS_TIME、DS_UNIT为输出时间及时间单位。由于输出为TTL标准电平,因此外部需要附加七段码驱动芯片,本设计拟用74ALS244。,图10.12时间及位置显示模块DISPLAY输入输出接口图,10.3主要VHDL源程序,-DVDWKXT.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;,-定义一个实体ENTITYDVDWKXTISPORT(CLKIN:INSTD_LOGIC;-外部时钟输入端OPEN_CLOSE,TILT:INSTD_LOGIC;DATA:INSTD_LOGIC_VECTOR(7DOWNTO0);-传感器返回位置数据ADCABC00:OUTSTD_LOGIC_VECTOR(2DOWNTO0);-选择模拟转换通道ADCCLK:OUTSTD_LOGIC;,EOC,READ,WRITE,OP:OUTSTD_LOGIC;-ADC0809控制端MOTOR11_OUT,MOTOR12_OUT:OUTSTD_LOGIC;-马达TTL电平控制端MOTOR21_OUT,MOTOR22_OUT:OUTSTD_LOGIC;-马达TTL电平控制端DS_TIME,DS_UNIT:OUTSTD_LOGIC_VECTOR(7DOWNTO0);-显示时间ERROR00,GOOD00:OUTSTD_LOGIC;-异常情况输出端V_POS1,V_POS2,V_POS3:OUTSTD_LOGIC;-水平位置信号H_POS1,H_POS2,H_POS3:OUTSTD_LOGIC);-翻转角度信号ENDENTITYDVDWKXT;,ARCHITECTUREARTOFDVDWKXTISSIGNALCOUNT:STD_LOGIC_VECTOR(16DOWNTO0);-分频SIGNALTIME00:STD_LOGIC_VECTOR(12DOWNTO0);-计数器SIGNALV_POSTIONP2,H_POSTIONP2:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALV_POSTIONP3,H_POSTIONP3:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALV_POSTIONP4,H_POSTIONP4:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALV_POSTIONP5,H_POSTIONP5:STD_LOGIC_VECTOR(7DOWNTO0);,-上面四个语句均为位置寄存器SIGNALADIVIDER,TIME_S:STD_LOGIC;SIGNALMOTOR11P2,MOTOR12P2,MOTOR21P2,MOTOR22P2:STD_LOGIC;SIGNALMOTOR11P5,MOTOR12P5,MOTOR21P5,MOTOR22P5:STD_LOGIC;SIGNALMOTOR11P4,MOTOR12P4,MOTOR21P4,MOTOR22P4:STD_LOGIC;SIGNALERROR0,GOOD0:STD_LOGIC;-异常情况寄存器SIGNALADCABCP2,ADCABCP5:STD_LOGIC_VECTOR(2DOWNTO0);-通道选择寄存器SIGNALVPA,VPB,VPC,VPD:STD_LOGIC;-水平位置信号标志SIGNALHPE,HPF,HPG,HPH:STD_LOGIC;-角度位置标志SIGNALVPAB,VPBC,VPCD:STD_LOGIC;SIGNALHPEF,HPFG,HPGH:STD_LOGIC;SIGNALTILT_BCD,TILT_FGH:STD_LOGIC;-TILT信号判断标志SIGNALVC_VD,VD_VB,VB_VC:STD_LOGIC;-位置常量标志SIGNALHF_HG,HG_HH,HH_HF:STD_LOGIC;-位置常量标志,CONSTANTVA:INTEGER:=20;CONSTANTVB:INTEGER:=180;CONSTANTVC:INTEGER:=210;CONSTANTVD:INTEGER:=240;CONSTANTHE:INTEGER:=20;CONSTANTHF:INTEGER:=180;CONSTANTHG:INTEGER:=210;CONSTANTHH:INTEGER:=240;,BEGIN-程序初始化EOC=ADIVIDER;READ=NOT(ADIVIDER);WRITE=NOT(ADIVIDER);OP=NOT(ADIVIDER);ADCCLK=NOT(ADIVIDER);ERROR00=ERROR0;GOOD00=GOOD0;-DIVIDERFREQUENCY分频子进程P1:PROCESS(CLKIN)IS,BEGINIF(CLKINEVENTANDCLKIN=1)THENCOUNT=COUNT+1;ENDIF;IF(COUNT=11111111111111111)THENADIVIDER=1;ELSEADIVIDER=0;ENDIF;IF(TIME_S=1)THENIF(ADIVIDER=1)THEN,TIME00=TIME00+1;ENDIF;ELSIF(TIME_S=0)THEN-对计数器清零TIME00=0000000000000;ENDIF;ENDPROCESSP1;-执行OPEN_CLOSE操作P2:PROCESS(ADIVIDER,OPEN_CLOSE,ERROR0,TILT)IS,VARIABLEV_POSTION2,H_POSTION2:INTEGERRANGE256DOWNTO1;BEGINIF(OPEN_CLOSE=1ANDERROR0=0ANDTILT_BCD=0ANDTILT_FGH=0ANDGOOD0=0)THEN-正常情况下出盒ADCABCP2=VAANDV_POSTION2VBANDADCABCP2=000)THEN,MOTOR11P2=VBANDADCABCP2=000)THENMOTOR11P2=0;ADCABCP2=001;TIME_S=0;H_POSTIONP2=HEANDH_POSTION2=HFANDADCABCP2=001)THENMOTOR21P2=0;TIME_S=0;GOOD0=1;ENDIF;-出盒操作完成ENDIF;,IF(OPEN_CLOSE=0ANDERROR0=0ANDTILT_BCD=0ANDTILT_FGH=0ANDGOOD0=1)THEN-回盒条件成立ADCABCP2HEANDH_POSTION2=HHANDADCABCP2=001)THENMOTOR22P2=1;ENDIF;,IF(H_POSTION2VAANDV_POSTION2=VDANDADCABCP2=000)THEN,MOTOR12P2=1;-水平回盒ENDIF;IF(V_POSTION2=VAANDADCABCP2=000)THENMOTOR12P2=0;TIME_S=0;GOOD0=0;ENDIF;ENDIF;ENDPROCESSP2;,-位置判断子进程P3:PROCESS(ADIVIDER)ISVARIABLEV_POSTION3,H_POSTION3:INTEGERRANGE256DOWNTO1;BEGINIF(ADCABCP2=000ORADCABCP5=000)THENV_POSTIONP3=DATA;V_POSTION3:=CONV_INTEGER(V_POSTIONP3);IF(V_POSTION3=VA)THEN-在盒内状态VPA=1;VPB=0;VPC=0;VPD=0;,VPABVAANDV_POSTION3VB)THEN-出盒中间位置VPA=0;VPB=0;VPC=0;VPD=0;VPAB=1;VPBC=0;VPCD=0;ELSIF(V_POSTION3=VB)THEN-水平位置BVPA=0;VPB=1;VPC=0;VPD=0;VPAB=0;VPBC=0;VPCDVBANDV_POSTION3VC)THEN-水平位置BC之间VPA=0;VPB=0;VPC=0;VPD=0;VPAB=0;VPBC=1;VPCD=0;ELSIF(V_POSTION3=VC)THEN-水平位置CVPA=0;VPB=0;VPC=1;VPD=0;VPAB=0;VPBC=0;VPCDVCANDV_POSTION3=VD)THEN-水平位置DVPA=0;VPB=0;VPC=0;VPD=1;VPAB=0;VPBC=0;VPCD=0;ENDIF;ENDIF;,IF(ADCABCP2=001ORADCABCP5=001)THENH_POSTIONP3HEANDH_POSTION3HF)THEN-角度位置E、F之间HPE=0;HPF=0;HPG=0;HPH=0;HPEF=1;HPFG=0;HPGH=0;,ELSIF(H_POSTION3=HF)THEN-角度位置FHPEHFANDH_POSTION3HG)THEN-角度位置F、H之间HPE=0;HPF=0;HPG=0;HPH=0;HPEF=0;HPFG=1;HPGH=0;ELSIF(H_POSTION3=HG)THEN-角度位置HHPE=0;HPF=0;HPG=1;HPH=0;HPEF=0;HPFG=0;HPGHHGANDH_POSTION3HH)THEN-角度位置G、H之间HPE=0;HPF=0;HPG=0;HPH=0;HPEF=0;HPFG=0;HPGH=1;ELSIF(H_POSTION3=HH)THEN-角度位置HHPE=0;HPF=0;HPG=0;HPH=1;HPEF=0;HPFG=0;HPGHVAANDV_POSTION4VB)THENERROR0=1;-出盒或进盒过程中出错MOTOR11P4=0;MOTOR12P4=2666AND(VPB=0ANDVPC=0ANDVPD=0)THENERROR0=1;-水平位置调节时出错MOTOR11P4=0;MOTOR12P4HEANDH_POSTION4HF)THENERROR0=1;-大角度翻转时出错MOTOR21P4=0;MOTOR22P4=2666)AND(HPF=0ANDHPG=0ANDHPH=0)THENERROR0=1;-角度调节时出错MOTOR21P4=0;MOTOR22P4=4000)THENERROR0=2666)THEN-是否是位置调节ADCABCP5=000;V_POSTIONP5=DATA;V_POSTION5:=CONV_INTEGER(V_POSTIONP5);TILT_BCD=1;,ELSIF(TILT=1ANDCONV_INTEGER(TIME00)2666)THEN-是否是角度调节ADCABCP5=001;H_POSTIONP5=DATA;H_POSTION5:=CONV_INTEGER(H_POSTIONP5);TILT_FGH=1;ENDIF;,IF(TILT=0)THENIF(ADCABCP5=000ANDTILT_BCD=1)THEN-判断方向IF(VPC=1)THEN-从位置C到位置DVC_VD=1;ENDIF;IF(VPD=1)THEN-从位置D到位置CVD_VB=1;ENDIF;IF(VPB=1)THEN-从位置B到位置CVB_VC=VCANDV_POSTION5VD)THENMOTOR11P5=1;ELSIF(VC_VD=1ANDV_POSTION5=VD)THEN-到达位置DMOTOR11P5=0;TILT_BCD=0;VC_VDVBANDV_POSTION5=VBANDV_POSTION5VC)THEN-POSTIONB,MOTOR11P5=1;ELSIF(VC_VD=1ANDV_POSTION5=VC)THEN-到达位置CMOTOR11P5=0;TILT_BCD=0;VC_VD=0;ENDIF;ENDIF;IF(ADCABCP5=001ANDTILT_FGH=1)THEN-DIFFERENTXTOYIF(HPF=1)THEN,HF_HG=1;ENDIF;IF(HPG=1)THENHG_HH=1;ENDIF;IF(HPH=1)THENHH_HF=HFANDH_POSTION5HG)THEN-POSTIONFMOTOR21P5=1;ELSIF(HF_HG=1ANDH_POSTION5=HG)THEN-到达位置GMOTOR21P5=0;TILT_FGH=0;HF_HG=HGANDH_POSTION5HH)THEN-POSTIONGMOTOR21P5=1;ELSIF(HG_HH=1ANDH_POSTION5=HH)THEN-到达位置HMOTOR21P5=0;TILT_FGH=0;HG_HHHFANDH_POSTION5HH)THEN-POSTIONHMOTOR22P5=1;ELSIF(HH_HF=1ANDH_POSTION5=HF)THEN-到达位置FMOTOR22P5=0;TILT_FGH=0;,HH_HF=0;ENDIF;ENDIF;ENDIF;ENDIF;ENDPROCESSP5;-位置显示输出部分,P6:PROCESS(ADIVIDER,VPB,VPC,VPD,HPF,HPG,HPH)BEGINIF(VPB=1)THEN-位置BV_POS1=1;V_POS2=0;V_POS3=0;ENDIF;IF(VPC=1)THEN-位置CV_POS1=0;V_POS2=1;V_POS3=0;ENDIF;IF(VPD=1)THEN-位置D,V_POS1=0;V_POS2=0;V_POS3=1;ENDIF;IF(VPB=0ANDVPC=0ANDVPD=0)THEN-处于位置之间V_POS1=0;V_POS2=0;V_POS3=0;ENDIF;IF(HPF=1)THEN-角度FH_POS1=1;H_POS2=0;H_POS3=0;ENDIF;IF(HPG=1)THEN-角度GH_POS1=0;H_POS2=1;H_POS3=0;,ENDIF;IF(HPH=1)THEN-角度HH_POS1=0;H_POS2=0;H_POS3=1;ENDIF;IF(HPF=0ANDHPG=0ANDHPH=0)THEN-角度位置之间H_POS1=0;H_POS2=0;H_POS3DS_TIMEDS_TIMEDS_TIMEDS_TIMEDS_TIMEDS_TIMEDS_TIMEDS_TIME=01111111;-时间为其他,ENDCASE;DS_UNIT=10010010;-时间单位显示ENDPROCESSP6;-判断输出子进程P7:PROCESS(ADIVIDER)BEGINIF(ADCABCP2=000ORADCABCP5=000)THEN-通道0选择输出ADCABC00=000;,ELSIF(ADCABCP2=001ORADCABCP5=001)THEN-通道1选择输出ADCABC00=001;ENDIF;IF(ERROR0=0)THEN-D正常情况下输出IF(MOTOR11P2=1ORMOTOR11P5=1)THEN-水平马达正方向转动MOTOR11_OUT=1;ELSEMOTOR11_OUT=0;,ENDIF;IF(MOTOR12P2=1ORMOTOR12P5=1)THENMOTOR12_OUT=1;-水平马达反方向转动ELSEMOTOR12_OUT=0;ENDIF;IF(MOTOR21P2=1ORMOTOR21P5=1)THENMOTOR21_OUT=1;-翻转马达正方向转动ELSEMOTOR21_OUT=0;,ENDIF;IF(MOTOR22P2=1ORMOTOR22P5=1)THENMOTOR22_OUT=1;-翻转马达反方向转动ELSEMOTOR22_OUT=0;ENDIF;ELSIF(ERROR0=1)THEN-异常情况下对输出清零,MOTOR11_OUT=0;MOTOR12_OUT=0;MOTOR21_OUT=0;MOTOR22_OUT=0;ENDIF;ENDPROCESSP7;ENDARCHITECTUREART;,10.4系统仿真/硬件验证,10.4.1系统的有关仿真本系统是采用进程建模的方式进行程序设计的,整个程序比较长,输入输出接口比较多。为了方便仿真和结果分析,我们可将其中的有关进程单独抽出来,再加上相应的库、程序包的使用说明、实体说明,组成一个独立的程序(详见后述的OUTPUT.VHD)进行仿真和结果分析。图10.13(略)是判断输出模块OUTPUT的仿真图。,-OUPPUT.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYOUTPUTISPORT(CLKIN:INSTD_LOGIC;ADCABCP2,ADCABCP5:INSTD_LOGIC_VECTOR(2DOWNTO0);,ERROR0:INSTD_LOGIC;OPEN_CLOSE,TILT:INSTD_LOGIC;MOTOR11P2,MOTOR12P2,MOTOR21P2,MOTOR22P2:INSTD_LOGIC;MOTOR11P5,MOTOR12P5,MOTOR21P5,MOTOR22P5:INSTD_LOGIC;MOTOR11_OUT,MOTOR12_OUT:OUTSTD_LOGIC;MOTOR21_OUT,MOTOR22_OUT:OUTSTD_LOGIC;ADCABC00:OUTSTD_LOGIC_VECTOR(2DOWNTO0);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论