韓曉冰,姚 丹
(西安科技大學 通信與信息工程學院,陜西 西安710054)
信息社會的現代電子產品,性能越來越高,復雜度越來越大,更新的步伐也在逐漸加快,這都歸功于微電子技術和電子技術的發展,而電子技術的發展核心就是電子設計自動化技術。EDA 是以計算機為工作平臺,它與應用電子技術、計算機技術、智能化技術相結合,根據硬件描述語言HDL 完成設計文本,自動完成編譯、綜合、優化、布局布線及仿真,直到對特定芯片進行適配編譯、邏輯映射和編程下載等工作[1-4]。所以,想要完成超大規模的集成電路設計,在沒有EDA 的支持下很難實現,也就是說,生產制造技術的不斷更新這就對EDA技術提出了更高的要求[5]。
針對傳統的出租車計費系統多是利用如MCU,89C51 單片機來實現,其資源擴展有限,硬件電路復雜,很不利于系統功能升級。近年來,隨著電子行業的迅速發展,計費系統在各個領域中的使用率也越來越頻繁,隨著出租車價格的市場化,主導出租車行業成本的許多因素,如油價的波動,過路費的調整,都對出租車計費器提出了更高的要求,針對廣大消費者來說,對日常出行所需的交通工具收費標準也有了全新的期望[6-7]。以出租車計費系統為例,用戶不僅要求計費器性能穩定,計費準確,還要求有防作弊功能。而不同國家和地區間的收費方式存在差異,即使在同一地區,不同車型,不同時段的收費方式也不盡相同,這樣就更加速了對新型計費系統的設計。
為此,文中以FPGA 微處理器為核心,以硬件描述語言verilog 為依托,設計了一種實用新型出租車計費系統方案。通過模塊化設計,將系統細化,并通過依次調用modelsim 仿真軟件對各個模塊進行仿真驗證。該系統可以針對不同環境的不同收費標準,通過修改程序代碼,更新擴展更多新功能,使其大大縮短了開發周期,減少了開發難度,且使得系統更加靈活,易調整[8]。
以西安地區出租車計價器為例,講述了計費系統的自動計費、計程、計時、譯碼及動態顯示的設計方案,重點論述了用verilog 硬件描述語言代碼編寫及testbench 的形成過程,verilog 語言在易讀性和層次化、結構化設計方面表現了強大的生命力和應用潛力[9-10]。
計費和計程功能可以實現預置參數設計,預置參數可調范圍大,調節方便,能夠在車型選擇、起步里程、起步價、收費標準、超費加價金額和等待時長等參數預置數,最終金額和路程通過七段數碼管顯示出來[11]。如表1 所示出租車計費標準。

表1 出租車的計費標準Tab.1 Taxi billing standard
本計費系統的顯示范圍為0 ~99.9 元,計費分辨率為0.1 元;計程顯示范圍為0 ~99 km,分辨率為1 km;計時器顯示范圍為0 ~59 min,分辨率為1 min.
例如:計費算法(以白天行駛6.5 km 為例),總額=6 +1.2* (6.5 -3)=10.2 元。
整個系統采用模塊化的設計思想,共分為6 個模塊,分別為分頻模塊(div,div1)、計程模塊(distancemokuai)、計時模塊(timemokuai)、控制模塊(control)、計費模塊(feemokuai)、數碼管顯示模塊(scan-led)。每個模塊用硬件描述語言Verilog 編寫,在QuartusII 環境下對每個底層模塊進行編譯、仿真,然后再將各個模塊連接起來,圖形法逐級形成頂層模塊[12],如圖1 所示。

