摘要:出租車計費器一般采用以單片機為核心的設計方法,設計不夠靈活方便。為此,在此介紹了采用EDA技術的層次化設計方法設計出租車計費器的方法。即用VHDL編寫各個功能模塊,實現低層設計;用原理圖輸入方式描述各模塊間的關系,實現頂層設計。采用FPGA可編程邏輯器件為系統控制單元,無需添加外圍電路,更新功能僅需修改軟件。實驗表明,該設計方法簡單快捷,所設計的系統性能可靠。應用該方法設計的數字電子系統具有很強的靈活性。
關鍵詞:EDA;VHDL;層次化;出租車計費器
0 引言
EDA使用戶在無需實際芯片、電路板和儀器儀表的情況下進行電路設計和分析;采用在系統編程技術,在現場對系統進行邏輯重構和升級,實現硬件設計軟件化。
EDA技術以可編程邏輯器件FPGA和CPLD及其開發系統為硬件平臺,以EDA開發軟件如Max+PlusⅡ為開發工具,基于邏輯功能模塊的層次化設計方法設計數字系統。Max+PlusⅡ設計可采用原理圖、硬件描述語言(VHDL)等多種輸入方式,并支持這些文件的任意混合設計。對于不同層次,可采用不同的輸入方式進行設計。由于VHDL擅長描述模塊的邏輯功能,所以在對底層模塊設計中,常采用VHDL進行描述,而原理圖則擅長描述模塊間的連接關系,故在頂層設計中,常采用原理圖輸入方法。出租車計費器通常以單片機為核心進行設計,本文以為它例介紹基于EDA技術的數字系統混合設計方法。
1 出租車計費器功能
出租車計費器的功能要求:
(1)實現出租車按行駛里程收費,起步費為7.0元;
(2)行駛3 km后再按2元/km計費,車停時不計費;
(3)能預置起步費和每公里收費,并能模擬汽車啟動、停止、車速等狀態。
根據VHDL特點,設計者不再需要考慮選擇固定功能的標準芯片,而是從實現系統功能與性能出發來,建立出租車計費器系統模塊,如圖1所示。
2 出租車計費器的設計與實現
本系統分底層和頂層2個層次設計,底層設計采用VHDL編寫各個功能模塊,頂層設計采用原理圖方式描述各模塊間的連接。
2.1 底層文件的設計
底層模塊包括:出租車車速控制模塊;計費器里程計數模塊;計費器計費計數模塊3個模塊。
以出租車車速控制模塊為例介紹。
出租車車速控制模塊用于控制出租車的車速。圖1中,當起/停開關及清零信號RESET都為“1”時,汽車啟動就開始進入里程計數和計費器工作狀態。通過改變“車速選擇”端的輸入值可以控制汽車行駛快慢。用CLK6作為車速控制模塊的時鐘輸入,CLOCK6作為輸出,用A、B作為車速選擇變量,分別取值從“00”→“01”→“10”→“11”時,車速越來越塊。其VHDL程序代碼如下:
以上程序代碼經過編譯后生成相應模塊符號,如圖2所示,供頂層設計時調用。
程序經過時序仿真后的波形,如圖3所示。
2.2 頂層原理圖設計
頂層設計采用原理圖輸入方式。通過調用生成的各模塊符號,并將它們作適當連接以實現頂層文件的設計。出租車計費器的頂層設計電路,如圖4所示。
圖4中,ko1,ko2為車速控制開關;clk為時鐘信號;reset為復位信號;up_down為起/停控制信號;count為預置每公里收費的信號;load為預置使能信號;dd為預置起步費信號;out5,out4為記錄里程的整數位;out6為記錄里程的小數位;outl,out2為記錄費用的整數位;out3為記錄費用的小數位。
2.3 頂層文件仿真與下載
頂層原理圖經過編譯后生成頂層文件,對頂層文件進行仿真,結果正確后,利用Altera公司的FPGA芯片EPF10K3LC84—3及其SE-5M型開發系統進行下載。下載結果顯示,所設計的出租車計費器完全符合設計要求。
3 結語
由上述設計實例可見,采用EDA技術設計數字系統則是一種基于邏輯功能模塊的“自上而下”層次化設計方法。即從整個系統功能與性能優化出發,將系統分解為各功能模塊,由VHDL描述模塊的邏輯功能,生成滿足相應邏輯功能的新器件,實現底層設計;再采用原理圖輸入方式,將生成的新器件連成系統圖,實現頂層設計。另外,由于新器件內部電路是用程序構建的,硬件的邏輯關系由語言來描述,所以只要修改語句則可修改硬件的邏輯關系。由此可見這種設計方法,可大大提高工作效率,設計更加靈活、快捷,可減少器件的數量,避免復雜的接線,縮小系統的體積,降低消耗,提高系統的可靠性、繼承性、移植性。