九層電梯控制器課程設計報告_第1頁
已閱讀1頁,還剩42頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  摘 要</b></p><p>  電梯是標志現(xiàn)代物質(zhì)文明的垂直運輸工具、是機—電一體化的復雜運輸設備。它涉及電子技術(shù)、機械工程、電力電子技術(shù)、微機技術(shù)、電力拖動系統(tǒng)和土建工程等多個科學領(lǐng)域。目前電梯的生產(chǎn)情況和使用數(shù)量已成為一個國家現(xiàn)代化程度的標志之一。隨著現(xiàn)代化城市的高速發(fā)展,每天都有大量人流及物流需要輸送。為節(jié)約用地和適應經(jīng)貿(mào)事業(yè)的發(fā)展,一幢幢高樓拔地而

2、起,這些高層建筑的垂直運輸是一個突出問題,與人們的工作和生活緊密相關(guān)。</p><p>  隨著社會的發(fā)展,電梯的使用越來越普遍,已從原來只在商業(yè)大廈、賓館使用,過渡到在辦公樓、居民樓等場所使用,并且對電梯功能的要求也不斷提高,相應地其控制方式也在不停地發(fā)生變化。對于電梯的控制,傳統(tǒng)的方法是使用繼電器—接觸器控制系統(tǒng)進行控制,隨著技術(shù)的不斷發(fā)展,微型計算機在電梯控制上的應用日益廣泛,現(xiàn)在已進入全微機化控制的時代。

3、</p><p>  而電梯的核心是電梯控制器,電梯控制器的實現(xiàn)也有多種方式,諸如PLC,單片機,等等.在以前的電梯控制器設計中,大部分都是采用PLC來實現(xiàn),但是PLC是基于外圍的硬件實現(xiàn)電梯的控制,這樣的設計很難實現(xiàn)電梯的智能化,要實現(xiàn)電梯的智能化,就得選用其他的設計方法完成對電梯控制器的設計,而采用硬件描述語言來完成電梯控制器的設計,就能很容易的實現(xiàn)電梯的智能.</p><p>  關(guān)

4、鍵字:電梯控制器,CPLD,VHDL狀態(tài)機</p><p><b>  目錄</b></p><p><b>  摘 要1</b></p><p>  第一章 前言3</p><p>  1.1 問題的提出3</p><p>  1.2 設計的目的3</

5、p><p>  1.3 課題的主要工作4</p><p>  第二章 電梯控制器的CPLD實現(xiàn)5</p><p>  2.1 電梯控制器的流程5</p><p>  2.2 硬件描述語言HDL的現(xiàn)狀與發(fā)展6</p><p>  2.2.1 目前HDL發(fā)展狀況6</p><p>  2.2.

6、2 各種HDL語言的體系結(jié)構(gòu)和設計方法6</p><p>  第三章 設計依據(jù)8</p><p>  3.1 EDA技術(shù)介紹8</p><p>  3.2 VHDL簡介9</p><p>  3.2.1 VHDL概述9</p><p>  3.2.2. VHDL的特點9</p><

7、p>  3.2.3. VHDL的基本結(jié)構(gòu)10</p><p>  第四章 程序設計與調(diào)試20</p><p>  4.1程序設計說明20</p><p>  4.1.1端口、寄存器設計說明20</p><p>  4.1.2模塊設計說明21</p><p>  4.1.3具體語句設計說明23&

8、lt;/p><p>  4.2程序調(diào)試27</p><p>  4.3 RTL圖 見附錄Ⅱ27</p><p>  4.4程序仿真與分析27</p><p>  第五章 設計總結(jié)29</p><p><b>  心得體會30</b></p><p><b

9、>  參考文獻31</b></p><p><b>  附錄Ⅰ32</b></p><p><b>  附錄Ⅱ40</b></p><p><b>  第一章 前言</b></p><p><b>  1.1 問題的提出</b>

10、;</p><p>  人和土地資源短缺的矛盾日趨激化,我國地少人多的國情,注定了我們必須合理解決人與土地的矛盾。興建高層建筑是其中的有效措施之一,隨之樓層電梯業(yè)便應運而生。隨著我國城鎮(zhèn)化程度的加大,電梯市場越來越繁華,人們對電梯的要求越來越高。如何更安全、更快捷地到達目的樓層,也就成為了人們對電梯的最為根本的要求。因此,本設計就九層電梯控制器設計為例,結(jié)合EDA技術(shù),對電梯控制進行設計。</p>

11、<p><b>  1.2 設計的目的</b></p><p>  針對我國樓層層數(shù)的基本水平,本著“一理通,百理明”的原則,本設計希望通過簡單的九層電梯控制器的設計,為廣大電梯設計者提供一個基礎(chǔ)。針對目前中小型電梯所能實現(xiàn)的功能,本控制器虛擬實現(xiàn)以下功能:</p><p>  設計一個多層單橋廂電梯控制器,該控制器可完成9個樓層的載客服務。</p&g

12、t;<p>  每層電梯入口均設有電梯上、下運行請求開關(guān),橋廂內(nèi)設有樓層選擇開關(guān),供乘客自由選擇電梯運行方向或所有到達的樓層;</p><p>  電梯運行遵循方向優(yōu)先原則:當電梯處于上升模式時,只響應比電梯所在位置高的上樓請求信號,由上而下逐個執(zhí)行,直到最后一個上樓請求信號如更高層有下樓請求,則直接上升到又下樓請求的最高層,然后進入下降模式,當電梯處于下降模式時,運行規(guī)則則與上升模式剛好相反;&l

