版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上目 錄專心-專注-專業(yè)1 引言VHDL的英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware Descriptiong Language,誕生于1982年。1987年底,VHDL被美國(guó)國(guó)防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語(yǔ)言 。自IEEE公布了VHDL的標(biāo)準(zhǔn)版本,IEEE-1076之后,各EDA公司相繼推出了自己的VHDL設(shè)計(jì)環(huán)境,或宣布自己的設(shè)計(jì)工具可以和VHDL接口。1993年,IEEE對(duì)VHDL進(jìn)行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴(kuò)展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標(biāo)準(zhǔn)的1076-1993版本
2、。現(xiàn)在,VHDL和Verilog作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語(yǔ)言,又得到眾多EDA公司的支持,在電子工程領(lǐng)域,已成為事實(shí)上的通用硬件描述語(yǔ)言。有專家認(rèn)為,在新的世紀(jì)中,VHDL于Verilog語(yǔ)言將承擔(dān)起大部分的數(shù)字系統(tǒng)設(shè)計(jì)任務(wù)。 VHDL的英文全寫(Very-High-Speed Integrated Circuit HardwareDescription Language)翻譯成中文就是超高速集成電路硬件描述語(yǔ)言。因此它的應(yīng)用主要是應(yīng)用在數(shù)字電路的設(shè)計(jì)中。目前,它在中國(guó)的應(yīng)用多數(shù)是用在FPGA/CPLD/EPLD的設(shè)計(jì)中。當(dāng)然在一些實(shí)力較為雄厚的單位,它也被用來(lái)設(shè)計(jì)ASIC。隨著EDA技
3、術(shù)的高速發(fā)展,電子系統(tǒng)的設(shè)計(jì)技術(shù)和工具發(fā)生了深刻的變化,大規(guī)模可編程邏輯器件CPLDFPGA的出現(xiàn),給設(shè)計(jì)人員帶來(lái)了諸多方便。利用它進(jìn)行產(chǎn)品開(kāi)發(fā),不僅成本低、周期短、可靠性高,而且具有完全的知識(shí)產(chǎn)權(quán)。利用VHDL語(yǔ)言設(shè)計(jì)自動(dòng)售貨機(jī),使其實(shí)現(xiàn)自動(dòng)售貨,找零錢等功能,突出了其作為硬件描述語(yǔ)言的良好的可讀性、可移植性和易讀性等優(yōu)點(diǎn)。此程序通過(guò)下載到特定芯片后,可應(yīng)用于實(shí)際的自動(dòng)售貨機(jī)系統(tǒng)中。本文基于FPGA開(kāi)發(fā)系統(tǒng),在QuartusII 7.2軟件平臺(tái)上,完成了自動(dòng)售貨機(jī)控制器的設(shè)計(jì)和與仿真,并下載到試驗(yàn)箱進(jìn)行硬件實(shí)現(xiàn)。首先,本文介紹了QuartusII 7.2軟件的基本使用方法和VHDL硬件描述語(yǔ)
4、言的特點(diǎn),采用VHDL 硬件描述語(yǔ)言描述自動(dòng)售貨機(jī)控制器,完成對(duì)電路的功能仿真。在設(shè)計(jì)過(guò)程中,重點(diǎn)探討了自動(dòng)售貨機(jī)控制器的設(shè)計(jì)思路和功能模塊劃分。然后,初步探討了電路邏輯綜合的原理,該軟件對(duì)自動(dòng)售貨機(jī)控制器電路進(jìn)行了邏輯綜合。最后,使用EDA實(shí)驗(yàn)開(kāi)發(fā)系統(tǒng)進(jìn)行電路的下載和驗(yàn)證。驗(yàn)證結(jié)果表明設(shè)計(jì)的自動(dòng)售貨機(jī)控制器完成了預(yù)期的功能。2 VHDL介紹2.1 硬件描述語(yǔ)言VHDL硬件描述語(yǔ)言(HDL)是一種用于設(shè)計(jì)硬件電子系統(tǒng)的計(jì)算機(jī)語(yǔ)言,它用軟件編程的方式來(lái)描述電子系統(tǒng)的邏輯功能、電路結(jié)構(gòu)和連接形式,與傳統(tǒng)的門級(jí)描述方式相比,它更適合大規(guī)模系統(tǒng)的設(shè)計(jì)。例如一個(gè)32位的加法器,利用圖形輸入軟件需要輸人5
5、00至1000個(gè)門,而利用VHDL語(yǔ)言只需要書寫一行“A=B+C” 即可。而且 VHDL語(yǔ)言可讀性強(qiáng),易于修改和發(fā)現(xiàn)錯(cuò)誤。早期的硬件描述語(yǔ)言,如ABEL、HDL、AHDL,由不同的EDA廠商開(kāi)發(fā),互不兼容,而且不支持多層次設(shè)計(jì),層次間翻譯工作要由人工完成。為了克服以上不足,1985年美國(guó)國(guó)防部正式推出了高速集成電路硬件描述語(yǔ)言VHDL,1987年IEEE采納VHDL為硬件描述語(yǔ)言標(biāo)準(zhǔn)(IEEE-STD-1076)。VHDL是一種全方位的硬件描述語(yǔ)言,包括系統(tǒng)行為級(jí)。寄存器傳輸級(jí)和邏輯門多個(gè)設(shè)計(jì)層次,支持結(jié)構(gòu)、數(shù)據(jù)流和行為三種描述形式的混合描述,因此VHDL幾乎覆蓋了以往各種硬件俄語(yǔ)言的功能,整
6、個(gè)自頂向下或由下向上的電路設(shè)計(jì)過(guò)程都可以用VHDL來(lái)完成。VHDL還具有以下優(yōu)點(diǎn):(1)VHDL的寬范圍描述能力使它成為高層進(jìn)設(shè)計(jì)的核心,將設(shè)計(jì)人員的工作重心提高到了系統(tǒng)功能的實(shí)現(xiàn)與調(diào)試,而花較少的精力于物理實(shí)現(xiàn)。(2)VHDL可以用簡(jiǎn)潔明確的代碼描述來(lái)進(jìn)行復(fù)雜控制邏輯設(shè)計(jì),靈活且方便,而且也便于設(shè)計(jì)結(jié)果的交流、保存和重用。(3)VHDL的設(shè)計(jì)不依賴于特定的器件,方便了工藝的轉(zhuǎn)換。(4)VHDL是一個(gè)標(biāo)準(zhǔn)語(yǔ)言,為眾多的EDA廠商支持,因此移植性好。6傳統(tǒng)的硬件電路設(shè)計(jì)方法是采用自下而上的設(shè)計(jì)方法,即根據(jù)系統(tǒng)對(duì)硬件的要求,詳細(xì)編制技術(shù)規(guī)格書,并畫出系統(tǒng)控制流圖;然后根據(jù)技術(shù)規(guī)格書和系統(tǒng)控制流圖,
7、對(duì)系統(tǒng)的功能進(jìn)行細(xì)化,合理地劃分功能模塊,并畫出系統(tǒng)的功能框圖;接著就進(jìn)行各功能模塊的細(xì)化和電路設(shè)計(jì);各功能模塊電路設(shè)計(jì)、調(diào)試完成后,將各功能模塊的硬件電路連接起來(lái)再進(jìn)行系統(tǒng)的調(diào)試,最后完成整個(gè)系統(tǒng)的硬件設(shè)計(jì)。采用傳統(tǒng)方法設(shè)計(jì)數(shù)字系統(tǒng),特別是當(dāng)電路系統(tǒng)非常龐大時(shí),設(shè)計(jì)者必須具備較好的設(shè)計(jì)經(jīng)驗(yàn),而且繁雜多樣的原理圖的閱讀和修改也給設(shè)計(jì)者帶來(lái)諸多的不便。為了提高開(kāi)發(fā)的效率,增加已有開(kāi)發(fā)成果的可繼承性以及縮短開(kāi)發(fā)周期,各ASIC研制和生產(chǎn)廠家相繼開(kāi)發(fā)了具有自己特色的電路硬件描述語(yǔ)言(Hardware Description Language,簡(jiǎn)稱HDL)。但這些硬件描述語(yǔ)言差異很大,各自只能在自己的
8、特定設(shè)計(jì)環(huán)境中使用,這給設(shè)計(jì)者之間的相互交流帶來(lái)了極大的困難。因此,開(kāi)發(fā)一種強(qiáng)大的、標(biāo)準(zhǔn)化的硬件描述語(yǔ)言作為可相互交流的設(shè)計(jì)環(huán)境已勢(shì)在必行。于是,美國(guó)于1981年提出了一種新的、標(biāo)準(zhǔn)化的HDL,稱之為VHSIC(Very High Speed Integrated Circuit) Hardware Description Language,簡(jiǎn)稱VHDL。這是一種用形式化方法來(lái)描述數(shù)字電路和設(shè)計(jì)數(shù)字邏輯系統(tǒng)的語(yǔ)言。設(shè)計(jì)者可以利用這種語(yǔ)言來(lái)描述自己的設(shè)計(jì)思想,然后利用電子設(shè)計(jì)自動(dòng)化工具進(jìn)行仿真,再自動(dòng)綜合到門電路,最后用PLD實(shí)現(xiàn)其功能。2.2 VHDL語(yǔ)言的特點(diǎn)具有良好的可讀性,即容易被計(jì)算機(jī)
9、接受,也容易被讀者理解。使用期長(zhǎng),不會(huì)因工藝變化而使描述過(guò)時(shí)。因?yàn)閂HDL的硬件描述與工藝無(wú)關(guān),當(dāng)工藝改變時(shí),只需修改相應(yīng)程序中的屬性參數(shù)即可。當(dāng)電路系統(tǒng)采用VHDL語(yǔ)言設(shè)計(jì)其硬件時(shí),與傳統(tǒng)的電路設(shè)計(jì)方法相比較,具有如下的特點(diǎn):第一層次是行為描述。所謂行為描述,實(shí)質(zhì)上就是對(duì)整個(gè)系統(tǒng)的數(shù)學(xué)模型的描述。一般來(lái)說(shuō),對(duì)系統(tǒng)進(jìn)行行為描述的目的是試圖在系統(tǒng)設(shè)計(jì)的初始階段,通過(guò)對(duì)系統(tǒng)行為描述的仿真來(lái)發(fā)現(xiàn)設(shè)計(jì)中存在的問(wèn)題。在行為描述階段,并不真正考慮其實(shí)際的操作和算法用何種方法來(lái)實(shí)現(xiàn),而是考慮系統(tǒng)的結(jié)構(gòu)及其工作的過(guò)程是否能到達(dá)系統(tǒng)設(shè)計(jì)的要求。第二層次是RTL方式描述。這一層次稱為寄存器傳輸描述(又稱數(shù)據(jù)流描述
10、)。如前所述,用行為方式描述的系統(tǒng)結(jié)構(gòu)的程序,其抽象程度高,是很難直接映射到具體邏輯元件結(jié)構(gòu)的。要想得到硬件的具體實(shí)現(xiàn),必須將行為方式描述的VHDL語(yǔ)言程序改寫為RTL方式描述的VHDL語(yǔ)言程序。也就是說(shuō),系統(tǒng)采用RTL方式描述,才能導(dǎo)出系統(tǒng)的邏輯表達(dá)式,才能進(jìn)行邏輯綜合。第三層次是邏輯綜合。即利用邏輯綜合工具,將RTL方式描述的程序轉(zhuǎn)換成用基本邏輯元件表示的文件(門級(jí)網(wǎng)絡(luò)表)。此時(shí),如果需要,可將邏輯綜合的結(jié)果以邏輯原理圖的方式輸出。此后可對(duì)綜合的結(jié)果在門電路級(jí)上進(jìn)行仿真,并檢查其時(shí)序關(guān)系。由自上而下的設(shè)計(jì)過(guò)程可知,從總體行為設(shè)計(jì)開(kāi)始到最終的邏輯綜合,每一步都要進(jìn)行仿真檢查,這樣有利于盡早發(fā)
11、現(xiàn)設(shè)計(jì)中存在的問(wèn)題,從而可以大大縮短系統(tǒng)的設(shè)計(jì)周期。由于目前眾多制造PLD芯片的廠家,其工具軟件均支持VHDL語(yǔ)言的編程。所以利用VHDL語(yǔ)言設(shè)計(jì)數(shù)字系統(tǒng)時(shí),可以根據(jù)硬件電路的設(shè)計(jì)需要,自行利用PLD設(shè)計(jì)自用的ASIC芯片,而無(wú)須受通用元器件的限制。3 QuartusII軟件簡(jiǎn)介3.1軟件介紹Quartus II 是的綜合性PLD開(kāi)發(fā),支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程。 Quartus II可以在XP、
12、Linux以及Unix上使用,除了可以使用Tcl完成設(shè)計(jì)流程外,提供了完善的用戶圖形界面設(shè)計(jì)方式。具有運(yùn)行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點(diǎn)。 Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模塊庫(kù),使用戶可以充分利用成熟的模塊,簡(jiǎn)化了設(shè)計(jì)的復(fù)雜性、加快了設(shè)計(jì)速度。對(duì)第三方EDA工具的良好支持也使用戶可以在設(shè)計(jì)流程的各個(gè)階段使用熟悉的第三方EDA工具。 此外,Quartus II 通過(guò)和DSP Builder工具與Matlab/Simulink相結(jié)合,可以方便地實(shí)現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera的片上可編程系統(tǒng)(SOPC)開(kāi)發(fā),集系統(tǒng)級(jí)設(shè)
13、計(jì)、可編程邏輯設(shè)計(jì)于一體,是一種綜合性的開(kāi)發(fā)平臺(tái)。 Maxplus II 作為Altera的上一代PLD設(shè)計(jì)軟件,由于其出色的易用性而得到了廣泛的應(yīng)用。目前Altera已經(jīng)停止了對(duì)Maxplus II 的更新支持,Quartus II 與之相比不僅僅是支持器件類型的豐富和圖形界面的改變。Altera在Quartus II 中包含了許多諸如SignalTap II、Chip Editor和RTL Viewer的設(shè)計(jì)輔助工具,集成了SOPC和HardCopy設(shè)計(jì)流程,并且繼承了Maxplus II 友好的圖形界面及簡(jiǎn)便的使用方法。 Altera Quartus II 作為一種可編程邏輯的設(shè)計(jì)環(huán)境,
14、 由于其強(qiáng)大的設(shè)計(jì)能力和直觀易用的接口,越來(lái)越受到者的歡迎。3.2界面介紹3.2.1代碼輸入界面代碼輸入界面如圖3.1所示:圖3.1 代碼輸入界面3.2.2功能仿真界面功能仿真界面如圖3.2所示:圖3.2 功能仿真界面3.2.3波形仿真界面波形仿真界面如圖3.3所示:圖3.3 波形仿真界面4 自動(dòng)售貨機(jī)控制器設(shè)計(jì)與仿真4.1硬件電路設(shè)計(jì)根據(jù)要求:自動(dòng)售貨機(jī)能出售1元、5元、10元三種商品。出售哪種商品可由顧客按動(dòng)相應(yīng)的一個(gè)按鍵即可,并同時(shí)用數(shù)碼管顯示出此商品的價(jià)格;顧客投入硬(紙)幣的錢數(shù)也是有1元、5元、10元三種,但每次只能投入其中的一種幣,此操作通過(guò)按動(dòng)相應(yīng)的一個(gè)按鍵來(lái)模擬,并同時(shí)用數(shù)碼
15、管將投幣額顯示出來(lái);顧客投幣后,按一次確認(rèn)鍵,如果投幣額不足時(shí)則報(bào)警,報(bào)警時(shí)間3秒。如果投幣額足夠時(shí)自動(dòng)送出貨物(送出的貨物用相應(yīng)不同的指示燈顯示來(lái)模擬),同時(shí)多余的錢應(yīng)找回,找回的錢數(shù)用數(shù)碼管顯示出來(lái);顧客一旦按動(dòng)確認(rèn)鍵3秒后,自動(dòng)售貨機(jī)即可自動(dòng)恢復(fù)到初始狀態(tài),此時(shí)才允許顧客進(jìn)行下一次購(gòu)貨操作;此售貨機(jī)要設(shè)有一個(gè)由商家控制的整體復(fù)位控制;所以系統(tǒng)頂層框圖設(shè)計(jì)如下圖4.1所示: 圖4.1 系統(tǒng)頂層框圖其中,sel1、sel5、sel10分別控制選擇1元、5元、10元三種商品,put1、put5、put10分別是顧客投入硬(紙)幣的錢數(shù)1元、5元、10元,sure是確認(rèn)輸入,rst是由商家控制的
16、整體復(fù)位控制輸入;jing是警告輸出,out1、out,out10分別是1元、5元、10元三種商品輸出指示,digit用于顯示顧客投幣錢數(shù)和找零錢數(shù)。4.2狀態(tài)轉(zhuǎn)換圖狀態(tài)轉(zhuǎn)換圖如圖4.2所示:S0S1S2S3S4S5S6S7S8S9S10S11S12S13S14S15S16S17S18S19S20S21S0圖4.2 狀態(tài)轉(zhuǎn)換圖共分為21個(gè)狀態(tài),S0為初始狀態(tài),當(dāng)顧客選擇1元、5元或10元三種商品時(shí)分別跳轉(zhuǎn)至S1、S2、S3狀態(tài),否則停留在S0狀態(tài),選擇貨物的錢數(shù)在數(shù)碼管上顯示出來(lái),程序代碼如下所示:when s0=>jing<='0'out1<='0&
17、#39;out5<='0'out10<='0'digit<=0; if sel1='1' and sel5='0' and sel10='0' then ns<=s1; elsif sel1='0' and sel5='1' and sel10='0' then ns<=s2; elsif sel1='0' and sel5='0' and sel10='1' then ns<=s3;
18、 else ns<=s0; end if;當(dāng)顧客投幣為1元、5元或10元時(shí),若當(dāng)前為S1狀態(tài),則分別跳轉(zhuǎn)至S4、S5、S6三種狀態(tài),投幣錢數(shù)顯示在數(shù)碼管上,否則停留在S1狀態(tài),程序如下所示: when s1=>digit<=1; if put1='1' and put5='0' and put10='0' then ns<=s4; elsif put1='0' and put5='1' and put10='0' then ns<=s5; elsif put1='
19、;0' and put5='0' and put10='1' then ns<=s6; else ns<=s1; end if;當(dāng)顧客投幣為1元、5元或10元時(shí),若當(dāng)前為S2狀態(tài),則分別跳轉(zhuǎn)至S7、S8、S9三種狀態(tài),投幣錢數(shù)顯示在數(shù)碼管上,否則停留在S2狀態(tài),程序如下所示:when s2=>digit<=5; if put1='1' and put5='0' and put10='0' then ns<=s7; elsif put1='0' and put5=
20、'1' and put10='0' then ns<=s8; elsif put1='0' and put5='0' and put10='1' then ns<=s9; else ns<=s2; end if;當(dāng)顧客投幣為1元、5元或10元時(shí),若當(dāng)前為S3狀態(tài),則分別跳轉(zhuǎn)至S10、S11、S12三種狀態(tài),投幣錢數(shù)顯示在數(shù)碼管上,否則停留在S3狀態(tài),程序如下所示:when s3=>digit<=10; if put1='1' and put5='0' a
21、nd put10='0' then ns<=s10; elsif put1='0' and put5='1' and put10='0' then ns<=s11; elsif put1='0' and put5='0' and put10='1' then ns<=s12; else ns<=s3; end if;當(dāng)按下確認(rèn)鍵時(shí),則按狀態(tài)轉(zhuǎn)移圖跳到相應(yīng)的下一個(gè)狀態(tài),否則停留在當(dāng)前狀態(tài),執(zhí)行售貨、找錢、警告、3秒后復(fù)位等功能。4.3時(shí)序仿真結(jié)果當(dāng)所選貨物錢數(shù)與
22、投幣錢數(shù)相等時(shí)波形仿真結(jié)果圖如圖4.3所示:圖4.3 投幣正好波形仿真圖由波形仿真結(jié)果可以看到:當(dāng)按下選擇5元貨物時(shí),digit輸出為5,當(dāng)投幣為5元時(shí),digit輸出為5,當(dāng)按下確認(rèn)后digit輸出為0,并且顯示5元商品輸出,三個(gè)上升沿即3秒后復(fù)位,所有輸出為0;當(dāng)所選貨物錢數(shù)比投幣錢數(shù)多時(shí)波形仿真結(jié)果圖如圖4.4所示:圖4.4 投幣不足波形仿真圖由波形仿真結(jié)果可以看到:當(dāng)按下選擇5元貨物時(shí),digit輸出為5,當(dāng)投幣為1元時(shí),digit輸出為1,當(dāng)按下確認(rèn)后digit輸出為1,即找回1元并且無(wú)商品輸出,警告經(jīng)過(guò)3個(gè)上升沿即3秒后復(fù)位,所有輸出為0。當(dāng)所選貨物錢數(shù)比投幣錢數(shù)少時(shí)波形仿真結(jié)果圖
23、如圖4.5所示:圖4.5 投幣富余波形仿真圖由波形仿真結(jié)果可以看到:當(dāng)按下選擇5元貨物時(shí),digit輸出為5,當(dāng)投幣為10元時(shí),digit輸出為10,當(dāng)按下確認(rèn)后digit輸出為5,即找回5元并且商品輸出,經(jīng)過(guò)3個(gè)上升沿即3秒后復(fù)位,所有輸出為0。5引腳鎖定及下載5.1引腳鎖定選擇Assignments菜單下的Pins命令,引腳鎖定圖如圖5.1所示:圖5.1 引腳鎖定圖如果是下載到實(shí)驗(yàn)箱上則需連續(xù)按“模式選擇”按鈕選擇模式5,再按“系統(tǒng)復(fù)位”按鈕。進(jìn)行引腳鎖定,查閱附表,分別點(diǎn)“l(fā)ocation”選擇引腳號(hào)。引腳鎖定后再編譯。如同此前進(jìn)行過(guò)的。編譯成功后點(diǎn)確定。5.2下載選擇Tools菜單下的
24、Programmer命令,然后在Program/Configure下打上鉤選中,點(diǎn)“start”按鈕開(kāi)始下載,“Progress”進(jìn)度條顯示下載進(jìn)度。下載完后就可以在實(shí)驗(yàn)箱上查看并驗(yàn)證結(jié)果。5.3結(jié)果分析通過(guò)上面的步驟將程序代碼下載到實(shí)驗(yàn)箱的FPGA芯片中,并驗(yàn)證了在仿真中的結(jié)果的正確性。自動(dòng)售貨機(jī)能出售1元、5元、10元三種商品。出售哪種商品可由顧客按動(dòng)相應(yīng)的一個(gè)按鍵即可,并同時(shí)用數(shù)碼管顯示出此商品的價(jià)格;顧客投入硬(紙)幣的錢數(shù)也是有1元、5元、10元三種,但每次只能投入其中的一種幣,此操作通過(guò)按動(dòng)相應(yīng)的一個(gè)按鍵來(lái)模擬,并同時(shí)用數(shù)碼管將投幣額顯示出來(lái);顧客投幣后,按一次確認(rèn)鍵,如果投幣額不
25、足時(shí)則報(bào)警,報(bào)警時(shí)間3秒。如果投幣額足夠時(shí)自動(dòng)送出貨物(送出的貨物用相應(yīng)不同的指示燈顯示來(lái)模擬),同時(shí)多余的錢應(yīng)找回,找回的錢數(shù)用數(shù)碼管顯示出來(lái);顧客一旦按動(dòng)確認(rèn)鍵3秒后,自動(dòng)售貨機(jī)即可自動(dòng)恢復(fù)到初始狀態(tài),此時(shí)才允許顧客進(jìn)行下一次購(gòu)貨操作;此售貨機(jī)設(shè)有一個(gè)由商家控制的整體復(fù)位控制,當(dāng)整體復(fù)位信號(hào)有效時(shí),所有輸出均為零。6設(shè)計(jì)總結(jié)一周的課設(shè)過(guò)去的太快了,自動(dòng)售貨機(jī)控制器的設(shè)計(jì)已按計(jì)劃如期全部完成,能按預(yù)期的效果進(jìn)行自動(dòng)售貨,找零,復(fù)位,警告等功能,并設(shè)計(jì)數(shù)碼管顯示所選商品價(jià)格、投幣數(shù)目和應(yīng)當(dāng)找回顧客的錢數(shù)。課設(shè)時(shí)先按要求畫出狀態(tài)轉(zhuǎn)換圖,然后再根據(jù)狀態(tài)轉(zhuǎn)換圖及要求逐一設(shè)計(jì)。最后再將它們組合成完整的
26、自動(dòng)售貨機(jī)控制器。課設(shè)過(guò)程中遇到一個(gè)主要問(wèn)題是,延時(shí)三秒如何實(shí)現(xiàn)。這個(gè)問(wèn)題讓我兩天晚上沒(méi)有睡好,經(jīng)自己的多次分析和程序調(diào)試,最后在和同學(xué)在騎車的路上的討論中共同解決了這個(gè)問(wèn)題,并得出結(jié)論:即便是百分之九十九的正確性都是不正確的,必須確保百分之百的正確率,還有一個(gè)人的力量往往是不如人多智慧多!在這次課設(shè)中使我更加熟悉了對(duì)這門課程的了解并且加深了同學(xué)間合作的默契,總之,這次課程設(shè)計(jì)很愉快!最后,非常感謝郭老師和戴老師對(duì)我們認(rèn)真細(xì)心的教導(dǎo)和耐心的指導(dǎo),謝謝老師們的關(guān)心。 參考文獻(xiàn)1.Voknei A.Pedroni.VHDL數(shù)字電路設(shè)計(jì)教程.電子工業(yè)出版社,2008.52.潘松,黃繼業(yè).EDA技術(shù)實(shí)
27、用教程(第二版).科學(xué)出版社,2005.23.焦素敏.EDA應(yīng)用技術(shù).清華大學(xué)出版社,2002.44.張昌凡等.可編程邏輯器件及VHDL設(shè)計(jì)技術(shù)M.廣州:華南理工大學(xué)出版社,20015.曾繁泰,陳美金.VHDL程序設(shè)計(jì)M.北京:清華大學(xué)出版社,2001附錄library ieee;-庫(kù)聲明use ieee.std_logic_1164.all;entity guo is port(sel1,sel5,sel10,put1,put5,put10,sure,clk,rst:in std_logic; jing,out1,out5,out10:out std_logic; digit:out int
28、eger range 0 to 15);end guo;-實(shí)體architecture bhv of guo 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);-結(jié)構(gòu)體,定義21個(gè)狀態(tài)signal ps,ns:state;signal a,b:std_logic;-聲明a,b兩個(gè)信號(hào),用于延時(shí)beginprocess(clk,rst)variable temp:integer range 0 to 3;begin if rst='1'the
29、n ps<=s0;-當(dāng)復(fù)位信號(hào)有效時(shí),s0賦給現(xiàn)態(tài) elsif clk'event and clk='1' then ps<=ns;-當(dāng)上升沿到來(lái)時(shí),次態(tài)賦值給現(xiàn)態(tài) if(a='1')then temp:=temp+1; if(temp=3)then b<='1' else b<='0' end if; else temp:=0; end if; end if;-延時(shí)程序end process;process(sel1,sel5,sel10,put1,put5,put10,sure,b,ps)beg
30、inif(ps=s0)or(ps=s1)or(ps=s2)or(ps=s3)or(ps=s4)or(ps=s5)or(ps=s6)or(ps=s7)or(ps=s8)or(ps=s9)or(ps=s10)or(ps=s11)or(ps=s12)then a<='0' else a<='1' end if;-對(duì)控制延時(shí)信號(hào)a賦值 case ps is when s0=>jing<='0'out1<='0'out5<='0'out10<='0'digit<
31、=0;-狀態(tài)及狀態(tài)轉(zhuǎn)換情況 if sel1='1' and sel5='0' and sel10='0' then ns<=s1; elsif sel1='0' and sel5='1' and sel10='0' then ns<=s2; elsif sel1='0' and sel5='0' and sel10='1' then ns<=s3; else ns<=s0; end if; when s1=>digit&l
32、t;=1; if put1='1' and put5='0' and put10='0' then ns<=s4; elsif put1='0' and put5='1' and put10='0' then ns<=s5; elsif put1='0' and put5='0' and put10='1' then ns<=s6; else ns<=s1; end if; when s4=>digit<=1; if
33、 sure='1' then ns<=s13; else ns<=s4; end if; when s5=>digit<=5; if sure='1' then ns<=s14; else ns<=s5; end if; when s6=>digit<=10; if sure='1' then ns<=s15; else ns<=s6; end if; when s2=>digit<=5; if put1='1' and put5='0' an
34、d put10='0' then ns<=s7; elsif put1='0' and put5='1' and put10='0' then ns<=s8; elsif put1='0' and put5='0' and put10='1' then ns<=s9; else ns<=s2; end if; when s7=>digit<=1; if sure='1' then ns<=s16; else ns<=s7
35、; end if; when s8=>digit<=5; if sure='1' then ns<=s17; else ns<=s8; end if; when s9=>digit<=10; if sure='1' then ns<=s18; else ns<=s9; end if; when s3=>digit<=10; if put1='1' and put5='0' and put10='0' then ns<=s10; elsif put1=
36、'0' and put5='1' and put10='0' then ns<=s11; elsif put1='0' and put5='0' and put10='1' then ns<=s12; else ns<=s3; end if; when s10=>digit<=1; if sure='1' then ns<=s19; else ns<=s10; end if; when s11=>digit<=5; if sure
37、='1' then ns<=s20; else ns<=s11; end if; when s12=>digit<=10; if sure='1' then ns<=s21; else ns<=s12; end if; when s13=>out1<='1'out5<='0'out10<='0'jing<='0'digit<=0; if b='1' then ns<=s0;-延時(shí)控制 else ns<=s13; end if; when s14=>out1<='1'out5<='0'out10<='0'jing<='0'digit<
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 早教課堂音樂(lè)課程設(shè)計(jì)
- 班級(jí)物品維護(hù)課程設(shè)計(jì)
- 白菜豆腐烹飪課程設(shè)計(jì)
- 畫室試聽(tīng)神器課程設(shè)計(jì)
- 眼珠制作課程設(shè)計(jì)
- 智能建筑大廈課程設(shè)計(jì)
- 物聯(lián)網(wǎng)溫濕度課程設(shè)計(jì)
- 熱愛(ài)大自然主題課程設(shè)計(jì)
- 泰勒課程設(shè)計(jì)原則
- 液壓搬運(yùn)車課程設(shè)計(jì)
- 蕭公權(quán)-《中國(guó)政治思想史》第一編第二和第三章內(nèi)容
- 蘇教版四年級(jí)上冊(cè)科學(xué)期末試題(含答案)
- 《鑄造用增碳劑》
- 一年級(jí)上心理健康教育《我是小學(xué)生了》課件PPT
- 水庫(kù)回水計(jì)算(實(shí)用)
- 山東第一醫(yī)科大學(xué)護(hù)理倫理學(xué)期末復(fù)習(xí)題
- 清華物理習(xí)題庫(kù)試題及答案光學(xué)
- 中班美術(shù)活動(dòng)美麗的蝴蝶教案【含教學(xué)反思】
- 管理供應(yīng)商 供應(yīng)商績(jī)效評(píng)估
- 1000MW機(jī)組鍋爐過(guò)渡段T23水冷壁管檢修導(dǎo)則(征求意見(jiàn)稿)
- 國(guó)開(kāi)本科《商務(wù)英語(yǔ)4》機(jī)考題庫(kù)及答案
評(píng)論
0/150
提交評(píng)論