版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、EDA(Verilog)課程設計報告自動售貨機 摘 要 本設計是以現場可編程邏輯器件(FPGA)為核心的自動售貨機,利用Quartus軟件編寫verilog HDL硬件描述語言程序以實現自動售貨功能。 本設計主要以程序為主,硬件方面則使用實驗箱(芯片Cyclone II EP2C35F672C8,基于MagicSOPC創(chuàng)新教學實驗開發(fā)平臺),將程序各變量端口與實驗箱管腳進行相應的配置,用八個開關分別代表商品價格、所投錢幣價格及確認付款找零操作。當選擇好商品并投幣后,數碼管顯示所選商品價格及投入錢幣價格;按下確認付款開關,數碼管顯示應找多少錢,若交易成功,則對應商品LED燈亮,同時步進電機轉動將
2、商品送出。若所投錢幣小于所選商品價格,此時交易不成功,同時對應警告的LED燈亮。目 錄前言第一章系統(tǒng)設計1.1系統(tǒng)設計 1.2 總體設計 1.3 方案設計第二章詳細設計 2.1自動售貨機狀態(tài)描述 2.2詳細狀態(tài)描述 2.2.1 初始狀態(tài) 2.2.2 選商品狀態(tài) 2.2.3 投幣狀態(tài) 2.2.4 找零狀態(tài) 第三章軟件設計 3.1程序總流程圖 3.2verilog HDL源程序第四章結果與討論 4.1 實驗調試 4.1.1 調試步驟 4.1.2 實驗現象 4.2 結果與分析 第五章 心得體會參考文獻 附錄 前言EDA是電子設計自動化(Electronic Design Automation)的縮寫
3、,在20世紀60年代中期從計算機輔助設計(CAD)、計算機輔助制造(CAM)、計算機輔助測試(CAT)和計算機輔助工程(CAE)的概念發(fā)展而來的。Verilog HDL是眾多EDA軟件中的一個,結合我們這學期所學課程,本次設計采用的是Verilog公司推出的Verilog硬件描述語言,目的是為了將我們所學應用到實際生活中,同時加深我們對Verilog硬件描述語言,FPGA芯片等等的認識與掌握。Ve r i l o g硬件描述語言的主要能力: 基本邏輯門,例如a n d、o r和n a n d等都內置在語言中。 用戶定義原語( U D P)創(chuàng)建的靈活性。用戶定義的原語既可以是組合邏輯原語,也可以
4、是時序邏輯原語。 開關級基本結構模型,例如p m o s 和n m o s等也被內置在語言中。 提供顯式語言結構指定設計中的端口到端口的時延及路徑時延和設計的時序檢查。 可采用三種不同方式或混合方式對設計建模。這些方式包括:行為描述方式使用過程化結構建模;數據流方式使用連續(xù)賦值語句方式建模;結構化方式使用門和模塊實例語句描述建模。 Verilog HDL中有兩類數據類型:線網數據類型和寄存器數據類型。線網類型表示構件間的物理連線,而寄存器類型表示抽象的數據存儲元件。 能夠描述層次設計,可使用模塊實例結構描述任何層次。 設計的規(guī)??梢允侨我獾?;語言不對設計的規(guī)模(大?。┦┘尤魏蜗拗?。 Veril
5、og HDL不再是某些公司的專有語言而是I E E E標準。 人和機器都可閱讀Verilog 語言,因此它可作為E D A的工具和設計者之間的交互語言。 Verilog HDL語言的描述能力能夠通過使用編程語言接口( P L I)機制進一步擴展。P L I是允許外部函數訪問Verilog 模塊內信息、允許設計者與模擬器交互的例程集合。 設計能夠在多個層次上加以描述,從開關級、門級、寄存器傳送級( RT L)到算法級,包括進程和隊列級。 能夠使用內置開關級原語在開關級對設計完整建模。 同一語言可用于生成模擬激勵和指定測試的驗證約束條件,例如輸入值的指定。 Verilog HDL 能夠監(jiān)控模擬驗證
6、的執(zhí)行,即模擬驗證執(zhí)行過程中設計的值能夠被監(jiān)控和顯示。這些值也能夠用于與期望值比較,在不匹配的情況下,打印報告消息。 在行為級描述中, Verilog HDL不僅能夠在RT L級上進行設計描述,而且能夠在體系結構級描述及其算 法級行為上進行設計描述。 能夠使用門和模塊實例化語句在結構級進行結構描述。 在Verilog HDL 的混合方式建模能力,即在一個設計中每個模塊均可以在不同設計層次上建模。 Verilog HDL 還具有內置邏輯函數,例如&(按位與)和|(按位或)。 對高級編程語言結構,例如條件語句、情況語句和循環(huán)語句,語言中都可以使用。 可以顯式地對并發(fā)和定時進行建模。 提供強有力的文
7、件讀寫能力。 語言在特定情況下是非確定性的,即在不同的模擬器上模型可以產生不同的結果;例如,事件隊列上的事件順序在標準中沒有定義。第一章 系統(tǒng)設計1.1 系統(tǒng)設計(1)用四個發(fā)光二極管分別模擬售出價值為5角、1元、1.5元和2元的小商品,購買者可以通過開關選擇任意一種標價中的小商品。(2)燈亮時表示該小商品售出成功。(3)用開關分別模擬5角、1元硬幣和5元紙幣投入,用兩個數碼管顯示商品價格,及應找回的錢數。(4)每次只能售出一種小商品,當投幣結束時,按下確認鍵,若交易成功,則售出貨物并找回剩余的硬幣;若交易不成功,則找回所投的硬幣。按下復位按鍵,并將所有撥碼開關復位,則回到初始狀態(tài)。1.2 總
8、體設計采用FPGA來設計的原理圖如圖1.1所示.它由控制輸入電路、FPGA、電機驅動、顯示電路電路組成。圖1.1 采用FPGA設計的自動售貨機原理方框圖控制輸入電路主要是為用戶設計的,起到一個輸入控制的作用。FPGA是現場可編程邏輯器件,也是本設計方案的核心內容,它是實現自動售貨機運作的主要控制模塊。將編寫好的verilog HDL程序燒制到現場可編程邏輯器件FPGA中,然后通過控制輸入電路把信號輸入到FPGA,由八個開關控制輸入信號,即消費者選擇商品和消費者投幣及確認消費,動態(tài)數碼管顯示輸出信號,即找零環(huán)節(jié)和所選擇的商品、消費者投幣。1.3方案設計使用現場可編程邏輯器件(FPGA)制作,利用
9、Verilog HDL硬件描述語言編程進行控制,然后燒寫實現。對于自動售貨機的設計,本方案采用的是現場可編程邏輯器件來實現, 它的優(yōu)點是所有電路集成在一塊芯片上,此方案所需的外圍電路簡單,這樣它的體積就減少了,同時還提高了系統(tǒng)的穩(wěn)定度,還可以用軟件Quartus軟件進行仿真和調試等,可以充分利用verilog HDL硬件描述語言方便的編程,提高開發(fā)效率,縮短研發(fā)周期,降低研發(fā)成本;而且易于進行功能的擴展,實現方法靈活,調試方便,修改容易。第二章 詳細設計2.1 自動售貨機狀態(tài)描述判斷開關被按下的個數N。若N=2表示所選本次選擇無效,返回初始狀態(tài);若N=1則顯示所選商品,并繼續(xù)執(zhí)行下面的流程。4
10、個開關分別代表4種商品。3個開關分別代表投入0.5元,1元,5元,統(tǒng)計投入總額。投入總額與商品價格做比較,如果總額=商品價格,則繼續(xù)執(zhí)行下面的程序。找零=總額-商品價格,數碼管顯示找零金額。狀態(tài)圖如圖2.1所示: 圖2.1自動售貨機狀態(tài)圖2.2 詳細狀態(tài)描述2.2.1 初始狀態(tài)各變量都設置為零,所有撥碼開關復位,按下rst鍵后,一切恢復到初始狀態(tài)。2.2.2 選商品狀態(tài)分別有價格為0.5元、1元、1.5元和2元的商品,每次選擇商品前,設置一個標志位btn_sell表示選擇商品狀態(tài)。此自動售貨機每一次售貨時只能一次選擇一種商品,當同時選擇兩種以上時,選擇商品無效,數碼管顯示清零,重新進行商品選擇
11、。選擇商品后,數碼管顯示所選商品價格。2.2.3 投幣狀態(tài)當選好商品后,開始投幣。同樣有一標志位btn_price表示投幣金額。投幣口只接受三種面值的錢幣0.5元、1元和5元,可以同時投入多種面值錢幣。投完幣后,先有一個確認買商品的過程,若投了幣但又不購買商品了,就將全部投幣金額退回;若確認購買商品,則進入下一狀態(tài)找零狀態(tài)。2.2.4 找零狀態(tài)投完幣,并確認購買商品后,進入找零狀態(tài)。首先要將所投的金額與所選商品的價格做比較,若所投金額小于商品價格,則退回所投錢幣;若大于等于商品價格,則兩者做差,得到需要找零的錢。第三章 軟件設計3.1 程序總流程圖3.2框圖(Visio繪制)3.3Verilo
12、g HDL源程序 (見附錄)第四章 結果與討論4.1 實驗調試4.1.1 調試步驟軟件調試:運行Quartus II軟件,觀看仿真波形,為了讓數碼管顯示穩(wěn)定,我們將原來的50MHZ的時鐘信號進行了10000分頻,這樣以來,我們的display就不能很好的在仿真波形中顯示,為此,我們把中間變量price和price_all(即控制display的變量)調出來顯示,只要price和price_all顯示正確,仿真就成功。仿真波形如下:硬件調試:在軟件調試調試成功的情況下,接下來我們要進行硬件調試,步驟如下:運行Quartus II軟件,打開工程。再次編譯源程序(見附錄)。分配管腳(見附錄)。將生成
13、的.sof文件寫入FPGA試驗箱中。根據要求選擇幾種買東西的可能情況,在實驗箱上實驗,觀察記錄結果。實物拍照:交易成功的照片流程(圖中撥碼開關從左到右依次對應:商品1(0.5元),商品2(1元),商品3(1.5元),商品4(2元),投幣0.5元,投幣1元,投幣5元。圖中按鍵從左到右第三個為確認,第四個為復位):照片依次為:初始狀態(tài),商品選擇狀態(tài),投幣狀態(tài),確認交易狀態(tài)。 交易不成功的照片流程(第三個圖中左邊的LED不應該亮,之所以亮是忘了復位了): 4.1.2 實驗現象選擇買1.5元的商品,投5元的金額,調試現象如下:選擇1.5元商品數碼管顯示1.5,再選擇一種商品,數碼管顯示初始狀態(tài)(88)
14、,重新進行商品選擇。按下5元投幣鍵,對應數碼管顯示5.0。按下確認購買開關,找零時,對應數碼管顯示3.5,對應1.5元商品的LED燈亮。選擇1.5元的商品,投0.5元的金額,調試現象如下:選擇1.5元的商品,對應數碼管顯示1.5。按下0.5元的投幣鍵,對應數碼管顯示0.5。找零顯示0.5元,退回所投的錢,表示警告的LED燈亮(交易不成功)。4.2 結果與分析調試過程中出現的問題及原因: 數碼管顯示不正確。管腳配置不正確導致數碼管顯示異常。 重新分配管腳后,仍為先前程序的操作結果。重新配置管腳后,未運行程序,使得燒寫進去的仍為原先的程序。步進電機送貨不理想,該送的時候送,不該送的時候也送,再次查
15、看相關源程序,多次修改調試。參考文獻 1 夏宇聞 編著 Verilog數字系統(tǒng)教程 北京航空航天出版社2 梁瑞宇 編寫FPGA設計實驗指導書(Verilog HDL) 3 潘松 等 著EDA技術實用教程:Verilog_HDL版(第4版) 附錄(1)自動售貨機主模塊module auto_seller(clk,rst,display,btn_ok,btn_mon,btn_sell,led_warn,led,StepDrive);input clk,rst,btn_ok;input 2:0 btn_mon;/選擇放入的錢input 3:0 btn_sell;/選擇商品bbt_5,gz_10,kq
16、s_15,kl_20output 6:0 led;/led_5,led_10,led_15,led_20output led_warn;/錢不足,指示燈output 15:0 display;/數碼管顯示投入面值,diaplay15:8=com位選,display7:0=段碼output3:0 StepDrive;reg clk_500Hz;reg 6:0 led;wire s;reg led_warn;/警告放入錢不足reg 15:0 display;reg 31:0 counter;(* synthesis,keep *)reg 9:0 price,price_all;reg 1:0 fl
17、ag = 2b00;/數碼管顯示標志位reg 1:0 flag1 = 2b00;reg 1:0 flag2 = 2b00;parameter COUNT1 = 25d10000;step_motor u(.StepDrive(StepDrive), .clk(clk), . StepEnable(s), .rst(rst);/步進電機例化 assign s=(led3:0=4b1111)|(btn_ok=1)|(led_warn=0);/*分頻使數碼管顯示穩(wěn)定*/always (posedge clk)beginif(counter= 0)begin counter = COUNT1;clk_
18、500Hz = clk_500Hz;endelsecounter = counter-1;endalways (negedge rst or posedge clk)beginif(!rst)beginled = 7b111_1111;/LED滅price_all = 0;/價格清零led_warn =1;price = 0;endelsebegin/*三種面值共8種組合*/case(btn_mon)3b001: begin price_all = 5;end3b010: begin price_all = 10;end3b100: begin price_all = 50;end3b011:
19、 begin price_all = 15;end3b101: begin price_all = 55;end3b110: begin price_all = 60;end3b111: begin price_all = 65;enddefault: begin price_all = 0;endendcase case(btn_sell)4b0001: begin price = 5;end 4b0010: begin price = 10;end4b0100: begin price = 15;end4b1000: begin price = 20;enddefault: begin p
20、rice = 0;endendcaseif(btn_ok=0 )begin if(price_all price) /放入錢不足 beginled_warn = 0;price = 0; end else begin /金錢足夠 price_all = price_all-price; if(price_all =0)led_warn = 1; case(price) /LED燈顯示貨物賣出 5: begin led = 7b111_1110;end10: begin led = 7b111_1101;end15: begin led = 7b111_1011;end20: begin led
21、 = 7b111_0111;enddefault: begin led = 7b111_1111;endendcase end endendend/*分頻后將時鐘給數碼管,數碼管分別顯示放入錢的多少、商品價格*/always (posedge clk_500Hz) beginif(btn_sell) begin case(flag)2b00: begin display= 8b1111_1110,1b1,led7(price%10); flag=2b01;end2b01: begin display= 8b1111_1101,1b0,led7(price/10); flag=2b00;end
22、endcaseif(btn_mon)case(flag1)2b00:begin display= 8b1111_1110,1b1,led7(price_all%10);flag1=2b01;end2b01:begin display= 8b1111_1101,1b0,led7(price_all/10); flag1=2b00;endendcase endelse begin case(flag2) 2b00: begin display=8b1111_1110,1b1,7b0;flag2=2b01;end 2b01: begin display=8b1111_1101,1b1,7b0;fla
23、g2=2b00;end endcase end end/*數碼管段碼表,供陽數碼管6:0=hgfedcba*/function 6:0 led7; input 3:0 dis_input;begincase (dis_input)0 : led7 = 7b100_0000;1 : led7 = 7b111_1001;2 : led7 = 7b010_0100;3 : led7 = 7b011_0000;4 : led7 = 7b001_1001;5 : led7 = 7b001_0010;6 : led7 = 7b000_0010;7 : led7 = 7b111_1000;8 : led7 = 7b000_0000;9 : led7 = 7b001_1000;default : led7 = 7b000_0000;endcaseendendfunctionendmodule(2)步進電機送貨模塊module step_motor (StepDrive, clk, StepEnable, rst); input clk; input StepEnable; input rst; reg Dir,t; reg 11:0 c; output3:0 StepDrive; reg 3:0 StepDrive; reg 2:0 state; reg 31:0 StepCo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 案場物業(yè)管理培訓
- 醫(yī)用設備質量控制與標準
- 課件直播不能截屏
- 課件的重要性與應用
- 課件的銜接與過渡
- 智能醫(yī)療系統(tǒng)設計
- 醫(yī)療資源整合與科室主任策略
- 醫(yī)學影像學人工智能技術探討
- 醫(yī)學影像學新技術與新進展解析
- 醫(yī)學影像信息學發(fā)展動態(tài)
- 假體豐胸培訓課件
- 中建八局項目如何落實鋼筋精細化管理
- 婚外賠償協(xié)議書
- 血小板減少紫癜課件
- 安徽省江南十校2025-2026學年高一上學期12月聯(lián)考生物(含答案)
- 學校石材工程投標書
- 宿舍樓建筑工程施工組織設計方案
- 低壓電工證題庫低壓電工證考試題
- GB 5009.11-2024食品安全國家標準食品中總砷及無機砷的測定
- 全面風險清單-采購與業(yè)務外包管理風險(2023年11月-雷澤佳編制)
- copepe低熔點皮芯型復合短纖維生產工藝的開發(fā)
評論
0/150
提交評論