13、t;/p><p>  電梯具備提前關(guān)門和延時關(guān)門功能,可根據(jù)乘客的請求進行時間調(diào)整;</p><p>  設置電梯運行開關(guān)控制鍵,控制電梯運行狀態(tài);</p><p>  能夠正確顯示電梯的運行情況,樓層間的運行時間及電梯所在樓層的等待時間;</p><p>  1.3 課題的主要工作</p><p>  利用VHDL語言編

14、程實現(xiàn)六層電梯控制器各個模塊的功能,并用QuartusII對本文進行設計,討論九層電梯控制器設計的思路、示意圖、結(jié)構(gòu)圖、流程圖及程序仿真圖。將設計在EDA工具QuartusII下進行時序仿真,得到仿真結(jié)果,驗證九層電梯控制器設計的正確性。</p><p>  第二章 電梯控制器的CPLD實現(xiàn)</p><p>  電梯的微機化控制主要有以下幾種形式:1 PLC控制;2 單板機控制;3 單片機

15、控制;4 單微機控制;5 多微機控制;6 人工智能控制。隨著EDA技術(shù)的快速發(fā)展,CPLD/FPGA已廣泛應用于電子設計與控制的各個方面。本設計就是使用一片CPLD/FPGA來實現(xiàn)對電梯的控制的。</p><p>  2.1 電梯控制器的流程</p><p>  2.2 硬件描述語言HDL的現(xiàn)狀與發(fā)展</p><p>  2.2.1 目前HDL發(fā)展狀況</p&

16、gt;<p>  目前,硬件描述語言可謂是百花齊放,有VHDL、Superlog、Verilog、SystemC、Cynlib C++、C Level等等。雖然各種語言各有所長,但業(yè)界對到底使用哪一種語言進行設計,卻莫衷一是,難有定論。</p><p>  而比較一致的意見是,HDL和C/C++語言在設計流程中實現(xiàn)級和系統(tǒng)級都具有各自的用武之地。問題出現(xiàn)在系統(tǒng)級和實現(xiàn)級相連接的地方:什么時候?qū)⑹褂弥?/p>

17、的一種語言停下來,而開始使用另外一種語言?或者干脆就直接使用一種語言?現(xiàn)在看來得出結(jié)論仍為時過早。</p><p>  2.2.2 各種HDL語言的體系結(jié)構(gòu)和設計方法</p><p>  Verilog和VHDL</p><p>  這兩種語言是傳統(tǒng)硬件描述語言,有很多的書籍和資料可以查閱參考,這里不多介紹。</p><p>  目前可取可行

18、的策略和方式</p><p>  按傳統(tǒng)方法,我們將硬件抽象級的模型類型分為以下五種:   系統(tǒng)級(system)—用語言提供的高級結(jié)構(gòu)實現(xiàn)算法運行的模型;</p><p>  算法級(algorithm)—用語言提供的高級結(jié)構(gòu)實現(xiàn)算法運行的模型;</p><p>  RTL級(Register Transfer Level)—描述數(shù)據(jù)在寄存器之間流動和如何處理、

19、控制這些數(shù)據(jù)流動的模型。(以上三種都屬于行為描述,只有RTL級才與邏輯電路有明確的對應關(guān)系。)</p><p>  門級(gate-level)—描述邏輯門以及邏輯門之間的連接模型。(與邏輯電路有確切的連接關(guān)系。以上四種,數(shù)字系統(tǒng)設計工程師必須掌握。)</p><p>  開關(guān)級(switch-level)—描述器件中三極管和存儲節(jié)點以及它們之間連接的模型。(與具體的物理電路有對應關(guān)系,工

20、藝庫元件和宏部件設計人員必須掌握。)</p><p>  根據(jù)目前芯片設計的發(fā)展趨勢,驗證級和綜合抽象級也有可能成為一種標準級別。因為它們適合于IP核復用和系統(tǒng)級仿真綜合優(yōu)化的需要,而軟件(嵌入式、固件式)也越來越成為一個和系統(tǒng)密切相關(guān)的抽象級別。 </p><p>  目前,對于一個系統(tǒng)芯片設計項目,可以采用的方案包括以下幾種:</p><p> ?、?最傳統(tǒng)的辦

21、法是,在系統(tǒng)級采用VHDL,在軟件級采用C語言,在實現(xiàn)級采用Verilog。目前,VHDL與Verilog的互操作性已經(jīng)逐步走向標準化,但軟件與硬件的協(xié)調(diào)設計還是一個很具挑戰(zhàn)性的工作,因為軟件越來越成為SOC設計的關(guān)鍵。該方案的特點是:風險小,集成難度大,與原有方法完全兼容,有現(xiàn)成的開發(fā)工具;但工具集成由開發(fā)者自行負責完成。</p><p> ?、?系統(tǒng)級及軟件級采用Superlog,硬件級和實現(xiàn)級均采用Veri

