李 營,呂兆承,陳 帥,余錢坤
(淮南師范學(xué)院 電子工程學(xué)院,安徽 淮南 232038)
出租車是人們?nèi)粘3鲂械闹匾ぞ?,其載客出行均需計(jì)費(fèi), 市面上常用的計(jì)費(fèi)器大多由單片機(jī)控制實(shí)現(xiàn)計(jì)費(fèi)。單片機(jī)雖然價(jià)格低廉,但精度差且可擴(kuò)展性弱。而FPGA 具有編程靈活性高、功能易拓展等特點(diǎn)。 故本文采用層次化建模方法, 利用Verilog HDL 基于FPGA 設(shè)計(jì)實(shí)現(xiàn)出租車計(jì)價(jià)器系統(tǒng)并進(jìn)行仿真,仿真結(jié)果表明該系統(tǒng)功能穩(wěn)定,計(jì)價(jià)準(zhǔn)確。
以FPGA 為主體設(shè)計(jì)出租車計(jì)費(fèi)系統(tǒng),其計(jì)費(fèi)標(biāo)準(zhǔn)如表1 所示。
表1 出租車計(jì)費(fèi)標(biāo)準(zhǔn)
根據(jù)表中的相關(guān)技術(shù)指標(biāo),系統(tǒng)設(shè)計(jì)要求如下。
(1)設(shè)置加減檔功能:白天行駛超過4 km,每公里加1.00 元。 夜晚行駛超過4 km, 每公里加2.00 元。 單程行駛超過20 km,每公里加收50%的車費(fèi),收費(fèi)累加。
(2)將時(shí)間、里程及計(jì)費(fèi)結(jié)果以小數(shù)的形式顯示在液晶屏上。
(3)費(fèi)用的計(jì)算:當(dāng)行駛里程小于3 km 時(shí),按起價(jià)計(jì)算費(fèi)用;當(dāng)里程大于3 km 時(shí),按下式計(jì)算費(fèi)用:
費(fèi)用=里程×里程單價(jià)+等候時(shí)間×等候單價(jià)
本系統(tǒng)硬件采用的主控FPGA 芯片是Cyclone EP4CE6E22C8, 設(shè)計(jì)通過按鍵模擬汽車行駛過程中的速度狀態(tài)和模式的變化,故需開始、停止、撥碼開關(guān)控制車輛運(yùn)行的開始和停止,需要空檔、加速、減速等3 個(gè)按鍵控制速度,通過模式按鍵模擬白天與夜間。 LCD 顯示器應(yīng)當(dāng)顯示行駛公里、時(shí)間、計(jì)費(fèi)情況以及車輛的檔位等。 白天與夜間的變化用LED 燈的亮或者滅來表示,當(dāng)時(shí)為白天,LED 燈不亮,夜間模式時(shí)LED 燈開啟。
LCD1602 是一種工業(yè)字符型液晶顯示屏,它能顯示字母、數(shù)字、符號(hào),并且同時(shí)顯示16×2 個(gè)字符。 利用了液晶的物理性質(zhì),一般通過電壓對(duì)其32個(gè)顯示區(qū)域進(jìn)行控制。 LCD 驅(qū)動(dòng)初始化的流程圖如圖1 所示。
圖1 LCD 顯示模塊驅(qū)動(dòng)初始化流程圖
根據(jù)上述硬件要求,可將系統(tǒng)劃分為分頻與按鍵控制模塊、速度控制模塊、直流電機(jī)PWM 控制模塊、時(shí)間設(shè)置模塊、計(jì)費(fèi)模塊以及LCD 驅(qū)動(dòng)顯示模塊,總體軟件設(shè)計(jì)框圖如圖2 所示。
圖2 總體軟件設(shè)計(jì)框圖
該模塊的功能是將50 MHz 分頻為1 Hz 和16.6 Hz,并對(duì)開始、停止、空檔、加檔、減檔、模式等輸入按鍵進(jìn)行功能設(shè)計(jì), 其功能接口框圖如圖3 所示。
圖3 分頻及按鍵控制模塊框圖
由圖3 可知該模塊的輸入有:50 M 的時(shí)鐘脈沖clk50M,復(fù)位端口reset,6 個(gè)按鍵的輸入如圖中key[5..0];輸出端 sys_clk_out 對(duì)應(yīng) 16.6 Hz 時(shí)鐘輸出,clk1Hz_1hz_out 對(duì)應(yīng) 1 Hz 時(shí)鐘輸出,mode 對(duì)應(yīng)白天黑夜的模式選擇輸出,key_start 代表系統(tǒng)啟動(dòng)輸出,sp[2:0]代表速度檔位變化輸出。
該模塊的功能是實(shí)現(xiàn)直流電能和機(jī)械能互相轉(zhuǎn)換,接收分頻與按鍵控制模塊的控制按鍵,從而控制電機(jī)旋轉(zhuǎn)。 該模塊的接口框圖如圖4 所示,各端口的含義如下,輸入端口均連接分頻及按鍵控制模塊各端口,enable 是控制開關(guān)接key_start 信號(hào),clk 和rst 接系統(tǒng)時(shí)鐘和系統(tǒng)復(fù)位信號(hào);Dir 是控制轉(zhuǎn)動(dòng)方向代表前進(jìn)后退,默認(rèn)1,代表前進(jìn);spd_sel接sp[2:0]信號(hào),代表調(diào)節(jié)電機(jī)轉(zhuǎn)動(dòng)速度;輸出端口MA 接系統(tǒng)輸出直流電機(jī)。
圖4 直流電機(jī)PWM 控制模塊框圖
圖5 速度設(shè)置模塊框圖
速度設(shè)置模塊的功能是對(duì)汽車行駛過程中的6 個(gè)速度檔位進(jìn)行設(shè)計(jì),模擬實(shí)際出租車行駛換擋變速。 通過輸入的系統(tǒng)脈沖控制產(chǎn)生6 種不同頻率的時(shí)鐘翻轉(zhuǎn), 從而切換0 至5 擋不同的6 種速度變換。
該模塊的功能接口框圖如圖5 所示。圖5 中各端口的含義是:clk 是 16.6 Hz 時(shí)鐘輸入、reset 是復(fù)位輸入、start 和sp[2:0]端口分別連接按鍵控制模塊的key_start 端口和sp[2:0]端口,分別代表開始信號(hào)和檔位輸入。 clkout 表示汽車模擬行駛的公里脈沖輸出, 該模塊的仿真波形如圖6 所示。 由圖 6 可知,檔位 sp 由 001 變?yōu)?100 的時(shí)候,輸出clkout 有明顯的變化,時(shí)鐘跳變加快,說明汽車速度的加快。
圖6 速度設(shè)置模塊仿真波形
該模塊完成兩大功能:其一是對(duì)空檔時(shí)汽車的等待時(shí)間計(jì)時(shí),其二是對(duì)汽車行駛時(shí)間(包括等價(jià)和汽車的行駛計(jì)時(shí))計(jì)時(shí)。 該模塊的接口框圖如圖7 所示,各輸入端口的含義與速度設(shè)置模塊含義相同,輸出端口time_out 含義是用于等待的計(jì)費(fèi)時(shí)間(即空檔等待的時(shí)間),輸出端口timess[11..0]指等待計(jì)時(shí)時(shí)間,shijian[15..0]指總的時(shí)間輸出。
圖7 計(jì)時(shí)模塊接口框圖
圖8 計(jì)費(fèi)模塊接口框圖
該模塊的功能是根據(jù)白天與黑夜模式下計(jì)費(fèi)方法的不同分別計(jì)費(fèi)。根據(jù)行駛公里數(shù)及等待時(shí)間長短,針對(duì)不同模式分別計(jì)費(fèi)。 模塊接口框圖如圖8 所示,該模塊的算法流程圖如圖9 所示。
圖9 程序流程圖
出租車總的計(jì)費(fèi)金額需用整數(shù)和小數(shù)表示出來。 該模塊的仿真波形如圖10 所示, 當(dāng)start=1,mode=1 及km_clkout 變化時(shí),即白天開始計(jì)時(shí),汽車行駛后, 行駛距離km_cnt 由0001 跳變?yōu)?010,即由1 km 到2 km,此時(shí)計(jì)費(fèi)值jin_er 變?yōu)?0 000 000,即高4 位整數(shù)位,低4 位為小數(shù)位,共8 元,與設(shè)計(jì)要求4 km 內(nèi)起步8 元一致。
圖10 白天模式計(jì)費(fèi)模塊仿真波形
采用LCD1602 字符型顯示器顯示行駛信息,采用英文字母顯示提示。相關(guān)顯示內(nèi)容與其字符分別為:行駛里程(KM)、計(jì)費(fèi)(JE)、汽車檔位(數(shù)值)、等待時(shí)間(A)以及等待時(shí)間和行駛時(shí)間之和駕駛總時(shí)間(T)。 根據(jù)1602 的驅(qū)動(dòng)指令表驅(qū)動(dòng)編寫此模塊[3]。
本模塊的接口框圖如圖11 所示,WR 端是讀寫端,EN 是使能端,DATA[7..0]為雙向的輸出數(shù)據(jù)段。 Show_KM[11..0]是 12 位的行駛公里的顯示數(shù)據(jù)輸入,show_JE[15..0]是顯示計(jì)費(fèi)的16 位數(shù)據(jù)輸入,show_PA[11..0]是 12 位的顯示等待時(shí)間數(shù)據(jù)輸入,show_SJ[15..0]為16 位總的時(shí)間顯示數(shù)據(jù)輸入, show_sp[2..0]為 3 位檔位的輸入。
圖11 顯示模塊接口框圖
表2 ASCII 碼
圖12 系統(tǒng)設(shè)計(jì)RTL 圖
本系統(tǒng)用到的字母相應(yīng)的ASCII 對(duì)照碼如表2 所示,顯示時(shí)各信息間通過空格間隔。
頂層模塊的作用是調(diào)用連接上述5 個(gè)底層模塊,系統(tǒng) RTL 圖如圖11 所示。 圖11 中,頂層模塊的時(shí)鐘輸入端clk50MHZ 對(duì)應(yīng)圖2 的clk50M,模塊keyin 對(duì)應(yīng)分頻及按鍵處理模塊,speed 對(duì)應(yīng)速度設(shè)置,times 對(duì)應(yīng)計(jì)時(shí)模塊,kmmony 對(duì)應(yīng)計(jì)費(fèi)模塊,lcd1602 對(duì)應(yīng)顯示模塊,由此可見,系統(tǒng)完成的功能與圖12 系統(tǒng)總體軟件設(shè)計(jì)框圖一致。
圖13 系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)完成后的測(cè)試效果如圖13 所示, 當(dāng)按開始鍵之后顯示,當(dāng)白天行駛8.1 km,等待時(shí)間為0 s時(shí), 費(fèi)用為12.1 元符合功能設(shè)計(jì)中設(shè)置的白天的計(jì)費(fèi)原則,所以白天模式下出租車計(jì)費(fèi)程序設(shè)計(jì)無誤;同理,若模式調(diào)為黑夜,計(jì)費(fèi)結(jié)果也無誤,由于篇幅所限,此處不再列圖。
市面上現(xiàn)有的出租車計(jì)價(jià)器的精度不高, 系統(tǒng)的功耗大,使用壽命短,并且系統(tǒng)升級(jí)擴(kuò)展的空間小。文章采用了FPGA 芯片Cyclone IV EP4CE6E22C8設(shè)計(jì)并實(shí)現(xiàn)了出租車計(jì)價(jià)系統(tǒng), 系統(tǒng)功能完整,且鑒于FPGA 的并行計(jì)算和可編程特性, 靈敏度高,后期功能易拓展,為傳統(tǒng)出租車計(jì)價(jià)提供了一種新的設(shè)計(jì)思路。
淮南師范學(xué)院學(xué)報(bào)2021年2期