【正文】
END PROCESS。 DDSJ(7 DOWNTO 4)=Q1。 END IF。139。 END IF。 ELSE Q1:=Q1。 ELSIF Q0=9 THEN Q1:=Q1+1。EVENT THEN IF Q1=9 AND Q0=9 THEN Q1:=0000。139。139。039。Q0:=0000。039。ARCHITECTURE ONE OF DDZT ISBEGIN PROCESS(CLK,SS,DDBZ) VARIABLE Q1,Q0: STD_LOGIC_VECTOR(3 DOWNTO 0)。 DDSJ:OUT STD_LOGIC_VECTOR(7 DOWNTO 0))。 DDBZ:IN STD_LOGIC。USE 。:LIBRARY IEEE。::此模塊用于計算停車等待的時間。END TWO。 END IF。 ELSE LCJFBZ=39。 OR (LC(7 DOWNTO 4)=0000 AND LC(3 DOWNTO 0)4) THEN LCJFBZ=39。architecture TWO of LCJFBZ is BEGIN PROCESS(SS,LC) BEGIN IF SS=39。 LCJFBZ:OUT std_logic)。entity LCJFBZ is port(SS:in std_logic。use 。END PROCESS。 END IF。 ELSE Q1=Q1。 ELSIF Q0=9 THEN Q1=Q1+1。 THEN IF Q1=9 AND Q0=9 THEN Q1=0000。EVENT AND CLKS=39。Q0=Q0。Q0=0000。WR。beginprocess(clks,SS,WR,LC) VARIABLE SW:STD_LOGIC_VECTOR(1 DOWNTO 0)。 end entity JC。entity JC is port(clks,SS,WR:in std_logic。use 。在出租車啟動并行駛的過程中(開始/結(jié)束信號SS為1,行駛/等待信號WR為1),當(dāng)時鐘clks是上升沿的時候,系統(tǒng)即對路程計數(shù)器JC的里程計數(shù)器進(jìn)行加計數(shù),當(dāng)路程超過三公里時,系統(tǒng)將輸出標(biāo)志正脈沖LCJFBZ。從該波形圖可以看出輸入脈沖的頻率是輸出脈沖的頻率的35倍。END PROCESS。 END IF。039。 ELSE CNT:=CNT+1。 FULL:=39。139。 BEGIN IF CLK039。ARCHITECTURE ONE OF PULSE ISBEGIN PROCESS(CLK0) VARIABLE CNT:STD_LOGIC_VECTOR(2 DOWNTO 0)。 FOUT:OUT STD_LOGIC)。USE 。LIBRARY IEEE。:此模塊的功能是對總的時鐘進(jìn)行分頻,總的時鐘是50M。,仿真結(jié)果及分析本系統(tǒng)采用層次化、模塊化的設(shè)計方法,設(shè)計順序為自下向上。(7)輸出控制模塊:分時輸出里程、等待時間、費用三個信號,實現(xiàn)動態(tài)顯示功能。白天收費標(biāo)準(zhǔn):,超過3公里按4元/公里,車暫停超過三分鐘按2元/分鐘計算。(5)等待狀態(tài)模塊:等待信號作用時,該模塊可以記錄等待的時間,并產(chǎn)生等待計費的信號。(4)計程模塊:在等待信號未作用時,來一個時鐘脈沖信號,里程值加1。(2)分頻器:將時鐘信號進(jìn)行分頻。根據(jù)出租車計費器的工作過程,本系統(tǒng)采用分層次、分模塊的方式設(shè)計,其FPGA內(nèi)部具體框圖如下所示。最后根據(jù)行駛里程或停止等待的時間的計費標(biāo)準(zhǔn)計費。動態(tài)顯示電路:采用的是數(shù)碼管來實現(xiàn)功能的輸出。:動態(tài)顯示模塊控制芯片信號輸入 信號輸入:各種控制信號經(jīng)輸入端給控制芯片。(3)動態(tài)顯示模塊:此模塊由六個數(shù)碼管和三個二極管所構(gòu)成,17個200Ω電阻起到限制電流的作用,使得流到數(shù)碼管的電流適當(dāng),防止數(shù)碼管中的電流過大,而使得數(shù)碼管損壞。(附錄一)硬件系統(tǒng)組成框圖開關(guān)電路FPGA模塊動態(tài)顯示電路各模塊的作用和組成:(1)開關(guān)模塊該模塊的作用是用于電路的輸入的信號。(4)設(shè)計超過三公里提醒功能。(2)實現(xiàn)預(yù)置功能:能預(yù)置起步費、每公里收費、等待加費時間。并在車行3公里后再按4元/公里計算車費。(5)各計數(shù)器的計數(shù)狀態(tài)用功能仿真的方法驗證,并通過有關(guān)波形確認(rèn)電路設(shè)計是否正確。(3)設(shè)計動態(tài)掃描電路:將車費、里程、等待時間動態(tài)的顯示出來。 基本功能:(1)按行駛里程收費,并在車行3公里后再按3元/公里計算車費。(2)進(jìn)一步掌握用VHDL語言設(shè)計數(shù)字邏輯電路。而計價器作為出租車的一個重要組成部分,關(guān)系著出租車司機和乘客雙方利益,起著重要的作用,因而出租車計價器的發(fā)展非常迅猛。本文介紹了一個以Altera公司可編程邏輯芯片cyclone2系列的EP2C5T144C8的FPGA芯片為控制核心、附加一定外圍電路組成的出租車計費器系統(tǒng)。 1.引言隨著EDA技術(shù)的高速發(fā)展,電子系統(tǒng)的設(shè)計技術(shù)發(fā)生了深刻的變化,大規(guī)??删幊踢壿嬈骷﨏PLD/FPGA的出現(xiàn),給設(shè)計人員帶來了諸多方便?;贔PGA的出租車計價器設(shè)計摘 要介紹了出租車計費器系統(tǒng)的組成及工作原理,簡述了在EDA平臺上用FPGA器件構(gòu)成該數(shù)字系統(tǒng)的設(shè)計思想和實現(xiàn)過程。論述了計程模塊,計費模塊,計時模塊,譯碼動態(tài)掃描模塊等的設(shè)計方法與技巧。利用它進(jìn)行產(chǎn)品開發(fā),不僅成本低、周期短、可靠性高,而且具有完全的知識產(chǎn)權(quán)。隨著社會的不斷進(jìn)步,人們生活水平的不斷提高,出租車逐漸成為人們?nèi)粘I畈豢扇鄙俚慕煌üぞ摺?.出租車計費系統(tǒng)的實驗任務(wù)及要求(1)掌握較復(fù)雜邏輯的設(shè)計、調(diào)試。(3)掌握用Max+pulsII軟件的原理圖輸入的設(shè)計方法。(2)實現(xiàn)模擬功能:能模擬汽車啟動、停止。(4)用VHDL語言設(shè)計符合上述功能要求的出租車計費器,并用層次化設(shè)計方法設(shè)計該電路。附加功能:(1)增加了晚上計費功能和等待功能。車白天停止超過三分鐘后按1元/分鐘計算,晚上超過3分鐘按2元/分鐘計算。(3)實現(xiàn)模擬功能:白天、黑夜;等待、行駛狀態(tài)。本人負(fù)責(zé)軟件部分。主要有三個開關(guān)以及三個限流電阻,電源構(gòu)成。數(shù)碼管將計費、等待時間和里程動態(tài)的顯示出來。控制芯片:采用的有CPLD或者FPGA等。 FPGA內(nèi)部具體框圖及方案設(shè)計:出租車的一般計費過程為:出租車載客后,啟動計費器,整個系統(tǒng)開始運行,里程計數(shù)器從0開始計數(shù),費用計數(shù)器從9開始計算;出租車載客中途等待,等待時間計數(shù)器從0開始計數(shù)。出租車到達(dá)目的地停止后,停止計費器,顯示總費用。輸入信號分頻器車費計數(shù)模塊車行駛狀態(tài)譯碼模塊輸出控制模塊里程計數(shù)模塊各模塊的功能:(1)由FPGA晶振電路產(chǎn)生50MHz時鐘信號并輸入。(3)標(biāo)志模塊:將按鈕產(chǎn)生的脈沖轉(zhuǎn)化為一種標(biāo)志信號。該模塊還包含一個路程計費標(biāo)志的小模塊,輸出一個路程計費的信號。(6)車費計數(shù)模塊:按行駛里程收費,分為白天和黑夜。黑夜收費標(biāo)準(zhǔn):,超過3公里按5元/公里,車暫停超過三分鐘按1元/分鐘計算。(8)譯碼模塊:實現(xiàn)將車費計數(shù)模塊、等待狀態(tài)模塊和里程計數(shù)模塊輸出的BCD碼轉(zhuǎn)換成七段碼輸出。首先實現(xiàn)系統(tǒng)框圖中的各子模塊,然后由頂層模塊調(diào)用各子模塊來完成整個系統(tǒng)。計數(shù)分頻器使用五個這樣基本的分頻器(35分頻)組合而成,控制模塊分頻器使用三個這樣基本的分頻器(35分頻)組合而成。USE 。ENTITY PULSE IS PORT(CLK0:IN STD_LOGIC。END PULSE。 VARIABLE FULL :STD_LOGIC。EVENT AND CLK0=39。 THEN IF CNT=100 THEN CNT:=000 。139。 FULL:=39。 END IF。FOUT=FULL。END ONE。::此模塊的功能是計算出租車行駛的路程。(1) 計程程序library ieee。use 。 LC:BUFFER std_logic_vector(7 downto 0))。architecture one of JC is SIGNAL Q1,Q0:std_logic_vector(3 downto 0)。 begin SW:=SSamp。 IF SW=00 OR SW=01 THEN Q1=0000。 ELSIF SW=11 THEN Q1=Q1。 ELSIF CLKS39。139。Q0=0000。Q0=0000。Q0=Q0+1。 END IF。(2) 計程標(biāo)志程序library ieee。use 。 SS開始/復(fù)位信號, LC:IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 end entity LCJFBZ。039。039。139。 END PROCESS。:從波形圖可以看出在時鐘的控制下當(dāng)SS為低電平的時候LC為零,當(dāng)SS為高電平且WR為高電平的時候LC開始計數(shù),當(dāng)計到大于三的時候輸出了LCJFBZ為高電平。在出