22、log HDL描述,這樣和原有的硬件設計可以兼容。只要重新采購兩個Superlog開發(fā)工具SYSTEMSIMTM和SYSTEMEXTM即可。該方案特點是風險較小,易于集成,與原硬件設計兼容性好,有集成開發(fā)環(huán)境。</p><p> ?、?系統(tǒng)級和軟件級采用SystemC,硬件級采用SystemC與常規(guī)的Verilog HDL互相轉(zhuǎn)換,與原來的軟件編譯環(huán)境完全兼容。開發(fā)者只需要一組描述類庫和一個包含仿真核的庫,就可以

23、在通常的ANSI C++編譯器環(huán)境下開發(fā);但硬件描述與原有方法完全不兼容。該方案特點是風險較大,與原軟件開發(fā)兼容性好,硬件開發(fā)有風險。 </p><p><b>  第三章 設計依據(jù)</b></p><p>  現(xiàn)代電子設計技術(shù)的核心是EDA技術(shù)?;贓DA技術(shù)開發(fā)的實現(xiàn)六層電梯自動控制與目前主流的利用可編程邏輯控制器實現(xiàn)電梯控制緊密相連。硬件描述語言是EDA技術(shù)的

24、重要組成部分,VHDL是作為電子設計主流硬件的描述語言。使用VHDL語言進行程序設計,在QuartusII軟件上對程序進行編譯、仿真。在QuartusII平臺上開發(fā)具有易學易懂、控制靈活方便、抗干擾能力強、運行穩(wěn)定可靠等優(yōu)點。</p><p>  3.1 EDA技術(shù)介紹</p><p>  EDA是電子設計自動化(Electronic Design Automation)的縮寫,在20世紀

25、90年代初從計算機輔助設計(CAD)、計算機輔助制造(CAM)、計算機輔助測試(CAT)和計算機輔助工程(CAE)的概念發(fā)展而來的。</p><p>  20世紀90年代,國際上電子和計算機技術(shù)較先進的國家,一直在積極探索新的電子電路設計方法,并在設計方法、工具等方面進行了徹底的變革,取得了巨大成功。在電子技術(shù)設計領(lǐng)域,可編程邏輯器件(如CPLD、FPGA)的應用,已得到廣泛的普及,這些器件為數(shù)字系統(tǒng)的設計帶來了

26、極大的靈活性。這些器件可以通過軟件編程而對其硬件結(jié)構(gòu)和工作方式進行重構(gòu),從而使得硬件的設計可以如同軟件設計那樣方便快捷。這一切極大地改變了傳統(tǒng)的數(shù)字系統(tǒng)設計方法、設計過程和設計觀念,促進了EDA技術(shù)的迅速發(fā)展。</p><p>  EDA技術(shù)就是以計算機為工具,設計者在EDA軟件平臺上,用硬件描述語言VHDL完成設計文件,然后由計算機自動地完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局、布線和仿真,直至對于特定目標芯

27、片的適配編譯、邏輯映射和編程下載等工作。EDA技術(shù)的出現(xiàn),極大地提高了電路設計的效率和可操作性,減輕了設計者的勞動強度。</p><p>  利用EDA工具,電子設計師可以從概念、算法、協(xié)議等開始設計電子系統(tǒng),大量工作可以通過計算機完成,并可以將電子產(chǎn)品從電路設計、性能分析到設計出IC版圖或PCB版圖的整個過程在計算機上自動處理完成。</p><p>  現(xiàn)在對EDA的概念或范疇用得很寬。

28、包括在機械、電子、通信、航空航天、化工、礦產(chǎn)、生物、醫(yī)學、軍事、等各個領(lǐng)域,都有EDA的應用。目前EDA技術(shù)已在各大公司、企事業(yè)單位和科研教學部門廣泛使用。例如在飛機制造過程中,從設計、性能測試及特性分析直到飛行模擬,都可能涉及到EDA技術(shù)。</p><p>  3.2 VHDL簡介</p><p>  3.2.1 VHDL概述</p><p>  VHDL主要用

29、于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式和描述風格與句法是十分類似于一般的計算機高級語言。VHDL的程序結(jié)構(gòu)特點是將一項工程設計,或稱設計實體(可以是一個元件,一個電路模塊或一個系統(tǒng))分成外部(或稱可是部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實體的內(nèi)部功能和算法完成部分。在對一個設計實體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設計就可以直接調(diào)用這個實體。這種將設計實體分成內(nèi)

30、外部分的概念是VHDL系統(tǒng)設計的基本點。</p><p>  3.2.2. VHDL的特點</p><p>  VHDL的主要特點如下:</p><p> ?。?)作為HDL的第一個國際標準,VHDL具有很強的可移植性。</p><p> ?。?)具有豐富的模擬仿真語句和庫函數(shù),隨時可對設計進行仿真模擬,因而能將設計中的錯誤消除在電路系統(tǒng)裝

31、配之前,在設計早期就能檢查設計系統(tǒng)功能的可行性,有很強的預測能力。</p><p> ?。?)VHDL有良好的可讀性,接近高級語言,容易理解。</p><p> ?。?)系統(tǒng)設計與硬件結(jié)構(gòu)無關(guān),方便了工藝的轉(zhuǎn)換,也不會因工藝變化而使描述過時。</p><p> ?。?)支持模塊化設計,可將大規(guī)模設計項目分解成若干個小項目,還可以把已有的設計項目作為一個模塊調(diào)用。&l

