劉明揚(yáng), 孫丹丹, 魏學(xué)軍
(北京郵電大學(xué) 電子工程學(xué)院, 北京 100876)
隨著人們生活的智能化,自動售貨機(jī)可謂是應(yīng)運(yùn)而生。相對于傳統(tǒng)的購物模式,自動售貨機(jī)體現(xiàn)出方便等特點,極大地滿足了人們快捷購物的需求。然而,目前市場上一些自動售貨機(jī)對于貨幣的處理及購物的提示有著不同程度的缺陷。本設(shè)計通過使用EDA技術(shù)對各種功能進(jìn)行優(yōu)化,運(yùn)用VHDL語言,簡化系統(tǒng),提高性能,使顧客在購物過程中更加方便[1-2]。
首先從實際使用出發(fā),分析售貨機(jī)的功能。從兩方面來考慮:① 顧客有投幣,選擇物品,追加投幣,退錢等操作;② 對于顧客的操作,機(jī)器有相應(yīng)的反應(yīng),并有圖像顯示等功能。于是根據(jù)實際情況我們提出以下的設(shè)想。[3]
(1) 顧客使用售貨機(jī)前有待機(jī)動畫,表示售貨機(jī)正常運(yùn)行。以后的任何操作都有相應(yīng)的圖像對應(yīng)。
(2) 假設(shè)有三種商品,售貨機(jī)只接受三種面值的貨幣。當(dāng)顧客投入1元、5元或10元時,點陣開始循環(huán)顯示甲、乙、丙三種商品,對應(yīng)的數(shù)碼管同步顯示三種商品的數(shù)量,且若投幣成功,有LED提示投錢成功。
(3) 顧客購買物品時,若購買成功則有LED提示,且數(shù)碼管顯示剩余的錢數(shù),整個過程可以隨時加錢(即重復(fù)過程(2))[4]。
(4) 整個過程中可以隨時按下退出鍵,系統(tǒng)將退出投入的錢數(shù),整個系統(tǒng)將回到初始狀態(tài)。
本設(shè)計采用Altera公司的MAXII為開發(fā)器件,主頻50 MHz,以QuartusII作為開發(fā)軟件,整體支持器件設(shè)計,原理圖,VHDL,波形仿真,時間分析,編程下載。以上功能為設(shè)計提供了技術(shù)支持[5]。
整體分為6個模塊,分別為售貨機(jī)主程序、分頻器、轉(zhuǎn)換器、延遲器、數(shù)碼管和點陣[7]。售貨機(jī)主程序處理投錢的金額及相應(yīng)物品的出納。分頻器采用串行分頻,將主頻50 MHz分為三種頻率供其他模塊使用。轉(zhuǎn)換器用以循環(huán)顯示商品數(shù)量,并將點陣和數(shù)碼管顯示同步[8]。延遲器用于將主程序輸出的信號適當(dāng)延時,便于LED顯示[9]。數(shù)碼管用來顯示錢數(shù)及商品庫存、投錢總數(shù)、退錢總數(shù)等[10]。點陣在顧客操作時會呈現(xiàn)相應(yīng)的動畫圖像,并提示顧客以后操作[11]。
本設(shè)計以QuartusII作為編程軟件,其具有數(shù)字邏輯設(shè)計的全部特性,可利用原理圖、結(jié)構(gòu)框圖、VerilogHDL、AHDL和VHDL完成電路描述,并將其保存為設(shè)計實體文件。此次選取VHDL作為編程語言是因為其較強(qiáng)的行為描述能力,為系統(tǒng)的設(shè)計提供了極大的便利,而豐富的仿真語句和庫函數(shù)也為設(shè)計奠定了堅實的基礎(chǔ)。[12]
圖2 自動售貨機(jī)的頂層文件
本次設(shè)計的關(guān)鍵在于對狀態(tài)機(jī)的運(yùn)用,使得顧客和機(jī)器能達(dá)到比較理想的交互狀態(tài)[13]。信息處理上主要依靠主程序?qū)τ阱X數(shù)和商品的快速處理和數(shù)碼管中對于數(shù)字顯示的處理,由于整體設(shè)計上點陣和數(shù)碼管有多處同步,分頻器的串行分頻也顯得十分重要。
(1) 設(shè)計中在信息的顯示方面采用了狀態(tài)機(jī)的編程思想,集中體現(xiàn)在數(shù)碼管和點陣顯示的控制時鐘當(dāng)中,下面定義了三個狀態(tài)(d0,d1,d2), 三個狀態(tài)分別用于在一個數(shù)碼管上顯示三種商品的庫存量:
Typestate_type is(d0,d1,d2);
Signalstate:state_type;
case state is
when d0=>t<="00";state<=d1;
when d1=>t<="01";state<=d2;
when d2=>t<="10";state<=d0
(2) 錢數(shù)處理(以投入5元為例)。
If (a1true=’0’ and a2 true=’1’ and a3ture=’0’) then
m:=m+5+n;n:=0;s1<='1';s2<='0';s3<='0';s5<='0';s6<='0';s7<='0';
購買3元的商品:
if(m>5)then m:=m-3;x:=x-1;s1<='0';s2<='1';s3<='0';s4<='0';s5<='1';s6<='0';s7<='0';
(3) 數(shù)碼管對數(shù)據(jù)的處理中將個位和十位分開,用求余的方法進(jìn)行計算:
x1<=change mod 10;
x2<=(change-(change mod 10))/10;
x1,x2分別為錢數(shù)的個位和十位
(4) 延遲器運(yùn)用狀態(tài)機(jī)定義了六個狀態(tài)使得LED顯示時間足夠長,例如將主程序中輸出的“s1=1”這個信號延長6倍時間:
Typestate_typeis(a0,a1,a2,a3,a4,a5,a6)
signalstate1:state_type1;
if (clk'event and clk='1')then
case state1 is
When a0=>if(s1='1') then
state1<=a1;p1<='1';end if;
when a1=>state1<=a2;p1<='1';
when a2=>state1<=a3;p1<='1';
when a3=>state1<=a4;p1<='1';
when a4=>state1<=a5;p1<='1';
when a5=>state1<=a6;p1<='1';
when a6=>state1<=a0;p1<='0';
end case;
主動能及部分仿真波形見圖1、2。其中:a1為1元,a2為5元,a3為10元;b1為3元商品,b2為8元商品,b3為12元商品,c1,c2,c3為三種商品的庫存,money為投入錢數(shù),change為找零錢數(shù)。s1:投幣成功(1) s2:購買成功(1) s3:運(yùn)行(0),退出 (1) s4:有貨(0),缺貨(1)。① 代表投錢成功后錢數(shù)增加。② 代表購買成功后商品數(shù)量減少。③ 代表錢數(shù)不夠購買商品時,顯示找零。④ 代表錢數(shù)不夠時可以隨時投入錢幣。⑤ 代表購買商品成功且剩余金額小于3元的情況(此處有13元,購買12元商品)。⑥ 代表商品被購買完即缺貨。⑦ 代表缺貨提示。
圖3 主功能仿真波形
圖4 部分功能仿真波形
(1) 由于數(shù)碼管需要顯示顧客投入和找零的錢數(shù)及商品庫存,所以將顯示分為三個部分,且三部分相互關(guān)聯(lián)??紤]到節(jié)省硬件資源,數(shù)碼管采用的是計算模式來顯示數(shù)據(jù),即通過將錢數(shù)的十位個位提出,分開計算并顯示。相比列舉法,運(yùn)算速度大大提高[14]。
(2) 為方便顧客購物,點陣顯示的圖像能清晰地告訴顧客機(jī)器是否運(yùn)轉(zhuǎn)正常以及操作是否成功。例如售貨機(jī)正常運(yùn)行時有待機(jī)畫面,以及顧客的任何操作過后的相應(yīng)動畫提示。與此同時,用延遲器延長了LED顯示的時間,使顧客更清晰地看到操作是否成功。
(3) 考慮到售貨機(jī)的實際運(yùn)行,男女顧客按鍵力道大小及壓鍵時間的不同,主程序里加入了防抖程序,切實滿足了顧客使用售貨機(jī)購物時的實際需求。
本文詳細(xì)介紹了運(yùn)用單片F(xiàn)PGA芯片進(jìn)行自動售貨機(jī)設(shè)計的方法,通過對程序的改進(jìn)優(yōu)化,充分利用VHDL對FPGA的可編程性,使售貨機(jī)具有基本的功能[15]。設(shè)計從實際使用出發(fā),以簡便高效為原則,在滿足基本的人機(jī)交互的同時,提高程序的運(yùn)行效率,使得該系統(tǒng)下的自動售貨機(jī)功能齊備,能滿足市場的實際需要。而且對于點陣圖像的顯示還可以有各種個性化的設(shè)計,增加了靈活性,本設(shè)計中附加的上貨功能也為管理者提供了方便[16]。
[1] 付夢婷,付永慶. 基于CPLD的88鍵電子琴的設(shè)計與實現(xiàn)[J].電子器件,2013,36(11):737-742.
FU Meng-ting, FU Yong-qing. CPLD-based design and implementation of 88 key keyboard [J]. Electronics, 2013,36 (11):737-742.
[2] 趙 剛,何志敏,陳利學(xué).基于FPGA 的EDA 綜合實驗系統(tǒng)設(shè)計[J].微計算機(jī)信息,2012,28(1):49-51.
ZHAO Gang, HE Zhi-min, CHEN Li-xue.EDA comprehensive experimental system based on FPGA design[J]. Micro Computer Information, 2012,28 (1):49-51.
[3] 冼立勤,高獻(xiàn)偉. MOS管短溝道效應(yīng)及其行為建模[J].實驗室研究與探索,2007,26(10):14-16.
XIAN Li-qin, GAO Xian-wei. Short channel effect MOS tube and behavioral modeling[J].Research and Exploration in Laboratory, 2007,26(10): 14-16.
[4] 韓 進(jìn). EDA技術(shù)在“數(shù)字邏輯”教學(xué)實踐中的應(yīng)用[J].實驗室研究與探索,2005,24(5):40-42.
HAN Jin. EDA technology in the "Digital Logic" Teaching Practice[J]. Research and Exploration in Laboratory, 2005,24(5): 40-42.
[5] 王曉峰.可編程邏輯器件及硬件描述語言的EDA方法[J].長春大學(xué)學(xué)報,2005,15(4):14-16.
WANG Xiao-feng. EDA methods of language programmable logic devices and hardware description[J]. Changchun University of Technology, 2005,15 (4):14-16.
[6] 韓延義,李 航,李 岳. 基于FPGA的音頻芯片輸出控制設(shè)計[J].實驗室研究與探索,2013,32(5): 94-96,167
HAN Yan-yi, LI Hang, LI Yue. FPGA-based audio chip output control design [J]. Research and Exploration in Laboratory, 2013,32(5): 94-96,167
[7] 王戎丞,陳可中,明 鑫.基于VHDL的數(shù)字頻率計的設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2005,28(15):102-104.
WANGg Rong-cheng, CHEN Ke-zhong, MING Xin. VHDL-based design and implementation of digital frequency meter [J]. Modern electronic technology, 2005,28 (15):102-104.
[8] 吳 濤,徐春燕,彭 宏. 基于FPGA的信號與系統(tǒng)實驗箱信號源設(shè)計[J].實驗室研究與探索,2009,28(6):44-47.
WU Tao, XU Chun-yan, PENG Hong. Based Signals and Systems Laboratory Box source of FPGA[J]. Research and Exploration in Laboratory, 2009,28(6): 44-47.
[9] 張友木.基于VHDL語言的幾種消抖電路的設(shè)計[J].山西電子技術(shù),2011(1):61-63
ZHANGg You-mu. Several debounce circuit design based on VHDL[J],Shanxi Electronic Technology, 2011(1) :61-63.
[10] Galileo Open Service, Signal In Space Interface Control Document (OS SIS ICD) Draft0[S]. 23/05/2006:1-3.
伽利略開放服務(wù),信號在空間接口控制文件(OS SIS ICD)Draft0[S]. 23/05/2006:1-3.
[11] 劉家慶.基于VHDL的2FSK調(diào)制解調(diào)器設(shè)計[J].電子技術(shù),2010(11):73-75.
LIU Jia-qing. 2FSK modem design base onVHDL[J]. Electronics,2010(11):73-75.
[12] 楊文霞,孫青林.數(shù)字邏輯電路[M].北京:北京科學(xué)出版社,2007:79.
[13] 牟洪江,楊 虹,王 玲.基于VHDL語言的數(shù)字頻率計的設(shè)計[J].電子世界,2013,(19):163-164.
MOU Hong-jiang, YANG Hong, WANG Ling. Digital frequency meter VHDL-based design language[J]. Electronic World, 2013, (19) :163-164.
[14] 徐 偉,劉建成,行鴻彥. 分類并結(jié)合專業(yè)特色的電子綜合課程設(shè)計[J].實驗技術(shù)與管理:2011,28(10):141-143.
XU Wei, LIU Jian-cheng, HANG Hong-yan. Classification combined with professional features of electronic integrated curriculum design [J]. Experimental Technology and Management: 2011, 28 (10):141-143.
[15] 林明權(quán).VHDL數(shù)字控制系統(tǒng)設(shè)計范例[M].北京:電子工業(yè)出版社,2003.