【正文】
e_reg:=distance_reg+1。 IF distance_reg3 THEN money_reg:= money_reg+2。 END IF。 ELSE num:=num+1。 END IF。 END IF。END IF。 money=money_reg。 distance=distance_reg。 END PROCESS。END。三、display顯示模塊library ieee。use 。use 。entity decoder isport(clk1khz:in std_logic。money_in:in integer range 0 to 29。distance_in: in integer range 0 to 29。scan:out std_logic_vector(3 downto 0)。seg7: out std_logic_vector(6 downto 0))。end。architecture one of decoder issignal data:std_logic_vector(3 downto 0)。signal m_one,m_ten:std_logic_vector(3 downto 0)。signal d_one,d_ten:std_logic_vector(3 downto 0)。beginprocess(clk1khz,money_in)variable b1:integer range 0 to 29。variable b1_a,b1_b:std_logic_vector(3 downto 0)。begin if clk1khz39。event and clk1khz=39。139。 then if b1money_in thenif b1_a=9 and b1_b=9 thenb1_a:=0000。b1_b:=0000。 b1:=0。elsif b1_a=9 then b1_a:=0000。b1_b:=b1_b+1。b1:=b1+1。elseb1_a:=b1_a+1。b1:=b1+1。end if。elsif b1=money_in thenm_one=b1_a。m_ten=b1_b。elsif b1money_in thenb1_a:=0000。b1_b:=0000。b1:=0。end if。end if。end process。process(clk1khz,distance_in)variable b2:integer range 0 to 29。variable b2_a,b2_b:std_logic_vector(3 downto 0)。beginif clk1khz39。event and clk1khz=39。139。 then if b2distance_in thenif b2_a=9 and b2_b=9 thenb2_a:=0000。b2_b:=0000。b2:=0。elsif b2_a=9 thenb2_a:=0000。b2_b:=b2_b+1。b2:=b2+1。elseb2_a:=b2_a+1。b2:=b2+1。end if。elsif b2=distance_in thend_one=b2_a。d_ten=b2_b。elsif b2distance_in thenb2_a:=0000。b2_b:=0000。b2:=0。end if。end if。end process。process(clk1khz,m_one,m_ten,d_one,d_ten)variable t:std_logic_vector(1 downto 0)。beginif clk1khz39。event and clk1khz=39。139。thent:=t+1。end if。case t iswhen00=data=m_one。scan=1110。when01=data=m_ten。scan=1101。when10=data=d_one。scan=1011。when11=data=d_ten。scan=0111。end case。end process。process(data)begincase data iswhen0000=seg7=0000001。when0001=seg7=1001111。when0010=seg7=0010010。when0011=seg7=0000110。when0100=seg7=1001100。when0101=seg7=0100100。when0110=seg7=0100000。when0111=seg7=0001111。when1000=seg7=0000000。when1001=seg7=0000100。when others=seg7=1111111。end case。end process。end。23