版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 摘 要</b></p><p> 電梯是標(biāo)志現(xiàn)代物質(zhì)文明的垂直運(yùn)輸工具、是機(jī)—電一體化的復(fù)雜運(yùn)輸設(shè)備。它涉及電子技術(shù)、機(jī)械工程、電力電子技術(shù)、微機(jī)技術(shù)、電力拖動(dòng)系統(tǒng)和土建工程等多個(gè)科學(xué)領(lǐng)域。目前電梯的生產(chǎn)情況和使用數(shù)量已成為一個(gè)國(guó)家現(xiàn)代化程度的標(biāo)志之一。隨著現(xiàn)代化城市的高速發(fā)展,每天都有大量人流及物流需要輸送。為節(jié)約用地和適應(yīng)經(jīng)貿(mào)事業(yè)的發(fā)展,一幢幢高樓拔地而
2、起,這些高層建筑的垂直運(yùn)輸是一個(gè)突出問(wèn)題,與人們的工作和生活緊密相關(guān)。</p><p> 隨著社會(huì)的發(fā)展,電梯的使用越來(lái)越普遍,已從原來(lái)只在商業(yè)大廈、賓館使用,過(guò)渡到在辦公樓、居民樓等場(chǎng)所使用,并且對(duì)電梯功能的要求也不斷提高,相應(yīng)地其控制方式也在不停地發(fā)生變化。對(duì)于電梯的控制,傳統(tǒng)的方法是使用繼電器—接觸器控制系統(tǒng)進(jìn)行控制,隨著技術(shù)的不斷發(fā)展,微型計(jì)算機(jī)在電梯控制上的應(yīng)用日益廣泛,現(xiàn)在已進(jìn)入全微機(jī)化控制的時(shí)代。
3、</p><p> 而電梯的核心是電梯控制器,電梯控制器的實(shí)現(xiàn)也有多種方式,諸如PLC,單片機(jī),等等.在以前的電梯控制器設(shè)計(jì)中,大部分都是采用PLC來(lái)實(shí)現(xiàn),但是PLC是基于外圍的硬件實(shí)現(xiàn)電梯的控制,這樣的設(shè)計(jì)很難實(shí)現(xiàn)電梯的智能化,要實(shí)現(xiàn)電梯的智能化,就得選用其他的設(shè)計(jì)方法完成對(duì)電梯控制器的設(shè)計(jì),而采用硬件描述語(yǔ)言來(lái)完成電梯控制器的設(shè)計(jì),就能很容易的實(shí)現(xiàn)電梯的智能.</p><p> 關(guān)
4、鍵字:電梯控制器,CPLD,VHDL狀態(tài)機(jī)</p><p><b> 目錄</b></p><p><b> 摘 要1</b></p><p> 第一章 前言3</p><p> 1.1 問(wèn)題的提出3</p><p> 1.2 設(shè)計(jì)的目的3</
5、p><p> 1.3 課題的主要工作4</p><p> 第二章 電梯控制器的CPLD實(shí)現(xiàn)5</p><p> 2.1 電梯控制器的流程5</p><p> 2.2 硬件描述語(yǔ)言HDL的現(xiàn)狀與發(fā)展6</p><p> 2.2.1 目前HDL發(fā)展?fàn)顩r6</p><p> 2.2.
6、2 各種HDL語(yǔ)言的體系結(jié)構(gòu)和設(shè)計(jì)方法6</p><p> 第三章 設(shè)計(jì)依據(jù)8</p><p> 3.1 EDA技術(shù)介紹8</p><p> 3.2 VHDL簡(jiǎn)介9</p><p> 3.2.1 VHDL概述9</p><p> 3.2.2. VHDL的特點(diǎn)9</p><
7、p> 3.2.3. VHDL的基本結(jié)構(gòu)10</p><p> 第四章 程序設(shè)計(jì)與調(diào)試20</p><p> 4.1程序設(shè)計(jì)說(shuō)明20</p><p> 4.1.1端口、寄存器設(shè)計(jì)說(shuō)明20</p><p> 4.1.2模塊設(shè)計(jì)說(shuō)明21</p><p> 4.1.3具體語(yǔ)句設(shè)計(jì)說(shuō)明23&
8、lt;/p><p> 4.2程序調(diào)試27</p><p> 4.3 RTL圖 見(jiàn)附錄Ⅱ27</p><p> 4.4程序仿真與分析27</p><p> 第五章 設(shè)計(jì)總結(jié)29</p><p><b> 心得體會(huì)30</b></p><p><b
9、> 參考文獻(xiàn)31</b></p><p><b> 附錄Ⅰ32</b></p><p><b> 附錄Ⅱ40</b></p><p><b> 第一章 前言</b></p><p><b> 1.1 問(wèn)題的提出</b>
10、;</p><p> 人和土地資源短缺的矛盾日趨激化,我國(guó)地少人多的國(guó)情,注定了我們必須合理解決人與土地的矛盾。興建高層建筑是其中的有效措施之一,隨之樓層電梯業(yè)便應(yīng)運(yùn)而生。隨著我國(guó)城鎮(zhèn)化程度的加大,電梯市場(chǎng)越來(lái)越繁華,人們對(duì)電梯的要求越來(lái)越高。如何更安全、更快捷地到達(dá)目的樓層,也就成為了人們對(duì)電梯的最為根本的要求。因此,本設(shè)計(jì)就九層電梯控制器設(shè)計(jì)為例,結(jié)合EDA技術(shù),對(duì)電梯控制進(jìn)行設(shè)計(jì)。</p>
11、<p><b> 1.2 設(shè)計(jì)的目的</b></p><p> 針對(duì)我國(guó)樓層層數(shù)的基本水平,本著“一理通,百理明”的原則,本設(shè)計(jì)希望通過(guò)簡(jiǎn)單的九層電梯控制器的設(shè)計(jì),為廣大電梯設(shè)計(jì)者提供一個(gè)基礎(chǔ)。針對(duì)目前中小型電梯所能實(shí)現(xiàn)的功能,本控制器虛擬實(shí)現(xiàn)以下功能:</p><p> 設(shè)計(jì)一個(gè)多層單橋廂電梯控制器,該控制器可完成9個(gè)樓層的載客服務(wù)。</p&g
12、t;<p> 每層電梯入口均設(shè)有電梯上、下運(yùn)行請(qǐng)求開(kāi)關(guān),橋廂內(nèi)設(shè)有樓層選擇開(kāi)關(guān),供乘客自由選擇電梯運(yùn)行方向或所有到達(dá)的樓層;</p><p> 電梯運(yùn)行遵循方向優(yōu)先原則:當(dāng)電梯處于上升模式時(shí),只響應(yīng)比電梯所在位置高的上樓請(qǐng)求信號(hào),由上而下逐個(gè)執(zhí)行,直到最后一個(gè)上樓請(qǐng)求信號(hào)如更高層有下樓請(qǐng)求,則直接上升到又下樓請(qǐng)求的最高層,然后進(jìn)入下降模式,當(dāng)電梯處于下降模式時(shí),運(yùn)行規(guī)則則與上升模式剛好相反;&l
13、t;/p><p> 電梯具備提前關(guān)門(mén)和延時(shí)關(guān)門(mén)功能,可根據(jù)乘客的請(qǐng)求進(jìn)行時(shí)間調(diào)整;</p><p> 設(shè)置電梯運(yùn)行開(kāi)關(guān)控制鍵,控制電梯運(yùn)行狀態(tài);</p><p> 能夠正確顯示電梯的運(yùn)行情況,樓層間的運(yùn)行時(shí)間及電梯所在樓層的等待時(shí)間;</p><p> 1.3 課題的主要工作</p><p> 利用VHDL語(yǔ)言編
14、程實(shí)現(xiàn)六層電梯控制器各個(gè)模塊的功能,并用QuartusII對(duì)本文進(jìn)行設(shè)計(jì),討論九層電梯控制器設(shè)計(jì)的思路、示意圖、結(jié)構(gòu)圖、流程圖及程序仿真圖。將設(shè)計(jì)在EDA工具QuartusII下進(jìn)行時(shí)序仿真,得到仿真結(jié)果,驗(yàn)證九層電梯控制器設(shè)計(jì)的正確性。</p><p> 第二章 電梯控制器的CPLD實(shí)現(xiàn)</p><p> 電梯的微機(jī)化控制主要有以下幾種形式:1 PLC控制;2 單板機(jī)控制;3 單片機(jī)
15、控制;4 單微機(jī)控制;5 多微機(jī)控制;6 人工智能控制。隨著EDA技術(shù)的快速發(fā)展,CPLD/FPGA已廣泛應(yīng)用于電子設(shè)計(jì)與控制的各個(gè)方面。本設(shè)計(jì)就是使用一片CPLD/FPGA來(lái)實(shí)現(xiàn)對(duì)電梯的控制的。</p><p> 2.1 電梯控制器的流程</p><p> 2.2 硬件描述語(yǔ)言HDL的現(xiàn)狀與發(fā)展</p><p> 2.2.1 目前HDL發(fā)展?fàn)顩r</p&
16、gt;<p> 目前,硬件描述語(yǔ)言可謂是百花齊放,有VHDL、Superlog、Verilog、SystemC、Cynlib C++、C Level等等。雖然各種語(yǔ)言各有所長(zhǎng),但業(yè)界對(duì)到底使用哪一種語(yǔ)言進(jìn)行設(shè)計(jì),卻莫衷一是,難有定論。</p><p> 而比較一致的意見(jiàn)是,HDL和C/C++語(yǔ)言在設(shè)計(jì)流程中實(shí)現(xiàn)級(jí)和系統(tǒng)級(jí)都具有各自的用武之地。問(wèn)題出現(xiàn)在系統(tǒng)級(jí)和實(shí)現(xiàn)級(jí)相連接的地方:什么時(shí)候?qū)⑹褂弥?/p>
17、的一種語(yǔ)言停下來(lái),而開(kāi)始使用另外一種語(yǔ)言?或者干脆就直接使用一種語(yǔ)言?現(xiàn)在看來(lái)得出結(jié)論仍為時(shí)過(guò)早。</p><p> 2.2.2 各種HDL語(yǔ)言的體系結(jié)構(gòu)和設(shè)計(jì)方法</p><p> Verilog和VHDL</p><p> 這兩種語(yǔ)言是傳統(tǒng)硬件描述語(yǔ)言,有很多的書(shū)籍和資料可以查閱參考,這里不多介紹。</p><p> 目前可取可行
18、的策略和方式</p><p> 按傳統(tǒng)方法,我們將硬件抽象級(jí)的模型類(lèi)型分為以下五種: 系統(tǒng)級(jí)(system)—用語(yǔ)言提供的高級(jí)結(jié)構(gòu)實(shí)現(xiàn)算法運(yùn)行的模型;</p><p> 算法級(jí)(algorithm)—用語(yǔ)言提供的高級(jí)結(jié)構(gòu)實(shí)現(xiàn)算法運(yùn)行的模型;</p><p> RTL級(jí)(Register Transfer Level)—描述數(shù)據(jù)在寄存器之間流動(dòng)和如何處理、
19、控制這些數(shù)據(jù)流動(dòng)的模型。(以上三種都屬于行為描述,只有RTL級(jí)才與邏輯電路有明確的對(duì)應(yīng)關(guān)系。)</p><p> 門(mén)級(jí)(gate-level)—描述邏輯門(mén)以及邏輯門(mén)之間的連接模型。(與邏輯電路有確切的連接關(guān)系。以上四種,數(shù)字系統(tǒng)設(shè)計(jì)工程師必須掌握。)</p><p> 開(kāi)關(guān)級(jí)(switch-level)—描述器件中三極管和存儲(chǔ)節(jié)點(diǎn)以及它們之間連接的模型。(與具體的物理電路有對(duì)應(yīng)關(guān)系,工
20、藝庫(kù)元件和宏部件設(shè)計(jì)人員必須掌握。)</p><p> 根據(jù)目前芯片設(shè)計(jì)的發(fā)展趨勢(shì),驗(yàn)證級(jí)和綜合抽象級(jí)也有可能成為一種標(biāo)準(zhǔn)級(jí)別。因?yàn)樗鼈冞m合于IP核復(fù)用和系統(tǒng)級(jí)仿真綜合優(yōu)化的需要,而軟件(嵌入式、固件式)也越來(lái)越成為一個(gè)和系統(tǒng)密切相關(guān)的抽象級(jí)別。 </p><p> 目前,對(duì)于一個(gè)系統(tǒng)芯片設(shè)計(jì)項(xiàng)目,可以采用的方案包括以下幾種:</p><p> ?、?最傳統(tǒng)的辦
21、法是,在系統(tǒng)級(jí)采用VHDL,在軟件級(jí)采用C語(yǔ)言,在實(shí)現(xiàn)級(jí)采用Verilog。目前,VHDL與Verilog的互操作性已經(jīng)逐步走向標(biāo)準(zhǔn)化,但軟件與硬件的協(xié)調(diào)設(shè)計(jì)還是一個(gè)很具挑戰(zhàn)性的工作,因?yàn)檐浖絹?lái)越成為SOC設(shè)計(jì)的關(guān)鍵。該方案的特點(diǎn)是:風(fēng)險(xiǎn)小,集成難度大,與原有方法完全兼容,有現(xiàn)成的開(kāi)發(fā)工具;但工具集成由開(kāi)發(fā)者自行負(fù)責(zé)完成。</p><p> ?、?系統(tǒng)級(jí)及軟件級(jí)采用Superlog,硬件級(jí)和實(shí)現(xiàn)級(jí)均采用Veri
22、log HDL描述,這樣和原有的硬件設(shè)計(jì)可以兼容。只要重新采購(gòu)兩個(gè)Superlog開(kāi)發(fā)工具SYSTEMSIMTM和SYSTEMEXTM即可。該方案特點(diǎn)是風(fēng)險(xiǎn)較小,易于集成,與原硬件設(shè)計(jì)兼容性好,有集成開(kāi)發(fā)環(huán)境。</p><p> ?、?系統(tǒng)級(jí)和軟件級(jí)采用SystemC,硬件級(jí)采用SystemC與常規(guī)的Verilog HDL互相轉(zhuǎn)換,與原來(lái)的軟件編譯環(huán)境完全兼容。開(kāi)發(fā)者只需要一組描述類(lèi)庫(kù)和一個(gè)包含仿真核的庫(kù),就可以
23、在通常的ANSI C++編譯器環(huán)境下開(kāi)發(fā);但硬件描述與原有方法完全不兼容。該方案特點(diǎn)是風(fēng)險(xiǎn)較大,與原軟件開(kāi)發(fā)兼容性好,硬件開(kāi)發(fā)有風(fēng)險(xiǎn)。 </p><p><b> 第三章 設(shè)計(jì)依據(jù)</b></p><p> 現(xiàn)代電子設(shè)計(jì)技術(shù)的核心是EDA技術(shù)。基于EDA技術(shù)開(kāi)發(fā)的實(shí)現(xiàn)六層電梯自動(dòng)控制與目前主流的利用可編程邏輯控制器實(shí)現(xiàn)電梯控制緊密相連。硬件描述語(yǔ)言是EDA技術(shù)的
24、重要組成部分,VHDL是作為電子設(shè)計(jì)主流硬件的描述語(yǔ)言。使用VHDL語(yǔ)言進(jìn)行程序設(shè)計(jì),在QuartusII軟件上對(duì)程序進(jìn)行編譯、仿真。在QuartusII平臺(tái)上開(kāi)發(fā)具有易學(xué)易懂、控制靈活方便、抗干擾能力強(qiáng)、運(yùn)行穩(wěn)定可靠等優(yōu)點(diǎn)。</p><p> 3.1 EDA技術(shù)介紹</p><p> EDA是電子設(shè)計(jì)自動(dòng)化(Electronic Design Automation)的縮寫(xiě),在20世紀(jì)
25、90年代初從計(jì)算機(jī)輔助設(shè)計(jì)(CAD)、計(jì)算機(jī)輔助制造(CAM)、計(jì)算機(jī)輔助測(cè)試(CAT)和計(jì)算機(jī)輔助工程(CAE)的概念發(fā)展而來(lái)的。</p><p> 20世紀(jì)90年代,國(guó)際上電子和計(jì)算機(jī)技術(shù)較先進(jìn)的國(guó)家,一直在積極探索新的電子電路設(shè)計(jì)方法,并在設(shè)計(jì)方法、工具等方面進(jìn)行了徹底的變革,取得了巨大成功。在電子技術(shù)設(shè)計(jì)領(lǐng)域,可編程邏輯器件(如CPLD、FPGA)的應(yīng)用,已得到廣泛的普及,這些器件為數(shù)字系統(tǒng)的設(shè)計(jì)帶來(lái)了
26、極大的靈活性。這些器件可以通過(guò)軟件編程而對(duì)其硬件結(jié)構(gòu)和工作方式進(jìn)行重構(gòu),從而使得硬件的設(shè)計(jì)可以如同軟件設(shè)計(jì)那樣方便快捷。這一切極大地改變了傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計(jì)方法、設(shè)計(jì)過(guò)程和設(shè)計(jì)觀念,促進(jìn)了EDA技術(shù)的迅速發(fā)展。</p><p> EDA技術(shù)就是以計(jì)算機(jī)為工具,設(shè)計(jì)者在EDA軟件平臺(tái)上,用硬件描述語(yǔ)言VHDL完成設(shè)計(jì)文件,然后由計(jì)算機(jī)自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合、優(yōu)化、布局、布線和仿真,直至對(duì)于特定目標(biāo)芯
27、片的適配編譯、邏輯映射和編程下載等工作。EDA技術(shù)的出現(xiàn),極大地提高了電路設(shè)計(jì)的效率和可操作性,減輕了設(shè)計(jì)者的勞動(dòng)強(qiáng)度。</p><p> 利用EDA工具,電子設(shè)計(jì)師可以從概念、算法、協(xié)議等開(kāi)始設(shè)計(jì)電子系統(tǒng),大量工作可以通過(guò)計(jì)算機(jī)完成,并可以將電子產(chǎn)品從電路設(shè)計(jì)、性能分析到設(shè)計(jì)出IC版圖或PCB版圖的整個(gè)過(guò)程在計(jì)算機(jī)上自動(dòng)處理完成。</p><p> 現(xiàn)在對(duì)EDA的概念或范疇用得很寬。
28、包括在機(jī)械、電子、通信、航空航天、化工、礦產(chǎn)、生物、醫(yī)學(xué)、軍事、等各個(gè)領(lǐng)域,都有EDA的應(yīng)用。目前EDA技術(shù)已在各大公司、企事業(yè)單位和科研教學(xué)部門(mén)廣泛使用。例如在飛機(jī)制造過(guò)程中,從設(shè)計(jì)、性能測(cè)試及特性分析直到飛行模擬,都可能涉及到EDA技術(shù)。</p><p> 3.2 VHDL簡(jiǎn)介</p><p> 3.2.1 VHDL概述</p><p> VHDL主要用
29、于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語(yǔ)句外,VHDL的語(yǔ)言形式和描述風(fēng)格與句法是十分類(lèi)似于一般的計(jì)算機(jī)高級(jí)語(yǔ)言。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱(chēng)設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱(chēng)可是部分,及端口)和內(nèi)部(或稱(chēng)不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開(kāi)發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)
30、外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。</p><p> 3.2.2. VHDL的特點(diǎn)</p><p> VHDL的主要特點(diǎn)如下:</p><p> ?。?)作為HDL的第一個(gè)國(guó)際標(biāo)準(zhǔn),VHDL具有很強(qiáng)的可移植性。</p><p> ?。?)具有豐富的模擬仿真語(yǔ)句和庫(kù)函數(shù),隨時(shí)可對(duì)設(shè)計(jì)進(jìn)行仿真模擬,因而能將設(shè)計(jì)中的錯(cuò)誤消除在電路系統(tǒng)裝
31、配之前,在設(shè)計(jì)早期就能檢查設(shè)計(jì)系統(tǒng)功能的可行性,有很強(qiáng)的預(yù)測(cè)能力。</p><p> ?。?)VHDL有良好的可讀性,接近高級(jí)語(yǔ)言,容易理解。</p><p> ?。?)系統(tǒng)設(shè)計(jì)與硬件結(jié)構(gòu)無(wú)關(guān),方便了工藝的轉(zhuǎn)換,也不會(huì)因工藝變化而使描述過(guò)時(shí)。</p><p> ?。?)支持模塊化設(shè)計(jì),可將大規(guī)模設(shè)計(jì)項(xiàng)目分解成若干個(gè)小項(xiàng)目,還可以把已有的設(shè)計(jì)項(xiàng)目作為一個(gè)模塊調(diào)用。&l
32、t;/p><p> ?。?)對(duì)于用VHDL完成的一個(gè)確定設(shè)計(jì),可以利用EDA工具進(jìn)行邏輯綜合和優(yōu)化,并能自動(dòng)地把VHDL描述轉(zhuǎn)變成門(mén)電路級(jí)網(wǎng)表文件。</p><p> (7)設(shè)計(jì)靈活,修改方便,同時(shí)也便于設(shè)計(jì)結(jié)果的交流、保存和重用,產(chǎn)品開(kāi)發(fā)速度快,成本低。</p><p> VHDL是一種快速的電路設(shè)計(jì)工具,其功能涵蓋了電路描述、電路合成、電路仿真等設(shè)計(jì)工作。VHD
33、L具有極強(qiáng)的描述能力,能支持系統(tǒng)行為級(jí)、寄存器傳輸級(jí)和邏輯門(mén)電路級(jí)三個(gè)不同層次的設(shè)計(jì),能夠完成從上層到下層(從抽象到具體)逐層描述的結(jié)構(gòu)化設(shè)計(jì)思想。</p><p> 3.2.3. VHDL的基本結(jié)構(gòu)</p><p> 一個(gè)VHDL程序必須包括實(shí)體(ENTITY)和結(jié)構(gòu)體(ARCHITECTURE)。一個(gè)設(shè)計(jì)實(shí)體可看成一個(gè)盒子,通過(guò)它只能了解其外部輸入及輸出端口,無(wú)法知道盒子里的東西
34、,而結(jié)構(gòu)體則用來(lái)描述盒子內(nèi)部的詳細(xì)內(nèi)容。至于完整的VHDL程序是什么樣,實(shí)際上并沒(méi)有統(tǒng)一的標(biāo)準(zhǔn),因?yàn)椴煌某绦蛟O(shè)計(jì)目的可以有不同的程序結(jié)構(gòu)。除實(shí)體和結(jié)構(gòu)體外,多數(shù)程序還要包含庫(kù)和程序包部分。</p><p> 實(shí)體中定義了一個(gè)設(shè)計(jì)模塊的外部輸入和輸出端口,即模塊(或元件)的外部特征,描述了一個(gè)元件或一個(gè)模塊與其他部分(模塊)之間的連接關(guān)系,可以看作是輸入輸出信號(hào)和芯片管腳信息。一個(gè)設(shè)計(jì)可以有多個(gè)實(shí)體,只有處于最
35、高層的實(shí)體稱(chēng)為頂層實(shí)體,EDA工具的編譯和仿真都是對(duì)頂層實(shí)體進(jìn)行的。處于低層的各個(gè)實(shí)體都可作為單個(gè)元件,被高層實(shí)體調(diào)用。</p><p> 結(jié)構(gòu)體主要用來(lái)說(shuō)明元件內(nèi)部的具體結(jié)構(gòu),即對(duì)元件內(nèi)部的邏輯功能進(jìn)行說(shuō)明,是程序設(shè)計(jì)的核心部分。</p><p> 庫(kù)是程序包的集合,不同的庫(kù)有不同類(lèi)型的程序包。程序包用來(lái)定義結(jié)構(gòu)體和實(shí)體中要用到的數(shù)據(jù)類(lèi)型、元件和子程序等。</p>&l
36、t;p><b> ?。?)基本設(shè)計(jì)單元</b></p><p> VHDL的基本設(shè)計(jì)單元就是實(shí)體,無(wú)論數(shù)字電路復(fù)雜還是簡(jiǎn)單,都是由實(shí)體和構(gòu)造體組成。</p><p><b> 實(shí)體說(shuō)明:</b></p><p> 實(shí)體說(shuō)明有如下結(jié)構(gòu):</p><p> ENTITY 實(shí)體名 IS&
37、lt;/p><p><b> [端口說(shuō)明]</b></p><p><b> END 實(shí)體名;</b></p><p> (VHDL語(yǔ)言中不分大小寫(xiě)字母)</p><p><b> 其中:</b></p><p> 端口說(shuō)明是對(duì)設(shè)計(jì)實(shí)體中輸入和輸
38、出借口進(jìn)行描述,格式如下:</p><p> PORT(端口名(,端口名):方向 數(shù)據(jù)類(lèi)型名;</p><p><b> :</b></p><p> 端口名(,端口名):方向 數(shù)據(jù)類(lèi)型名);</p><p> 端口名是賦予每個(gè)系統(tǒng)引腳的名稱(chēng),一般用幾個(gè)英文字母組成。</p><p>
39、端口方向是定義引腳是輸入還是輸出,見(jiàn)表1:</p><p><b> 表1</b></p><p> 常用的端口數(shù)據(jù)類(lèi)型有兩種:BIT和BIT_VECTOR,當(dāng)端口被說(shuō)明為BIT時(shí),只能取值“1”或“0”。</p><p><b> 構(gòu)造體:</b></p><p> 構(gòu)造體是實(shí)體的一個(gè)重要
40、部分,每一個(gè)實(shí)體都有一個(gè)或一個(gè)以上的構(gòu)造體。</p><p><b> 一般說(shuō)明</b></p><p><b> 構(gòu)造體格式如下:</b></p><p> ARCHITECTURE 構(gòu)造體名 OF 實(shí)體名 IS</p><p> [定義語(yǔ)句] 內(nèi)部信號(hào),常數(shù),數(shù)據(jù)類(lèi)型,函數(shù)等的定義&l
41、t;/p><p><b> BEGIN</b></p><p><b> [并行處理語(yǔ)句]</b></p><p> END 構(gòu)造體名; </p><p> 構(gòu)造體描述設(shè)計(jì)實(shí)體的具體行為,它包含兩類(lèi)語(yǔ)句:</p><p> 并行語(yǔ)句 并行語(yǔ)句總是在進(jìn)程語(yǔ)句(PROCE
42、SS)的外部,該語(yǔ)句的執(zhí)行與書(shū)寫(xiě)順序無(wú)關(guān),總是同時(shí)被執(zhí)行</p><p> 順序語(yǔ)句 順序語(yǔ)句總是在進(jìn)程語(yǔ)句(PROCESS)的內(nèi)部,從仿真的角度,該語(yǔ)句是順序執(zhí)行的。</p><p> 一個(gè)構(gòu)造體包含幾個(gè)類(lèi)型的子結(jié)構(gòu)描述,這些描述是:</p><p> BLOCK描述(塊描述)</p><p> PROCESS描述(進(jìn)程描述)&l
43、t;/p><p> SUNPROGRAMS描述(子程序描述)</p><p><b> BLOCK語(yǔ)句描述</b></p><p> 使用BLOCK語(yǔ)句描述的格式如下:</p><p> 塊標(biāo)號(hào):BLOCK </p><p><b> BEGIN</b></p&
44、gt;<p><b> :</b></p><p> END BLOCK 塊標(biāo)號(hào):</p><p> 在對(duì)程序進(jìn)行仿真時(shí),BLOCK中的語(yǔ)句是并行執(zhí)行的,與書(shū)寫(xiě)順序無(wú)關(guān),這一點(diǎn)和構(gòu)造體中直接寫(xiě)的語(yǔ)句是一樣的。</p><p> 進(jìn)程(PROCESS)描述</p><p> 進(jìn)程描述的格式如下:&
45、lt;/p><p> [進(jìn)程名]:PROCESS(信號(hào)1,信號(hào)2,….)</p><p><b> BEGIN :</b></p><p> END PROCESS 進(jìn)程名;</p><p> 一般用于組合電路進(jìn)程模式:</p><p><b> __進(jìn)程標(biāo)記:</b>
46、</p><p> PROCESS (__信號(hào)名__信號(hào)名__信號(hào)名)</p><p> VARIABLE __變量名 :STD_LOGIC;</p><p> VARIABLE __變量名 :STD_LOGIC;</p><p><b> BEGIN</b></p><p><b&
47、gt; 指定信號(hào)</b></p><p><b> 指定變量</b></p><p><b> 過(guò)程調(diào)用</b></p><p><b> 如果語(yǔ)句</b></p><p><b> CASE語(yǔ)句</b></p><
48、;p><b> 循環(huán)語(yǔ)句</b></p><p> END PROCESS __進(jìn)程標(biāo)記;</p><p> 用于時(shí)序電路進(jìn)程模式:</p><p><b> __進(jìn)程標(biāo)記:</b></p><p> PROCESS (__信號(hào)名, __信號(hào)名, __信號(hào)名)</p>
49、<p> VARIABLE __變量名:STD_LOGIC;</p><p> VARIABLE __變量名:STD_LOGIC;</p><p><b> BEGIN</b></p><p> WAIT UNTIL __時(shí)鐘信號(hào) = '1;</p><p><b> 指定信號(hào)<
50、;/b></p><p><b> 指定變量</b></p><p><b> 過(guò)程調(diào)用</b></p><p><b> 如果語(yǔ)句</b></p><p><b> CASE語(yǔ)句</b></p><p><b&
51、gt; 循環(huán)語(yǔ)句</b></p><p> END PROCESS __進(jìn)程標(biāo)記;</p><p> 在PROCESS中的語(yǔ)句是順序執(zhí)行的,這一點(diǎn)和BLOCK中的語(yǔ)句是不一樣的。</p><p> 當(dāng)PROCESS所帶的信號(hào)量發(fā)生變化時(shí),PROCESS中的語(yǔ)句就會(huì)執(zhí)行一遍。</p><p><b> 子程序描述
52、</b></p><p> 子程序的概念和其它高級(jí)程序中子程序的概念相同,在VHDL中有兩種類(lèi)型:</p><p> 過(guò)程(Procedure),函數(shù)(Function)。</p><p><b> 1、過(guò)程的格式:</b></p><p> PROCEDURE 過(guò)程名(參數(shù)1,參數(shù)2。。。。) IS
53、</p><p><b> [定義變量語(yǔ)句]</b></p><p><b> BEGIN</b></p><p><b> [順序處理語(yǔ)句]</b></p><p><b> END 過(guò)程名;</b></p><p>
54、在過(guò)程中,語(yǔ)句是順序執(zhí)行的。</p><p><b> 函數(shù)</b></p><p><b> 2、函數(shù)的格式:</b></p><p> FUNCTION 函數(shù)名(參數(shù)1,參數(shù)2。。。。) RETURN 數(shù)據(jù)類(lèi)型名 IS</p><p><b> [定義變量語(yǔ)句]</b&g
55、t;</p><p><b> BEGIN</b></p><p><b> [順序處理語(yǔ)句]</b></p><p> RETURN [返回變量名];</p><p><b> END 函數(shù)名;</b></p><p> 在VHDL 語(yǔ)言中函
56、數(shù)的參數(shù)都是輸入信號(hào)</p><p><b> 包、庫(kù)和配置</b></p><p><b> 庫(kù)</b></p><p> 庫(kù)是經(jīng)編譯后的數(shù)據(jù)的集合,它存放包定義、實(shí)體定義、構(gòu)造定義和配置定義。</p><p> 在設(shè)計(jì)單元內(nèi)的語(yǔ)句可以使用庫(kù)中的結(jié)果,所以,庫(kù)的好處就是設(shè)計(jì)者可以共享已經(jīng)編
57、譯的設(shè)計(jì)結(jié)果,在VHDL中有很多庫(kù),但他們相互獨(dú)立。</p><p> IEEE庫(kù):在IEEE庫(kù)中有一個(gè)STD_LOGIC的包,它是IEEE正式認(rèn)可的包。</p><p> STD庫(kù):STD庫(kù)是VHDL的標(biāo)準(zhǔn)庫(kù),在庫(kù)中有名為STANDARD的包,還有TEXTIO包。若使用STANDARD包中的數(shù)據(jù)可以不按標(biāo)準(zhǔn)格式說(shuō)明,但是若使用TEXTIO包,則需要按照如下格式說(shuō)明:</p>
58、;<p> LIBRARY STD;</p><p> USE STD.TEXTIO.ALL</p><p> 另外還有ASIC庫(kù)、WORK庫(kù)和用戶自定義庫(kù)等。</p><p><b> 庫(kù)的使用:</b></p><p> 在使用庫(kù)之前,一定要進(jìn)行庫(kù)說(shuō)明和包說(shuō)明,庫(kù)和包的說(shuō)明總是放在設(shè)計(jì)單元的前
59、面:</p><p> LIBRARY 庫(kù)名;</p><p> USE LIBRARY name.package.name.ITEM.name</p><p><b> 例:</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC
60、_1164.ALL</p><p> 該例說(shuō)明要使用IEEE庫(kù)中的1164包中所有項(xiàng)目</p><p><b> 庫(kù)的作用范圍:</b></p><p> 庫(kù)的作用范圍從一個(gè)實(shí)體說(shuō)明開(kāi)始到它所屬的結(jié)構(gòu)體、配置為止,當(dāng)有兩個(gè)實(shí)體時(shí),第二個(gè)實(shí)體前要另加庫(kù)和包的說(shuō)明。</p><p><b> 包</b
61、></p><p> 通常在一個(gè)實(shí)體中對(duì)數(shù)據(jù)類(lèi)型、常量等進(jìn)行的說(shuō)明只可以在一個(gè)實(shí)體中使用,為使這些說(shuō)明可以在其它實(shí)體中使用,VHDL提供了程序包結(jié)構(gòu),包中羅列VHDL中用到的信號(hào)定義、常數(shù)定義、數(shù)據(jù)類(lèi)型、元件語(yǔ)句、函數(shù)定義和過(guò)程定義,它是一個(gè)可編譯的設(shè)計(jì)單元,也是庫(kù)結(jié)構(gòu)中的一個(gè)層次,使用包時(shí)可以用USE語(yǔ)句說(shuō)明,例如:</p><p> USE IEEE.STD_LOGIC_11
62、64.ALL</p><p> 程序包分為包頭和包體,包結(jié)構(gòu)的格式如下:</p><p><b> 包頭格式:</b></p><p> PACKAGE 包名 IS</p><p><b> [說(shuō)明語(yǔ)句]</b></p><p><b> END 包名&
63、lt;/b></p><p> 包頭中列出所有項(xiàng)的名稱(chēng)。</p><p><b> 包體格式:</b></p><p> PACKAGE BODY 包名 IS</p><p><b> [說(shuō)明語(yǔ)句]</b></p><p><b> END 包名;&
64、lt;/b></p><p> 包體給出各項(xiàng)的具體細(xì)節(jié)。</p><p><b> 配置</b></p><p> 用于在多構(gòu)造體中的實(shí)體中選擇構(gòu)造體,例如,在做RS觸發(fā)器的實(shí)體中使用了兩個(gè)構(gòu)造體,目的是研究各個(gè)構(gòu)造體描述的RS觸發(fā)器的行為性能如何,但是究竟在仿真中使用哪一個(gè)構(gòu)造體的問(wèn)題就是配置問(wèn)題。</p><
65、p><b> 配置語(yǔ)句格式:</b></p><p> CONFIGURATION 配置名 OF 實(shí)體名 IS</p><p><b> [說(shuō)明語(yǔ)句]</b></p><p><b> END 配置名;</b></p><p><b> 例:最簡(jiǎn)單
66、的配置</b></p><p> CONFIGURATION 配置名 OF 實(shí)體名 IS</p><p> FOR 被選構(gòu)造體名</p><p><b> END FOR; </b></p><p> END 配置名; </p><p> VHDL中使用的數(shù)據(jù)類(lèi)型和運(yùn)算
67、操作</p><p> VHDL可以象其它高級(jí)語(yǔ)言一樣定義數(shù)據(jù)類(lèi)型,但還可以用戶自己定義數(shù)據(jù)類(lèi)型。</p><p><b> 信號(hào)、常量和變量</b></p><p> 信號(hào):通常認(rèn)為信號(hào)是電路中的一根線</p><p> 常數(shù):可以在數(shù)字電路中代表電源、地線等等</p><p> 變量
68、:可以代表某些數(shù)值</p><p><b> 常數(shù)</b></p><p><b> 常數(shù)的描述格式:</b></p><p> CONSTANT 常數(shù)名:數(shù)據(jù)類(lèi)型:=表達(dá)式</p><p><b> 變量</b></p><p> 變量只能在
69、進(jìn)程、函數(shù)和過(guò)程中使用,一旦賦值立即生效。</p><p><b> 變量的描述格式:</b></p><p> VARIABLE 變量名:數(shù)據(jù)類(lèi)型 約束條件:=表達(dá)式</p><p><b> 信號(hào)</b></p><p> 信號(hào)除了沒(méi)有方向的概念以外幾乎和端口概念一致。</p&g
70、t;<p><b> 信號(hào)的描述格式:</b></p><p> SIGNAL 信號(hào)名:數(shù)據(jù)類(lèi)型 約束條件:=表達(dá)式</p><p> 在程序中,信號(hào)值輸入信號(hào)時(shí)采用代入符”<=”,而不是賦值符“:=”,同時(shí)信號(hào)可以附加延時(shí)。</p><p><b> 信號(hào)傳送語(yǔ)句:</b></p>
71、;<p> s1<=s2 AFTER 10ns</p><p> 信號(hào)是一個(gè)全局量,可以用來(lái)進(jìn)行進(jìn)程之間的通信</p><p><b> 信號(hào)與變量的區(qū)別:</b></p><p> 信號(hào)賦值可以有延遲時(shí)間,變量賦值無(wú)時(shí)間延遲</p><p> 信號(hào)除當(dāng)前值外還有許多相關(guān)值,如歷史信息等,變
72、量只有當(dāng)前值</p><p> 進(jìn)程對(duì)信號(hào)敏感,對(duì)變量不敏感</p><p> 信號(hào)可以是多個(gè)進(jìn)程的全局信號(hào),但變量只在定義它之后的順序域可見(jiàn)</p><p> 信號(hào)可以看作硬件的一根連線,但變量無(wú)此對(duì)應(yīng)關(guān)系</p><p> VHDL語(yǔ)言的運(yùn)算操作符</p><p> VHDL語(yǔ)言的運(yùn)算操作符</p&
73、gt;<p><b> 邏輯運(yùn)算符</b></p><p> 要求運(yùn)算符左右的數(shù)據(jù)類(lèi)型必須相同,</p><p><b> 算數(shù)運(yùn)算符</b></p><p> 在使用乘法運(yùn)算符時(shí),應(yīng)該特別慎重,因?yàn)樗梢允惯壿嬮T(mén)數(shù)大大增加。</p><p><b> 關(guān)系運(yùn)算符&
74、lt;/b></p><p> 應(yīng)該注意小于等于<=和代入運(yùn)算符的不同(從上下文區(qū)別)</p><p><b> 并置運(yùn)算符</b></p><p> 并置運(yùn)算符 ”&” 用于位連接,</p><p> VHDL語(yǔ)言構(gòu)造體的描述方式</p><p> 有三種描述方式:
75、行為描述,RTL描述和ASIC描述,采用后兩種描述方式可以進(jìn)行邏輯綜合。</p><p> VHDL語(yǔ)言的部分描述語(yǔ)句</p><p><b> 部分順序描述語(yǔ)句</b></p><p><b> IF 語(yǔ)句</b></p><p><b> IF的門(mén)閂控制</b>&l
76、t;/p><p><b> 格式:</b></p><p> IF 條件 THEN</p><p><b> 順序執(zhí)行語(yǔ)句</b></p><p><b> END IF; </b></p><p> IF 語(yǔ)句的選擇控制</p>
77、<p><b> 格式一:</b></p><p> IF 條件 THEN</p><p><b> 順序執(zhí)行語(yǔ)句</b></p><p><b> ELSE</b></p><p><b> 順序執(zhí)行語(yǔ)句</b></p>
78、<p><b> END IF;</b></p><p><b> 格式二:</b></p><p> IF 條件 THEN</p><p><b> 順序執(zhí)行語(yǔ)句</b></p><p> ELSIF 條件 THEN</p><p&g
79、t;<b> 順序執(zhí)行語(yǔ)句</b></p><p><b> ?。?lt;/b></p><p><b> ?。?lt;/b></p><p> ELSIF 條件 THEN</p><p><b> 順序執(zhí)行語(yǔ)句</b></p><p>
80、 ELSIF 條件 THEN</p><p><b> 順序執(zhí)行語(yǔ)句</b></p><p><b> END IF;</b></p><p><b> 基本邏輯電路設(shè)計(jì):</b></p><p><b> 時(shí)序電路設(shè)計(jì)</b></p>
81、;<p> 在使用VHDL進(jìn)行電梯控制器的設(shè)計(jì),主要就是對(duì)電梯軟件部分進(jìn)行設(shè)計(jì),使用VHDL中的邏輯關(guān)系建立電梯的升降模式,開(kāi)門(mén),關(guān)門(mén)達(dá)到動(dòng)作,而外部的硬件設(shè)備基本上保持不變。但是使用VHDL硬件描述語(yǔ)言設(shè)計(jì)電梯控制器可以為以后電梯實(shí)現(xiàn)智能控制奠定基礎(chǔ)。</p><p> 第四章 程序設(shè)計(jì)與調(diào)試</p><p><b> 4.1程序設(shè)計(jì)說(shuō)明</b&
82、gt;</p><p> 4.1.1端口、寄存器設(shè)計(jì)說(shuō)明</p><p> (1)由功能要求得到本程序設(shè)計(jì)的端口必須包括:</p><p> 輸入端口:時(shí)鐘(clk,頻率為2Hz)、超載(full)、關(guān)門(mén)中斷(deng)、提前關(guān)門(mén)(quick)、清除報(bào)警(clr)、電梯外人的上升請(qǐng)求信號(hào)(c_u1,c_u2,c_u3, ,c_u4,c_u5,c_u6,c_u7
83、,c_u8)、電梯外人的下降請(qǐng)求信號(hào)(c_d2,c_d3,c_d4,c_d5,c_d6,c_d7,c_d8,c_d9)、電梯內(nèi)人的請(qǐng)求信號(hào)(d1,d2,d3,d4,d5,d6,d7,d8,d9)、到達(dá)樓層信號(hào)(g1,g2,g3,g4,g5,g6,g7,g8,g9)。</p><p> 輸出端口:電梯門(mén)控制信號(hào)(door)、電梯所在樓層顯示(led)電梯外人上升請(qǐng)求信號(hào)顯示(led_c_u)、電梯外人下降請(qǐng)求信號(hào)
84、顯示(led_c_d)、電梯內(nèi)請(qǐng)求信號(hào)顯示(led_d)、看門(mén)狗報(bào)警信號(hào)(wahaha)、電梯運(yùn)動(dòng)方向顯示(ud)、超載警告信號(hào)(alarm)、電機(jī)控制信號(hào)(up,down)。其分布如下圖所示:</p><p> ?。?)程序要求的寄存器(中間信號(hào))包括:</p><p> 電梯內(nèi)人請(qǐng)求信號(hào)寄存信號(hào)(d11,d22,d33,d44,d55,d66,d77,d88,d99)、電梯外人上升請(qǐng)
85、求信號(hào)存信號(hào)(c_u11,c_u22,c_u33,c_u44,c_u55,c_u66,c_u77,c_u88)、電梯外人下降請(qǐng)求信號(hào)寄存信號(hào)(c_d22,c_d33,c_d44,c_d55,c_d66,c_d77,c_d88,c_d99)、分頻信號(hào)(q)、關(guān)門(mén)延時(shí)計(jì)數(shù)器(q1)、看門(mén)狗計(jì)數(shù)器(q2)、電梯內(nèi)外請(qǐng)求信號(hào)寄存器(dd,cc_u,cc_d,dd_cc)、開(kāi)門(mén)使能信號(hào)(opendoor)、電梯運(yùn)動(dòng)方向信號(hào)寄存器(updown)、
86、預(yù)備上升、預(yù)備下降預(yù)操作使能信號(hào)(en_up,en_dw)。</p><p> 4.1.2模塊設(shè)計(jì)說(shuō)明</p><p> 本程序由三個(gè)基本模塊組成,包括調(diào)用VHDL庫(kù)模塊、實(shí)體設(shè)計(jì)模塊和結(jié)構(gòu)體設(shè)計(jì)模塊。而在結(jié)構(gòu)體模塊中又內(nèi)嵌有進(jìn)程執(zhí)行單元。</p><p><b> 調(diào)用VHDL庫(kù)</b></p><p> 使用
87、library語(yǔ)句,本程序應(yīng)用了VHDL庫(kù)中的“通用ieee庫(kù)”和“標(biāo)準(zhǔn)std庫(kù)” 。</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> use ieee.std
88、_logic_arith.all;</p><p> entity實(shí)體設(shè)計(jì)模塊</p><p> entity dianti is </p><p> port ( clk : in std_logic; --時(shí)鐘信號(hào)(頻率為2Hz)</p><p> full,deng,quick,clr :
89、 in std_logic; --超載、關(guān)門(mén)中斷、提前關(guān)門(mén)清除報(bào)警信號(hào)</p><p> c_u1,c_u2,c_u3,c_u4,c_u5,c_u6,c_u7,c_u8: in std_logic; --電梯外人的上升請(qǐng)求信號(hào)</p><p> c_d2,c_d3,c_d4,c_d5,c_d6,c_d7,c_d8,c_d9: in std_logic; --電梯外人的下降請(qǐng)求
90、信號(hào)</p><p> d1,d2,d3,d4,d5,d6 ,d7,d8,d9: in std_logic; --電梯內(nèi)人的請(qǐng)求信號(hào)</p><p> g1,g2,g3,g4,g5,g6 ,g7,g8,g9: in std_logic; --到達(dá)樓層信號(hào)</p><p> door : out std_logic_vecto
91、r(1 downto 0); --電梯門(mén)控制信號(hào)</p><p> led : out std_logic_vector(6 downto 0); --電梯所在樓層顯示</p><p> led_c_u:out std_logic_vector(8 downto 0); --電梯外人上升請(qǐng)求信號(hào)顯示</p><p> led_c_d:out s
92、td_logic_vector(8 downto 0); --電梯外人下降請(qǐng)求信號(hào)顯示</p><p> led_d : out std_logic_vector(8 downto 0); --電梯內(nèi)請(qǐng)求信號(hào)顯示</p><p> wahaha : out std_logic; --看門(mén)狗報(bào)警信號(hào)</p><p> ud
93、,alarm : out std_logic; --電梯運(yùn)動(dòng)方向顯示,超載警告信號(hào)</p><p> up,down : out std_logic ); --電機(jī)控制信號(hào)和電梯運(yùn)動(dòng)</p><p> end dianti;</p><p> ?。?)archi結(jié)構(gòu)體設(shè)計(jì)模塊和process進(jìn)程執(zhí)行單元</
94、p><p> architecture behav of dianti is</p><p> signal d11,d22,d33,d44,d55,d66,d77,d88,d99:std_logic; --電梯內(nèi)人請(qǐng)求信號(hào)寄存信號(hào)</p><p> signal c_u11,c_u22,c_u33,c_u44,c_u55,c_u66,c_u77,c_u88:st
95、d_logic; --電梯外人上升請(qǐng)求信號(hào)寄存信號(hào)</p><p> signal c_d22,c_d33,c_d44,c_d55,c_d66,c_d77,c_d88,c_d99:std_logic; --電梯外人下降請(qǐng)求信號(hào)寄存信號(hào)</p><p> signal q:integer range 0 to 1; --分頻信號(hào)</p&
96、gt;<p> signal q1:integer range 0 to 6; --關(guān)門(mén)延時(shí)計(jì)數(shù)器 </p><p> signal q2:integer range 0 to 9; --看門(mén)狗計(jì)數(shù)器</p><p> signal dd,cc_u,cc_d,dd_cc:std_logic_vec
97、tor(8 downto 0); --電梯內(nèi)外請(qǐng)求信號(hào)寄存器</p><p> signal opendoor:std_logic; --開(kāi)門(mén)使能信號(hào)</p><p> signal updown:std_logic; --電梯運(yùn)動(dòng)方向信號(hào)寄存器</p><p> signa
98、l en_up,en_dw:std_logic; --預(yù)備上升、預(yù)備下降預(yù)操作使能信號(hào)</p><p><b> begin</b></p><p> process(clk)</p><p><b> begin</b></p><p> … (進(jìn)程語(yǔ)
99、句具體看附錄)</p><p> end behav;</p><p> 4.1.3具體語(yǔ)句設(shè)計(jì)說(shuō)明</p><p> 上文已說(shuō)明了構(gòu)成VHDL程序的兩大部分—實(shí)體和結(jié)構(gòu)體的相關(guān)語(yǔ)句。在這些語(yǔ)句里,賦值語(yǔ)句占了相當(dāng)一部分。在VHDL語(yǔ)言里,賦值符號(hào)一般都是“<=”</p><p> 符號(hào),具體形式如下:</p>&
100、lt;p><b> begin</b></p><p> if clk'event and clk='1' then </p><p> if clr='1' then q1<=0;q2<=0;wahaha<='0';</p><p> elsif full
101、='1' then alarm<='1'; q1<=0;</p><p> if q1>=3 then door<="10";</p><p> else door<="00";</p><p><b> end if;</b><
102、/p><p><b> 。。。</b></p><p> VHDL語(yǔ)言也具有與一般編程語(yǔ)言相同的一些語(yǔ)句邏輯結(jié)構(gòu),如上述中的“if…then…elsif…then…;”等。這是VHDL中的順序語(yǔ)句,與我們常見(jiàn)的C語(yǔ)言中的if作為條件語(yǔ)句不同。</p><p> 在結(jié)構(gòu)體中對(duì)電梯的運(yùn)行行為作出描述,其中電梯處于二樓…五樓情況復(fù)雜些,以下給出二樓
103、情況的具體說(shuō)明。</p><p> elsif g2='1' then led<="0010010"; --電梯到達(dá)2樓,數(shù)碼管顯示2</p><p> if updown='1' then --電梯前一運(yùn)動(dòng)狀態(tài)位上升 </p><p> if d22='1' or c_u22=&
104、#39;1' then</p><p> d22<='0'; c_u22<='0'; opendoor<='1'; --有當(dāng)前層的請(qǐng)求,則電梯進(jìn)入開(kāi)門(mén)狀態(tài) </p><p> elsif dd_cc>"0000000000000011" then </p>
105、<p> en_up<='1';en_dw<='0'; opendoor<='0'; --有上升請(qǐng)求,則電梯進(jìn)入預(yù)備上升狀態(tài) </p><p> elsif dd_cc<"0000000000000010" then </p><p> en_dw<='1
106、';en_up<='0'; opendoor<='0';--有下降請(qǐng)求,則電梯進(jìn)入預(yù)備下降狀態(tài) </p><p><b> end if; </b></p><p> --電梯前一運(yùn)動(dòng)狀態(tài)為下降 </p><p> elsif
107、d22='1' or c_d22='1' then</p><p> d22<='0'; c_d22<='0';opendoor<='1'; --有當(dāng)前層的請(qǐng)求,則電梯進(jìn)入開(kāi)門(mén)狀態(tài)</p><p> elsif dd_cc<"0000000000000010" t
108、hen </p><p> .en_dw<='1';en_up<='0'; opendoor<='0'; --有下降請(qǐng)求,則電梯進(jìn)入預(yù)備下降狀態(tài) </p><p> elsif dd_cc>"0000000000000011" then</p><p>
109、 en_up<='1';en_dw<='0'; opendoor<='0'; --有上升請(qǐng)求,則電梯進(jìn)入預(yù)備上升狀態(tài) </p><p><b> end if;</b></p><p> 在上述語(yǔ)句中的“elsif g2=‘1’then led<=“0010010;”,led
110、的賦值之所以為“0010010”是根據(jù)共陽(yáng)極七段數(shù)字顯示器的發(fā)光段排列的,如圖所示。</p><p> 可發(fā)光段a、b、c、e、g形成一個(gè)2字。以此類(lèi)推,在一樓時(shí)led賦值為“100111”,三樓時(shí)為“0000110”,四樓時(shí)為“1001100”,五樓時(shí)為“0100100”,六樓時(shí)為“0100000”,七樓時(shí)為“0001111”,八樓時(shí)為“0000000”,九樓時(shí)為“0000100”。</p>&
111、lt;p> 在進(jìn)程執(zhí)行單元里,對(duì)電梯在樓層時(shí)的操作情況作出了描述,例如:開(kāi)門(mén)、關(guān)門(mén)延時(shí)、超載報(bào)警、故障報(bào)警以及電梯內(nèi)的請(qǐng)求信號(hào)處理,具體說(shuō)明給出如下:</p><p> process(clk)</p><p><b> begin</b></p><p> if clk'event and clk='1'
112、 then </p><p> if clr='1' then q1<=0;q2<=0;wahaha<='0'; --清除故障報(bào)警 </p><p> elsif full='1' then alarm<='1'; q1<=0;
113、 --超載報(bào)警</p><p> if q1>=3 then door<="10"; </p><p> else door<="00";</p><p> end if; </p>&l
114、t;p> elsif q=1 then q<=0;alarm<='0';</p><p> if q2=3 then wahaha<='1'; --故障報(bào)警</p><p><b> else</b></p><p> if ope
115、ndoor='1' then door<="10";q1<=0;q2<=0;up<='0';down<='0'; --開(kāi)門(mén)操作</p><p> elsif en_up='1' then --上升預(yù)操作 </p><
116、p> if deng='1' then door<="10";q1<=0;q2<=q2+1; --關(guān)門(mén)中斷</p><p> elsif quick='1' then q1<=3; --提前關(guān)門(mén)</p><p> elsif q1=6 then doo
117、r<="00";updown<='1';up<='1'; --關(guān)門(mén)完畢,電梯進(jìn)入上升狀態(tài)</p><p> elsif q1>=3 then door<="01";q1<=q1+1; --電梯進(jìn)入關(guān)門(mén)狀態(tài)</p><p> else q1<=q1+1;door
118、<="00"; --電梯進(jìn)入等待狀態(tài)</p><p><b> end if;</b></p><p> elsif en_dw='1' then --下降預(yù)操作</p><p> if deng='1
119、39; then door<="10";q1<=0;q2<=q2+1; </p><p> elsif quick='1' then q1<=3; </p><p> elsif q1=6 then door<="00";updown<='0
120、';down<='1'; </p><p> elsif q1>=3 then door<="01";q1<=q1+1; </p><p> else q1<=q1+1;door<="00"; </p><p
121、><b> end if;</b></p><p><b> …</b></p><p> else q<=1;alarm<='0'; --清除超載報(bào)警</p><p> if d1='1' then d11<=d1;
122、 --對(duì)電梯內(nèi)人請(qǐng)求信號(hào)進(jìn)行檢測(cè)和寄存 </p><p> elsif d2='1' then d22<=d2;</p><p> elsif d3='1' then d33<=d3;</p><p> elsif d4='1' then d44<=d4;<
123、;/p><p> elsif d5='1' then d55<=d5;</p><p> elsif d6='1' then d66<=d6;</p><p> elsif d7='1' then d77<=d7;</p><p> elsif d8='1'
124、 then d88<=d8;</p><p> elsif d9='1' then d99<=d9;</p><p><b> end if;</b></p><p> if c_u1='1' then c_u11<=c_u1; --對(duì)電梯外人上升請(qǐng)求信號(hào)進(jìn)行檢測(cè)和寄存</p>
125、<p> elsif c_u2='1' then c_u22<=c_u2;</p><p> elsif c_u3='1' then c_u33<=c_u3;</p><p> elsif c_u4='1' then c_u44<=c_u4;</p><p> elsif c_u
126、5='1' then c_u55<=c_u5;</p><p> elsif c_u6='1' then c_u66<=c_u6;</p><p> elsif c_u7='1' then c_u77<=c_u7;</p><p> elsif c_u8='1' then c_u
127、88<=c_u8;</p><p><b> end if; </b></p><p> if c_d2='1' then c_d22<=c_d2; --對(duì)電梯外人下降請(qǐng)求信號(hào)進(jìn)行檢測(cè)和寄存</p><p> elsif c_d3='1' then c_d33<=c_d3;</p&g
128、t;<p> elsif c_d4='1' then c_d44<=c_d4;</p><p> elsif c_d5='1' then c_d55<=c_d5;</p><p> elsif c_d6='1' then c_d66<=c_d6;</p><p> elsif c
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- eda電梯控制器課程設(shè)計(jì)報(bào)告
- 電梯控制器課程設(shè)計(jì)
- 電梯的控制課程設(shè)計(jì)--設(shè)計(jì)一個(gè)6層電梯控制器電路
- eda課程設(shè)計(jì)--電梯控制器設(shè)計(jì)
- eda課程設(shè)計(jì)--電梯控制器設(shè)計(jì)
- 數(shù)字邏輯課程設(shè)計(jì)電梯控制器
- eda_電梯控制器課程設(shè)計(jì)
- plc課程設(shè)計(jì)報(bào)告(6層電梯控制)
- 課程設(shè)計(jì)--電梯樓層顯示控制器的設(shè)計(jì)
- 課程設(shè)計(jì)報(bào)告彩燈控制器
- 四層電梯控制課程設(shè)計(jì)
- 彩燈控制器課程設(shè)計(jì)報(bào)告
- 四層電梯課程設(shè)計(jì)報(bào)告
- 可編程控制器plc課程設(shè)計(jì)--四層電梯模型
- 電子技術(shù)課程設(shè)計(jì)-智能電梯控制器設(shè)計(jì)
- eda技術(shù)課程設(shè)計(jì)--電梯控制器電路設(shè)計(jì)
- plc控制五層電梯課程設(shè)計(jì)
- plc課程設(shè)計(jì)報(bào)告--三層電梯模型控制
- 四層電梯plc控制課程設(shè)計(jì)
- plc控制五層電梯課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論