32、t;/p><p> ?。?)對于用VHDL完成的一個確定設計,可以利用EDA工具進行邏輯綜合和優(yōu)化,并能自動地把VHDL描述轉(zhuǎn)變成門電路級網(wǎng)表文件。</p><p>  (7)設計靈活,修改方便,同時也便于設計結(jié)果的交流、保存和重用,產(chǎn)品開發(fā)速度快,成本低。</p><p>  VHDL是一種快速的電路設計工具,其功能涵蓋了電路描述、電路合成、電路仿真等設計工作。VHD

33、L具有極強的描述能力,能支持系統(tǒng)行為級、寄存器傳輸級和邏輯門電路級三個不同層次的設計,能夠完成從上層到下層(從抽象到具體)逐層描述的結(jié)構(gòu)化設計思想。</p><p>  3.2.3. VHDL的基本結(jié)構(gòu)</p><p>  一個VHDL程序必須包括實體(ENTITY)和結(jié)構(gòu)體(ARCHITECTURE)。一個設計實體可看成一個盒子,通過它只能了解其外部輸入及輸出端口,無法知道盒子里的東西

34、,而結(jié)構(gòu)體則用來描述盒子內(nèi)部的詳細內(nèi)容。至于完整的VHDL程序是什么樣,實際上并沒有統(tǒng)一的標準,因為不同的程序設計目的可以有不同的程序結(jié)構(gòu)。除實體和結(jié)構(gòu)體外,多數(shù)程序還要包含庫和程序包部分。</p><p>  實體中定義了一個設計模塊的外部輸入和輸出端口,即模塊(或元件)的外部特征,描述了一個元件或一個模塊與其他部分(模塊)之間的連接關(guān)系,可以看作是輸入輸出信號和芯片管腳信息。一個設計可以有多個實體,只有處于最

35、高層的實體稱為頂層實體,EDA工具的編譯和仿真都是對頂層實體進行的。處于低層的各個實體都可作為單個元件,被高層實體調(diào)用。</p><p>  結(jié)構(gòu)體主要用來說明元件內(nèi)部的具體結(jié)構(gòu),即對元件內(nèi)部的邏輯功能進行說明,是程序設計的核心部分。</p><p>  庫是程序包的集合,不同的庫有不同類型的程序包。程序包用來定義結(jié)構(gòu)體和實體中要用到的數(shù)據(jù)類型、元件和子程序等。</p>&l

36、t;p><b>  (1)基本設計單元</b></p><p>  VHDL的基本設計單元就是實體,無論數(shù)字電路復雜還是簡單,都是由實體和構(gòu)造體組成。</p><p><b>  實體說明:</b></p><p>  實體說明有如下結(jié)構(gòu):</p><p>  ENTITY 實體名 IS&

37、lt;/p><p><b>  [端口說明]</b></p><p><b>  END 實體名;</b></p><p>  (VHDL語言中不分大小寫字母)</p><p><b>  其中:</b></p><p>  端口說明是對設計實體中輸入和輸

38、出借口進行描述,格式如下:</p><p>  PORT(端口名(,端口名):方向 數(shù)據(jù)類型名;</p><p><b> ?。?lt;/b></p><p>  端口名(,端口名):方向 數(shù)據(jù)類型名);</p><p>  端口名是賦予每個系統(tǒng)引腳的名稱,一般用幾個英文字母組成。</p><p>  

39、端口方向是定義引腳是輸入還是輸出,見表1:</p><p><b>  表1</b></p><p>  常用的端口數(shù)據(jù)類型有兩種:BIT和BIT_VECTOR,當端口被說明為BIT時,只能取值“1”或“0”。</p><p><b>  構(gòu)造體:</b></p><p>  構(gòu)造體是實體的一個重要

40、部分,每一個實體都有一個或一個以上的構(gòu)造體。</p><p><b>  一般說明</b></p><p><b>  構(gòu)造體格式如下:</b></p><p>  ARCHITECTURE 構(gòu)造體名 OF 實體名 IS</p><p>  [定義語句] 內(nèi)部信號,常數(shù),數(shù)據(jù)類型,函數(shù)等的定義&l

41、t;/p><p><b>  BEGIN</b></p><p><b>  [并行處理語句]</b></p><p>  END 構(gòu)造體名; </p><p>  構(gòu)造體描述設計實體的具體行為,它包含兩類語句:</p><p>  并行語句 并行語句總是在進程語句(PROCE

42、SS)的外部,該語句的執(zhí)行與書寫順序無關(guān),總是同時被執(zhí)行</p><p>  順序語句 順序語句總是在進程語句(PROCESS)的內(nèi)部,從仿真的角度,該語句是順序執(zhí)行的。</p><p>  一個構(gòu)造體包含幾個類型的子結(jié)構(gòu)描述,這些描述是:</p><p>  BLOCK描述(塊描述)</p><p>  PROCESS描述(進程描述)&l

43、t;/p><p>  SUNPROGRAMS描述(子程序描述)</p><p><b>  BLOCK語句描述</b></p><p>  使用BLOCK語句描述的格式如下:</p><p>  塊標號:BLOCK </p><p><b>  BEGIN</b></p&

