【正文】
s t1 此模塊用于計(jì)算停車(chē)等待的時(shí)間。在出租車(chē)行進(jìn)中,如果車(chē)輛停止等待,計(jì)數(shù)器 則在信號(hào) clk的上升沿進(jìn)行加計(jì)數(shù),當(dāng)累計(jì)等待時(shí)間超過(guò) 2(不包括 2分鐘 )分鐘時(shí),輸出標(biāo)志 DDJFBZ正脈沖信號(hào)。 VHDL程序 : LIBRARY IEEE。 USE 。 USE 。 ENTITY DDZT IS PORT(CLK,SS:IN STD_LOGIC。 DDBZ:IN STD_LOGIC。 DDJFBZ:OUT STD_LOGIC。 DDSJ:OUT STD_LOGIC_VECTOR(7 DOWNTO 0))。 END ENTITY DDZT。 ARCHITECTURE ONE OF DDZT IS BEGIN PROCESS(CLK,SS,DDBZ) VARIABLE Q1,Q0: STD_LOGIC_VECTOR(3 DOWNTO 0)。 BEGIN IF SS=39。039。 THEN Q1:=0000。Q0:=0000。DDJFBZ=39。039。 ELSIF DDBZ=39。139。 THEN IF CLK=39。139。 AND CLK39。EVENT THEN IF Q1=9 AND Q0=9 THEN Q1:=0000。Q0:=0000。 ELSIF Q0=9 THEN Q1:=Q1+1。Q0:=0000。 ELSE Q1:=Q1。Q0:=Q0+1。 END IF。 IF(Q10 OR Q03) THEN DDJFBZ=39。139。 END IF。 END IF。 END IF。 DDSJ(7 DOWNTO 4)=Q1。DDSJ(3 DOWNTO 0)=Q0。 END PROCESS。 END ONE。 時(shí)模塊的仿真結(jié)果 : 從波形圖可以看出在 clk的控制下當(dāng) SS為 高 電平 DDBZ為 高 電平的時(shí)候時(shí)間計(jì)數(shù)但是費(fèi)用沒(méi)有計(jì)數(shù), DDJFBZ為低電平。 : : SSDNLC [7. .0]D D SJ [7. .0]LC J F BZD D J F BZF Y [7. .0]JFins t3 費(fèi)用計(jì)數(shù)器模塊用于出租車(chē)啟動(dòng)后,根據(jù)行駛路程和等待時(shí)間計(jì)算費(fèi)用。當(dāng)出租車(chē) 啟動(dòng) 時(shí), SS為高電平, 用于將費(fèi)用計(jì)數(shù)器復(fù)位為起步價(jià) 10元;當(dāng)車(chē)處于行駛狀態(tài)且滿 3公里時(shí), select_clk信號(hào)選擇 distans_enable,此后路程每滿 1公里,費(fèi)用計(jì)數(shù)器加 1元;當(dāng)出租車(chē)處于停止等待狀態(tài)且時(shí)鐘滿 2分鐘時(shí), select_clk信號(hào)選擇 time_enable信號(hào),時(shí)間每滿 1分鐘,費(fèi)用計(jì)數(shù)器加 1元。 VHDL的程序 : library IEEE。 use 。 use 。 定義函數(shù)名 PACKAGE PACKEXP1 IS FUNCTION bcd_add8(AIN,BIN : in std_logic_vector) RETURN std_logic_vector。 END。 描述函數(shù)體 PACKAGE BODY PACKEXP1 IS FUNCTION bcd_add8(AIN,BIN : std_logic_vector) RETURN std_logic_vector IS type type_bcdx4 is array(3 downto 0) of std_logic_vector(4 downto 0)。 VARIABLE SA,SB : type_bcdx4。 VARIABLE CI : std_logic_vector(4 downto 0)。 VARIABLE SOUT : std_logic_vector(11 downto 0)。 BEGIN CI:=(others=39。039。)。 SOUT:=(others=39。039。)。 for i in 0 to 1 loop 01的循環(huán) SA(i) := (39。039。 amp。 AIN(i*4+3 downto i*4))+(39。039。 amp。 BIN(i*4+3 downto i*4))+(0000 amp。 CI(i))。 if ((SA(i)(4)=39。139。) or (SA(i)(3 downto 0)9)) then SB(i) := SA(i) + 00110。 else SB(i) := SA(i)。 end if。 CI(i+1) := SB(i)(4)。 SOUT(i*4+4 downto i*4):=SB(i)。 end loop。 RETURN SOUT。 END FUNCTION bcd_add8。 END。 library IEEE。 use 。 use 。 USE 。 ENTITY JF is PORT( SS:IN STD_LOGIC。 開(kāi)始 /停止信號(hào) ,低電平停止,高電平開(kāi)始 DN:IN STD_LOGIC。 白天黑夜控制,高電平夜間,低電平白天 LC:IN std_logic_vector(7 downto 0)。 路程 DDSJ:IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 等待時(shí)間 LCJFBZ:IN STD_LOGIC。 路程計(jì)費(fèi)標(biāo)志 DDJFBZ:IN STD_LOGIC。 等待計(jì)費(fèi)標(biāo)志,高電平時(shí)等待開(kāi)始 計(jì)費(fèi),低電平不計(jì)費(fèi) FY:OUT STD_LOGIC_VECTOR(7 DOWNTO 0))。 總費(fèi)用 END ENTITY JF。 architecture ONE of JF is BEGIN 討論白天 /黑夜?路程計(jì)費(fèi)?等待計(jì)費(fèi)? PROCESS(SS,DN,LC,DDSJ,DDJFBZ,LCJFBZ) VARIABLE FY1 :STD_LOGIC_VECTOR(11 DOWNTO 0)。 BEGIN IF SS=39。039。 THEN FY1:=000000000000。 ELSIF DN=39。039。 THEN 白天時(shí) IF LCJFBZ=39。039。 THEN 起始價(jià) FY1(11 DOWNTO 4):=(OTHERS=39。039。)。 9 FY1(3 DOWNTO 0):=1001。 ELSE 加收路程費(fèi) FY1:=bcd_add8(LC,LC)。 FY1:=bcd_add8(FY1,LC)。 多一個(gè)脈沖加收 3,則變成 LC*3 END IF。 ELSIF LCJFBZ=39。039。 THEN 起始價(jià) FY1(11 DOWNTO 5):=(OTHERS=39。039。)。 FY1(4 DOWNTO 0):=10010。 12 ELSE FY1:=bcd_add8(LC,LC)。 FY1:=bcd_add8(FY1,LC)。 FY1:=bcd_add8(FY1,LC)。 每一個(gè)脈沖加收 4,則變成 LC*4 END IF。 IF DN=39。039。 THEN 白天時(shí) IF DDJFBZ=39。039。 THEN 未到等待收費(fèi)時(shí)間 FY1:=FY1。 不 加收 ELSE 加收路程費(fèi) FY1:=bcd_add8(FY1,DDSJ)。 FY1:=bcd_add8(FY1,DDSJ)。 一超過(guò)等待收費(fèi)時(shí)間,就立即加收等待時(shí)的每個(gè)脈沖加 2 END IF。 ELSIF DDJFBZ=39。039。 THEN 未到等待收費(fèi)時(shí)間 FY1:=FY1。 不加收 ELSE 加收路程費(fèi) FY1:=bcd_add8(FY1,DDSJ)。 一超過(guò)等待收費(fèi)時(shí)間,就立即加收等待時(shí)的每個(gè)脈沖加 1 END IF。 FY=FY1(7 DOWNTO 0)。 END PROCESS。 END ONE。 : 白天模式 黑夜模式 從波形圖可以看出 DN為高電平選擇白天模式進(jìn)行計(jì)費(fèi), DN為低電平選擇黑夜模式進(jìn)行計(jì)費(fèi)。 : : din [7. .0] dout 1[ 6. .0]dout 0[ 6. .0]Y M Qins t6 VHDL程序 : library ieee。 use 。 use 。 use 。 entity YMQ is port(din:in std_logic_vector(7 downto 0)。 dout1:out std_logic_vector(6 downto 0)。 dout0:out std_logic_vector(6 downto 0))。 end entity YMQ。 architecture one of YMQ is begin process(din) begin case din(7 do