劉錫鋒,朱劉寧
(1.江蘇信息職業(yè)技術(shù)學院 江蘇 無錫 214153;2.馬鞍山職業(yè)技術(shù)學院 安徽 馬鞍山 243031)
隨著集成電路產(chǎn)業(yè)的迅速發(fā)展,集成電路芯片的規(guī)模越來越大,集成度越來越高,一塊芯片上所實現(xiàn)的功能也越來越多,集成的元器件也動輒百萬、千萬計。對于這種大規(guī)模、超大規(guī)模集成電路的芯片設(shè)計,特別是在數(shù)字集成電路方面,采用計算機輔助設(shè)計和電子設(shè)計的智能自動化來進行集成電路設(shè)計已經(jīng)是一種趨勢[1]。VHDL、Verilog等硬件描述語言近年由于其在芯片設(shè)計自動化方面出色的表現(xiàn)被越來越多地應(yīng)用在超大規(guī)模集成電路設(shè)計領(lǐng)域。用VHDL硬件描述語言進行芯片設(shè)計并不涉及底層電路具體電路結(jié)構(gòu),而只需要給出各單元功能描述和單元電路之間的連接關(guān)系,這種設(shè)計方法一方面使得設(shè)計者能夠?qū)W⒂陧攲咏Y(jié)構(gòu)設(shè)計從而使芯片整體性能更優(yōu),另一方面由于通過語句描述來自動實現(xiàn)具體電路結(jié)構(gòu)節(jié)省了電路設(shè)計的時間提高了設(shè)計效率[4]。同時由于生成的電路是自動生成的標準化電路,也提高了電路設(shè)計的正確性。
自動售貨機是常用的街頭自動販賣設(shè)備,它的核心運作部件是一塊集成電路控制芯片,由這塊芯片來控制、判斷商品的選擇、買賣,貨幣辨別、交易和找零等工作。以往的自動售貨機芯片對售賣商品的類型選擇偏少,對投入貨幣的限制也較多,很多自動售貨機僅僅能允許投入1元硬幣。此外受芯片設(shè)計限制,相應(yīng)的找零環(huán)節(jié)也不完善,有的甚至沒有,這些問題對商品的售賣交易和商品價格的合理定位產(chǎn)生了一定的影響[5]。在做了需求分析的基礎(chǔ)上,提出并設(shè)計了一種基于VHDL實現(xiàn)的自動售貨機芯片設(shè)計。該芯片能夠完成多種商品的售賣,允許多種紙質(zhì)和硬幣現(xiàn)金使用,能夠完成多種貨幣的找零,對價格控制更加合理精確,各種售賣中可能發(fā)生的情況也考慮周全,并做了相應(yīng)設(shè)計[6]。
該售貨機的主要要求是:投幣可投10元、5元紙幣和1元硬幣。出售百事可樂、話梅、瓜子三種商品,可樂售價2元每瓶,話梅售價1元每包,瓜子2元5角(投幣種類數(shù)目和出售商品數(shù)目可繼續(xù)在程序中添加,這里只各以3種為例)。
整個程序總的輸入有:投幣(3輸入端)、選擇商品(3輸入端)、時鐘、執(zhí)行按鍵一共8端輸入。
總的輸出有:總投入貨幣顯示、選擇商品現(xiàn)實(3端)、退幣(1元硬幣、5角硬幣兩端)、商品輸出(三端)一共9端。
根據(jù)以上要求,整體設(shè)計共由6個子模塊(6進程)和一個與非門構(gòu)成??傮w設(shè)計如圖1所示。
圖1 設(shè)計總體結(jié)構(gòu)圖Fig.1 Structure diagram of the automat
1)貨幣投入和計算進程:該模塊允許投入10元5元紙幣,紙幣上限為1,超過部分不計,(此外可以設(shè)定超過1給出1個訊號來關(guān)閉投幣口來防止繼續(xù)投幣,本程序中未給出此訊號),1元硬幣的上限為5個,超出部分不計。經(jīng)過該模塊處理,輸出投入總貨幣數(shù)(以5角為一個單位)到下一進程。該模塊有一個reset訊號,如reset為高電平則所有輸入輸出清零。以下為該子模塊部分程序(總體程序較長,由于篇幅原因,下面只給出第一第二子程序的部分主要程序,如需要全部程序可向作者咨詢)。
cashin:process(cash10,cash5,coin1,feedback)
variable c10t,c5t,c1t:integer range 0 to 255;
variable total_cash:integer range 0 to 255;
begin
if(cash10'event and cash10='1')then
if feedback='0'then
c10t:=c10t+20;
if(c10t>=20)then
c10t:=20;
end if;
else
c10t:=0;
end if;
end if;
。。。
2)物品選擇進程:該模塊輸入部分為3個按鈕,每按一次相應(yīng)商品的按鈕即選擇商品數(shù)目加一,每種商品選擇上限都是5,超過5將按5計算。輸出7個訊號,3種商品各有1個顯示輸出,以顯示給顧客選擇的商品總數(shù),3條按5角為一單位的商品訊號輸出給物品送出進程使用。還有1個選購商品總價值輸出。此模塊也有1個reset訊號,如reset為高電平則所有輸入輸出清零。
itemselect:process(judge,pesi,plum,mseed)
variable pnumber,lnumber,mnumber:integer range 0 to 255;
variable pnumber2,lnumber2,mnumber2:integer range 0 to 255;
variable pc,lc,mc:integer range 0 to 255;
variable tv:integer range 0 to 255;
begin
if(pesi'event and pesi='1')then
if judge='0'then
pnumber:=pnumber+1;pnumber2:=pnumber2+2;pc:=pc+4;
if(pc>=20)then
pnumber:=5;pnumber2:=10;pc:=20;
end if;
else
pnumber:=0;pnumber2:=0;pc:=0;
end if;
end if;
。。。
3)剩余貨幣計算進程:該模塊將上2個進程的總貨幣數(shù)和總商品價值數(shù)相減計算出剩余貨幣數(shù)輸出給找零進程使用,同時判斷總貨幣數(shù)是否小于總商品價值,如果是給出高電平訊號,如果否則給出低電平訊號。該訊號送給執(zhí)行使能進程使用同時作為物品選擇進程的復位端使用。
4)執(zhí)行使能進程:該進程有3個輸入,如果剩余貨幣判斷訊號為低電平同時找零進程給出的反饋訊號也為低電平,此時如果執(zhí)行按鍵按動一下,則輸出高電平使能訊號,且只要剩余貨幣判斷訊號和反饋訊號不變,則一直輸出高電平。如上述2個訊號有任意一個為低電平,則輸出改為低電平。
5)找零進程:該進程只有在使能訊號為高電平時方有效,如使能訊號為低電平,則所有輸出清零。該進程將輸入的剩余貨幣轉(zhuǎn)化成1元的硬幣的脈沖訊號輸出,每次脈沖對應(yīng)找出1個1元硬幣,同時根據(jù)是否輸入單數(shù)的瓜子來判斷是否需要找出5角硬幣。在找零完成后,同時大于5個脈沖時間 (為了保證在找零脈沖小于5個脈沖時間時商品輸出時間足夠)后給出高電平反饋訊號。該訊號供給剩余貨幣計算進程使用,同時作為貨幣投入和計算進程的復位端使用。
6)商品輸出進程:該進程只有在使能訊號為高電平時方有效,如使能訊號為低電平,則所有輸出清零。該進程將物品選擇進程給出的商品數(shù)目按脈沖輸出。每次脈沖對應(yīng)出1件商品。同時當所有商品輸出完成后給出高電平反饋訊號(此訊號在本程序中保留,不起作用)。
為了驗證該設(shè)計的功能,對該設(shè)計進行了仿真分析。圖2是該設(shè)計在MAXPLUS II下進行仿真的波形圖,該仿真中采用周期為35 ns的時鐘。
圖2 仿真測試結(jié)果圖Fig.2 Result chart of simulation of automat
上圖中c11為1元硬幣輸出,c00為5毛硬幣輸出??梢钥吹疆斴斎肷唐贰?元硬幣超過5個時仍以5計算。當總選擇商品價值超過投入的總貨幣數(shù)時,程序自動將選擇商品數(shù)目清零,但輸入的貨幣不變,只有選擇商品正確以后按了執(zhí)行鍵,機器才按照給定數(shù)目輸出商品和找零,當全部完成后將貨幣和商品清零。
由仿真結(jié)果分析,設(shè)計滿足要求,能夠完成多種商品的售賣,允許多種紙質(zhì)和硬幣現(xiàn)金使用,能夠完成多種貨幣的找零,對價格控制更加合理精確,執(zhí)行售賣功能全面,可以滿足實際生產(chǎn)使用。
[1]夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計教程[M].3版,北京:北京航空航天大學出版社,2013.
[2]楊志忠.數(shù)字電子技術(shù)[M].北京:高等教育出版社,2008.
[3]閻石.數(shù)字電子技術(shù)基礎(chǔ) [M].北京:高等教育出版社,2006.
[4]韓雁,洪慧.集成電路設(shè)計制造中EDA工具實用教程[M].杭州:浙江大學出版社,2007.
[5]劉明業(yè).集成電路/計算機硬件描述語言VHDL高等教材[M].北京:清華大學出版社,2003.
[6]姜雪松.硬件描述語言VHDL教程[M].西安:西安交通大學出版社,2004.