44、gt;<p><b> ?。?lt;/b></p><p>  END BLOCK 塊標號:</p><p>  在對程序進行仿真時,BLOCK中的語句是并行執(zhí)行的,與書寫順序無關(guān),這一點和構(gòu)造體中直接寫的語句是一樣的。</p><p>  進程(PROCESS)描述</p><p>  進程描述的格式如下:&

45、lt;/p><p>  [進程名]:PROCESS(信號1,信號2,….)</p><p><b>  BEGIN :</b></p><p>  END PROCESS 進程名;</p><p>  一般用于組合電路進程模式:</p><p><b>  __進程標記:</b>

46、</p><p>  PROCESS (__信號名__信號名__信號名)</p><p>  VARIABLE __變量名 :STD_LOGIC;</p><p>  VARIABLE __變量名 :STD_LOGIC;</p><p><b>  BEGIN</b></p><p><b&

47、gt;  指定信號</b></p><p><b>  指定變量</b></p><p><b>  過程調(diào)用</b></p><p><b>  如果語句</b></p><p><b>  CASE語句</b></p><

48、;p><b>  循環(huán)語句</b></p><p>  END PROCESS __進程標記;</p><p>  用于時序電路進程模式:</p><p><b>  __進程標記:</b></p><p>  PROCESS (__信號名, __信號名, __信號名)</p>

49、<p>  VARIABLE __變量名:STD_LOGIC;</p><p>  VARIABLE __變量名:STD_LOGIC;</p><p><b>  BEGIN</b></p><p>  WAIT UNTIL __時鐘信號 = '1;</p><p><b>  指定信號<

50、;/b></p><p><b>  指定變量</b></p><p><b>  過程調(diào)用</b></p><p><b>  如果語句</b></p><p><b>  CASE語句</b></p><p><b&

51、gt;  循環(huán)語句</b></p><p>  END PROCESS __進程標記;</p><p>  在PROCESS中的語句是順序執(zhí)行的,這一點和BLOCK中的語句是不一樣的。</p><p>  當PROCESS所帶的信號量發(fā)生變化時,PROCESS中的語句就會執(zhí)行一遍。</p><p><b>  子程序描述

52、</b></p><p>  子程序的概念和其它高級程序中子程序的概念相同,在VHDL中有兩種類型:</p><p>  過程(Procedure),函數(shù)(Function)。</p><p><b>  1、過程的格式:</b></p><p>  PROCEDURE 過程名(參數(shù)1,參數(shù)2。。。。) IS

53、</p><p><b>  [定義變量語句]</b></p><p><b>  BEGIN</b></p><p><b>  [順序處理語句]</b></p><p><b>  END 過程名;</b></p><p>  

54、在過程中,語句是順序執(zhí)行的。</p><p><b>  函數(shù)</b></p><p><b>  2、函數(shù)的格式:</b></p><p>  FUNCTION 函數(shù)名(參數(shù)1,參數(shù)2。。。。) RETURN 數(shù)據(jù)類型名 IS</p><p><b>  [定義變量語句]</b&g

55、t;</p><p><b>  BEGIN</b></p><p><b>  [順序處理語句]</b></p><p>  RETURN [返回變量名];</p><p><b>  END 函數(shù)名;</b></p><p>  在VHDL 語言中函

56、數(shù)的參數(shù)都是輸入信號</p><p><b>  包、庫和配置</b></p><p><b>  庫</b></p><p>  庫是經(jīng)編譯后的數(shù)據(jù)的集合,它存放包定義、實體定義、構(gòu)造定義和配置定義。</p><p>  在設計單元內(nèi)的語句可以使用庫中的結(jié)果,所以,庫的好處就是設計者可以共享已經(jīng)編

57、譯的設計結(jié)果,在VHDL中有很多庫,但他們相互獨立。</p><p>  IEEE庫:在IEEE庫中有一個STD_LOGIC的包,它是IEEE正式認可的包。</p><p>  STD庫:STD庫是VHDL的標準庫,在庫中有名為STANDARD的包,還有TEXTIO包。若使用STANDARD包中的數(shù)據(jù)可以不按標準格式說明,但是若使用TEXTIO包,則需要按照如下格式說明:</p>

58、;<p>  LIBRARY STD;</p><p>  USE STD.TEXTIO.ALL</p><p>  另外還有ASIC庫、WORK庫和用戶自定義庫等。</p><p><b>  庫的使用:</b></p><p>  在使用庫之前,一定要進行庫說明和包說明,庫和包的說明總是放在設計單元的前

59、面:</p><p>  LIBRARY 庫名;</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>  該例說明要使用IEEE庫中的1164包中所有項目</p><p><b>  庫的作用范圍:</b></p><p>  庫的作用范圍從一個實體說明開始到它所屬的結(jié)構(gòu)體、配置為止,當有兩個實體時,第二個實體前要另加庫和包的說明。</p><p><b>  包</b

61、></p><p>  通常在一個實體中對數(shù)據(jù)類型、常量等進行的說明只可以在一個實體中使用,為使這些說明可以在其它實體中使用,VHDL提供了程序包結(jié)構(gòu),包中羅列VHDL中用到的信號定義、常數(shù)定義、數(shù)據(jù)類型、元件語句、函數(shù)定義和過程定義,它是一個可編譯的設計單元,也是庫結(jié)構(gòu)中的一個層次,使用包時可以用USE語句說明,例如:</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>  [說明語句]</b></p><p><b>  END 包名&

