趙 杰
(商洛學(xué)院電子信息與電氣工程學(xué)院,陜西商洛726000)
自動售貨機是能按照投入的貨幣自動售貨的機器,它是貿(mào)易自動化的常用設(shè)備,受時間、地點的限制少,能節(jié)約人力、便利交易,是一種全新的貿(mào)易零售方式,又被稱為24小時業(yè)務(wù)的小型超市[1]。在自動售貨機的控制方面,常采用單片機或PLC(可編程邏輯控制器)作為控制核心,完成整個系統(tǒng)的基本功能[2-5]。然而,實際中主控芯片需和眾多外圍芯片或接口相連,或者需要進行功能擴展[6]。用傳統(tǒng)方式來應(yīng)對日益復(fù)雜的要求顯得力不從心。而使用硬件描述語言在FPGA(現(xiàn)場可編程門陣列)上實現(xiàn)電路系統(tǒng)的現(xiàn)代EDA(電子設(shè)計自動化)技術(shù),具有明顯的優(yōu)勢[7-8]。本文主要利用VHDL硬件描述語言編寫程序代碼,用狀態(tài)機實現(xiàn)功能轉(zhuǎn)換,以Quartus II軟件作為運行平臺,實現(xiàn)一個能夠?qū)崿F(xiàn)貨物選擇、投幣、找零、多次購買等功能的自動售貨機。自動售貨機采用模塊化設(shè)計,可以對各模塊實行獨自設(shè)計、修訂和調(diào)試,最終通過模擬仿真進行驗證。
為方便起見,設(shè)定自動售貨機可以出售兩種商品,標價分別為2元和3元。售貨機可以分別識別1元和5元兩種貨幣。
(1)購買者可選擇購買多種商品種類,選定商品種類后處于等待投幣狀態(tài)。如果超時等待時間,則認定購買者放棄選購,此后售貨機自動返回初始狀態(tài),等待新的交易。如果在規(guī)定時間內(nèi),再次選中物品,就進入再次等待狀態(tài)。
(2)每次交易完成,售貨機自動返回初始狀態(tài),等待下一次交易。
(3)使用按鍵信號來模擬1元,5元兩種貨幣的投入,可以持續(xù)投幣,同時顯示投入的金錢和還應(yīng)投入的金錢。如果某次投幣后金額不夠,且一定時間內(nèi)不再投幣,則購買失敗,退幣,并顯示應(yīng)退還金額。
(4)指示電路,分別指示購買成功、購買失敗和正在找零三種狀態(tài)。
聯(lián)系自動售貨機的運行過程,采用有限狀態(tài)機來實現(xiàn)主控部分的功能,將實際的交易操作過程,轉(zhuǎn)換為狀態(tài)機各狀態(tài)的切換,使得整體設(shè)計變得簡潔。為方便起見,這里用LED(發(fā)光二極管)燈和數(shù)碼管進行相應(yīng)顯示。因此,可將自動售貨機系統(tǒng)分為多個模塊:主控模塊、二進制譯碼模塊、顯示譯碼模塊、分頻模塊等。采用VHDL語言對各個模塊功能進行描寫,最后把各模塊整合生成頂層設(shè)計實體。整體結(jié)構(gòu)框圖如圖1所示。
圖1 整體結(jié)構(gòu)框圖Fig.1 Whole structure diagram
主控模塊:此模塊是整個設(shè)計的最主要的主控模塊,控制著整個設(shè)計的商品選擇、投幣、找零等功能。此模塊總體據(jù)有5個輸入端口和6個輸出端口。其輸入端口包含 clk、coin1(識別1元貨幣)、coin5(識別5元貨幣)、price2(價值2元的物品)、price3(價值3元的物品),輸出端口有paid(已投入多少貨幣)、needed(還需要多少貨幣)、moneyout(找多少貨幣)、success(燈亮示意交易成功)、failure(燈亮示意交易失敗)、showmoneyout(燈亮示意正在找錢)。此模塊體現(xiàn)了此系統(tǒng)最主要的交易過程,包含商品選擇、投入貨幣、金額計算、找錢出貨等。其后接二進制譯碼模塊。
二進制譯碼模塊:具有一個輸入端和兩個輸出端。從b端口輸入一個4位的二進制數(shù),從bcd0和bcd1端口輸出兩個4位的BCD(二-十進制碼)碼。此模塊的功能目的是為了把總控模塊輸出的二進制數(shù)(paid,needed,moneyout)轉(zhuǎn)換為BCD碼,以至于輸出到數(shù)碼管模塊動態(tài)掃描。此模塊的原理是將一個4位的二進制數(shù)轉(zhuǎn)換成2個4位的BCD碼,分別為高4位和低4位。其后接顯示譯碼模塊。
顯示譯碼模塊:此模塊具有7個輸入端口和2個輸出端口。輸入端dain是一個4位的BCD碼,clk接收q1的時鐘,sel范圍為000~111,判斷選擇八個數(shù)碼管中的哪個,daout輸出到num進行顯示譯碼,該模塊的功能是將4位二進制碼轉(zhuǎn)換為7位二進制數(shù)代表a—g從led輸出,以便能用7段顯示數(shù)碼管顯示。
分頻器模塊:此模塊具有一個輸入端口和兩個輸出端口。輸入一個clk時鐘經(jīng)過分頻器輸出較高頻率時鐘給數(shù)碼管掃描模塊和低頻率時鐘給主控模塊的狀態(tài)機。
如圖2所示,客戶先選擇了一個2元物品隨后選擇了一個3元物品,needed表示為5即需要貨幣為5元,隨后投入一個1元貨幣之后再沒有投入貨幣,paid端口為1,needed端口為4,即已投入1元貨幣還需要投入4元貨幣,超出限時后failure變成高電平表明本次交易失敗,隨后回到初始狀態(tài)。圖3是連續(xù)兩次選擇商品投幣并找零的仿真結(jié)果,圖4為多次交易的仿真結(jié)果。
圖2 選擇兩次但投幣不足仿真結(jié)果Fig.2 Simulation result of selected twice with insufficient coins
圖3 連續(xù)兩次選擇商品投幣找零仿真結(jié)果Fig.3 Simulation result of selected twice and given charge
圖4 多次交易投幣仿真Fig.4 Simulation result of multiple coins
譯碼、顯示等模塊仿真結(jié)果這里不再詳述。對頂層電路進行仿真,當(dāng)連續(xù)選擇2元和3元的商品,連續(xù)投入一張1元和一張5元,LED指示仿真success為高電平表示成功,showmoneyout為高電平表示正在找零,并由數(shù)碼管顯示相應(yīng)的金額,結(jié)果如圖5所示。圖6為連續(xù)選擇商品只投幣一次,交易失敗的仿真結(jié)果。
圖5 連續(xù)選擇商品連續(xù)投幣Fig.5 Simulation result of continuous selection for coins
圖6 連續(xù)選擇商品投幣一次Fig.6 Simulation result of continuous selection with coin-operated once
該自動售貨機可以按照設(shè)計的目的進行多次購買、出貨找零;可在數(shù)碼管上顯示出已投貨幣、還需投入貨幣、找零金額,同時有代表交易成功、交易失敗、正在找零的三個LED燈來指示狀態(tài)。設(shè)計中采用的自頂向下的設(shè)計方法,實現(xiàn)了模塊化的設(shè)計思想。各個模塊所具有的相對獨立性更好地保證了系統(tǒng)的穩(wěn)定性,節(jié)約了系統(tǒng)資源。由于FPGA/CPLD(復(fù)雜可編程邏輯器件)具有良好的可擴展性,可以方便地對系統(tǒng)進行功能擴充和修改,因此,本設(shè)計具有一定實用性。
[1] 謝中賽,金志華,余世明.基于μC/OS-Ⅱ的自動售貨機控制系統(tǒng)[J].機電工程,2009,26(1):35-37.XIE Zhongsai,JIN Zhihua,YU Shiming.Vending machine controller based on μC/OS-II[J].Mechanical &Electrical Engineering Magazine,2009,26(1):35-37.
[2] 董淑冷,茅紅偉.PLC在自動售貨機控制系統(tǒng)中的應(yīng)用[J].上海師范大學(xué)學(xué)報:自然科學(xué)版,2007,36(2):47-51.DONG Shuleng,MAO Hongwei.The application of PLC in vending machine control system[J].Journal of Shanghai Normal University:Natural Sciences,2007,36(2):47-51.
[3] 陳慧.基于嵌入式單片機的智能自動售貨機控制系統(tǒng)[J].華東交通大學(xué)學(xué)報,2008,25(6):78-82.CHEN Hui.A control system of intelligent vending machines based on the embedded SCMP[J].Journal of East China Jiaotong University,2008,25(6):78-82.
[4] 劉志臣.基于單片機的自動售貨機模擬設(shè)計[J].科學(xué)大眾(科學(xué)教育),2014(3):146-147.LIU Zhiceng.Vending machine design based on MCU[J].Popular Science,2014(3):146-147.
[5] 陸思杰.自動售貨系統(tǒng)應(yīng)用介紹[J].機械研究與應(yīng)用,2010,23(2):147-148.LU Sijie.Brief introduction of automatic vending system[J].Mechanical Research & Application,2010,23(2):147-148.
[6] 余世明,晁岳磊,繆仁將.自動售貨機研究現(xiàn)狀及展望[J].中國工程科學(xué),2008,10(7):51-56.YU Shiming,CHAO Yuelei,MIN Renjiang.Present situation and future prospects of vending machine[J].Engineering Science,2008,10(7):51-56.
[7] 孫延騰,吳艷霞,顧國昌,等.基于VHDL語言的參數(shù)化設(shè)計方法[J].計算機工程與應(yīng)用,2010,46(31):68-71.SUN Yanteng,WU Yanxia,GU Guochang,et al.VHDL based design parameterization methodology[J].Computer Engineering and Applications,2010,46(31):68-71.
[8] 趙輝.基于EDA技術(shù)的數(shù)字系統(tǒng)設(shè)計[J].電子設(shè)計工程,2012,20(2):34-37.ZHAO Hui.Design of digital system based on EDA technology[J].Electronic Design Engineering,2012,20(2):34-37.