版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、唐 山 學(xué) 院 EDA技術(shù) 課 程 設(shè) 計 題 目 自動售貨機控制器設(shè)計 系 (部) 班 級 姓 名 學(xué) 號 指導(dǎo)教師 年 月 日至 月 日 共 周 年 月 日 EDA技術(shù) 課程設(shè)計任務(wù)書一、設(shè)計題目、內(nèi)容及要求設(shè)計題目:自動售貨機控制器設(shè)計設(shè)計內(nèi)容:(1)設(shè)計一個自動售貨機,此機能出售1元、5元、10元三種商品。出售哪種商品可由顧客按動相應(yīng)的一個按鍵即可,并同時用數(shù)碼管顯示出此商品的價格;(2)顧客投入硬(紙)幣的錢數(shù)也是有1元、5元、10元三種,但每次只能投入其中的一種幣,此操作通過按動相應(yīng)的一個按鍵來模擬,并同時用數(shù)碼管將投幣額顯示出來;(3)顧客投幣后,按一次確認鍵,如果投幣額不足時則
2、報警,報警時間3秒。如果投幣額足夠時自動送出貨物(送出的貨物用相應(yīng)不同的指示燈顯示來模擬),同時多余的錢應(yīng)找回,找回的錢數(shù)用數(shù)碼管顯示出來;(4)顧客一旦按動確認鍵3秒后,自動售貨機即可自動恢復(fù)到初始狀態(tài),此時才允許顧客進行下一次購貨操作;(5)售貨機還應(yīng)具有供商家使用的累加賣貨額的功能,累加的錢數(shù)要用數(shù)碼管顯示,顯示2位即可。此累加器只有商家可以控制清零;(選作內(nèi)容)(6)此售貨機要設(shè)有一個由商家控制的整體復(fù)位控制;設(shè)計要求:(1)根據(jù)任務(wù)要求確定狀態(tài)關(guān)系,畫出狀態(tài)轉(zhuǎn)換圖; (2)寫出設(shè)計程序;(3)給出時序仿真結(jié)果; (4)最后要有設(shè)計總結(jié);二、設(shè)計原始資料Quartus軟件,EDA實驗箱
3、三、要求的設(shè)計成果(課程設(shè)計說明書、設(shè)計實物、圖紙等)課程設(shè)計說明書四、進程安排第一周:周1-周5 查閱資料并編寫程序,第二周:周1-周4 上機調(diào)試程序并撰寫課程設(shè)計說明書第二周:周5下午 課程設(shè)計答辯并交設(shè)計說明書五、主要參考資料1.Voknei A.Pedroni.VHDL數(shù)字電路設(shè)計教程.電子工業(yè)出版社,2008.52.潘松,黃繼業(yè).EDA技術(shù)實用教程(第二版).科學(xué)出版社,2005.23.焦素敏.EDA應(yīng)用技術(shù).清華大學(xué)出版社,2002.4指導(dǎo)教師(簽名):教研室主任(簽名):課程設(shè)計成績評定表出勤情況出勤天數(shù) 缺勤天數(shù)成績評定出勤情況及設(shè)計過程表現(xiàn)(20分)課設(shè)答辯(20分)設(shè)計成果
4、(60分)總成績(100分)提問(答辯)問題情況綜合評定 指導(dǎo)教師簽名: 年 月 日目 錄1 引言12 VHDL介紹22.1硬件描述語言VHDL22.2VHDL語言的特點33 Quartus II介紹43.1 Quartus II軟件介紹43.2 Quartus II軟件界面介紹43.2.1代碼輸入界面43.2.2編譯界面53.2.3波形仿真界面54自動售貨機控制器設(shè)計與仿真74.1設(shè)計內(nèi)容74.2輸入與輸出說明74.3狀態(tài)轉(zhuǎn)換圖84.4程序及仿真波形分析85引腳設(shè)定及下載分析185.1引腳設(shè)定185.2程序下載185.3結(jié)果分析196設(shè)計總結(jié)20參考文獻21附錄22課程設(shè)計說明書課程設(shè)計說明
5、書- 31 -1 引言VHDL的英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware Descriptiong Language, 翻譯成中文就是超高速集成電路硬件描述語言,誕生于1982年。1987年底,VHDL被美國國防部確認為標(biāo)準(zhǔn)硬件描述語言 。自IEEE公布了VHDL的標(biāo)準(zhǔn)版本,IEEE-1076之后,各EDA公司相繼推出了自己的VHDL設(shè)計環(huán)境,或宣布自己的設(shè)計工具可以和VHDL接口。1993年,IEEE對VHDL進行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標(biāo)準(zhǔn)的1076-1
6、993版本?,F(xiàn)在,VHDL和Verilog作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語言,又得到眾多EDA公司的支持,在電子工程領(lǐng)域,已成為事實上的通用硬件描述語言。有專家認為,在新的世紀中,VHDL于Verilog語言將承擔(dān)起大部分的數(shù)字系統(tǒng)設(shè)計任務(wù)。目前,它在中國的應(yīng)用多數(shù)是用在FPGA/CPLD/EPLD的設(shè)計中。當(dāng)然在一些實力較為雄厚的單位,它也被用來設(shè)計ASIC。隨著EDA技術(shù)的高速發(fā)展,電子系統(tǒng)的設(shè)計技術(shù)和工具發(fā)生了深刻的變化,大規(guī)??删幊踢壿嬈骷﨏PLDFPGA的出現(xiàn),給設(shè)計人員帶來了諸多方便。利用它進行產(chǎn)品開發(fā),不僅成本低、周期短、可靠性高,而且具有完全的知識產(chǎn)權(quán)。利用VHDL語言設(shè)計自動
7、售貨機,使其實現(xiàn)自動售貨,找零錢等功能,突出了其作為硬件描述語言的良好的可讀性、可移植性和易讀性等優(yōu)點。此程序通過下載到特定芯片后,可應(yīng)用于實際的自動售貨機系統(tǒng)中。本文基于FPGA開發(fā)系統(tǒng),在QuartusII 7.2軟件平臺上,完成了自動售貨機控制器的設(shè)計和與仿真,并下載到試驗箱進行硬件實現(xiàn)。首先,本文介紹了QuartusII 7.2軟件的基本使用方法和VHDL硬件描述語言的特點,采用VHDL 硬件描述語言描述自動售貨機控制器,完成對電路的功能仿真;在設(shè)計過程中,重點探討了自動售貨機控制器的設(shè)計思路和功能模塊劃分;然后,初步探討了電路邏輯綜合的原理,該軟件對自動售貨機控制器電路進行了邏輯綜合
8、;最后,使用EDA實驗開發(fā)系統(tǒng)進行電路的下載和驗證,驗證結(jié)果表明設(shè)計的自動售貨機控制器完成了預(yù)期的功能。2 VHDL介紹2.1硬件描述語言VHDLVHDL是一種硬件描述語言,它可以對電子電路和系統(tǒng)的行為進行描述。硬件描述語言(VHDL)是一種用于設(shè)計硬件電子系統(tǒng)的計算機語言,它用軟件編程的方式來描述電子系統(tǒng)的邏輯功能、電路結(jié)構(gòu)和連接形式,與傳統(tǒng)的門級描述方式相比,它更適合大規(guī)模系統(tǒng)的設(shè)計。VHDL語言可讀性強,易于修改和發(fā)現(xiàn)錯誤。早期的硬件描述語言,如ABEL、HDL、AHDL,由不同的EDA廠商開發(fā),互不兼容,而且不支持多層次設(shè)計,層次間翻譯工作要由人工完成。為了克服以上不足,1985年美國
9、國防部正式推出了高速集成電路硬件描述語言VHDL,1987年IEEE采納VHDL為硬件描述語言標(biāo)準(zhǔn)(IEEE-STD-1076)。傳統(tǒng)的硬件電路設(shè)計方法是采用自下而上的設(shè)計方法,即根據(jù)系統(tǒng)對硬件的要求,詳細編制技術(shù)規(guī)格書,并畫出系統(tǒng)控制流圖;然后根據(jù)技術(shù)規(guī)格書和系統(tǒng)控制流圖,對系統(tǒng)的功能進行細化,合理地劃分功能模塊,并畫出系統(tǒng)的功能框圖;接著就進行各功能模塊的細化和電路設(shè)計;各功能模塊電路設(shè)計、調(diào)試完成后,將各功能模塊的硬件電路連接起來再進行系統(tǒng)的調(diào)試,最后完成整個系統(tǒng)的硬件設(shè)計。采用傳統(tǒng)方法設(shè)計數(shù)字系統(tǒng),特別是當(dāng)電路系統(tǒng)非常龐大時,設(shè)計者必須具備較好的設(shè)計經(jīng)驗,而且繁雜多樣的原理圖的閱讀和修
10、改也給設(shè)計者帶來諸多的不便。為了提高開發(fā)的效率,增加已有開發(fā)成果的可繼承性以及縮短開發(fā)周期,各ASIC研制和生產(chǎn)廠家相繼開發(fā)了具有自己特色的電路硬件描述語言(Hardware Description Language,簡稱HDL)。但這些硬件描述語言差異很大,各自只能在自己的特定設(shè)計環(huán)境中使用,這給設(shè)計者之間的相互交流帶來了極大的困難。因此,開發(fā)一種強大的、標(biāo)準(zhǔn)化的硬件描述語言作為可相互交流的設(shè)計環(huán)境已勢在必行。于是,美國于1981年提出了一種新的、標(biāo)準(zhǔn)化的HDL,稱之為VHSIC(Very High Speed Integrated Circuit) Hardware Description
11、 Language,簡稱VHDL。這是一種用形式化方法來描述數(shù)字電路和設(shè)計數(shù)字邏輯系統(tǒng)的語言。設(shè)計者可以利用這種語言來描述自己的設(shè)計思想,然后利用電子設(shè)計自動化工具進行仿真,再自動綜合到門電路,最后用PLD實現(xiàn)其功能。VHDL是一種全方位的硬件描述語言,包括系統(tǒng)行為級。寄存器傳輸級和邏輯門多個設(shè)計層次,支持結(jié)構(gòu)、數(shù)據(jù)流和行為三種描述形式的混合描述,因此VHDL幾乎覆蓋了以往各種硬件語言的功能,整個自頂向下或由下向上的電路設(shè)計過程都可以用VHDL來完成。VHDL還具有以下優(yōu)點:(1)VHDL的寬范圍描述能力使它成為高層進設(shè)計的核心,將設(shè)計人員的工作重心提高到了系統(tǒng)功能的實現(xiàn)與調(diào)試,而花較少的精力
12、于物理實現(xiàn)。(2)VHDL可以用簡潔明確的代碼描述來進行復(fù)雜控制邏輯設(shè)計,靈活且方便,而且也便于設(shè)計結(jié)果的交流、保存和重用。(3)VHDL的設(shè)計不依賴于特定的器件,方便了工藝的轉(zhuǎn)換。(4)VHDL是一個標(biāo)準(zhǔn)語言,為眾多的EDA廠商支持,因此移植性好。關(guān)于VHDL語言,最后需要說明的是:與常規(guī)的順序執(zhí)行的計算機程序不同,VHDL從根本上講是并發(fā)執(zhí)行的。因此,我們通常稱之為代碼,而不是程序。在VHDL中,只有在進程(PROCESS)、函數(shù)(FUNCTION)和過程(PROCEDURE)內(nèi)部的語句才是順序執(zhí)行的。2.2VHDL語言的特點具有良好的可讀性,即容易被計算機接受,也容易被讀者理解。使用期長
13、,不會因工藝變化而使描述過時。因為VHDL的硬件描述與工藝無關(guān),當(dāng)工藝改變時,只需修改相應(yīng)程序中的屬性參數(shù)即可。當(dāng)電路系統(tǒng)采用VHDL語言設(shè)計其硬件時,與傳統(tǒng)的電路設(shè)計方法相比較,具有如下的特點:第一層次是行為描述。所謂行為描述,實質(zhì)上就是對整個系統(tǒng)的數(shù)學(xué)模型的描述。一般來說,對系統(tǒng)進行行為描述的目的是試圖在系統(tǒng)設(shè)計的初始階段,通過對系統(tǒng)行為描述的仿真來發(fā)現(xiàn)設(shè)計中存在的問題。在行為描述階段,并不真正考慮其實際的操作和算法用何種方法來實現(xiàn),而是考慮系統(tǒng)的結(jié)構(gòu)及其工作的過程是否能到達系統(tǒng)設(shè)計的要求。第二層次是RTL方式描述。這一層次稱為寄存器傳輸描述(又稱數(shù)據(jù)流描述)。如前所述,用行為方式描述的系
14、統(tǒng)結(jié)構(gòu)的程序,其抽象程度高,是很難直接映射到具體邏輯元件結(jié)構(gòu)的。要想得到硬件的具體實現(xiàn),必須將行為方式描述的VHDL語言程序改寫為RTL方式描述的VHDL語言程序。也就是說,系統(tǒng)采用RTL方式描述,才能導(dǎo)出系統(tǒng)的邏輯表達式,才能進行邏輯綜合。第三層次是邏輯綜合。即利用邏輯綜合工具,將RTL方式描述的程序轉(zhuǎn)換成用基本邏輯元件表示的文件(門級網(wǎng)絡(luò)表)。此時,如果需要,可將邏輯綜合的結(jié)果以邏輯原理圖的方式輸出。此后可對綜合的結(jié)果在門電路級上進行仿真,并檢查其時序關(guān)系。由自上而下的設(shè)計過程可知,從總體行為設(shè)計開始到最終的邏輯綜合,每一步都要進行仿真檢查,這樣有利于盡早發(fā)現(xiàn)設(shè)計中存在的問題,從而可以大大
15、縮短系統(tǒng)的設(shè)計周期。由于目前眾多制造PLD芯片的廠家,其工具軟件均支持VHDL語言的編程。所以利用VHDL語言設(shè)計數(shù)字系統(tǒng)時,可以根據(jù)硬件電路的設(shè)計需要,自行利用PLD設(shè)計自用的ASIC芯片,而無需受通用元器件的限制。3 Quartus II介紹3.1 Quartus II軟件介紹Quartus II 是Altera公司單芯片可編程系統(tǒng)(SOPC)設(shè)計的綜合性環(huán)境,也是適合SOPC的最全面的設(shè)計環(huán)境。擁有現(xiàn)場可編程門陣列(FPGA)和復(fù)雜可編程邏輯器件(CPLD)設(shè)計的所有解決方案。Altera的Quartus II可編程邏輯軟件屬于第四代PLD開發(fā)平臺,該平臺支持一個工作組環(huán)境下的設(shè)計要求,
16、其中包括支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計輸入到硬件配置的完整PLD設(shè)計流程。Quartus II也支持第三方的仿真工具,對第三方EDA工具的良好支持也使用戶可以在設(shè)計流程的各個階段使用熟悉的第三方EDA工具。Quartus II還支持層次化設(shè)計,可以在一個新的編輯環(huán)境中對使用不同輸入設(shè)計方式完成的模塊進行調(diào)用,從而解決了原理圖與HDL混合輸入設(shè)計的問題,并且在輸入之后,Quartus II的編譯器將給出設(shè)計輸入的錯誤報告。Quartus
17、 II可以在XP、Linux以及Unix上使用,除了可以使用Tcl腳本完成設(shè)計流程外,提供了完善的用戶圖形界面設(shè)計方式。具有運行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點。 Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模塊庫,使用戶可以充分利用成熟的模塊,簡化了設(shè)計的復(fù)雜性、加快了設(shè)計速度。Maxplus II 作為Altera的上一代PLD設(shè)計軟件,由于其出色的易用性而得到了廣泛的應(yīng)用。目前Altera已經(jīng)停止了對Maxplus II 的更新支持,Quartus II 與之相比不僅僅是支持器件類型的豐富和圖形界面的改變。Altera在Quartu
18、s II 中包含了許多諸如SignalTap II、Chip Editor和RTL Viewer的設(shè)計輔助工具,集成了SOPC和HardCopy設(shè)計流程,并且繼承了Maxplus II 友好的圖形界面及簡便的使用方法。 Altera 公司的Quartus II 作為一種可編程邏輯的設(shè)計環(huán)境, 由于其強大的設(shè)計能力和直觀易用的接口,越來越受到數(shù)字系統(tǒng)設(shè)計者的歡迎。3.2 Quartus II軟件界面介紹3.2.1代碼輸入界面新建一個工程,選擇FileNew Project Wizard,在出現(xiàn)的對話框中輸入工作路徑和工程名稱(應(yīng)與實體名稱相同),新建完工程后,選擇FileNewVHDL File
19、,然后新出現(xiàn)的空白窗口中輸入代碼,代碼輸入界面如圖3-1所示:圖3-1 代碼輸入界面3.2.2編譯界面代碼輸入完畢后,選擇ProcessingStart Compilation或直接單擊(Start Compilation)進行編譯,編譯界面如圖3-2所示:圖3-2 編譯界面3.2.3波形仿真界面編譯沒有錯誤后,選擇FileNewVector Waveform File,自己設(shè)置輸入的值,設(shè)置好后單擊進行波形仿真,仿真前界面如圖3-3所示:圖3-3波形仿真前界面仿真后界面如圖3-4所示:圖3-4波形仿真后界面4 自動售貨機控制器設(shè)計與仿真4.1設(shè)計內(nèi)容(1)設(shè)計一個自動售貨機,此機能出售1元、
20、5元、10元三種商品,出售哪種商品可由顧客按動相應(yīng)的一個按鍵即可,并同時用數(shù)碼管顯示出此商品的價格;(2)顧客投入硬(紙)幣的錢數(shù)也是有1元、5元、10元三種,但每次只能投入其中的一種幣,此操作通過按動相應(yīng)的一個按鍵來模擬,并用數(shù)碼管將投幣額顯示出來;(3)顧客投幣后,按一次確認鍵,如果投幣額不足時則報警,報警時間3秒。如果投幣額足夠時自動送出貨物(送出的貨物用相應(yīng)不同的指示燈顯示來模擬),同時多余的錢應(yīng)找回,找回的錢數(shù)用數(shù)碼管顯示出來;(4)顧客一旦按動確認鍵3秒后,自動售貨機即可自動恢復(fù)到初始狀態(tài),此時才允許顧客進行下一次購貨操作;(5)售貨機還應(yīng)具有供商家使用的累加賣貨額的功能,累加的錢
21、數(shù)要用數(shù)碼管顯示,顯示2位即可。此累加器只有商家可以控制清零;(6)此售貨機要設(shè)有一個由商家控制的整體復(fù)位控制。4.2輸入與輸出說明(1)輸入:price1、price5、price 10分別控制選擇1元、5元、10元三種商品;put1、put5、put10分別是顧客投入硬(紙)幣的錢數(shù)1元、5元、10元;ok是確認輸入,rst是由商家控制的整體復(fù)位控制輸入。(2)輸出:warning是警告輸出(當(dāng)按下“確認”后,若投入金額低于商品價格,則輸出警告);out1、out,out10分別是1元、5元、10元三種商品輸出指示;digitprice用于顯示商品價格,digitput用于顯示用戶投入金額
22、,digitback用于顯示找回給用戶的金額;sumhigh表示累加的賣貨額的高位,sumlow表示累加的賣貨額的低位,累加的賣貨額最高顯示到99。4.3狀態(tài)轉(zhuǎn)換圖狀態(tài)轉(zhuǎn)換圖如圖4-1所示:圖4-1狀態(tài)轉(zhuǎn)換圖4.4程序及仿真波形分析(1) S0為初始狀態(tài),當(dāng)顧客選擇1元、5元或10元三種商品時分別跳轉(zhuǎn)至S1、S2、S3狀態(tài),否則停留在S0狀態(tài),選擇貨物的錢數(shù)在數(shù)碼管上顯示出來,程序代碼如下所示:when s0=>warning<='0'out1<='0'out5<='0'out10<='0' digi
23、tprice<=0;digitput<=0;digitback<=0; if (price1='1' and price5='0' and price10='0') then nx<=s1; elsif (price1='0' and price5='1' and price10='0') then nx<=s2; elsif (price1='0' and price5='0' and price10='1') then
24、 nx<=s3; else nx<=s0; end if;(2)當(dāng)顧客投幣為1元、5元或10元時,若當(dāng)前為S1狀態(tài),則分別跳轉(zhuǎn)至S4、S5、S6三種狀態(tài),投幣錢數(shù)顯示在數(shù)碼管上,否則停留在S1狀態(tài),程序如下所示:when s1=> digitprice<=1;digitput<=0;digitback<=0; if (put1='1' and put5='0' and put10='0') then nx<=s4; elsif (put1='0' and put5='1'
25、and put10='0') then nx<=s5; elsif put1='0' and put5='0' and put10='1' then nx<=s6; else nx<=s1; end if;when s4=> digitprice<=1;digitput<=1;digitback<=0; if (ok='1') then nx<=s13; else nx<=s4; end if; when s5=> digitprice<=1;dig
26、itput<=5;digitback<=0; if (ok='1') then nx<=s14; else nx<=s5; end if;when s6=> digitprice<=1;digitput<=10;digitback<=0; if (ok='1') then nx<=s15; else nx<=s6; end if;此種情況下的仿真波形如圖4-2所示:圖4-2仿真波形圖由圖可知,當(dāng)選中1元商品時,數(shù)碼管digitprice顯示1,其他數(shù)碼管顯示0,若顧客投入1元錢時,數(shù)碼管digitput
27、顯示1,按下ok后,out1為“1”,數(shù)碼管digitback顯示0;若顧客投入5元錢時,數(shù)碼管digitput顯示5,按下ok后,out1為“1”,數(shù)碼管digitback顯示4;若顧客投入10元錢時,數(shù)碼管digitput顯示10,按下ok后,out1為“1”,數(shù)碼管digitback顯示9。(3)當(dāng)顧客投幣為1元、5元或10元時,若當(dāng)前為S2狀態(tài),則分別跳轉(zhuǎn)至S7、S8、S9三種狀態(tài),投幣錢數(shù)顯示在數(shù)碼管上,否則停留在S2狀態(tài),程序如下所示:when s7=>digitprice<=5;digitput<=1;digitback<=0; if (ok='1
28、') then nx<=s16; elsif(put1='1' and put5='0' and put10='0')then nx<=s22; else nx<=s7; end if; when s22=>digitprice<=5;digitput<=2;digitback<=0; if(put1='1' and put5='0' and put10='0')then nx<=s23; else nx<=s22; end if; wh
29、en s23=>digitprice<=5;digitput<=3;digitback<=0; if(put1='1' and put5='0' and put10='0')then nx<=s24; else nx<=s23; end if; when s24=>digitprice<=5;digitput<=4;digitback<=0; if(put1='1' and put5='0' and put10='0')then nx<
30、;=s25; else nx<=s24; end if; when s25=>digitprice<=5;digitput<=5;digitback<=0; if(ok='1') then nx<=s17; else nx<=s25; end if;此種情況下的仿真波形如圖4-3和圖4-4所示,由圖4-3可知,當(dāng)選中5元商品時,數(shù)碼管digitprice顯示5,若顧客投入1元錢時,數(shù)碼管digitput顯示1,按下ok后,out5為“0”,數(shù)碼管digitback顯示1,warning為“1”,三個上升沿即3秒后復(fù)位;若顧客投入5元錢時
31、,數(shù)碼管digitput顯示5,按下ok后,out5為“1”,數(shù)碼管digitback顯示0;若顧客投入10元錢時,數(shù)碼管digitput顯示10,按下ok后,out5為“1”,數(shù)碼管digitback顯示5。圖4-3仿真波形圖由于此售貨機具有累加投幣功能,所以若選中5元商品,投入5個1元的,也可以買到一個5元商品, 數(shù)碼管digitprice顯示5,數(shù)碼管digitput顯示由1到5, 按下ok后,out5為“1”,數(shù)碼管digitback顯示0,其仿真波形圖如圖4-4所示:圖4-4仿真波形圖 (4)當(dāng)顧客投幣為1元、5元或10元時,若當(dāng)前為S3狀態(tài),則分別跳轉(zhuǎn)至S10、S11、S12三種狀
32、態(tài),投幣錢數(shù)顯示在數(shù)碼管上,否則停留在S3狀態(tài),程序如下所示:when s3=>digitprice<=10;digitput<=0;digitback<=0; if (put1='1' and put5='0' and put10='0') then nx<=s10; elsif (put1='0' and put5='1' and put10='0') then nx<=s11; elsif (put1='0' and put5='0&
33、#39; and put10='1') then nx<=s12; else nx<=s3; end if; when s10=>digitprice<=10;digitput<=1;digitback<=0; if(ok='1') then nx<=s19; elsif(put1='1' and put5='0' and put10='0')then nx<=s26; else nx<=s10; end if; when s26=>digitprice&
34、lt;=10;digitput<=2;digitback<=0; if(put1='1' and put5='0' and put10='0')then nx<=s27; else nx<=s26; end if; when s27=>digitprice<=10;digitput<=3;digitback<=0; if(put1='1' and put5='0' and put10='0')then nx<=s28; else nx<=s
35、27; end if; when s28=>digitprice<=10;digitput<=4;digitback<=0; if(put1='1' and put5='0' and put10='0')then nx<=s29; else nx<=s28; end if; when s29=>digitprice<=10;digitput<=5;digitback<=0; if(put1='1' and put5='0' and put10='0
36、')then nx<=s30; else nx<=s29; end if; when s30=>digitprice<=10;digitput<=6;digitback<=0; if(put1='1' and put5='0' and put10='0')then nx<=s31; else nx<=s30; end if; when s31=>digitprice<=10;digitput<=7;digitback<=0; if(put1='1' a
37、nd put5='0' and put10='0')then nx<=s32; else nx<=s31; end if; when s32=>digitprice<=10;digitput<=8;digitback<=0; if(put1='1' and put5='0' and put10='0')then nx<=s33; else nx<=s32; end if; when s33=>digitprice<=10;digitput<=9;di
38、gitback<=0; if(put1='1' and put5='0' and put10='0')then nx<=s34; else nx<=s33; end if; when s34=>digitprice<=10;digitput<=10;digitback<=0; if(ok='1') then nx<=s21; else nx<=s34; end if; when s11=>digitprice<=10;digitput<=5;digitback
39、<=0; if(ok='1') then nx<=s20; elsif(put1='0' and put5='1' and put10='0')then nx<=s35; else nx<=s11; end if; when s35=>digitprice<=10;digitput<=10;digitback<=0; if(ok='1')then nx<=s21; else nx<=s35; end if; when s12=>digitprice&
40、lt;=10;digitput<=10;digitback<=0; if (ok='1') then nx<=s21; else nx<=s12; end if;此種情況下的仿真波形如下圖,由4-5圖可知,當(dāng)選中10元商品時,數(shù)碼管digitprice顯示10,若顧客投入1元錢時,數(shù)碼管digitput顯示1,按下ok后,out10為“0”,數(shù)碼管digitback顯示1,warning為“1”,三個上升沿即3秒后復(fù)位;若顧客投入5元錢時,數(shù)碼管digitput顯示5,按下ok后,out10為“0”,數(shù)碼管digitback顯示5,warning為 “1
41、”,三個上升沿即3秒后復(fù)位;若顧客投入10元錢時,數(shù)碼管digitput顯示10,按下ok后,out10為“1”,數(shù)碼管digitback顯示0。圖4-5仿真波形圖由于此售貨機具有累加投幣功能,所以若想買10元的商品,顧客可以投入兩個5元的或投入10個1元的,其仿真波形分別如圖4-6和圖4-7所示:圖4-6投兩個5元仿真波形圖圖4-7投10個1元仿真波形圖(5)延時子程序如下所示: if(a='1') then temp:=temp+1; if(temp=3)then b<='1' else b<='0' end if; end if
42、;3個上升沿即表示3秒的延時,當(dāng)按下ok后經(jīng)過3個上升沿自動售貨機將復(fù)位進入S0狀態(tài)。(6)累加售貨額程序process(out1,out5,out10,clk)variable t:integer range 0 to 3;variable temp3,temp4:integer range 0 to 9;beginif(rst='1')thentemp3:=0;temp4:=0;elsif(clk'event and clk='1'and(out1='1' or out5='1' or out10='1'
43、;)thent:=t+1;if(t=3 and out1='1')thentemp3:=temp3+1;end if;if(t=3 and out5='1')thentemp3:=temp3+5;end if;if(t=3 and out10='1')thentemp4:=temp4+1;end if;if(temp3>9)thentemp4:=temp4+1;temp3:=temp3-10;end if;if(t=4)then t:=0;end if;end if;sumlow<=temp3;sumhigh<=temp4;en
44、d process;程序中t表示延時,當(dāng)上升沿到來并且有商品輸出時,t開始加1,當(dāng)加到4時在重新計數(shù)。當(dāng)延時3秒并且有商品輸出時,累加售貨額將開始累加錢數(shù)并顯示在數(shù)碼管上,當(dāng)累加的售貨額低于10元時,sumhigh不變,sumlow加數(shù),當(dāng)累加售貨額不低于10元時,sumlow顯示的結(jié)果為sumlow-10的結(jié)果,sumhigh進行加數(shù)。例如,若先賣出了一個5元的商品,則sumlow顯示5,sumhigh顯示0;若再賣出一個10元的商品,則低位sumlow顯示仍為5,高位sumhigh會顯示1。5 引腳設(shè)定及下載分析5.1引腳設(shè)定選擇AssignmentsPins然后設(shè)定引腳,引腳設(shè)定界面如圖
45、5-1所示:圖5-1引腳設(shè)定界面5.2程序下載引腳設(shè)定好后,將下載盒子插到USB接口,點擊,選擇Hardward和start當(dāng)下載到100%時,就可以通過試驗箱進行驗證,下載驗證如圖5-2所示:圖5-2程序下載驗證圖5-2顯示的是賣了兩個10元的商品和一個5元的商品,累加的金額為25元。5.3結(jié)果分析通過上面的步驟將程序代碼下載到實驗箱的FPGA芯片中,并驗證了在仿真中的結(jié)果的正確性。自動售貨機能出售1元、5元、10元三種商品,出售哪種商品可由顧客按動相應(yīng)的一個按鍵即可,并同時用數(shù)碼管顯示出此商品的價格;顧客投入硬(紙)幣的錢數(shù)也是有1元、5元、10元三種,但每次只能投入其中的一種幣,此操作通
46、過按動相應(yīng)的一個按鍵來模擬,并同時用數(shù)碼管將投幣額顯示出來;顧客投幣后,按一次確認鍵,如果投幣額不足時則報警,報警時間3秒。如果投幣額足夠時自動送出貨物(送出的貨物用相應(yīng)不同的指示燈顯示來模擬),同時多余的錢應(yīng)找回,找回的錢數(shù)用數(shù)碼管顯示出來;顧客一旦按動確認鍵3秒后,自動售貨機即可自動恢復(fù)到初始狀態(tài),此時才允許顧客進行下一次購貨操作;此售貨機設(shè)有一個由商家控制的整體復(fù)位控制,當(dāng)整體復(fù)位信號有效時,所有輸出均為零。例如,當(dāng)選中1元商品時,數(shù)碼管digitprice顯示1,其他數(shù)碼管顯示0,若顧客投入1元錢時,數(shù)碼管digitput顯示1,按下ok后,out1為“1”,數(shù)碼管digitback顯
47、示0;若顧客投入5元錢時,數(shù)碼管digitput顯示5,按下ok后,out1為“1”,數(shù)碼管digitback顯示4;若顧客投入10元錢時,數(shù)碼管digitput顯示10,按下ok后,out1為“1”,數(shù)碼管digitback顯示9。當(dāng)選中5元商品時,數(shù)碼管digitprice顯示5,若顧客投入1元錢時,數(shù)碼管digitput顯示1,按下ok后,out5為“0”,數(shù)碼管digitback顯示1,warning為“1”,三個上升沿即3秒后復(fù)位;若顧客投入5元錢時,數(shù)碼管digitput顯示5,按下ok后,out5為“1”,數(shù)碼管digitback顯示0;若顧客投入10元錢時,數(shù)碼管digitpu
48、t顯示10,按下ok后,out5為“1”,數(shù)碼管digitback顯示5。當(dāng)選中10元商品時,數(shù)碼管digitprice顯示10,若顧客投入1元錢時,數(shù)碼管digitput顯示1,按下ok后,out10為“0”,數(shù)碼管digitback顯示1,warning為“1”,三個上升沿即3秒后復(fù)位;若顧客投入5元錢時,數(shù)碼管digitput顯示5,按下ok后,out10為“0”,數(shù)碼管digitback顯示5,warning為 “1”,三個上升沿即3秒后復(fù)位;若顧客投入10元錢時,數(shù)碼管digitput顯示10,按下ok后,out10為“1”,數(shù)碼管digitback顯示0。6 設(shè)計總結(jié)通過這兩周的課
49、程設(shè)計,我深深的體會到了課程設(shè)計的重要性,課程設(shè)計不僅可以讓我們將這學(xué)期的理論知識運用到實際設(shè)計中,而且在設(shè)計期間可以考察我們獨立思考的能力和動手操作的能力,加深了對課本知識的理解。做課程設(shè)計需要我們自己編程序,自己仿真,自己下載到試驗箱上并驗證結(jié)果的正確與否。在進行下載驗證的時候,我遇到了關(guān)于如何用數(shù)碼管顯示的問題,我以前只會用七段譯碼管去顯示數(shù)字,而不知道如何用普通的數(shù)碼管顯示,后來經(jīng)過向同學(xué)請教,終于弄明白了普通數(shù)碼管的使用原理。還有一個實現(xiàn)起來比較困難的功能就是如何用10個1元的錢幣去買1個10元商品,后來經(jīng)過不斷的修改程序、添加狀態(tài)、仿真調(diào)試,最終出現(xiàn)了正確的仿真波形,將管腳對應(yīng)好并
50、下載成功后,實現(xiàn)了預(yù)期的功能,這使我非常高興。通過這次的課程設(shè)計,我已經(jīng)可以熟練地使用QuartusII軟件完成程序的編寫、編譯、仿真、下載等操作步驟,并且當(dāng)編譯出現(xiàn)錯誤后,能夠找到錯誤原因,并且可以自己調(diào)試將問題解決,實現(xiàn)了預(yù)期所要求的自動售貨、找零、警告、復(fù)位等功能,這更加深了我對EDA這門課程的興趣。總之,這次的課程設(shè)計使我得到了很多,學(xué)到了很多在課本上學(xué)不到的知識,我覺得這對以后我們找工作是非常有用的,所以我非常感謝學(xué)校能給我們這么一個機會,同時也非常感謝我們的指導(dǎo)老師,謝謝她們這兩周對我們的耐心指導(dǎo)。參考文獻1 Voknei A.Pedroni.VHDL數(shù)字電路設(shè)計教程.電子工業(yè)出版
51、社,2008.5 2 潘松,黃繼業(yè).EDA技術(shù)實用教程(第二版).科學(xué)出版社,2005.23 焦素敏.EDA應(yīng)用技術(shù).清華大學(xué)出版社,2002.44 曾繁泰,陳美金.VHDL程序設(shè)計M.北京:清華大學(xué)出版社,20015 張昌凡等.可編程邏輯器件及VHDL設(shè)計技術(shù)M.廣州:華南理工大學(xué)出版社,2001附錄library ieee;use ieee.std_logic_1164.all;entity sell is port(price1,price5,price10,put1,put5,put10,ok,clk,rst:in std_logic; warning,out1,out5,out10:
52、buffer std_logic; digitprice,digitput,digitback:out integer range 0 to 15; sumhigh,sumlow:buffer integer range 0 to 9);end sell;architecture sell of sell istype state is(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,
53、s35);signal pr,nx:state;signal a,b:std_logic;beginprocess(clk,rst)variable temp:integer range 0 to 3;begin if (rst='1')then pr<=s0; elsif (clk'event and clk='1') then pr<=nx; if(a='1') then temp:=temp+1; if(temp=3)then b<='1' else b<='0' end if
54、; -else - temp:=0; end if; end if;end process;process(price1,price5,price10,put1,put5,put10,ok,b,pr)beginif(pr=s0)or(pr=s1)or(pr=s2)or(pr=s3)or(pr=s4)or(pr=s5)or(pr=s6) or(pr=s7)or(pr=s8)or(pr=s9)or(pr=s10)or(pr=s11)or(pr=s12) then a<='0' else a<='1' end if; case pr is when s0=
55、>warning<='0'out1<='0'out5<='0'out10<='0'digitprice<=0;digitput<=0;digitback<=0; if (price1='1' and price5='0' and price10='0') then nx<=s1; elsif (price1='0' and price5='1' and price10='0') th
56、en nx<=s2; elsif (price1='0' and price5='0' and price10='1') then nx<=s3; else nx<=s0; end if; when s1=>digitprice<=1;digitput<=0;digitback<=0; if (put1='1' and put5='0' and put10='0') then nx<=s4; elsif (put1='0' and pu
57、t5='1' and put10='0') then nx<=s5; elsif put1='0' and put5='0' and put10='1' then nx<=s6; else nx<=s1; end if; when s4=>digitprice<=1;digitput<=1;digitback<=0; if (ok='1') then nx<=s13; else nx<=s4; end if; when s5=>digitp
58、rice<=1;digitput<=5;digitback<=0; if (ok='1') then nx<=s14; else nx<=s5; end if; when s6=>digitprice<=1;digitput<=10;digitback<=0; if (ok='1') then nx<=s15; else nx<=s6; end if; when s2=>digitprice<=5;digitput<=0;digitback<=0; if (put1='1' and put5='0' and put10='0') then nx<=s7; el
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年高中歷史第一單元政治體制第2課西方國家古代和近代政治制度的演變學(xué)案含解析新人教版選擇性必修1
- 2025翻譯作品出版合同樣書
- 2025年南昌貨運從業(yè)資格考試模擬考試題庫及答案大全
- 2025建筑工程施工合同模板 工程施工合同范本
- 上?,F(xiàn)代化工職業(yè)學(xué)院《電工技術(shù)實驗》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海外國語大學(xué)賢達經(jīng)濟人文學(xué)院《建設(shè)法規(guī)與經(jīng)濟法》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海師范大學(xué)天華學(xué)院《教師綜合素質(zhì)強化》2023-2024學(xué)年第一學(xué)期期末試卷
- 財務(wù)分析報告范文簡
- 2025公司租賃合同范本
- 2025環(huán)評技術(shù)咨詢合同協(xié)議書
- 中華農(nóng)耕文化及現(xiàn)實意義
- 農(nóng)產(chǎn)品品牌與營銷課件
- 加快中高職銜接,促進職業(yè)教育協(xié)調(diào)發(fā)展(201507)課件
- 車輛二級維護檢測單參考模板范本
- 亮化照明維護服務(wù)方案
- 疼痛評估方法與管理
- 測定總固體原始記錄
- (最新整理)夜市一條街建設(shè)方案
- 住院醫(yī)師解讀心電圖
- 中式婚禮PPT幻燈片課件
- 大口徑管道市政給水管網(wǎng)沖洗
評論
0/150
提交評論