【正文】
A工作原理 FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個(gè)概念,內(nèi)部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內(nèi)部連線(Interconnect)三個(gè)部分。但是他們也有很多的優(yōu)點(diǎn)比如可以快速成品,可以被修改來改正程序中的錯(cuò)誤和更便宜的造價(jià)。與傳統(tǒng)的原理圖設(shè)計(jì)方法相比,HDL語言更適合描述規(guī)模大的數(shù)字系統(tǒng),它能夠使設(shè)計(jì)者在比較抽象的層次上對(duì)所設(shè)計(jì)系統(tǒng)的結(jié)構(gòu)和邏輯功能進(jìn)行描述。verilog后來竟然干起了把VHDL語言翻譯成verilog語言的工作,這樣沒有任何含金量的工作讓我浪費(fèi)了不少時(shí)間。使用三段式的有限狀態(tài)機(jī)的方法也花了很多時(shí)間去修正和改善。20世紀(jì)90年代,國際上電子和計(jì)算機(jī)技術(shù)較先進(jìn)的國家,一直在積極探索新的電子電路設(shè)計(jì)方法,并在設(shè)計(jì)方法、工具等方面進(jìn)行了徹底的變革,取得了巨大成功。(3)開放性和標(biāo)準(zhǔn)化現(xiàn)代EDA工具普遍采用標(biāo)準(zhǔn)化和開放性框架結(jié)構(gòu),任何一個(gè)EDA系統(tǒng)只要建立了一個(gè)符合標(biāo)準(zhǔn)的開放式框架結(jié)構(gòu),就可以接納其他廠商的EDA工具儀器進(jìn)行設(shè)計(jì)工作。另外一種方法是用CPLD(復(fù)雜可編程邏輯器件備)。 3)FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱可視部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分。 (3) VHDL 語言具有很強(qiáng)的移植能力 VHDL 語言很強(qiáng)的移植能力主要體現(xiàn)在: 對(duì)于同一個(gè)硬件電路的 VHDL 語言描述 , 它可以從一個(gè)模擬器移植到另一個(gè)模擬器上、從一個(gè)綜合器移植到另一個(gè)綜合器上或者從一個(gè)工作平臺(tái)移植到另一個(gè)工作平臺(tái)上去執(zhí)行。它要改變到新的狀態(tài),依賴于轉(zhuǎn)換函數(shù)。具體采取的操作不僅能取決于接收到的事件,還能取決于各個(gè)事件的相對(duì)發(fā)生順序。第二章 電梯控制系統(tǒng)的分析隨高層樓宇的增加,電梯越來越多的走進(jìn)了人們的生活,對(duì)人們的生活的影響越來越大。②獨(dú)立自主、艱苦研制、生產(chǎn)階段(19501979年),這一階段我國共生產(chǎn)安裝電梯約1萬臺(tái)。要求指示電梯所在樓層位置等其他必要的信號(hào)。我在序言中也講到了,“應(yīng)用有限狀態(tài)機(jī)”實(shí)現(xiàn)電梯的實(shí)時(shí)控制是最好不過的方法了,通過我的分析以及參考圖書館的有關(guān)書籍,也少不了參照一些網(wǎng)上的程序,最后總結(jié)出了電梯正常運(yùn)行的七個(gè)狀態(tài):上升、下降、上升的過程中途停止、下降的過程中途停止、開門、關(guān)門、等待狀態(tài)。這一點(diǎn)從下面的參數(shù)定義中可以窺見一二。 parameter TRUE=139。第三章 電梯控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) MAX+PLUSII的介紹Max+plusII(或?qū)懗蒑axplus2,或MP2) 是Altera公司推出的的第三代PLD開發(fā)系統(tǒng)(Altera第四代PLD開發(fā)系統(tǒng)被稱為:QuartusII,主要用于設(shè)計(jì)新器件和大規(guī)模CPLD/FPGA).使用MAX+PLUSII的設(shè)計(jì)者不需精通器件內(nèi)部的復(fù)雜結(jié)構(gòu)。對(duì)于上述綜合生成的網(wǎng)表,根據(jù)布爾方程功能等效的原則,用更小更快的綜合結(jié)果代替一些復(fù)雜的單元,并與指定的庫映射生成新的網(wǎng)表,這是減小電路規(guī)模的一條必由之路。b000010,639。b0000100,739。 // LCD Back Light ON/OFFoutput LCD_RW。就只加了一個(gè)“ 根據(jù)不同的輸入產(chǎn)生不同的輸出 ”的模塊。初始化狀態(tài)為1樓等待門是關(guān)閉的。 //output ports: output [6:0]out。 reg [1:0] UpDnFlag。b001000, FLOOR5=639。方法雖然違反了“同步電路最好//沒有時(shí)鐘門控”的要求,但是在此只要“負(fù)面影響”不是很大還是可以接受的。pos)0)//??空?qǐng)求中有當(dāng)前樓層??空?qǐng)求否 NextState=OPENDOOR。 else if((down_allamp。FLOOR1))||((request_allamp。FLOOR5))||((request_allamp。(down_allamp。amp。amp。 end else if(request_all||down_all) NextState=UP。 end else if(request_all||up_all)//上升和??空?qǐng)求中有當(dāng)前層的請(qǐng)求且只有當(dāng)前層下的請(qǐng)求 NextState=DOWN。(request_allamp。amp。amp。amp。(request_allamp。(request_allamp。((down_all^pos)pos)) NextState=UP。pos)amp。amp。(down_allamp。(down_allamp。FLOOR4))||((request_allamp。 else if(((request_allamp。//有,下一狀態(tài)轉(zhuǎn)為UPSTOP(??亢笠?s才開門,UPSTOP即為這1s的過渡期) else if((request_allpos)||(up_allpos))//??炕蛏仙?qǐng)求中有當(dāng)前樓層之上的請(qǐng)求否 NextState=UP。 display_decode_count h2(cp_50M,count,count_out)。b00。 //定義樓層的符號(hào)常量 parameter FLOOR1=639。 wire [6:0]count_out。在此謹(jǐn)向楊老師表示我最誠摯的敬意和感謝! 同時(shí),感謝所有教導(dǎo)過我、關(guān)心過我的老師以及電信學(xué)院的所有老師。以上是我們所應(yīng)實(shí)現(xiàn)的基本功能。其中也采用了“電梯主控制器”中的信號(hào)并置的思想。 // 50 MHzinput KEY。b10,分別代表當(dāng)前電梯是上升的,下降的和靜止的。 電梯控制系統(tǒng)的VHDL語言設(shè)計(jì)及仿真(ASCI設(shè)計(jì)中,這一步驟稱為第一次Signoff)PLD設(shè)計(jì)中,有時(shí)跳過這一步。我的程序中采用的是標(biāo)準(zhǔn)的MEALY型狀態(tài)狀態(tài)機(jī)。b000100, FLOOR4=639。b0}。我們?cè)O(shè)計(jì)的智能電梯控制器應(yīng)該可以實(shí)時(shí)接受各樓層的上下請(qǐng)求信號(hào)及電梯內(nèi)部的??空?qǐng)求,然后根據(jù)這些請(qǐng)求實(shí)現(xiàn)對(duì)電梯正確的控制:除了頂層和底層外,各樓層均設(shè)有上下請(qǐng)求開關(guān),頂層和底層分別設(shè)有下降和上升請(qǐng)求開關(guān),這一點(diǎn)應(yīng)該不難理解。隨著城市向大型化、高層化的發(fā)展,我國每年將需要電梯在40000臺(tái)以上。隨著EDA技術(shù)的快速發(fā)展.基于FPGA的微機(jī)化控制已廣泛應(yīng)用于電梯電路設(shè)計(jì)與控制的各個(gè)方面。動(dòng)作執(zhí)行完畢后,可以遷移到新的狀態(tài),也可以仍舊保持原狀態(tài)。 顯然,必須采取不同的技術(shù)來處理這些情況。這些節(jié)點(diǎn)中至少有一個(gè)必須是終態(tài)。 (2) VHDL 語言具有強(qiáng)大的硬件描述能力 VHDL 語言具有多層次的電路設(shè)計(jì)描述功能,既可描述系統(tǒng)級(jí)電路 , 也可以描述門級(jí)電路;描述方式既可以采用行為描述、寄存器傳輸描述或者結(jié)構(gòu)描述,也可以采用三者的混合描述方式。 VHDL語言及程序概述VHDL 的英文全名是 VeryHighSpeed Integrated Circuit Hardware Description Language,誕生于 1982 年。一些FPGA可以讓設(shè)備的一部分重新編輯而其他部分繼續(xù)正常運(yùn)行。 FPGA一般來說比ASIC(專用集成芯片)的速度要慢,無法完成復(fù)雜的設(shè)計(jì),而且消耗更多的電能。(2)采用硬件描述語言進(jìn)行設(shè)計(jì)采用硬件描述語言進(jìn)行電路與系統(tǒng)的描述是當(dāng)前EDA技術(shù)的另一個(gè)特征。t got any progress, I give up this handle a variety of state method, then turned to my original finite state machine method. Use the finite state machine 3sectional methods also spent a lot of time to modify and improve. Realize the basic functions, when a meet more plex situations (parables meanwhile several people in request or is also have two in different floor request? How should the elevator running these special cases I at that time has not find appropriate and effective approach to solve).Abstract KEY WORDS: A signal and buy 當(dāng)時(shí)我不僅采用“信號(hào)并置的算法”外,還采納了它的“以樓層為電梯的狀態(tài)轉(zhuǎn)移的依據(jù)”的思想,這確實(shí)是一個(gè)不錯(cuò)的方法,不過當(dāng)時(shí)我一直沒有任何進(jìn)展,一是它是用VHDL語言編寫的,而且我對(duì)這個(gè)語言不是很熟悉所以不是特別理解。實(shí)現(xiàn)了基本的功能,當(dāng)時(shí)一遇到比較復(fù)雜的情況時(shí)(比喻同時(shí)有幾個(gè)人在請(qǐng)求或者是同時(shí)有兩個(gè)在不同樓層的請(qǐng)求時(shí)電梯該如何運(yùn)行呢,這些特殊情況我在當(dāng)時(shí)一直沒有找到合適和有效的方法去解決)。在電子技術(shù)設(shè)計(jì)領(lǐng)域,可編程邏輯器件(如CPLD、FPGA)的應(yīng)用,已得到廣泛的普及,這些器件為數(shù)字系統(tǒng)的設(shè)計(jì)帶來了極大的靈活性。這樣就可以實(shí)現(xiàn)各種EDA工具的優(yōu)化組合,并集成在一個(gè)易于管理的統(tǒng)一環(huán)境下,實(shí)現(xiàn)資源共享。 CPLD與FPGA的關(guān)系 早在1980年代中期,F(xiàn)PGA已經(jīng)在PLD設(shè)備中扎根。 4)FPGA是ASIC電路中設(shè)計(jì)周期最短、開發(fā)費(fèi)用最低、風(fēng)險(xiǎn)最小的器件之一。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體。 (4) VHDL 語言的設(shè)計(jì)描述與器件無關(guān) 采用 VHDL 語言描述硬件電路時(shí), 設(shè)計(jì)人員并不需要首先考慮選擇進(jìn)行設(shè)計(jì)的器件。在有限狀態(tài)機(jī)中,會(huì)有有許多變量,例如,狀態(tài) 機(jī)有很多與動(dòng)作(actions)轉(zhuǎn)換(Mealy機(jī))或狀態(tài)(摩爾機(jī))關(guān)聯(lián)的動(dòng)作,多重起始狀態(tài),基于沒有輸入符號(hào)的轉(zhuǎn)換,或者指定符號(hào)和狀態(tài)(非定有 限狀態(tài)機(jī))的多個(gè)轉(zhuǎn)換,指派給接收狀態(tài)(識(shí)別者)的一個(gè)或多個(gè)狀態(tài),等等。之所以能 做到這一點(diǎn),是因?yàn)闄C(jī)器能跟蹤一個(gè)內(nèi)部狀態(tài),它會(huì)在收到事件后進(jìn)行更新。為了讓電梯更好的服務(wù)人們,各種電梯新技術(shù)不斷地發(fā)展起來。③建立三資企業(yè),行業(yè)快速發(fā)展階段(自1980年至今),這一階段我國共生產(chǎn)安裝電梯約40萬臺(tái)。通過仿真結(jié)果驗(yàn)證其正確性,并在開發(fā)板上進(jìn)行硬件測(cè)試。電梯在上述七個(gè)狀態(tài)間的轉(zhuǎn)移是通過三段式狀態(tài)機(jī)來實(shí)現(xiàn)的,各狀態(tài)間的轉(zhuǎn)移大體與生活中的電梯運(yùn)轉(zhuǎn)一致,有如下的基本原則:方向?yàn)榈谝粌?yōu)先準(zhǔn)則,這就是曾老師給我們的技術(shù)指標(biāo)。 parameter WAIT=739。b1, FALSE=139。設(shè)計(jì)者可以用自己熟悉的設(shè)計(jì)工具(如原理圖輸入或硬件描述語言)建立設(shè)計(jì),MAX+PLUSII把這些設(shè)計(jì)轉(zhuǎn)自動(dòng)換成最終所需的格式。b000100,639。b0001000,739。 // LCD Read/Write Select, 0 = Write, 1 = Readoutput LCD_EN。中途還遇到了字符型液晶不能更新的問題,不過在同學(xué)的幫助下,最終還是解決了。這個(gè)就不用多解釋了。//輸出樓層 output [6:0] LiftState。 reg [6:0] LiftState,NextState。b010000, FLOOR6=639。 //將各上升請(qǐng)求信號(hào)實(shí)時(shí)地合并(6樓為頂層,無上升請(qǐng)求,考慮到通用性,將第4位填零) always (call_up_1 or call_up_2 or call_up_3 or call_up_4 or call_up_5) up_all={139。//有當(dāng)前樓層請(qǐng)求,則下一狀態(tài)轉(zhuǎn)開門 else if(request_allpos)//有當(dāng)前樓層之上的??空?qǐng)求否(優(yōu)先向上的請(qǐng)求) NextState=UP。pos)||(posFLOOR6)) //其實(shí)這樣做意義不大,只是使上下標(biāo)志提前變化 NextState=UPSTOP。FLOOR2)posamp。FLOOR6)posamp。FLOOR3))||((down_allamp。(up_allamp。(up_allamp。 else NextState=WAIT。 else NextState=WAIT。FLOOR3))||((request_allamp。(down_allamp。(down_allamp。FLOOR4)posamp。amp。amp。amp。 else if((up_allamp。FLOOR4)posamp。amp。amp。(requ