本模块实现对于出租车在行驶和等待过程中的继承和计时功能;当行驶里程大于3KM时,本模块中en0信号变为1;当等待时间大于2min时,本模块中en1信号变为1;clk1每来一个上升沿,计量模块实现一次计数,里程数或者等待时间加1;
end process; end rt1;
分频模块的仿真波形图为:
注:有图中的周期时间可以看出,三种输出的信号脉冲对应的频率比实现了1:13:15;
(二)、计量模块
本模块实现对于出租车在行驶和等待过程中的继承和计时功能;当行驶里程大于3KM时,本模块中en0信号变为1;当等待时间大于2min时,本模块中en1信号变为1;clk1每来一个上升沿,计量模块实现一次计数,里程数或者等待时间加1;元件框图为:
源程序如下: library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity jiliang is
port( s: in std_logic; ;计量开始信号
fin: in std_logic; ;里程脉冲信号
stop: in std_logic; ;等待信号
clk1: in std_logic; ;计量驱动信号
en1,en0:buffer std_logic; ;计量输出的控制信号 k1,k0: buffer std_logic_vector(3 downto 0); ;里程计数 m1,m0: buffer std_logic_vector(3 downto 0)); ;时间计数
end jiliang; architecture rt2 of jiliang is
signal w:integer range 0 to 59; ;秒计数器 begin
process(clk1) begin
if clk1'event and clk1='1' then ;本语句实现clk1对计量模块的驱动 if s='0' then
w<=0;en1<='0';en0<='0';m1<="0000";m0<="0000";k1<="0000";k0<="0000";
elsif stop='1' then ;等待计时开始标志 if w=59 then w<=0; if m0="1001" then m0<="0000"; if m1="0101" then m1<="0000"; else m1<=m1+1; end if;
else m0<=m0+1;
end if; ;完成等待计时
if m1&m0>"00000001"then en1<='1'; ;等待时间大于2min
怎么看出来的等待时间大于2? 00000001是什么意思 还有上面的0101 和1001 ?谢谢大家。 |