版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> SOPC/EDA綜合課程設(shè)計報告</p><p> 設(shè)計題目:車載DVD位控系統(tǒng)的設(shè)計 </p><p> 設(shè) 計 者: </p><p> 學(xué) 號: </p><p> 班 級: </p><p> 指導(dǎo)老師:
2、 </p><p><b> 完成時間: </b></p><p><b> 目 錄</b></p><p> 第一章 概 述 ·············
3、83;········· 1</p><p> 1.1 EDA技術(shù)的概念 ··················· 1</p&g
4、t;<p> 1.2硬件描述語言VHDL的介紹 ··············· 1</p><p> 1.3本選題的意義及國內(nèi)外發(fā)展狀況·········
5、183;··· 1</p><p> 第二章 系統(tǒng)的設(shè)計要求 ··················· 2</p><p> 第三章 系統(tǒng)的設(shè)計方案 ·
6、3;················· 5</p><p> 3.1 系統(tǒng)的總體結(jié)構(gòu)設(shè)計·············
7、···· 5</p><p> 3.2單元模塊的設(shè)計··················· 6</p><p> 3.2.1 分頻模塊FINI·
8、183;················ 6</p><p> 3.2.2 OPEN_CLOSE操作模塊OPEN_OP···········&
9、#183; 6</p><p> 3.2.3TILT操作模塊TILT_OP················6</p><p> 3.2.4位置判斷模塊POS_DIFF·····&
10、#183;········· 7</p><p> 3.2.5異常判斷及處理模塊ABN_DIFF············ 7</p><p> 3.2.6判斷輸出模塊OUTPUT
11、················ 8</p><p> 3.2.7時間及位置顯示模塊DISPLAY············ 9<
12、;/p><p> 第四章 主要VHDL源程序與仿真·················11</p><p> 4.1VHDL主要源程序·······
13、83;············ 11</p><p> 4.2系統(tǒng)仿真圖形··················
14、183;··· 20</p><p> 第五章 系統(tǒng)設(shè)計技巧與分析··················· 21</p><p> 第六章 設(shè)計心得體會·
15、83;···················· 22</p><p> 第七章 系統(tǒng)擴展思路··········&
16、#183;··········· 23</p><p> 參考文獻····················
17、;········24</p><p> 第一章 概 述</p><p> 1.1EDA技術(shù)的概念</p><p> EDA是電子設(shè)計自動化(Electronic Design Automation)的縮寫,在20世紀90年代初從計算機輔助設(shè)計(CAD)、計算機輔助制造(CA
18、M)、計算機輔助測試(CAT)和計算機輔助工程(CAE)的概念發(fā)展而來的。EDA技術(shù)就是以計算機為工具,設(shè)計者在EDA軟件平臺上,用硬件描述語言HDL完成設(shè)計文件,然后由計算機自動地完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局、布線和仿真,直至對于特定目標芯片的適配編譯、邏輯映射和編程下載等工作。 EDA技術(shù)的特點 利用EDA技術(shù)進行電子系統(tǒng)的設(shè)計,具有以下幾個特點:① 用軟件的方式設(shè)計硬件;② 用軟件方式設(shè)計的系統(tǒng)到硬件系統(tǒng)的轉(zhuǎn)換
19、是由有關(guān)的開發(fā)軟件自動完成的;③ 設(shè)計過程中可用有關(guān)軟件進行各種仿真;④ 系統(tǒng)可現(xiàn)場編程,在線升級;⑤ 整個系統(tǒng)可集成在一個芯片上,體積小、功耗低、可靠性高。</p><p> 1.2硬件描述語言(VHDL)</p><p><b> VHDL的介紹</b></p><p> VHDL(Very-High-Speed Integrated
20、 Circuit Hardware Description Language)主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式和描述風格與句法是十分類似于一般的計算機高級語言。VHDL的程序結(jié)構(gòu)特點是將一項工程設(shè)計,或稱設(shè)計實體(可以是一個元件,一個電路模塊或一個系統(tǒng))分成外部(或稱可是部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實體的內(nèi)部功能和算法完成部分。在對一個設(shè)計實體定義了外部
21、界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計就可以直接調(diào)用這個實體。這種將設(shè)計實體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計的基本。 </p><p> 1.3本選題的意義及國內(nèi)外發(fā)展狀況</p><p> 采用一片CPLD/FPGA設(shè)計一個車載移動DVD位移控制系統(tǒng)用于準確地控制液</p><p> 晶TFT顯示屏行走與翻轉(zhuǎn)的驅(qū)動馬達的運行時間及兩個馬達之間的配合
22、。 </p><p> 在國內(nèi)隨著汽車工業(yè)的快速發(fā)展和消費觀念的日新月異車載電子用品成為市場關(guān)注的熱點,作為高檔汽車用品的車載DVD日益受到時尚人士的青睞。與此同時中國的汽車市場依然保持增長2008年中國汽車銷售938萬輛2009年預(yù)計增長8.6%達到1019萬輛。與此同時中國汽車保有量逐年增長,2008年達到4900萬輛。在汽車行業(yè)帶動下中國車載DVD行業(yè)將有穩(wěn)定的增長空間。近年來車載DVD市場年銷售額
23、大約在50億元左右,預(yù)計為倆兩年市場增長率在10%上。在國外從微軟到Intel,從蘋果到HP,IT和消費電子呈現(xiàn)融合的趨勢這種融合的趨勢給了車載DVD一個更加廣闊的發(fā)展空間和更快的躍進速度。</p><p><b> 系統(tǒng)的設(shè)計要求</b></p><p> 根據(jù)某車載移動DVD產(chǎn)品機械操作分析結(jié)果的要求,具體設(shè)計如下:</p><p>
24、 1.OPEN_CLOSE操作:當系統(tǒng)測試到有一個OPEN_CLOSE高電平信號時,系統(tǒng)就驅(qū)動馬達1(MOTOR11端),顯示屏從機盒內(nèi)伸出,距離為142 mm,時間為3 s。水平移動到指定位置后,關(guān)斷馬達信號MOTOR11。</p><p> 2.自測向上翻轉(zhuǎn)操作(此操作只在正常開機或關(guān)機時使用):開機時顯示屏從機內(nèi)伸出,到達指定位置,從傳感器SENSOR1返回一信號,則開通信號MOTOR21,馬達運行時間為
25、3 s,向上翻轉(zhuǎn)110°,從傳感器SENSOR2返回的信號表明到達指定位置,切斷MOTOR21信號。開機過程完成。</p><p> 3.關(guān)機操作:當OPEN_CLOSE為低電平時,系統(tǒng)通過相應(yīng)的處理模塊檢測到顯示屏所在位置,然后做出相應(yīng)對策。向下翻轉(zhuǎn)至水平位置后,水平縮進機內(nèi)。</p><p> 4.角度調(diào)整與水平位置調(diào)整操作(TILT調(diào)節(jié)操作):如果TILT信號為高電平,
26、系統(tǒng)先測試其為高電平的時間寬度。若為2 s時,則調(diào)節(jié)水平位置,共三個位置,相鄰位置間隔為1.5 cm;若小于2 s時,則調(diào)節(jié)角度,共三個角度調(diào)節(jié)位置,相鄰角度大小為15°。 </p><p> 5.異常情況處理(異常情況就是在某一運行過程,由于人為地阻止顯示屏的正常移動,從而造成長時間的馬達過載異常):由實際情況進行判斷,如果是異常情況,則關(guān)斷馬達信號并報警出錯;等待OPEN_CLOSE低電平的到來,
27、然后返回機盒內(nèi)。 </p><p> 6.位置識別、異常情況判斷、狀態(tài)顯示、時間顯示:在系統(tǒng)對馬達進行驅(qū)動控制時,都要進行位置識別、異常情況判斷,并把檢測到的信號通過狀態(tài)顯示模塊處理輸出。在每一運行過程,輸出模塊均把此時的時間顯示出,最小時間單位為1 s。</p><p> 根據(jù)以上各種操作及要求,我們可得到各種操作的狀態(tài)轉(zhuǎn)換圖如圖1所示,系統(tǒng)的有關(guān)控制時序如圖2圖3所示。</
28、p><p><b> 圖 1</b></p><p><b> 圖 2</b></p><p> 圖 3 角度調(diào)整和水平位置調(diào)整控制時序圖</p><p> 圖2和圖3中的信號說明如下:</p><p> OPEN/CLOSE:外部開關(guān)操作輸入信號;</p&g
29、t;<p> TILT:角度調(diào)整和水平位置調(diào)整信號輸入端;</p><p> P00/ IC2.6,P01/IC2.5,P02/IC1.6,P03/IC1.5:驅(qū)動信號,高電平有效;</p><p> M1.1,M1.2:行走馬達控制信號,高電平有效,電壓為9 V;</p><p> M2.1,M2.2:翻轉(zhuǎn)馬達控制信號,高電平有效,電壓為9
30、V;</p><p> Sensor1,Sensor2:分別為行走馬達和翻轉(zhuǎn)馬達的返回電壓信號,系模擬信號。</p><p> 第三章 系統(tǒng)的設(shè)計方案</p><p> 3.1系統(tǒng)的總體結(jié)構(gòu)設(shè)計</p><p> 根據(jù)系統(tǒng)的設(shè)計要求,我們可得到移動DVD位控系統(tǒng)DVDWKXT的輸入和輸出接口如圖1所示。圖中的信號說明如下:</p
31、><p> CLKIN:外部時鐘端輸入,8 MHz晶振;</p><p> OPEN_CLOSE:外部開關(guān)操作輸入電平信號;</p><p> TILT:外部輸入位置調(diào)節(jié)信號;</p><p> DATA:8位傳感器返回數(shù)據(jù);</p><p> ADCABC00:傳感器通道選擇信號輸出;</p>&
32、lt;p> ADCCLK:模擬轉(zhuǎn)換器的時鐘信號;</p><p> EOC, OP, READ, WRITE:ADC0809的控制信號;</p><p> MOTOR11_OUT, MOTOR12_OUT, MOTOR21_OUT, MOTOR22_OUT:驅(qū)動馬達控制信號;</p><p> DS_TIME,DS_UNIT:時間及單位輸出信號;<
33、;/p><p> ERROR00,GOOD00:異常,正常輸出信號;</p><p> V_POS1, V_POS2, V_POS3:水平位置輸出信號;</p><p> H_POS1, H_POS2, H_POS3:角度位置輸出信號。 </p><p> 根據(jù)實際要求,上面的各個信號輸出為TTL標準電平,輸出電流約為5~10 mA
34、。</p><p> 圖1 DVDWKXT的輸入和輸出接口圖</p><p> 3.2單元模塊的設(shè)計</p><p> 經(jīng)過對系統(tǒng)的設(shè)計要求進行分析,我們可將整個系統(tǒng)分為6個模塊:分頻模塊FINI、OPEN_CLOSE操作模塊OPEN_OP、TILT操作模塊TILT_OP、位置判斷模塊POS_DIFF、異常判斷及處理模塊ABN_DIFF、判斷輸出模塊OUTP
35、UT、時間及位置顯示模塊DISPLAY。</p><p> 3.2.1 分頻模塊FINI</p><p> 分頻模塊FINI其功能為對外部輸入時鐘進行分頻,得到周期為1.5 ms計數(shù)器,并根據(jù)反饋信號TIME_S對計時器進行清零。其輸入輸出接口如圖3.2.1所示,圖中的CLKIN為外部時鐘輸入,TIME_S為定時器清零信號。</p><p> 圖3.2.1
36、 分頻模塊FINI輸入輸出接口圖</p><p> 3.2.2 OPEN_CLOSE操作模塊OPEN_OP</p><p> OPEN_CLOSE操作模塊OPEN_OP其功能為根據(jù)反饋的數(shù)據(jù)和相關(guān)的信號,做出具體的馬達控制輸出。其輸入輸出接口如圖3.2.2所示,圖中的信號TILT_BCD、TILT_FGH為從TILT模塊返回的控制信號,TIME_S是內(nèi)部計時器的清零信號,ERROR
37、0為異常警告信號。</p><p> 圖3.2.2 OPEN_CLOSE操作模塊OPEN_OP輸入輸出接口圖</p><p> 3.2.3 TILT操作模塊TILT_OP</p><p> TILT操作模塊TILT_OP其功能為根據(jù)反饋的數(shù)據(jù)和相應(yīng)的信號,做出具體的馬達控制輸出。其輸入輸出接口如圖3.2.3所示,圖中的信號TILT_BCD0、TILT_FG
38、H0為小范圍內(nèi)調(diào)整控制信號,ADCABCP5是ADC0809通道選通信號</p><p> 圖3.2.3 TILT操作模塊TILT_OP輸入輸出接口圖</p><p> 3.2.4 位置判斷模塊POS_DIFF</p><p> 位置判斷模塊POS_DIFF其功能為對每個周期內(nèi)的移動顯示屏的位置進行判斷,并把信號輸出。其輸入輸出接口如圖3.2.4所示,圖中的V
39、PA、VPB、VPC、VPD、HPE、HPF、HPG、HPH、VPAB、VPBC、VPCD、HPEF、HPFG、HPGH為輸出位信號。</p><p> 圖3.2.4 位置判斷模塊POS_DIFF輸入輸出接口圖</p><p> 3.2.5 異常判斷及處理模塊ABN_DIFF</p><p> 異常判斷及處理模塊ABN_DIFF其功能為在每一個周期內(nèi)對系統(tǒng)的運
40、行異常情況判斷,并把信號輸出。針對不同的位置,在相應(yīng)的操作里,設(shè)定的時間內(nèi),如沒有到達規(guī)定的位置,則判斷為異常,并關(guān)斷馬達的運行。其輸入輸出接口如圖3.2.5所示。</p><p> 圖3.2.5 異常判斷及處理模塊ABN_DIFF輸入輸出接口圖</p><p> 3.2.6 判斷輸出模塊OUTPUT</p><p> 判斷輸出模塊OUTPUT其功能為根據(jù)以
41、上模塊的各判斷輸出信號,進行再次判斷,并輸出到外部。由以上模塊進行操作,得到不同的信號,從而進行輸出控制;主要是針對模擬通道的選擇,以及對馬達1和馬達2的控制。其輸入輸出接口如圖3.2.6所示。 </p><p> 圖3.2.6 判斷輸出模塊OUTPUT輸入輸出接口圖</p><p> 3.2.7時間及位置顯示模塊DISPLAY</p><p> 時間及位置
42、顯示模塊DISPLAY其功能為對外顯示每一移動過程所用時間。其輸入輸出接口如圖3.2.7所示,圖中的DS_TIME、DS_UNIT為輸出時間及時間單位。由于輸出為TTL標準電平,因此外部需要附加七段碼驅(qū)動芯片,本設(shè)計擬用74ALS244。</p><p> 圖3.2.7時間及位置顯示模塊DISPLAY</p><p> 第四章 主要VHDL源程序與仿真</p><p
43、> 4.1 VHDL主要源程序</p><p> -- DVDWKXT.VHD</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> U
44、SE IEEE.STD_LOGIC_UNSIGNED.ALL; --定義一個實體</p><p> ENTITY DVDWKXT IS</p><p> PORT(CLKIN: IN STD_LOGIC; --外部時鐘輸入端</p><p> OPEN_CLOSE,TILT: IN STD_LOGIC;</p>
45、<p> DATA: IN STD_LOGIC_VECTOR(7 DOWNTO 0);--傳感器返回位置數(shù)據(jù)</p><p> ADCABC00: OUT STD_LOGIC_VECTOR(2 DOWNTO 0); </p><p> --選擇模擬轉(zhuǎn)換通道</p><p> ADCCLK: OUT STD_LOGIC;</p><
46、;p> EOC,READ,WRITE,OP: OUT STD_LOGIC; --ADC0809控制端</p><p> MOTOR11_OUT,MOTOR12_OUT: OUT STD_LOGIC;--馬達TTL電平控制端</p><p> MOTOR21_OUT,MOTOR22_OUT: OUT STD_LOGIC; --馬達TTL電平控制端</p>
47、<p> DS_TIME,DS_UNIT: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --顯示時間</p><p> ERROR00,GOOD00: OUT STD_LOGIC; --異常情況輸出端</p><p> V_POS1,V_POS2,V_POS3: OUT STD_LOGIC;--水平位置信號</p><
48、p> H_POS1,H_POS2,H_POS3: OUT STD_LOGIC);--翻轉(zhuǎn)角度信號</p><p> END ENTITY DVDWKXT;</p><p> ARCHITECTURE ART OF DVDWKXT IS</p><p> SIGNAL COUNT: STD_LOGIC_VECTOR(16 DOWNTO 0);--分
49、頻</p><p> SIGNAL TIME00: STD_LOGIC_VECTOR(12 DOWNTO 0);--計數(shù)器</p><p> SIGNAL V_POSTIONP2,H_POSTIONP2: STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> SIGNAL V_POSTIONP3,H_POSTIONP3: STD_LO
50、GIC_VECTOR(7 DOWNTO 0);</p><p> SIGNAL V_POSTIONP4,H_POSTIONP4: STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> SIGNAL V_POSTIONP5,H_POSTIONP5: STD_LOGIC_VECTOR(7 DOWNTO 0); </p><p> --上面四
51、個語句均為位置寄存器</p><p> SIGNAL ADIVIDER,TIME_S: STD_LOGIC;</p><p> SIGNAL MOTOR11P2,MOTOR12P2,MOTOR21P2,MOTOR22P2: STD_LOGIC;</p><p> SIGNAL MOTOR11P5,MOTOR12P5,MOTOR21P5,MOTOR22P5: S
52、TD_LOGIC; </p><p> SIGNAL MOTOR11P4,MOTOR12P4,MOTOR21P4,MOTOR22P4: STD_LOGIC;</p><p> SIGNAL ERROR0,GOOD0: STD_LOGIC; -- 異常情況寄存器</p><p> SIGNAL ADCABCP2,ADCABCP5:STD_LOGIC_VE
53、CTOR(2 DOWNTO 0); </p><p><b> --通道選擇寄存器</b></p><p> SIGNAL VPA,VPB,VPC,VPD: STD_LOGIC;--水平位置信號標志</p><p> SIGNAL HPE,HPF,HPG,HPH: STD_LOGIC; --角度位置標志</p>&
54、lt;p> SIGNAL VPAB,VPBC,VPCD: STD_LOGIC;</p><p> SIGNAL HPEF,HPFG,HPGH: STD_LOGIC;</p><p> SIGNAL TILT_BCD,TILT_FGH: STD_LOGIC; --TILT信號判斷標志</p><p> SIGNAL VC_VD,VD_VB,VB_VC
55、: STD_LOGIC;--位置常量標志</p><p> SIGNAL HF_HG,HG_HH,HH_HF: STD_LOGIC; --位置常量標志</p><p> CONSTANT VA: INTEGER :=20;</p><p> CONSTANT VB: INTEGER :=180;</p><p> CONSTAN
56、T VC: INTEGER :=210;</p><p> CONSTANT VD: INTEGER :=240;</p><p> CONSTANT HE: INTEGER :=20;</p><p> CONSTANT HF: INTEGER :=180;</p><p> CONSTANT HG: INTEGER :=210;&
57、lt;/p><p> CONSTANT HH: INTEGER :=240;</p><p> BEGIN --程序初始化</p><p> EOC<=ADIVIDER;</p><p> READ<=NOT(ADIVIDER);</p><p> WRIT
58、E<=NOT(ADIVIDER);</p><p> OP<=NOT(ADIVIDER);</p><p> ADCCLK<=NOT(ADIVIDER);</p><p> ERROR00<=ERROR0;</p><p> GOOD00<=GOOD0; </p><p> --
59、DIVIDER FREQUENCY 分頻子進程</p><p> P1:PROCESS(CLKIN) IS</p><p><b> BEGIN</b></p><p> IF(CLKIN'EVENT AND CLKIN='1')THEN</p><p> COUNT<=COUNT+
60、1;</p><p><b> END IF;</b></p><p> IF(COUNT="11111111111111111")THEN</p><p> ADIVIDER<='1';</p><p><b> ELSE </b></p&
61、gt;<p> ADIVIDER<='0';</p><p><b> END IF;</b></p><p> IF(TIME_S='1')THEN</p><p> IF(ADIVIDER='1')THEN </p><p> TIME00
62、<=TIME00+1;</p><p><b> END IF;</b></p><p> ELSIF(TIME_S='0')THEN --對計數(shù)器清零</p><p> TIME00<="0000000000000";</p><p><b&
63、gt; END IF;</b></p><p> END PROCESS P1;</p><p> --執(zhí)行OPEN_CLOSE操作</p><p> P2:PROCESS(ADIVIDER,OPEN_CLOSE,ERROR0,TILT) IS</p><p> VARIABLE V_POSTION2,H_POSTIO
64、N2:INTEGER RANGE 256 DOWNTO 1;</p><p><b> BEGIN</b></p><p> IF (OPEN_CLOSE='1' AND ERROR0='0' AND TILT_BCD='0' AND </p><p> TILT_FGH='0
65、9; AND GOOD0='0')THEN --正常情況下出盒</p><p> ADCABCP2<="000";</p><p> V_POSTIONP2<=DATA ;</p><p> V_POSTION2:=CONV_INTEGER(V_POSTIONP2);</p><p&g
66、t; IF(V_POSTION2>=VA AND V_POSTION2<VB AND ADCABCP2="000") THEN</p><p> MOTOR11P2<='1';</p><p><b> END IF;</b></p><p> IF(V_POSTION2>=V
67、B AND ADCABCP2="000")THEN</p><p> MOTOR11P2<='0';</p><p> ADCABCP2<="001";</p><p> TIME_S<='0';</p><p> H_POSTIONP2<
68、=DATA ;</p><p> H_POSTION2:=CONV_INTEGER(H_POSTIONP2);--水平出盒完成</p><p><b> END IF;</b></p><p> IF(H_POSTION2>=HE AND H_POSTION2<HF AND ADCABCP2="001")
69、THEN</p><p> MOTOR21P2<='1';--向上翻轉(zhuǎn)</p><p><b> END IF;</b></p><p> IF(H_POSTION2>=HF AND ADCABCP2="001")THEN</p><p> MOTOR
70、21P2<='0';</p><p> TIME_S<='0';</p><p> GOOD0<='1';</p><p> END IF; --出盒操作完成</p><p><b> END IF;</b></p><p
71、> IF(OPEN_CLOSE='0' AND ERROR0='0' AND TILT_BCD='0' AND</p><p> TILT_FGH='0' AND GOOD0='1')THEN--回盒條件成立</p><p> ADCABCP2<="001";&l
72、t;/p><p> H_POSTIONP2<=DATA;</p><p> H_POSTION2:=CONV_INTEGER(H_POSTIONP2);</p><p> IF(H_POSTION2>HE AND H_POSTION2<=HH AND ADCABCP2="001")THEN</p><p&g
73、t; MOTOR22P2<='1';</p><p><b> END IF ;</b></p><p> IF(H_POSTION2<=HE AND ADCABCP2="001")THEN --向下翻轉(zhuǎn)</p><p> MOTOR22P2<='0';</
74、p><p> TIME_S<='0';</p><p> ADCABCP2<="000";</p><p> V_POSTIONP2<=DATA;</p><p> V_POSTION2:=CONV_INTEGER(V_POSTIONP2);</p><p>&
75、lt;b> END IF;</b></p><p> IF(V_POSTION2>VA AND V_POSTION2<=VD AND ADCABCP2="000")THEN</p><p> MOTOR12P2<='1'; --水平回盒</p><p><b&g
76、t; END IF;</b></p><p> IF(V_POSTION2<=VA AND ADCABCP2="000")THEN</p><p> MOTOR12P2<='0';</p><p> TIME_S<='0';</p><p> GOOD
77、0<='0';</p><p><b> END IF ;</b></p><p><b> END IF ;</b></p><p> END PROCESS P2;</p><p><b> --位置判斷子進程</b></p>&
78、lt;p> P3:PROCESS(ADIVIDER) IS</p><p> VARIABLE V_POSTION3,H_POSTION3:INTEGER RANGE 256 DOWNTO 1;</p><p><b> BEGIN</b></p><p> IF(ADCABCP2="000" OR ADCAB
79、CP5="000")THEN</p><p> V_POSTIONP3<=DATA;</p><p> V_POSTION3:=CONV_INTEGER(V_POSTIONP3);</p><p> IF(V_POSTION3<=VA)THEN --在盒內(nèi)狀態(tài)</p><p> VPA
80、<='1'; VPB<='0'; VPC<='0'; VPD<='0'; </p><p> VPAB<='0'; VPBC<='0'; VPCD<='0';</p><p> ELSIF(V_POSTION3>
81、;VA AND V_POSTION3<VB)THEN --出盒中間位置</p><p> VPA<='0'; VPB<='0'; VPC<='0'; VPD<='0'; </p><p> VPAB<='1'; VPBC<='0';
82、 VPCD<='0';</p><p> ELSIF(V_POSTION3=VB)THEN --水平位置B</p><p> VPA<='0'; VPB<='1'; VPC<='0'; VPD<='0'; </p><p>
83、 VPAB<='0'; VPBC<='0'; VPCD<='0';</p><p> ELSIF(V_POSTION3>VB AND V_POSTION3<VC)THEN --水平位置BC之間</p><p> VPA<='0'; VPB<='0
84、39;; VPC<='0'; VPD<='0'; </p><p> VPAB<='0'; VPBC<='1'; VPCD<='0';</p><p> ELSIF(V_POSTION3=VC)THEN --水平位置C </p><
85、p> VPA<='0'; VPB<='0'; VPC<='1'; VPD<='0';</p><p> VPAB<='0'; VPBC<='0'; VPCD<='0';</p><p> ELSIF(V_
86、POSTION3>VC AND V_POSTION3<VD)THEN --水平位置CD之間</p><p> VPA<='0'; VPB<='0'; VPC<='0'; VPD<='0'; </p><p> VPAB<='0'; VPBC&l
87、t;='0'; VPCD<='1';</p><p> ELSIF(V_POSTION3>=VD)THEN --水平位置D</p><p> VPA<='0'; VPB<='0'; VPC<='0'; VPD<='1'; <
88、/p><p> VPAB<='0'; VPBC<='0'; VPCD<='0';</p><p><b> END IF;</b></p><p><b> END IF ;</b></p><p> IF(ADCABCP
89、2="001" OR ADCABCP5="001")THEN</p><p> H_POSTIONP3<=DATA ;</p><p> H_POSTION3:=CONV_INTEGER(H_POSTIONP3);</p><p> IF(H_POSTION3<=HE)THEN --翻轉(zhuǎn)位置E
90、</p><p> HPE<='1'; HPF<='0'; HPG<='0'; HPH<='0';</p><p> HPEF<='0'; HPFG<='0'; HPGH<='0';</p><p>
91、; ELSIF(H_POSTION3>HE AND H_POSTION3<HF)THEN --角度位置E、F之間</p><p> HPE<='0'; HPF<='0'; HPG<='0'; HPH<='0';</p><p> HPEF<='1';
92、 HPFG<='0'; HPGH<='0';</p><p> ELSIF(H_POSTION3=HF)THEN --角度位置F</p><p> HPE<='0'; HPF<='1'; HPG<='0'; HPH<=&
93、#39;0';</p><p> HPEF<='0'; HPFG<='0'; HPGH<='0';</p><p> ELSIF(H_POSTION3>HF AND H_POSTION3<HG)THEN --角度位置F、H之間</p><p> HPE<='
94、;0'; HPF<='0'; HPG<='0'; HPH<='0';</p><p> HPEF<='0'; HPFG<='1'; HPGH<='0';</p><p> ELSIF(H_POSTION3=HG)THEN --
95、角度位置H </p><p> HPE<='0'; HPF<='0'; HPG<='1'; HPH<='0';</p><p> HPEF<='0'; HPFG<='0'; HPGH<='0';</
96、p><p> ELSIF(H_POSTION3>HG AND H_POSTION3<HH)THEN --角度位置G、H之間</p><p> HPE<='0'; HPF<='0'; HPG<='0'; HPH<='0';</p><p> HPEF<
97、;='0'; HPFG<='0'; HPGH<='1';</p><p> ELSIF(H_POSTION3=HH)THEN --角度位置H</p><p> HPE<='0'; HPF<='0'; HPG<='0'; HPH<=&
98、#39;1';</p><p> HPEF<='0'; HPFG<='0'; HPGH<='0';</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p>
99、 END PROCESS P3;</p><p><b> --異常判斷子程序</b></p><p> P4:PROCESS(ADIVIDER) IS</p><p> VARIABLE V_POSTION4,H_POSTION4:INTEGER RANGE 256 DOWNTO 1;</p><p><
100、b> BEGIN</b></p><p> IF(ADCABCP2="000" OR ADCABCP5="000") THEN --水平位置</p><p> V_POSTIONP4<=DATA ;</p><p> V_POSTION4:=CONV_INTEGER(V_POSTIONP
101、4);</p><p> IF((MOTOR11P2='1' OR MOTOR12P2='1' </p><p> OR MOTOR11P5='1' OR MOTOR12P5='1')</p><p> AND CONV_INTEGER(TIME00)>=4000 </p>&
102、lt;p> AND (V_POSTION4>VA AND V_POSTION4<VB))THEN</p><p> ERROR0<='1'; --出盒或進盒過程中出錯</p><p> MOTOR11P4<='0';</p><p> MOTOR12P4<='0';</
103、p><p><b> END IF;</b></p><p> IF((MOTOR11P2='1' OR MOTOR12P2='1'</p><p> OR MOTOR11P5='1' OR MOTOR12P5='1') </p><p> AND CO
104、NV_INTEGER(TIME00)>=2666</p><p> AND (VPB='0' AND VPC='0' AND VPD='0'))THEN</p><p> ERROR0<='1'; --水平位置調(diào)節(jié)時出錯</p><p> MOTOR11P4<=&
105、#39;0';</p><p> MOTOR12P4<='0';</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> IF(ADCABCP2="001" OR ADCABCP5
106、="001")THEN</p><p> H_POSTIONP4<=DATA ;</p><p> H_POSTION4:=CONV_INTEGER(H_POSTIONP4);</p><p> IF(((MOTOR21P2='1' OR MOTOR22P2='1') </p><p
107、> OR (MOTOR21P5='1' OR MOTOR22P5='1'))</p><p> AND CONV_INTEGER(TIME00)>=4000 </p><p> AND (H_POSTION4>HE AND H_POSTION4<HF))THEN </p><p> ERROR0<
108、='1'; --大角度翻轉(zhuǎn)時出錯</p><p> MOTOR21P4<='0';</p><p> MOTOR22P4<='0';</p><p><b> END IF;</b></p><p> IF(((MOTOR21P2='
109、;1' AND MOTOR22P2='1' )OR </p><p> (MOTOR21P5='1' OR MOTOR22P5='1')) AND</p><p> ((CONV_INTEGER(TIME00)>=2666) AND</p><p> (HPF='0' AND HPG
110、='0' AND HPH='0')))THEN </p><p> ERROR0<='1'; --角度調(diào)節(jié)時出錯</p><p> MOTOR21P4<='0';</p><p> MOTOR22P4<='0';</p><p&g
111、t;<b> END IF;</b></p><p><b> END IF;</b></p><p> IF(ERROR0='1' AND CONV_INTEGER(TIME00)>=4000)THEN</p><p> ERROR0<='0';</p>
112、<p><b> END IF;</b></p><p> END PROCESS P4;</p><p> --TILT操作執(zhí)行</p><p> P5:PROCESS(ADIVIDER,TILT,OPEN_CLOSE) IS</p><p> VARIABLE V_POSTION5,H_POSTI
113、ON5:INTEGER RANGE 256 DOWNTO 1;</p><p><b> BEGIN</b></p><p> IF(OPEN_CLOSE='1' AND GOOD0='1' AND ERROR0='0')THEN--是否正常</p><p> IF(TILT='1
114、' AND CONV_INTEGER(TIME00)>=2666 )THEN --是否是位置調(diào)節(jié)</p><p> ADCABCP5<="000";</p><p> V_POSTIONP5<=DATA ;</p><p> V_POSTION5:=CONV_INTEGER(V_POSTIONP5);</
115、p><p> TILT_BCD<='1';</p><p> ELSIF(TILT='1' AND CONV_INTEGER(TIME00)<2666)THEN --是否是角度調(diào)節(jié)</p><p> ADCABCP5<="001";</p><p> H_POSTI
116、ONP5<=DATA;</p><p> H_POSTION5:=CONV_INTEGER(H_POSTIONP5);</p><p> TILT_FGH<='1';</p><p><b> END IF;</b></p><p> IF(TILT='0')THEN&
117、lt;/p><p> IF(ADCABCP5="000" AND TILT_BCD='1')THEN --判斷方向</p><p> IF(VPC='1')THEN --從位置C到位置D</p><p> VC_VD<='1';</p><p><b&
118、gt; END IF;</b></p><p> IF(VPD='1')THEN --從位置D到位置C</p><p> VD_VB<='1';</p><p><b> END IF;</b></p><p> IF(VPB='1')TH
119、EN --從位置B到位置C</p><p> VB_VC<='1';</p><p><b> END IF;</b></p><p> IF(VC_VD='1' AND V_POSTION5>=VC AND V_POSTION5<VD)THEN </p><p
120、> MOTOR11P5<='1';</p><p> ELSIF(VC_VD='1' AND V_POSTION5=VD)THEN --到達位置D</p><p> MOTOR11P5<='0';</p><p> TILT_BCD<='0';</p>
121、<p> VC_VD<='0';</p><p><b> END IF ;</b></p><p> IF(VD_VB='1' AND V_POSTION5>VB AND V_POSTION5<=VD) THEN --POSTION D</p><p> MOTOR12
122、P5<='1';</p><p> ELSIF(VC_VD='1' AND V_POSTION5=VB)THEN --到達位置B</p><p> MOTOR12P5<='0';</p><p> TILT_BCD<='0';</p><p> V
123、D_VB<='0';</p><p><b> END IF ;</b></p><p> IF(VB_VC='1' AND V_POSTION5>=VB AND V_POSTION5<VC) THEN </p><p> --POSTION B</p><p>
124、 MOTOR11P5<='1';</p><p> ELSIF(VC_VD='1' AND V_POSTION5=VC)THEN --到達位置C </p><p> MOTOR11P5<='0';</p><p> TILT_BCD<='0';</p>
125、<p> VC_VD<='0';</p><p><b> END IF ;</b></p><p><b> END IF;</b></p><p> IF(ADCABCP5="001" AND TILT_FGH='1')THEN <
126、/p><p> --DIFFERENT X TO Y</p><p> IF(HPF='1')THEN </p><p> HF_HG<='1';</p><p><b> END IF;</b></p><p> IF(HPG='1'
127、;)THEN</p><p> HG_HH<='1';</p><p><b> END IF;</b></p><p> IF(HPH='1')THEN</p><p> HH_HF<='1';</p><p><b>
128、; END IF;</b></p><p> IF(HF_HG='1' AND H_POSTION5>=HF AND H_POSTION5<HG) THEN --POSTION F</p><p> MOTOR21P5<='1';</p><p> ELSIF(HF_HG='1'
129、 AND H_POSTION5=HG)THEN --到達位置G</p><p> MOTOR21P5<='0';</p><p> TILT_FGH<='0';</p><p> HF_HG<='0';</p><p><b> END IF;</
130、b></p><p> IF(HG_HH='1' AND H_POSTION5>=HG AND H_POSTION5<HH) THEN --POSTION G</p><p> MOTOR21P5<='1';</p><p> ELSIF(HG_HH='1' AND H_POSTION
131、5=HH)THEN --到達位置H</p><p> MOTOR21P5<='0';</p><p> TILT_FGH<='0';</p><p> HG_HH<='0';</p><p><b> END IF;</b></p>
132、;<p> IF(HH_HF='1' AND H_POSTION5>HF AND H_POSTION5<HH) THEN</p><p> --POSTION H</p><p> MOTOR22P5<='1';</p><p> ELSIF(HH_HF='1' AND H_PO
133、STION5=HF)THEN --到達位置F</p><p> MOTOR22P5<='0';</p><p> TILT_FGH<='0';</p><p> HH_HF<='0';</p><p><b> END IF;</b><
134、/p><p><b> END IF;</b></p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS P5;</p><p> --位置顯示輸出部分 </
135、p><p> P6:PROCESS(ADIVIDER,VPB,VPC,VPD,HPF,HPG,HPH)</p><p><b> BEGIN</b></p><p> IF(VPB='1')THEN --位置B</p><p> V_POS1<='1'; V_PO
136、S2<='0'; V_POS3<='0';</p><p><b> END IF;</b></p><p> IF(VPC='1')THEN --位置C</p><p> V_POS1<='0'; V_POS2<='1'
137、;; V_POS3<='0';</p><p><b> END IF;</b></p><p> IF(VPD='1')THEN --位置D</p><p> V_POS1<='0'; V_POS2<='0'; V_PO
138、S3<='1';</p><p><b> END IF;</b></p><p> IF(VPB='0' AND VPC='0' AND VPD='0')THEN --處于位置之間</p><p> V_POS1<='0'; V_POS2&l
139、t;='0'; V_POS3<='0';</p><p><b> END IF;</b></p><p> IF(HPF='1')THEN --角度F</p><p> H_POS1<='1'; H_POS2<='0' ; H
140、_POS3<='0';</p><p><b> END IF;</b></p><p> IF(HPG='1')THEN --角度G</p><p> H_POS1<='0'; H_POS2<='1' ; H_POS3<='0&
141、#39;;</p><p><b> END IF;</b></p><p> IF(HPH='1')THEN --角度H</p><p> H_POS1<='0'; H_POS2<='0' ; H_POS3<='1';</p&
142、gt;<p><b> END IF;</b></p><p> IF(HPF='0' AND HPG='0' AND HPH='0')THEN --角度位置之間</p><p> H_POS1<='0'; H_POS2<='0
143、39; ; H_POS3<='0';</p><p><b> END IF;</b></p><p> CASE (CONV_INTEGER(TIME00)) IS</p><p> WHEN 0000 => DS_TIME<="11000000"; --時間為0
144、s</p><p> WHEN 0666 => DS_TIME<="11111001"; --時間為1 s</p><p> WHEN 1332 => DS_TIME<="10100100"; --時間為2 s</p><p> WHEN 2000 => D
145、S_TIME<="10110000"; --時間為3 s</p><p> WHEN 2664 => DS_TIME<="10011001"; --時間為4 s</p><p> WHEN 3330 => DS_TIME<="10010010"; --時間為5
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- sopceda綜合課程設(shè)計報告---綜合計時系統(tǒng)
- sopceda綜合課程設(shè)計---出租車計費系統(tǒng)設(shè)計
- sopceda綜合課程設(shè)計---1616的點陣顯示設(shè)計
- sopceda綜合課程設(shè)計報告---智力搶答器
- 車載DVD系統(tǒng)設(shè)計.pdf
- 檢測系統(tǒng)綜合課程設(shè)計--液位測控系統(tǒng)的設(shè)計
- sopceda綜合課程設(shè)計--等精度數(shù)字頻率計的設(shè)計
- 光控課程設(shè)計---光控系統(tǒng)的設(shè)計
- 電子綜合課程設(shè)計報告-自動光控路燈系統(tǒng)設(shè)計
- 觸控延時開關(guān)綜合課程設(shè)計
- 水溫恒控系統(tǒng)課程設(shè)計
- 液位控制系統(tǒng)設(shè)計課程設(shè)計
- 通信系統(tǒng)綜合課程設(shè)計
- 綜合布線系統(tǒng)課程設(shè)計
- 機電系統(tǒng)綜合課程設(shè)計
- 鍋爐液位調(diào)節(jié)系統(tǒng)課程設(shè)計
- 液位升降控制系統(tǒng)設(shè)計課程設(shè)計
- 課程設(shè)計報告-液位控制系統(tǒng)設(shè)計
- 大型綜合布線系統(tǒng)設(shè)計課程設(shè)計
- 課程設(shè)計報告----光控自動照明系統(tǒng)設(shè)計
評論
0/150
提交評論