版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rè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ā)展?fàn)顩r·········
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)擴(kuò)展思路··········&
16、#183;··········· 23</p><p> 參考文獻(xiàn)····················
17、;········24</p><p> 第一章 概 述</p><p> 1.1EDA技術(shù)的概念</p><p> EDA是電子設(shè)計自動化(Electronic Design Automation)的縮寫,在20世紀(jì)90年代初從計算機(jī)輔助設(shè)計(CAD)、計算機(jī)輔助制造(CA
18、M)、計算機(jī)輔助測試(CAT)和計算機(jī)輔助工程(CAE)的概念發(fā)展而來的。EDA技術(shù)就是以計算機(jī)為工具,設(shè)計者在EDA軟件平臺上,用硬件描述語言HDL完成設(shè)計文件,然后由計算機(jī)自動地完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局、布線和仿真,直至對于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。 EDA技術(shù)的特點 利用EDA技術(shù)進(jìn)行電子系統(tǒng)的設(shè)計,具有以下幾個特點:① 用軟件的方式設(shè)計硬件;② 用軟件方式設(shè)計的系統(tǒng)到硬件系統(tǒng)的轉(zhuǎn)換
19、是由有關(guān)的開發(fā)軟件自動完成的;③ 設(shè)計過程中可用有關(guān)軟件進(jì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的語言形式和描述風(fēng)格與句法是十分類似于一般的計算機(jī)高級語言。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ā)展?fàn)顩r</p><p> 采用一片CPLD/FPGA設(shè)計一個車載移動DVD位移控制系統(tǒng)用于準(zhǔn)確地控制液</p><p> 晶TFT顯示屏行走與翻轉(zhuǎn)的驅(qū)動馬達(dá)的運行時間及兩個馬達(dá)之間的配合
22、。 </p><p> 在國內(nèi)隨著汽車工業(yè)的快速發(fā)展和消費觀念的日新月異車載電子用品成為市場關(guān)注的熱點,作為高檔汽車用品的車載DVD日益受到時尚人士的青睞。與此同時中國的汽車市場依然保持增長2008年中國汽車銷售938萬輛2009年預(yù)計增長8.6%達(dá)到1019萬輛。與此同時中國汽車保有量逐年增長,2008年達(dá)到4900萬輛。在汽車行業(yè)帶動下中國車載DVD行業(yè)將有穩(wěn)定的增長空間。近年來車載DVD市場年銷售額
23、大約在50億元左右,預(yù)計為倆兩年市場增長率在10%上。在國外從微軟到Intel,從蘋果到HP,IT和消費電子呈現(xiàn)融合的趨勢這種融合的趨勢給了車載DVD一個更加廣闊的發(fā)展空間和更快的躍進(jìn)速度。</p><p><b> 系統(tǒng)的設(shè)計要求</b></p><p> 根據(jù)某車載移動DVD產(chǎn)品機(jī)械操作分析結(jié)果的要求,具體設(shè)計如下:</p><p>
24、 1.OPEN_CLOSE操作:當(dāng)系統(tǒng)測試到有一個OPEN_CLOSE高電平信號時,系統(tǒng)就驅(qū)動馬達(dá)1(MOTOR11端),顯示屏從機(jī)盒內(nèi)伸出,距離為142 mm,時間為3 s。水平移動到指定位置后,關(guān)斷馬達(dá)信號MOTOR11。</p><p> 2.自測向上翻轉(zhuǎn)操作(此操作只在正常開機(jī)或關(guān)機(jī)時使用):開機(jī)時顯示屏從機(jī)內(nèi)伸出,到達(dá)指定位置,從傳感器SENSOR1返回一信號,則開通信號MOTOR21,馬達(dá)運行時間為
25、3 s,向上翻轉(zhuǎn)110°,從傳感器SENSOR2返回的信號表明到達(dá)指定位置,切斷MOTOR21信號。開機(jī)過程完成。</p><p> 3.關(guān)機(jī)操作:當(dāng)OPEN_CLOSE為低電平時,系統(tǒng)通過相應(yīng)的處理模塊檢測到顯示屏所在位置,然后做出相應(yīng)對策。向下翻轉(zhuǎn)至水平位置后,水平縮進(jìn)機(jī)內(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.異常情況處理(異常情況就是在某一運行過程,由于人為地阻止顯示屏的正常移動,從而造成長時間的馬達(dá)過載異常):由實際情況進(jìn)行判斷,如果是異常情況,則關(guān)斷馬達(dá)信號并報警出錯;等待OPEN_CLOSE低電平的到來,
27、然后返回機(jī)盒內(nèi)。 </p><p> 6.位置識別、異常情況判斷、狀態(tài)顯示、時間顯示:在系統(tǒng)對馬達(dá)進(jìn)行驅(qū)動控制時,都要進(jìn)行位置識別、異常情況判斷,并把檢測到的信號通過狀態(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:行走馬達(dá)控制信號,高電平有效,電壓為9 V;</p><p> M2.1,M2.2:翻轉(zhuǎn)馬達(dá)控制信號,高電平有效,電壓為9
30、V;</p><p> Sensor1,Sensor2:分別為行走馬達(dá)和翻轉(zhuǎn)馬達(dá)的返回電壓信號,系模擬信號。</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ū)動馬達(dá)控制信號;</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標(biāo)準(zhǔn)電平,輸出電流約為5~10 mA
34、。</p><p> 圖1 DVDWKXT的輸入和輸出接口圖</p><p> 3.2單元模塊的設(shè)計</p><p> 經(jīng)過對系統(tǒng)的設(shè)計要求進(jìn)行分析,我們可將整個系統(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其功能為對外部輸入時鐘進(jìn)行分頻,得到周期為1.5 ms計數(shù)器,并根據(jù)反饋信號TIME_S對計時器進(jìn)行清零。其輸入輸出接口如圖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)的信號,做出具體的馬達(dá)控制輸出。其輸入輸出接口如圖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)的信號,做出具體的馬達(dá)控制輸出。其輸入輸出接口如圖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)的移動顯示屏的位置進(jìn)行判斷,并把信號輸出。其輸入輸出接口如圖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),如沒有到達(dá)規(guī)定的位置,則判斷為異常,并關(guān)斷馬達(dá)的運行。其輸入輸出接口如圖3.2.5所示。</p><p> 圖3.2.5 異常判斷及處理模塊ABN_DIFF輸入輸出接口圖</p><p> 3.2.6 判斷輸出模塊OUTPUT</p><p> 判斷輸出模塊OUTPUT其功能為根據(jù)以
41、上模塊的各判斷輸出信號,進(jìn)行再次判斷,并輸出到外部。由以上模塊進(jìn)行操作,得到不同的信號,從而進(jìn)行輸出控制;主要是針對模擬通道的選擇,以及對馬達(dá)1和馬達(dá)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標(biāo)準(zhǔn)電平,因此外部需要附加七段碼驅(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;--馬達(dá)TTL電平控制端</p><p> MOTOR21_OUT,MOTOR22_OUT: OUT STD_LOGIC; --馬達(dá)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;--水平位置信號標(biāo)志</p><p> SIGNAL HPE,HPF,HPG,HPH: STD_LOGIC; --角度位置標(biāo)志</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信號判斷標(biāo)志</p><p> SIGNAL VC_VD,VD_VB,VB_VC
55、: STD_LOGIC;--位置常量標(biāo)志</p><p> SIGNAL HF_HG,HG_HH,HH_HF: STD_LOGIC; --位置常量標(biāo)志</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 分頻子進(jìn)程</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> --位置判斷子進(jìn)程</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'; --出盒或進(jìn)盒過程中出錯</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á)位置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 --到達(dá)位置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 --到達(dá)位置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 --到達(dá)位置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 --到達(dá)位置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 --到達(dá)位置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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 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è)計
- 機(jī)電系統(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
提交評論