63、lt;/b></p><p>  包頭中列出所有項的名稱。</p><p><b>  包體格式:</b></p><p>  PACKAGE BODY 包名 IS</p><p><b>  [說明語句]</b></p><p><b>  END 包名;&

64、lt;/b></p><p>  包體給出各項的具體細節(jié)。</p><p><b>  配置</b></p><p>  用于在多構(gòu)造體中的實體中選擇構(gòu)造體,例如,在做RS觸發(fā)器的實體中使用了兩個構(gòu)造體,目的是研究各個構(gòu)造體描述的RS觸發(fā)器的行為性能如何,但是究竟在仿真中使用哪一個構(gòu)造體的問題就是配置問題。</p><

65、p><b>  配置語句格式:</b></p><p>  CONFIGURATION 配置名 OF 實體名 IS</p><p><b>  [說明語句]</b></p><p><b>  END 配置名;</b></p><p><b>  例:最簡單

66、的配置</b></p><p>  CONFIGURATION 配置名 OF 實體名 IS</p><p>  FOR 被選構(gòu)造體名</p><p><b>  END FOR; </b></p><p>  END 配置名;  </p><p>  VHDL中使用的數(shù)據(jù)類型和運算

67、操作</p><p>  VHDL可以象其它高級語言一樣定義數(shù)據(jù)類型,但還可以用戶自己定義數(shù)據(jù)類型。</p><p><b>  信號、常量和變量</b></p><p>  信號:通常認為信號是電路中的一根線</p><p>  常數(shù):可以在數(shù)字電路中代表電源、地線等等</p><p>  變量

68、:可以代表某些數(shù)值</p><p><b>  常數(shù)</b></p><p><b>  常數(shù)的描述格式:</b></p><p>  CONSTANT 常數(shù)名:數(shù)據(jù)類型:=表達式</p><p><b>  變量</b></p><p>  變量只能在

69、進程、函數(shù)和過程中使用,一旦賦值立即生效。</p><p><b>  變量的描述格式:</b></p><p>  VARIABLE 變量名:數(shù)據(jù)類型 約束條件:=表達式</p><p><b>  信號</b></p><p>  信號除了沒有方向的概念以外幾乎和端口概念一致。</p&g

70、t;<p><b>  信號的描述格式:</b></p><p>  SIGNAL 信號名:數(shù)據(jù)類型 約束條件:=表達式</p><p>  在程序中,信號值輸入信號時采用代入符”<=”,而不是賦值符“:=”,同時信號可以附加延時。</p><p><b>  信號傳送語句:</b></p>

71、;<p>  s1<=s2 AFTER 10ns</p><p>  信號是一個全局量,可以用來進行進程之間的通信</p><p><b>  信號與變量的區(qū)別:</b></p><p>  信號賦值可以有延遲時間,變量賦值無時間延遲</p><p>  信號除當前值外還有許多相關(guān)值,如歷史信息等,變

72、量只有當前值</p><p>  進程對信號敏感,對變量不敏感</p><p>  信號可以是多個進程的全局信號,但變量只在定義它之后的順序域可見</p><p>  信號可以看作硬件的一根連線,但變量無此對應關(guān)系</p><p>  VHDL語言的運算操作符</p><p>  VHDL語言的運算操作符</p&

73、gt;<p><b>  邏輯運算符</b></p><p>  要求運算符左右的數(shù)據(jù)類型必須相同,</p><p><b>  算數(shù)運算符</b></p><p>  在使用乘法運算符時,應該特別慎重,因為它可以使邏輯門數(shù)大大增加。</p><p><b>  關(guān)系運算符&

74、lt;/b></p><p>  應該注意小于等于<=和代入運算符的不同(從上下文區(qū)別)</p><p><b>  并置運算符</b></p><p>  并置運算符 ”&” 用于位連接,</p><p>  VHDL語言構(gòu)造體的描述方式</p><p>  有三種描述方式:

75、行為描述,RTL描述和ASIC描述,采用后兩種描述方式可以進行邏輯綜合。</p><p>  VHDL語言的部分描述語句</p><p><b>  部分順序描述語句</b></p><p><b>  IF 語句</b></p><p><b>  IF的門閂控制</b>&l

76、t;/p><p><b>  格式:</b></p><p>  IF 條件 THEN</p><p><b>  順序執(zhí)行語句</b></p><p><b>  END IF; </b></p><p>  IF 語句的選擇控制</p>

77、<p><b>  格式一:</b></p><p>  IF 條件 THEN</p><p><b>  順序執(zhí)行語句</b></p><p><b>  ELSE</b></p><p><b>  順序執(zhí)行語句</b></p>

78、<p><b>  END IF;</b></p><p><b>  格式二:</b></p><p>  IF 條件 THEN</p><p><b>  順序執(zhí)行語句</b></p><p>  ELSIF 條件 THEN</p><p&g

79、t;<b>  順序執(zhí)行語句</b></p><p><b> ?。?lt;/b></p><p><b> ?。?lt;/b></p><p>  ELSIF 條件 THEN</p><p><b>  順序執(zhí)行語句</b></p><p>

80、  ELSIF 條件 THEN</p><p><b>  順序執(zhí)行語句</b></p><p><b>  END IF;</b></p><p><b>  基本邏輯電路設計:</b></p><p><b>  時序電路設計</b></p>

