版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、畢業(yè)設(shè)計(jì)(論文)題 目:基于fpga的自動(dòng)售貨 機(jī)控制系統(tǒng)設(shè)計(jì) 專業(yè):應(yīng)用電子技術(shù)班級(jí): 10222學(xué) 號(hào): 39號(hào)姓 名: 指導(dǎo)老師: 成都工業(yè)學(xué)院二一三年五月論 文 摘 要隨著電子技術(shù)的發(fā)展,當(dāng)今數(shù)字系統(tǒng)的設(shè)計(jì)正朝著速度快,容量大,體積小,重量輕的方向發(fā)展,推動(dòng)該潮流迅猛發(fā)展的引擎就是日趨進(jìn)步和完善的asic設(shè)計(jì)技術(shù),aisc芯片具有價(jià)格低,體積小,可靠性高等優(yōu)點(diǎn),目前在電子產(chǎn)品中已有廣泛的應(yīng)用,vhdl是一種用來描述數(shù)字邏輯系統(tǒng)的“編程語言”,它通過對(duì)硬件行為的直接描述來實(shí)現(xiàn)對(duì)硬件的物理實(shí)現(xiàn),代表了當(dāng)今硬件設(shè)計(jì)的發(fā)展方向。本文是在vhdl的基礎(chǔ)上對(duì)自動(dòng)售貨機(jī)進(jìn)行設(shè)計(jì)來實(shí)現(xiàn)其基本功能的,采
2、用了altera的開發(fā)軟件quarts ii。通過在該軟件平臺(tái)上進(jìn)行數(shù)字電路設(shè)計(jì)和仿真的方法,闡述了vhdl(very high speed integrated circuit hardware description language)超高速集成電路硬件描述語言的一些特點(diǎn)及語法結(jié)構(gòu),介紹了自動(dòng)售貨機(jī)的基本原理、系統(tǒng)組成和主要功能,并分析討論了用vhdl語言開發(fā)自動(dòng)售貨機(jī)系統(tǒng)的設(shè)計(jì)流程。本設(shè)計(jì)采用vhdl硬件描述語言編程的設(shè)計(jì)方法設(shè)計(jì)系統(tǒng)核心電路的硬件程序,在quartus ii軟件平臺(tái)上進(jìn)行編譯和仿真。 文章首先簡(jiǎn)述了自動(dòng)售貨機(jī)系統(tǒng)的意義和發(fā)展現(xiàn)狀以及vhdl語言的特點(diǎn),然后介紹了自動(dòng)售貨
3、機(jī)的設(shè)計(jì)要求、設(shè)計(jì)思路,并給出了總體設(shè)計(jì)框圖,通過分析設(shè)計(jì)寫出vhdl程序源代碼,將代碼在quartus ii軟件平臺(tái)上進(jìn)行編譯仿真,波形基本符合設(shè)計(jì)要求。最終完成的自動(dòng)售貨機(jī)系統(tǒng)具有商品選擇,投幣處理、出貨找零、異常退幣等主要功能,整個(gè)系統(tǒng)的開發(fā)體現(xiàn)了在quartus ii軟件平臺(tái)上用vhdl設(shè)計(jì)數(shù)字控制系統(tǒng)的實(shí)用性。關(guān)鍵詞:自動(dòng)售貨機(jī),硬件描述語言vhdl, quarts ii,fpgaabstractwith the development of electronic technology, todays digital system design is moving fast, lar
4、ge capacity, small size, light weight and direction of development, and promote the rapid development of the trend is increasingly the engine of progress and improvement of the asic design techniques, aisc chip has a low price, small size, high reliability, and is currently in electronic products ha
5、s been widely used, vhdl is a digital logic system used to describe the programming language, which acts by direct description of the hardware to the physical implementation of the hardware, the hardware design represents the current direction of development. this article is based on the vhdl design
6、 for vending machines to achieve its basic functions, using alteras development software quarts ii. by the software platform for the digital circuit design and simulation method, elaborated vhdl (very high speed integrated circuit hardware description language) high-speed integrated circuit hardware
7、 description language, some characteristics and grammatical structures introduced the basic principles of automatic vending machine , system components and major functions, and analyzed and discussed using vhdl language development vending machine system design flow. the design uses vhdl hardware de
8、scription language design methods core of the system hardware circuit procedures, the quartus ii software platform to compile and simulation.the article first outlines the vending machine system development status as well as the meaning and characteristics of the vhdl language, then introduces the v
9、ending machine design requirements, design ideas, and gives the overall design diagram, through analysis and design to write vhdl source code , the code in the quartus ii software platforms compiled simulation, waveform basically meet the design requirements. the finished product selection system ha
10、s a vending machine, coin handling, shipping give change, unusual coin and other major features, reflects the development of the entire system in the quartus ii software platform design of digital control systems using vhdl practicality.key words: vending machines, vhdl, fpga, the quartus ii目錄論 文 摘
11、要abstract第1章 緒論11.1題目背景與選題意義:11.2設(shè)計(jì)方案比較與選擇:21.3自動(dòng)售貨機(jī)控制電路的性能要求:2第二章 自動(dòng)售貨機(jī)控制電路總體設(shè)計(jì)3第三章 自動(dòng)售貨機(jī)控制電路各模塊信號(hào)分析51.主分頻器模塊52.主控制器模塊63.選擇定時(shí)模塊64.商品金額計(jì)算模塊65.給錢處理模塊76.找零出貨模塊7第四章 自動(dòng)售貨機(jī)控制電路的算法狀態(tài)機(jī)圖描述81.主控制器模塊81.1商品種類選擇控制狀態(tài)機(jī)圖81.2.商品數(shù)量選擇控制狀態(tài)機(jī)圖81.3.啟動(dòng)/取消控制算法狀態(tài)機(jī)圖描述122. 選擇定時(shí)模塊12第五章 自動(dòng)售貨機(jī)控制電路各模塊仿真結(jié)果及分析151.主分頻器模塊仿真波形:152.主控制
12、器模塊仿真波形:153.選擇的定時(shí)模塊仿真波形:164.商品金額計(jì)算仿真波形:165.給錢處理模塊仿真波形:166.找零出貨模塊仿真波形:177.頂層模塊仿真波形:17第六章 自動(dòng)售貨機(jī)控制電路的具體vhdl描述181.主分頻器模塊182.主控制器模塊193.選擇的定時(shí)模塊234,商品金額計(jì)算模塊255,給錢處理模塊276,找零出貨模塊287頂層文件29結(jié)束語32致謝33參考文獻(xiàn)33第1章 緒論1.1題目背景與選題意義:隨著電子技術(shù)的發(fā)展,當(dāng)今數(shù)字系統(tǒng)的設(shè)計(jì)正朝著速度快,容量大,體積小,重量輕的方向發(fā)展,推動(dòng)該潮流迅猛發(fā)展的引擎就是日趨進(jìn)步和完善的asic設(shè)計(jì)技術(shù)。本數(shù)字系統(tǒng)的設(shè)計(jì)可以直接面向
13、用戶需求,根據(jù)系統(tǒng)的行為和功能要求,自上至下地逐層完成相應(yīng)的描述,綜合,優(yōu)化,仿真與驗(yàn)證,直到生成器件。上述設(shè)計(jì)過程除了系統(tǒng)行為和功能描述以外,其余所有的設(shè)計(jì)過程幾乎都可以用計(jì)算機(jī)來自動(dòng)地完成,也就是人們所謂的電子設(shè)計(jì)自動(dòng)化,這樣大大地縮短了系統(tǒng)的設(shè)計(jì)周期,以適應(yīng)當(dāng)今品種多,批量小的電子市場(chǎng)的需求,提高產(chǎn)品的競(jìng)爭(zhēng)能力。vhdl是一種用來描述數(shù)字邏輯系統(tǒng)的“編程語言”,它通過對(duì)硬件行為的直接描述來實(shí)現(xiàn)對(duì)硬件的物理實(shí)現(xiàn),代表了當(dāng)今硬件設(shè)計(jì)的發(fā)展方向。第一,vhdl功能強(qiáng)大,靈活性強(qiáng):vhdl具有功能強(qiáng)大的語言結(jié)構(gòu),可用簡(jiǎn)潔明確的代碼描述來進(jìn)行復(fù)雜控制邏輯的設(shè)計(jì),并且它為了有效控制設(shè)計(jì)的實(shí)現(xiàn),它還具
14、有多層次的設(shè)計(jì)描述功能,支持設(shè)計(jì)庫(kù)和可重復(fù)使用的元件生成,它還支持階層設(shè)計(jì),并提供模塊設(shè)計(jì)的創(chuàng)建,vhdl是一種設(shè)計(jì),模擬,綜合的標(biāo)準(zhǔn)硬件描述語言。第二,vhdl不依賴于器件設(shè)計(jì):vhdl允許設(shè)計(jì)者生成一個(gè)設(shè)計(jì),而并不需要首先選擇一個(gè)用來實(shí)現(xiàn)設(shè)計(jì)的器件,對(duì)于同一個(gè)設(shè)計(jì)描述,可以采用多種不同的器件結(jié)構(gòu)來實(shí)現(xiàn)其功能,若需要對(duì)設(shè)計(jì)進(jìn)行資源利用和性能方面的優(yōu)化,也并不是要求設(shè)計(jì)者非常熟悉器件的結(jié)構(gòu)才行。第三,vhdl可移植性:vhdl的可移植性允許設(shè)計(jì)者對(duì)需要綜合的設(shè)計(jì)描述進(jìn)行模擬,在綜合前對(duì)一個(gè)數(shù)千門的設(shè)計(jì)描述進(jìn)行模擬,可以節(jié)約設(shè)計(jì)者可觀的時(shí)間,在這時(shí)發(fā)現(xiàn)設(shè)計(jì)上的瑕疵,就能夠在設(shè)計(jì)之前給予糾正,因?yàn)?/p>
15、vhdl是一個(gè)標(biāo)準(zhǔn)語言,故vhdl的設(shè)計(jì) 描述可以被不同的工具所支持,可以從一個(gè)模擬工具移植到另一個(gè)模擬工具,從一個(gè)綜合工具移植到另一個(gè)綜合工具,從一個(gè)工作平臺(tái)移植到另一個(gè)工作平臺(tái)去執(zhí)行。第四,vhdl性能評(píng)估能力:非依賴器件的設(shè)計(jì)和可移植能力允許設(shè)計(jì)者采用不同的器件結(jié)構(gòu)和不同的綜合工具來評(píng)估設(shè)計(jì),在設(shè)計(jì)者開始設(shè)計(jì)之前,無需了解將采用何種器件,設(shè)計(jì)者可以進(jìn)行一個(gè)完整的設(shè)計(jì)描述,并且對(duì)其進(jìn)行綜合,生成選定的器件結(jié)構(gòu)的邏輯功能,然后評(píng)估結(jié)果,選用最合適你設(shè)計(jì)需求的器件,為了衡量綜合的質(zhì)量,同樣可以用不同的綜合工具所得到的綜合結(jié)果來進(jìn)行分析和評(píng)估。第五,vhdl開發(fā)的產(chǎn)品上市時(shí)間快,成本低:vhdl
16、語言的設(shè)計(jì)將大大提高數(shù)字單片化的設(shè)計(jì)實(shí)現(xiàn)速度,它使設(shè)計(jì)描述快捷,方便,使設(shè)計(jì)的快速?gòu)?fù)制簡(jiǎn)便易行,vhdl和可編程邏輯的組合作為一類強(qiáng)有力的現(xiàn)場(chǎng)集成設(shè)計(jì)方式,將為設(shè)計(jì)者產(chǎn)品的上市帶來創(chuàng)紀(jì)錄的速度。鑒于vhdl具有以上諸多優(yōu)點(diǎn),只要開發(fā)者具備一定的高級(jí)語言程序設(shè)計(jì)基礎(chǔ),擁有pascal、c等計(jì)算機(jī)高級(jí)語言的基礎(chǔ),同時(shí)又了解一些基本數(shù)字電路的設(shè)計(jì)方法,在此基礎(chǔ)上來學(xué)習(xí)vhdl程序設(shè)計(jì)應(yīng)該是比較容易的,可以輕松地掌握vhdl使硬件工作軟件化?,F(xiàn)代電子系統(tǒng)設(shè)計(jì)人員應(yīng)該把vhdl語言作為一種基礎(chǔ)知識(shí)來學(xué)習(xí),并要求能夠熟練地使用eda的設(shè)計(jì)工具。1.2設(shè)計(jì)方案比較與選擇:本文是在vhdl的基礎(chǔ)上對(duì)自動(dòng)售貨機(jī)
17、進(jìn)行設(shè)計(jì)來實(shí)現(xiàn)其基本功能的。由于以往的設(shè)計(jì)主要是通過兩種方式:通過數(shù)字電路和模擬電路設(shè)計(jì)、基于單片機(jī)的設(shè)計(jì)。第一種方式的缺點(diǎn)既所設(shè)計(jì)的整體電路規(guī)模較大,所用的器件較多,造成故障率高,導(dǎo)致計(jì)價(jià)器不夠準(zhǔn)確;而基于單片機(jī)的設(shè)計(jì),雖然其有著開發(fā)及制作成本低,能較大程度的利用資源,但其外圍電路較多,且調(diào)試復(fù)雜,抗干擾能力差,且對(duì)設(shè)計(jì)者的要求比較高,設(shè)計(jì)者對(duì)軟硬件都必須非常熟悉,由于主要是軟件運(yùn)作,容易出錯(cuò),造成系統(tǒng)不穩(wěn)定,可能會(huì)出現(xiàn)投入錢幣卻不出售貨物的情況,導(dǎo)致計(jì)價(jià)器不夠準(zhǔn)確;而本文采用vhdl硬件描述語言將所有器件集成在一塊芯片上,體積大大減小的同時(shí)還提高了穩(wěn)定性,并且可應(yīng)用eda軟件仿真,調(diào)試,易
18、于進(jìn)行功能擴(kuò)展,外圍電路較少,采用硬件邏輯電路實(shí)現(xiàn),其最大的優(yōu)點(diǎn)是穩(wěn)定性好,抗干擾能力強(qiáng),非常適合作為自動(dòng)售貨機(jī)系統(tǒng)的控制核心,所以選擇用vhdl來對(duì)自動(dòng)售貨機(jī)進(jìn)行設(shè)計(jì)來實(shí)現(xiàn)其控制功能。1.3自動(dòng)售貨機(jī)控制電路的性能要求:1自動(dòng)售貨機(jī)能出售三種不同單價(jià)的貨物,并且能對(duì)商品數(shù)量進(jìn)行1,2,3個(gè)/瓶選擇。2自動(dòng)售貨機(jī)給出30秒的選擇時(shí)間,時(shí)間倒計(jì)時(shí)到系統(tǒng)進(jìn)入停止?fàn)顟B(tài),放棄購(gòu)買操作。3系統(tǒng)上電復(fù)位后默認(rèn)選擇商品1,數(shù)量1,通過商品種類選擇按鍵和商品數(shù)量選擇按鍵來滿足購(gòu)買需要。每按一次按鍵轉(zhuǎn)換一次,可多次進(jìn)行循環(huán)選擇。當(dāng)購(gòu)買結(jié)束后,自動(dòng)返回初始設(shè)定狀態(tài),等待再次啟動(dòng)。4. 通過啟動(dòng)/取消復(fù)合按鍵,來啟
19、動(dòng)購(gòu)買和取消購(gòu)買,每按一次狀態(tài)轉(zhuǎn)換一次。5. 能識(shí)別1元,5元,10元紙幣(本系統(tǒng)希望一次性投入大于選擇商品金額的紙幣,不給連續(xù)投幣的機(jī)會(huì))。第二章 自動(dòng)售貨機(jī)控制電路總體設(shè)計(jì)根據(jù)上述對(duì)自動(dòng)售貨機(jī)控制電路的性能要求,可以畫出自動(dòng)售貨機(jī)總體結(jié)構(gòu)框圖和系統(tǒng)操作流程圖,見下圖。該控制器由六大模塊組成:主分頻器模塊(sysclk_div):產(chǎn)生秒信號(hào),用于選擇的倒計(jì)時(shí),當(dāng)?shù)褂?jì)時(shí)時(shí)間到,系統(tǒng)認(rèn)為放棄選擇操作,使系統(tǒng)能自動(dòng)復(fù)位;只有在倒計(jì)時(shí)未到之內(nèi)的選擇有效。主控制器模塊(main_control):它是自動(dòng)售貨機(jī)的主控制電路,控制商品種類選擇,商品數(shù)量選擇,啟動(dòng)/取消操作,和確認(rèn)購(gòu)買操作,以及對(duì)其它模塊
20、的工作控制。選擇的定時(shí)模塊(timer_count):用于選擇倒計(jì)時(shí)時(shí)間計(jì)算,當(dāng)啟動(dòng)系統(tǒng)時(shí),到計(jì)時(shí)開始計(jì)時(shí),當(dāng)取消或確認(rèn)購(gòu)買時(shí),倒計(jì)時(shí)終止并且計(jì)時(shí)值清零,等待再次啟動(dòng),又初始倒計(jì)時(shí)。商品金額計(jì)算模塊(money_count):根據(jù)對(duì)商品的種類和數(shù)量的選擇,計(jì)算出商品的總金額,它是在倒計(jì)時(shí)未到,系統(tǒng)啟動(dòng)并且確認(rèn)購(gòu)買的條件下工作的。給錢處理模塊(give_money):處理顧客投入的金額,它也是在倒計(jì)時(shí)未到,系統(tǒng)啟動(dòng)并且確認(rèn)購(gòu)買的條件下工作的。找零出貨模塊(change_deliver):在對(duì)商品的實(shí)際金額和顧客投入的金額比較,判斷投入金額是否大于商品實(shí)際金額后,若大于則出貨并找零;若小于則推出顧
21、客投入的金額。自動(dòng)售貨機(jī)控制電路的結(jié)構(gòu)框圖:自動(dòng)售貨機(jī)總體結(jié)構(gòu)框圖自動(dòng)售貨機(jī)操作流程:系統(tǒng)先上電進(jìn)入初始化狀態(tài),當(dāng)顧客啟動(dòng)系統(tǒng)及開始購(gòu)買時(shí),系統(tǒng)進(jìn)入倒計(jì)時(shí)選擇商品狀態(tài),選擇商品種類和商品數(shù)量,當(dāng)對(duì)商品選擇好了確認(rèn)購(gòu)買以后,系統(tǒng)進(jìn)入投幣狀態(tài),之后系統(tǒng)進(jìn)入比較幣價(jià)狀態(tài),及將顧客投入的金額與商品實(shí)際的金額進(jìn)行比較,當(dāng)大于商品價(jià)格時(shí),系統(tǒng)進(jìn)入出貨商品狀態(tài),同時(shí)找零和退幣;當(dāng)小于商品價(jià)格時(shí),系統(tǒng)直接進(jìn)入找零,退幣狀態(tài),退出顧客已投入的金額,之后系統(tǒng)結(jié)束自動(dòng)購(gòu)買等待系統(tǒng)再次啟動(dòng)。:系統(tǒng)操作流程圖第三章 自動(dòng)售貨機(jī)控制電路各模塊信號(hào)分析1.主分頻器模塊主分頻器用來產(chǎn)生1秒的時(shí)鐘供主控制器使用,本設(shè)計(jì)使用民用
22、的石英晶體,其振蕩頻率為76.8khz。這樣主分頻器的分頻系數(shù)為76800,現(xiàn)采用4個(gè)分頻器構(gòu)成主分頻器的分頻電路,分別是一個(gè)256分頻器,2個(gè)10分頻器和一個(gè)3分頻器,主分頻器結(jié)構(gòu)如下:2.主控制器模塊主控制器的功能是根據(jù)各輸入按鍵的狀態(tài),輸出對(duì)應(yīng)的控制信號(hào),控制選擇定時(shí)模塊,商品金額計(jì)算模塊,給錢處理模塊和找零出貨模塊的工作。主控制器的輸入信號(hào)和輸出信號(hào)如上述的結(jié)構(gòu)框圖,分別敘述如下:(1)輸入信號(hào): reset:上電復(fù)位輸入; sysclk:系統(tǒng)時(shí)鐘輸入; start_cancel:?jiǎn)?dòng)與取消按鍵輸入; quantity_sel:商品數(shù)量選擇按鍵輸入; type_sel:商品種類選擇按鍵
23、輸入; timer_down:選擇定時(shí)到信號(hào)輸入。(2)輸出信號(hào): start_out:?jiǎn)?dòng)與取消同步信號(hào)輸出; type1_out:商品種類1的選擇信號(hào)輸出; type2_out:商品種類2的選擇信號(hào)輸出; type3_out:商品種類3的選擇信號(hào)輸出; quan1_out:商品數(shù)量1的選擇信號(hào)輸出; quan1_out:商品數(shù)量2的選擇信號(hào)輸出; quan1_out:商品數(shù)量3的選擇信號(hào)輸出;3.選擇定時(shí)模塊選擇定時(shí)模塊的功能是根據(jù)主控制器送來的start_in啟動(dòng)與取消信號(hào),啟動(dòng)與取消定時(shí),這個(gè)時(shí)間用與商品種類與數(shù)量的選擇倒計(jì)時(shí),當(dāng)?shù)褂?jì)時(shí)時(shí)間到系統(tǒng)復(fù)位及默認(rèn)顧客放棄選購(gòu)商品,且當(dāng)?shù)褂?jì)時(shí)到
24、后其它的模塊不工作,如不用商品金額計(jì)算,給錢處理和找零出貨。(1)輸入信號(hào): clk:秒脈沖輸入信號(hào); sysclk:系統(tǒng)時(shí)鐘輸入信號(hào); start_in:?jiǎn)?dòng)與取消定時(shí)輸入信號(hào); ok_buy:確認(rèn)購(gòu)買商品按鍵輸入信號(hào)。(2)輸出信號(hào): timer_down_out:選擇倒計(jì)時(shí)到輸出信號(hào)。4.商品金額計(jì)算模塊商品金額計(jì)算模塊是根據(jù)主控制器輸出的商品種類和商品數(shù)量信號(hào),來計(jì)算選購(gòu)商品的總金額,其輸入和輸出信號(hào)分別如下:(1)輸入信號(hào): ok_buy:確定購(gòu)買商品按鍵輸入信號(hào); reset:復(fù)位信號(hào); sysclk:系統(tǒng)時(shí)鐘輸入信號(hào); start_in:?jiǎn)?dòng)與取消操作信號(hào); timer_down
25、:選擇倒計(jì)時(shí)到輸入信號(hào); type1_in:商品種類1的輸入信號(hào); type2_in:商品種類2的輸入信號(hào); type3_in:商品種類1的輸入信號(hào); quan1_in:商品數(shù)量1的輸入信號(hào); quan2_in:商品數(shù)量2的輸入信號(hào); quan3_in:商品數(shù)量3的輸入信號(hào)。.(2)輸出信號(hào): money_1:選擇商品總金額輸出信號(hào)。5.給錢處理模塊給錢處理模塊主要是根據(jù)顧客在確認(rèn)購(gòu)買商品后,計(jì)算并輸出顧客投入的總金額,其輸入和輸出信號(hào)分別如下:(1)輸入信號(hào): reset:復(fù)位信號(hào); sysclk:系統(tǒng)時(shí)鐘輸入信號(hào); start_in:?jiǎn)?dòng)與取消操作信號(hào); timer_down:選擇倒計(jì)時(shí)到
26、輸入信號(hào); ok_buy:確定購(gòu)買商品按鍵輸入信號(hào); give_1yuan:1元紙幣輸入信號(hào); give_5yuan:5元紙幣輸入信號(hào); give_10yuan:10元紙幣輸入信號(hào);(2)輸出信號(hào): money_2:顧客投入的紙幣金額輸出信號(hào)。6.找零出貨模塊找零出貨是對(duì)顧客投入的金額與選購(gòu)商品金額比較后的找零出貨動(dòng)作,其輸入和輸出信號(hào)分別如下:(1)輸入信號(hào): reset:復(fù)位信號(hào); sysclk:系統(tǒng)時(shí)鐘輸入信號(hào); start_in:?jiǎn)?dòng)與取消操作信號(hào); timer_down:選擇倒計(jì)時(shí)到輸入信號(hào); ok_buy:確定購(gòu)買商品按鍵輸入信號(hào); money_1:選擇商品總金額輸入信號(hào); mon
27、ey_2:顧客投入的紙幣金額輸入信號(hào)。(2)輸出信號(hào): deliver:出貨信號(hào); change:找零金額輸出信號(hào)。第四章 自動(dòng)售貨機(jī)控制電路的算法狀態(tài)機(jī)圖描述由系統(tǒng)的分析可知,自動(dòng)售貨機(jī)控制電路主要是控制電路和計(jì)數(shù)電路,因此直接用算法狀態(tài)機(jī)圖描述比較簡(jiǎn)潔。本次設(shè)計(jì)的自動(dòng)售貨機(jī)能銷售3種不同單價(jià)的商品,且能對(duì)商品的數(shù)量進(jìn)行1,2,3的選擇,這樣主控制器共有9種狀態(tài),如果用這9種狀態(tài)的算法狀態(tài)機(jī)圖來描述,則其狀態(tài)轉(zhuǎn)換將會(huì)變得復(fù)雜而難以處理,當(dāng)考慮到商品種類和商品數(shù)量的選擇是相對(duì)獨(dú)立的,沒有很強(qiáng)的關(guān)聯(lián)性,因此,可以用3個(gè)算法狀態(tài)機(jī)圖來描述。1.主控制器模塊1.1商品種類選擇控制狀態(tài)機(jī)圖系統(tǒng)復(fù)位后進(jìn)
28、入默認(rèn)的商品種類1狀態(tài),并輸出默認(rèn)狀態(tài)的控制信號(hào)set_type1,并判斷定時(shí)倒計(jì)時(shí)信號(hào)timer_down是否有效,如果有效,則表明放棄繼續(xù)購(gòu)買,set_type1置0回到系統(tǒng)默認(rèn)狀態(tài);如果無效則判斷商品種類選擇按鍵是否按下,如果未按下,則仍處在默認(rèn)狀態(tài),如果已按下,則進(jìn)入商品種類2狀態(tài)及set_type2置1。通過類似的操作和判斷,該狀態(tài)機(jī)可在商品1,商品2,商品3三種狀態(tài)下循環(huán)選擇和工作,并送出相應(yīng)的狀態(tài)信號(hào),具體的vhdl代碼框圖如下圖中的圖(一)。1.2.商品數(shù)量選擇控制狀態(tài)機(jī)圖商品數(shù)量選擇控制狀態(tài)機(jī)圖如上所示,其結(jié)構(gòu)與商品種類選擇控制狀態(tài)機(jī)圖一致,所不同的僅僅是狀態(tài)名,狀態(tài)輸出信號(hào)
29、和引起狀態(tài)轉(zhuǎn)換的按鍵信號(hào),vhdl代碼框圖如圖(二)。1.3.啟動(dòng)/取消控制算法狀態(tài)機(jī)圖描述本設(shè)計(jì)的自動(dòng)售貨系統(tǒng)用了一個(gè)多功能啟動(dòng)/取消按鍵,來啟動(dòng)系統(tǒng)和在購(gòu)買過程中隨時(shí)取消的操作,如此系統(tǒng)有2種工作狀態(tài):取消狀態(tài)(停止?fàn)顟B(tài))和啟動(dòng)狀態(tài),系統(tǒng)復(fù)位是進(jìn)入停止?fàn)顟B(tài),當(dāng)start_cancel按鍵按下時(shí),狀態(tài)轉(zhuǎn)移至啟動(dòng)狀態(tài),并輸出啟動(dòng)控制信號(hào)start_out。再按下start_cancel鍵時(shí),是取消購(gòu)買操作,系統(tǒng)又回到停止?fàn)顟B(tài),這樣可以人為的進(jìn)行系統(tǒng)的取消購(gòu)買行為,具體vhdl代碼程序框圖如啟動(dòng)/取消多功能按鍵流程圖。啟動(dòng)/取消多功能按鍵流程圖2. 選擇定時(shí)模塊選擇定時(shí)模塊有23種狀態(tài):停止?fàn)顟B(tài)
30、(idle),和計(jì)時(shí)狀態(tài)(inccount),vhdl代碼框圖如倒計(jì)時(shí)程序框圖。系統(tǒng)復(fù)位后就進(jìn)入停止?fàn)顟B(tài)(idle),在停止?fàn)顟B(tài)下不斷判斷啟動(dòng)信號(hào)start_in是否為1,如果為1,則表明啟動(dòng)鍵已按下,定時(shí)器開始工作,轉(zhuǎn)移的下一個(gè)狀態(tài)為計(jì)數(shù)狀態(tài);否則仍停留在停止?fàn)顟B(tài)。在計(jì)數(shù)狀態(tài)(inccount)下,先要判斷啟動(dòng)信號(hào)是否仍為1,因?yàn)閱?dòng)/取消按鍵是一個(gè)多功能按鈕,按一次狀態(tài)轉(zhuǎn)換一次,如果復(fù)位后按一下啟動(dòng)/取消按鍵,使start_in=1,則定時(shí)器開始計(jì)數(shù)。如果再按一次啟動(dòng)/取消按鍵,使start_in=0,則定時(shí)器處于等待再次啟動(dòng)狀態(tài)。系統(tǒng)中確認(rèn)按鍵也能影響定時(shí)器的計(jì)數(shù),所以也要判斷它的狀態(tài),
31、當(dāng)確認(rèn)后,定時(shí)器計(jì)數(shù)值清零,定時(shí)器也回到等待再次啟動(dòng)狀態(tài)。在計(jì)數(shù)狀態(tài)下,如果start_in=1,接著判斷秒clk_1s上升沿是否到來,如果未到來,則仍停留在計(jì)數(shù)狀態(tài),若秒時(shí)鐘的上升沿已到來,則秒計(jì)數(shù)器就進(jìn)行減1倒計(jì)時(shí)操作,接著判斷時(shí)間是否減到了0,如果到0了則發(fā)出倒計(jì)時(shí)時(shí)間到信號(hào)(timer_down),如果沒減到0則仍處于計(jì)數(shù)狀態(tài)。倒計(jì)時(shí)程序框圖通過以上對(duì)vhdl代碼框圖的分析,更加容易的完成了vhdl代碼的編寫,后面的的幾個(gè)模塊由于程序比較簡(jiǎn)單,只要看看vhdl代碼就能看出它的程序框圖的流程,所以這里就沒有在畫其他模塊的vhdl代碼框圖,具體分析見vhdl代碼。第五章 自動(dòng)售貨機(jī)控制電路
32、各模塊仿真結(jié)果及分析1.主分頻器模塊仿真波形:通過對(duì)系統(tǒng)時(shí)鐘的計(jì)數(shù)來分頻,每一位相當(dāng)于一個(gè)2分頻,div17為2的8次方分頻,div23為2的4次方分頻,系統(tǒng)中當(dāng)div23中計(jì)到10時(shí)清零,所以div23實(shí)際完成的是10分頻,同理div33也為10分頻,div41為2的2次方分頻,系統(tǒng)中div41中計(jì)到3時(shí)清零,所以div41實(shí)際完成的是3分頻,通過這樣的分頻便得到了秒信號(hào)。2.主控制器模塊仿真波形:type_sel為商品種類選擇按鍵,復(fù)位時(shí)系統(tǒng)默認(rèn)type1及type1_out為高電平,type_sel每按一次種類的選擇轉(zhuǎn)換一次;quantity_sel為商品數(shù)量選擇,它的分析與type_s
33、el一致;start_out為啟動(dòng)/取消同步輸出信號(hào),當(dāng)啟動(dòng)時(shí)start_out輸出高電平,當(dāng)取消時(shí)start_out輸出低電平;timer_down為倒計(jì)時(shí)時(shí)間,時(shí)間到系統(tǒng)復(fù)位,等待再次啟動(dòng)。3.選擇的定時(shí)模塊仿真波形:系統(tǒng)啟動(dòng)時(shí)及start_in為高電平時(shí),倒計(jì)時(shí)開始計(jì)數(shù),當(dāng)確認(rèn)購(gòu)買時(shí)及ok_buy為高電平時(shí)計(jì)數(shù)值清零,系統(tǒng)從新開始倒計(jì)時(shí),這里以計(jì)時(shí)4秒來替代30秒的選擇倒計(jì)時(shí),方便仿真。4.商品金額計(jì)算仿真波形:系統(tǒng)在啟動(dòng)狀態(tài),倒計(jì)時(shí)未到且確認(rèn)購(gòu)買時(shí),根據(jù)顧客對(duì)商品的選擇,計(jì)算出商品的金額,這里type1的單價(jià)為1元,type2的單價(jià)為2元,type3的單價(jià)為3元;quan1指選擇一個(gè)商
34、品,quan2指選擇2個(gè)商品,quan3指選擇3個(gè)商品。單價(jià)*商品數(shù)量即為商品總金額。5.給錢處理模塊仿真波形:系統(tǒng)在啟動(dòng)狀態(tài),倒計(jì)時(shí)未到且確認(rèn)購(gòu)買時(shí),系統(tǒng)根據(jù)輸入的投幣信號(hào),輸出顧客投入的金額。這里give_1yuan指顧客投入的是1元,give_5yuan指顧客投入的是5元,give_10yuan指顧客投入的是10元,這樣就能識(shí)別1元,5元和10的紙幣。6.找零出貨模塊仿真波形:系統(tǒng)在啟動(dòng)狀態(tài),倒計(jì)時(shí)未到且確認(rèn)購(gòu)買時(shí),系統(tǒng)將商品的實(shí)際金額和顧客投入的金額進(jìn)行比較,當(dāng)顧客投入的金額大于商品實(shí)際金額時(shí),系統(tǒng)找出相應(yīng)的錢數(shù)并出貨;當(dāng)小于時(shí),系統(tǒng)退出顧客已投入的錢數(shù)。7.頂層模塊仿真波形: sta
35、rt_cancel啟動(dòng)系統(tǒng),倒計(jì)時(shí)開始計(jì)時(shí),顧客在此期間選擇商品種類及type_sel按鍵輸入,和商品數(shù)量選擇及quantity_sel按鍵輸入,它們的狀態(tài)均為每按一次狀態(tài)轉(zhuǎn)換一次,商品選擇好了,確認(rèn)購(gòu)買及ok_buy為高電平后,顧客投幣,系統(tǒng)比較后進(jìn)行找零和出貨操作。第六章 自動(dòng)售貨機(jī)控制電路的具體vhdl描述1.主分頻器模塊libraryieee;useieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sysclk_div isport(sysclk:in std_logic; clk :out std_logic
36、);end entity sysclk_div;architecture rtl of sysclk_div issignal div1:std_logic_vector(7 downto 0);signal div2:std_logic_vector(3 downto 0);signal div3:std_logic_vector(3 downto 0);signal div4:std_logic_vector(1 downto 0);signal clk1,clk2,clk3:std_logic;begindiv_256:process(sysclk)isbeginif(sysclkeve
37、nt and sysclk=1)thendiv1=div1+1;end if;end process;clk1=div1(7);div10:process(clk1)isbeginif(clk1event and clk1=1)thenif(div2=1001)thendiv2=0000;elsediv2=div2+1;end if;end if;end process;clk2=div2(3);div_10:process(clk2)isbeginif(clk2event and clk2=1)thenif(div3=1001)thendiv3=0000;elsediv3=div3+1;en
38、d if;end if;end process;clk3=div3(3);div_3:process(clk3)isbeginif(clk3event and clk3=1)thenif(div4=10)thendiv4=00;elsediv4=div4+1;end if;end if;end process;clk=div4(1);end architecture rtl;2.主控制器模塊libraryieee;useieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;ent
39、ity main_control isport(reset,sysclk,start_cancel,type_sel,quantity_sel,timer_down:in std_logic; type1_out,type2_out,type3_out,start_out:out std_logic; quan1_out,quan2_out,quan3_out:out std_logic);end entity;architecture rtl of main_control istype state1type is(s_type1,s_type2,s_type3);type state2ty
40、pe is(s_quan1,s_quan2,s_quan3);type state3type is(s_start,s_cancel);signal state1,nextstate1:state1type;signal state2,nextstate2:state2type;signal state3,nextstate3:state3type;signal start_cancel_rising,start_cancel_dlayed,setstart,clrstart:std_logic;signal type_sel_dlayed,typesel_rising,quantity_se
41、l_dlayed,quantitysel_rising:std_logic;signal timer_down_rising,timer_down_dlayed:std_logic;signal set_type1,set_type2,set_type3,start,set_quan1,set_quan2,set_quan3:std_logic;begintypesel_rising=type_sel and (not type_sel_dlayed);quantitysel_rising=quantity_sel and (not quantity_sel_dlayed);start_can
42、cel_rising=start_cancel and (not start_cancel_dlayed);timer_down_rising=timer_down and (not timer_down_dlayed);type_ctr:process(typesel_rising,state1,timer_down)isbeginset_type1=0;set_type2=0;set_type3set_type1=1; if(timer_down=1)then set_type1=0;nextstate1=s_type1; elsif(typesel_rising=0)then nexts
43、tate1=s_type1; elseset_type1=0;nextstate1set_type2=1; if(timer_down=1)then set_type2=0;nextstate1=s_type1; elsif(typesel_rising=0)then nextstate1=s_type2; elseset_type2=0;nextstate1set_type3=1; if(timer_down=1)then set_type3=0;nextstate1=s_type1; elsif(typesel_rising=0)then nextstate1=s_type3; elses
44、et_type3=0;nextstate1=s_type1; end if;end case;end process;quantity_ctr:process(quantitysel_rising,state2,timer_down)isbeginset_quan1=0;set_quan2=0;set_quan3set_quan1=1; if(timer_down=1)then set_quan1=0;nextstate2=s_quan1; elsif(quantitysel_rising=0)then nextstate2=s_quan1; elseset_quan1=0;nextstate
45、2set_quan2=1; if(timer_down=1)then set_quan2=0;nextstate2=s_quan1; elsif(quantitysel_rising=0)then nextstate2=s_quan2; elseset_quan2=0;nextstate2set_quan3=1; if(timer_down=1)then set_quan3=0;nextstate2=s_quan1; elsif(quantitysel_rising=0)then nextstate2=s_quan3; elseset_quan3=0;nextstate2=s_quan1; e
46、nd if;end case;end process;start_ctr:process(start_cancel_rising,state3,timer_down)isbeginsetstart=0;clrstart if(start_cancel_rising=1)then nextstate3=s_start;setstart=1; elsenextstate3=s_cancel;clrstart if(timer_down_rising=1)then clrstart=1;nextstate3=s_cancel; elsif(start_cancel_rising=1)then nex
47、tstate3=s_cancel;clrstart=1; elsenextstate3=s_start; end if;end case;end process;main_control_update:process(reset,sysclk,timer_down_rising)isbeginif(reset=0)thenstate1=s_type1;state2=s_quan1;state3=s_cancel;elsif(sysclkevent and sysclk=1)thenstate1=nextstate1;state2=nextstate2;state3=nextstate3;if(
48、set_type1=1)then type1_out=1;else type1_out=0;end if;if(set_type2=1)then type2_out=1;else type2_out=0;end if;if(set_type3=1)then type3_out=1;else type3_out=0;end if;if(set_quan1=1)then quan1_out=1;else quan1_out=0;end if;if(set_quan2=1)then quan2_out=1;else quan2_out=0;end if;if(set_quan3=1)then qua
49、n3_out=1;else quan3_out=0;end if;if(timer_down_rising=1)then start_out=0;elsif(clrstart=1)then start_out=0;elsif(setstart=1)then start_out=1; end if;type_sel_dlayed=type_sel;quantity_sel_dlayed=quantity_sel;start_cancel_dlayed=start_cancel;timer_down_dlayed=timer_down; end if;end process;end archite
50、cture rtl;3.選擇的定時(shí)模塊libraryieee;useieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity timer_count isport(reset,sysclk,clk,start_in,ok_buy:in std_logic; timer_down_out:out std_logic);end entity;architecture rtl of timer_count istype statetype is(idle,incount);s
51、ignal state,nextstate:statetype;signal count_inc,count_clr,setdown,clrdown:std_logic;signal timer_down,ok_buy_rising,ok_buy_dlayed:std_logic;signal count,count_u:std_logic_vector(3 downto 0);signal timerdown_rising,timerdown_dlayed,clk_rising,clk_dlayed:std_logic;begintimerdown_rising=timer_down and
52、 (not timerdown_dlayed);ok_buy_rising=ok_buy and (not ok_buy_dlayed);clk_rising=clk and (not clk_dlayed);count1:process(clk_rising,state,start_in,count,ok_buy_rising)isbeginsetdown=0;clrdown=0;count_inc=0;count_clrclrdown=1;count_clr=1; if(start_in=1 and timerdown_rising=0)then nextstate=incount; else nextstate if(start_in=0 or ok_buy_rising=1)thennextstate=idle; elseif(clk_rising=1 and start_in=1)thenif(count/=count_u)thencount_inc=1;nextstate=incount;elseclrdown=0;setdown=1;c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度大型園林工程苗木供應(yīng)及種植勞務(wù)合同4篇
- 年度井下多功能測(cè)振儀產(chǎn)業(yè)分析報(bào)告
- 2025年度大型體育賽事策劃與執(zhí)行個(gè)人雇傭合同4篇
- 二零二五年度仿古面磚采購(gòu)及修復(fù)服務(wù)合同4篇
- 2025年路燈安裝工程環(huán)境保護(hù)及污染防治合同3篇
- 船舶貨運(yùn)技術(shù)課程設(shè)計(jì)
- 二零二五年度高空作業(yè)風(fēng)險(xiǎn)評(píng)估免責(zé)協(xié)議3篇
- 油松植苗施工方案
- 2025年度生態(tài)停車車庫(kù)租賃與綠化養(yǎng)護(hù)協(xié)議3篇
- 二零二五年度民間借貸債權(quán)債務(wù)轉(zhuǎn)讓授權(quán)委托合同4篇
- 全國(guó)醫(yī)學(xué)博士英語統(tǒng)一考試詞匯表(10000詞全) - 打印版
- 最新《會(huì)計(jì)職業(yè)道德》課件
- 廣東省湛江市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細(xì)
- DB64∕T 1776-2021 水土保持生態(tài)監(jiān)測(cè)站點(diǎn)建設(shè)與監(jiān)測(cè)技術(shù)規(guī)范
- ?中醫(yī)院醫(yī)院等級(jí)復(fù)評(píng)實(shí)施方案
- 數(shù)學(xué)-九宮數(shù)獨(dú)100題(附答案)
- 理正深基坑之鋼板樁受力計(jì)算
- 學(xué)校年級(jí)組管理經(jīng)驗(yàn)
- 10KV高壓環(huán)網(wǎng)柜(交接)試驗(yàn)
- 未來水電工程建設(shè)抽水蓄能電站BIM項(xiàng)目解決方案
- 房屋出租家具電器清單
評(píng)論
0/150
提交評(píng)論