圖1 系統的頂層框圖Fig.1 Top-level block diagram of system
由于篇幅限制,下面只介紹部分模塊的設計思想。
此模塊的功能是計算出租車行駛的路程公里數。在乘客上車啟動并行駛的過程中(復位/啟動信號reset 為0,行駛/停止信號start 為1),當clk上升沿來到,系統即對計程器distance 的里程公里數進行加計數,當行駛路程超過3 km 時,系統將輸出標志正脈沖distance_enable。
此模塊的功能用于為計費模塊提供時鐘,當start 為高電平時選擇里程計費,若行駛路程大于3 km,輸出的時鐘信號為distance_enable;當start 為低電平的時候選擇時間計費,若等待時間大于2 min,輸出時鐘信號time_enable。
此模塊用于出租車啟動后,根據行駛公里數和等待時長計算收費金額。當車輛停止時,時鐘信號select_clk 用于將計費器復位為起步價6 元;當車處于行駛狀態且滿3 km 時,select_clk 信號選擇distance_enable,此后每一公里,計費器加1. 2元;當出租車處于停止等待狀態且時長滿2 min時,select_clk 信號選擇time_enable,此后每1 min,計費器加1 元[13]。
系統調試是分模塊進行的。把每一個模塊的功能調試完畢后,再把整個系統連接起來進行調試,而驗證是確認所設計電路功能正確性的過程。
各個模塊設計仿真實現后,可分別創建成元件符號。頂層就是將各分模塊用Verilog 語言或者圖形法連接起來,形成系統電路。其中該計費系統的頂層模塊Verilog 源代碼如下:


圖2 所示為系統驗證方案流程圖。

圖2 系統驗證方案流程圖Fig.2 Flowchart of verification system
除了需要設計完成電路本身外,為了證明其功能的正確性,還需要編寫對應的測試代碼。測試代碼調用被測電路并產生輸入激勵信號,設計者通過觀察仿真結果對電路功能進行判斷,這一過程準確地講是一個驗證過程。
測試代碼testbench 如下:

設計初步完成后,即可調用modelsim 對其進行仿真,同時可根據具體的設計要求加入測試輸入條件。仿真后,若與預先設計結果不相符,應進行修改,直到完成要求為止。仿真結果如圖3 ~5所示(以白天為例)。

圖3 行駛中未停止的電路仿真Fig.3 Circuit simulation for non-stop running
從圖3 可以看出,當reset 為1 時,系統復位,計程器和計時器均為0,計費器為6 元起步價;當reset 為0 時,系統啟動,start 為1 表示出租車行駛,distance_enable 每產生一個脈沖,計程器加1;行駛路程在3 km 內,費用保持6 元不變,若超過3 km,計費器進行累加計數,每1 km 費用增加1.2 元,此時計時器保持不變。從圖4,圖5 的仿真波形可以看出,當reset 為0 時,系統啟動,start=0 表示出租車處于停止等待狀態,time_enable 每產生一個脈沖,計時器加1,等待時長在2 min 以內,計費器不變;超過2 min 后,每增加1 min,計費器增加1 元,此時計程器保持不變。

圖4 在行駛中停止時(等待2 min 以內)電路仿真Fig.4 Circuit simulation for road stops(wait for 2 less than minutes)

圖5 在行駛中停止時(2 min 以外)電路仿真Fig.5 Circuit simulation for road stops(over 2 minutes)
整個系統程序調試通過后,選定好器件,設置好管腳并搭建外圍電路后,把程序下載到EP4C115F29C7 芯片中。觀察到整個系統運行良好,能實現出租車計費器的預定功能,最后為了優化程序,對系統硬件資源占用情況作以分析,如圖6 所示,在圖中可以看到,占用的邏輯單元還不到1%,這就更體現了FPGA 的優勢。