81、;<p>  在使用VHDL進行電梯控制器的設計,主要就是對電梯軟件部分進行設計,使用VHDL中的邏輯關(guān)系建立電梯的升降模式,開門,關(guān)門達到動作,而外部的硬件設備基本上保持不變。但是使用VHDL硬件描述語言設計電梯控制器可以為以后電梯實現(xiàn)智能控制奠定基礎(chǔ)。</p><p>  第四章 程序設計與調(diào)試</p><p><b>  4.1程序設計說明</b&

82、gt;</p><p>  4.1.1端口、寄存器設計說明</p><p> ?。?)由功能要求得到本程序設計的端口必須包括:</p><p>  輸入端口:時鐘(clk,頻率為2Hz)、超載(full)、關(guān)門中斷(deng)、提前關(guān)門(quick)、清除報警(clr)、電梯外人的上升請求信號(c_u1,c_u2,c_u3, ,c_u4,c_u5,c_u6,c_u7

83、,c_u8)、電梯外人的下降請求信號(c_d2,c_d3,c_d4,c_d5,c_d6,c_d7,c_d8,c_d9)、電梯內(nèi)人的請求信號(d1,d2,d3,d4,d5,d6,d7,d8,d9)、到達樓層信號(g1,g2,g3,g4,g5,g6,g7,g8,g9)。</p><p>  輸出端口:電梯門控制信號(door)、電梯所在樓層顯示(led)電梯外人上升請求信號顯示(led_c_u)、電梯外人下降請求信號

84、顯示(led_c_d)、電梯內(nèi)請求信號顯示(led_d)、看門狗報警信號(wahaha)、電梯運動方向顯示(ud)、超載警告信號(alarm)、電機控制信號(up,down)。其分布如下圖所示:</p><p> ?。?)程序要求的寄存器(中間信號)包括:</p><p>  電梯內(nèi)人請求信號寄存信號(d11,d22,d33,d44,d55,d66,d77,d88,d99)、電梯外人上升請

85、求信號存信號(c_u11,c_u22,c_u33,c_u44,c_u55,c_u66,c_u77,c_u88)、電梯外人下降請求信號寄存信號(c_d22,c_d33,c_d44,c_d55,c_d66,c_d77,c_d88,c_d99)、分頻信號(q)、關(guān)門延時計數(shù)器(q1)、看門狗計數(shù)器(q2)、電梯內(nèi)外請求信號寄存器(dd,cc_u,cc_d,dd_cc)、開門使能信號(opendoor)、電梯運動方向信號寄存器(updown)、

86、預備上升、預備下降預操作使能信號(en_up,en_dw)。</p><p>  4.1.2模塊設計說明</p><p>  本程序由三個基本模塊組成,包括調(diào)用VHDL庫模塊、實體設計模塊和結(jié)構(gòu)體設計模塊。而在結(jié)構(gòu)體模塊中又內(nèi)嵌有進程執(zhí)行單元。</p><p><b>  調(diào)用VHDL庫</b></p><p>  使用

87、library語句,本程序應用了VHDL庫中的“通用ieee庫”和“標準std庫” 。</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實體設計模塊</p><p>  entity dianti is </p><p>  port ( clk : in std_logic; --時鐘信號(頻率為2Hz)</p><p>  full,deng,quick,clr :

89、 in std_logic; --超載、關(guān)門中斷、提前關(guān)門清除報警信號</p><p>  c_u1,c_u2,c_u3,c_u4,c_u5,c_u6,c_u7,c_u8: in std_logic; --電梯外人的上升請求信號</p><p>  c_d2,c_d3,c_d4,c_d5,c_d6,c_d7,c_d8,c_d9: in std_logic; --電梯外人的下降請求

90、信號</p><p>  d1,d2,d3,d4,d5,d6 ,d7,d8,d9: in std_logic; --電梯內(nèi)人的請求信號</p><p>  g1,g2,g3,g4,g5,g6 ,g7,g8,g9: in std_logic; --到達樓層信號</p><p>  door : out std_logic_vecto

91、r(1 downto 0); --電梯門控制信號</p><p>  led : out std_logic_vector(6 downto 0); --電梯所在樓層顯示</p><p>  led_c_u:out std_logic_vector(8 downto 0); --電梯外人上升請求信號顯示</p><p>  led_c_d:out s

92、td_logic_vector(8 downto 0); --電梯外人下降請求信號顯示</p><p>  led_d : out std_logic_vector(8 downto 0); --電梯內(nèi)請求信號顯示</p><p>  wahaha : out std_logic; --看門狗報警信號</p><p>  ud

93、,alarm : out std_logic; --電梯運動方向顯示,超載警告信號</p><p>  up,down : out std_logic ); --電機控制信號和電梯運動</p><p>  end dianti;</p><p> ?。?)archi結(jié)構(gòu)體設計模塊和process進程執(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)人請求信號寄存信號</p><p>  signal c_u11,c_u22,c_u33,c_u44,c_u55,c_u66,c_u77,c_u88:st

95、d_logic; --電梯外人上升請求信號寄存信號</p><p>  signal c_d22,c_d33,c_d44,c_d55,c_d66,c_d77,c_d88,c_d99:std_logic; --電梯外人下降請求信號寄存信號</p><p>  signal q:integer range 0 to 1; --分頻信號</p&

