课程设计做一个出租车计费器 计费模块编译通不过
车费计数模块——:白天计费:其初值为9元,当里程超过3公里后才接受计数车速控制模块发出的脉冲的驱动,之后每来一个脉冲(代表运行了1公里)其数值加1元,当车程超过10公里时每来一个脉冲其数值加1元。
夜间计费:其初值为11元,当里程超过3公里后才接受计数车速控制模块发出的脉冲的驱动,之后每来一个脉冲(代表运行了1公里)其数值加2元,当车程超过10公里时每来一个脉冲其数值加3元
然后是 编译通不过的程序:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY COUNTER1 IS
PORT(CLK_div:IN STD_LOGIC;
CLR1:IN STD_LOGIC;
K:IN STD_LOGIC;
SS:IN STD_LOGIC;
SI:IN STD_LOGIC_VECTOR(1 DOWNTO 0);
C2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
C3:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END COUNTER1;
ARCHITECTURE ONE OF COUNTER1 IS
BEGIN
PROCESS(CLK_div,CLR1,SI,SS)
VARIABLE Q2: STD_LOGIC_VECTOR(3 DOWNTO 0);
VARIABLE Q3: STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
IF SS='0' THEN
IF CLR1='0' THENQ2:="0000";Q3:="0000";
ELSIF CLK_div'EVENT AND CLK_div='1' THEN
CASE SI IS
WHEN "00" => IF K='0' THEN
Q2:=Q2; Q3:=Q3;
ELSE IF K='1' THEN
IF Q2 Q2:="1001";Q3:="0000";
WHEN "10"=> IFQ2 IFQ2 NULL;
END CASE;
END IF;
ELSE
IF CLR1='0' THENQ2:="0000";Q3:="0000";
ELSIF CLK_div'EVENT AND CLK_div='1' THEN
CASE SI IS
WHEN "00" =>IF K='0' THEN
Q2:=Q2;Q3:=Q3;
ELSE IF K='1' THEN
IF Q2 Q2:="0001";Q3:="0001";
WHEN "10"=> IF Q2 IFQ2 NULL;
END CASE;
END IF;
END IF;
C2<=Q2;
C3<=Q3;
END PROCESS;
END ONE;
真的感谢啊!