圖6 綜合報表Fig.6 QuartusII comprehensive report
文中介紹了一種基于FPGA 技術的出租車計費系統的設計方法,重點對系統的設計與綜合仿真作了論述,并對測試代碼test-bench 進行了詳細描述。
1)采用FPGA 微處理器,以硬件描述語言為依托,通過模塊化設計,不僅縮短了開發周期、減少了開發難度,且使得系統更加靈活、易于調整;
2)通過不斷試驗仿真,將優化程序下載到實驗板中,結果表明整個系統運行良好,對硬件資源占用很少,占用的邏輯單元不到1%;
3)系統應用DE2 -115(Cyclone Ⅳ4CE115)實驗板,外圍電路簡單,穩定性好,尤其針對大規模集成電路設計,功耗小、集成度高的特點尤為明顯;通過更改相應設計代碼,可以使該計費系統擴展語音播報、超速報警、票據打印等附加功能。
References
[1] 夏宇聞.Verilog 數字系統設計教程[M].北京:北京航天航空大學出版社,2008.XIA Yu-wen.Verilog digital system design tutorial[M].Beijing:Beijing Aerospace University Press,2008.
[2] 劉愛榮,王振成.EDA 技術與CPLD/FPGA 開發應用簡明教程[M].北京:清華大學出版社,2007.LIU Ai-rong,WANG Zhen-cheng. EDA technique and CPLD/FPGA development application introductory tutorial[M].Beijing:Tsinghua University Press,2007.
[3] 劉艷萍,高振斌,李志軍. EDA 技術及應用[M]. 北京:國防工業出版社,2006.LIU Yan-ping,GAO Zhen-bin,Mr Li. EDA technology and its application[M]. Beijing:National Defence Industry Press,2006.
[4] 侯繼紅,李向東.EDA 實用技術教程[M].北京:中國電力出版社,2004.HOU Ji-hong,LI Xiang-dong. EDA practical technology tutorial[M].Beijing:China Electric Power Press,2004.
[5] 黃智偉.FPGA 系統設計與實踐[M].北京:電子工業出版社,2005.HUANG Zhi-wei. FPGA system design and practice[M].Beijing:Electronic Industry Press,2005.
[6] 吳 亮,馬宏興.交通信息的背景提取技術分析[J].西安科技大學學報,2010,30(1):117 -121.WU Liang,MA Hong-xing. Background traffic information extraction technology analysis[J].Xi’an University of Science and Technology,2010,30(1):117 -121.
[7] 林 愿.基于CPLD/FPGA 的出租車計費系統的設計實現[J].國外電子元器件,2007(7):25 -28.LIN yuan. Design Based on CPLD / FPGA taxi billing system[J]. Foreign Electronic Components,2007(7):25 -28.
[8] 王金明.數字系統設計與Verilog HDL[M].北京:電子工業出版社,2011.WANG Jin-ming. Digital system design and the Verilog HDL[M].Beijing:Electronic Industry Press,2011.
[9] 王奮乾,劉明騫,王曉晶,等.移動通信實現即時支付的時效方法[J]. 西安科技大學學報,2012,32(6):759 -764.WANG Fen-qian,LIU Ming-qian,WANG Xiao-jing,et al.Mobile communication with instant payment methods of aging[J].Journal of Xi’an University of Science and Technology,2012,32(6):759 -764.
[10]王小平,王彥芳. 基于EDA 技術的出租車計價單片系統[J].南開大學學報:自然科學,2002,34(2):121-123.WANG Xiao-ping,WANG Yan-fang.Monolithic taxi valuation system based on EDA technology[J]. Journal of Nankai University:Natural Science,2002,34(2):121 -123.
[11]陳偉宏. 基于Proteus 的多功能出租車計價器設計[J].重慶工學院學報:自然科學版,2009,23(6):83-86.CHEN Wei-hong. Multi-function taxi meter based on Proteus design[J]. Journal of Chongqing Institute of Technology:Natural Science Edition,2009,23(6):83 -86.
[12]張衛東,毛昕蓉,韓 政. 以太網交換芯片的I2C 接口設計與實現[J].西安科技大學學報,2009,29(2):236 -239.ZHANG Wei-dong,MAO Xin-rong,HAN Zheng. Ethernet switching chip design and implementation of I2C interface[J]. Journal of Xi’an University of Science and Technology,2009,29(2):236 -239.
[13]黃粉平,張 玲,鄭恩讓.快速自適應濾波的圖像增強方法[J].西安科技大學學報,2008,28(4):762 -765.HUANG Fen-ping,ZHANG Ling,ZHENG En-rang.Fast adaptive image enhancement filtering method[J].Xi’an University of Science and Technology,2008,28(4):762-765.