96、gt;<p>  signal q1:integer range 0 to 6; --關(guān)門延時計數(shù)器 </p><p>  signal q2:integer range 0 to 9; --看門狗計數(shù)器</p><p>  signal dd,cc_u,cc_d,dd_cc:std_logic_vec

97、tor(8 downto 0); --電梯內(nèi)外請求信號寄存器</p><p>  signal opendoor:std_logic; --開門使能信號</p><p>  signal updown:std_logic; --電梯運動方向信號寄存器</p><p>  signa

98、l en_up,en_dw:std_logic; --預備上升、預備下降預操作使能信號</p><p><b>  begin</b></p><p>  process(clk)</p><p><b>  begin</b></p><p>  … (進程語

99、句具體看附錄)</p><p>  end behav;</p><p>  4.1.3具體語句設計說明</p><p>  上文已說明了構(gòu)成VHDL程序的兩大部分—實體和結(jié)構(gòu)體的相關(guān)語句。在這些語句里,賦值語句占了相當一部分。在VHDL語言里,賦值符號一般都是“<=”</p><p>  符號,具體形式如下:</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語言也具有與一般編程語言相同的一些語句邏輯結(jié)構(gòu),如上述中的“if…then…elsif…then…;”等。這是VHDL中的順序語句,與我們常見的C語言中的if作為條件語句不同。</p><p>  在結(jié)構(gòu)體中對電梯的運行行為作出描述,其中電梯處于二樓…五樓情況復雜些,以下給出二樓

103、情況的具體說明。</p><p>  elsif g2='1' then led<="0010010"; --電梯到達2樓,數(shù)碼管顯示2</p><p>  if updown='1' then --電梯前一運動狀態(tài)位上升 </p><p>  if d22='1' or c_u22=&

104、#39;1' then</p><p>  d22<='0'; c_u22<='0'; opendoor<='1'; --有當前層的請求,則電梯進入開門狀態(tài) </p><p>  elsif dd_cc>"0000000000000011" then </p>

105、<p>  en_up<='1';en_dw<='0'; opendoor<='0'; --有上升請求,則電梯進入預備上升狀態(tài) </p><p>  elsif dd_cc<"0000000000000010" then </p><p>  en_dw<='1

106、';en_up<='0'; opendoor<='0';--有下降請求,則電梯進入預備下降狀態(tài) </p><p><b>  end if; </b></p><p>  --電梯前一運動狀態(tài)為下降 </p><p>  elsif

107、d22='1' or c_d22='1' then</p><p>  d22<='0'; c_d22<='0';opendoor<='1'; --有當前層的請求,則電梯進入開門狀態(tài)</p><p>  elsif dd_cc<"0000000000000010" t

108、hen </p><p>  .en_dw<='1';en_up<='0'; opendoor<='0'; --有下降請求,則電梯進入預備下降狀態(tài) </p><p>  elsif dd_cc>"0000000000000011" then</p><p>

109、  en_up<='1';en_dw<='0'; opendoor<='0'; --有上升請求,則電梯進入預備上升狀態(tài) </p><p><b>  end if;</b></p><p>  在上述語句中的“elsif g2=‘1’then led<=“0010010;”,led

110、的賦值之所以為“0010010”是根據(jù)共陽極七段數(shù)字顯示器的發(fā)光段排列的,如圖所示。</p><p>  可發(fā)光段a、b、c、e、g形成一個2字。以此類推,在一樓時led賦值為“100111”,三樓時為“0000110”,四樓時為“1001100”,五樓時為“0100100”,六樓時為“0100000”,七樓時為“0001111”,八樓時為“0000000”,九樓時為“0000100”。</p>&

111、lt;p>  在進程執(zhí)行單元里,對電梯在樓層時的操作情況作出了描述,例如:開門、關(guān)門延時、超載報警、故障報警以及電梯內(nèi)的請求信號處理,具體說明給出如下:</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'; --清除故障報警 </p><p>  elsif full='1' then alarm<='1'; q1<=0;

113、 --超載報警</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'; --故障報警</p><p><b>  else</b></p><p>  if ope

115、ndoor='1' then door<="10";q1<=0;q2<=0;up<='0';down<='0'; --開門操作</p><p>  elsif en_up='1' then --上升預操作 </p><

116、p>  if deng='1' then door<="10";q1<=0;q2<=q2+1; --關(guān)門中斷</p><p>  elsif quick='1' then q1<=3; --提前關(guān)門</p><p>  elsif q1=6 then doo

117、r<="00";updown<='1';up<='1'; --關(guān)門完畢,電梯進入上升狀態(tài)</p><p>  elsif q1>=3 then door<="01";q1<=q1+1; --電梯進入關(guān)門狀態(tài)</p><p>  else q1<=q1+1;door

118、<="00"; --電梯進入等待狀態(tài)</p><p><b>  end if;</b></p><p>  elsif en_dw='1' then --下降預操作</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'; --清除超載報警</p><p>  if d1='1' then d11<=d1;

122、 --對電梯內(nèi)人請求信號進行檢測和寄存 </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; --對電梯外人上升請求信號進行檢測和寄存</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; --對電梯外人下降請求信號進行檢測和寄存</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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論