求助:出租车程序出错了!帮忙看下
时间:03-14
整理:3721RD
点击:
最近输入了个程序,提示出错,但找不到原因,请各位大大帮帮忙,谢谢了!
Error (10500): Vhdl syntax error at taxi.vhd(13) near text "END";expecting an identifier ("end" is a reserved keyword), or "constant", or "file", or "signal", or "variable"
Error (10500): VHDL syntax error at taxi.vhd(25) near text "BEGIN";expecting an identifier ("begin" is a reserved keyword), or "constant", or "file", or "signal", or "variable"
LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
USE IEEE.std_logic_unsigned.all;
USE IEEE.std_logic_arith.all;
ENTITY taxi is
port(clk_240 :in std_logic;--240Hz的时钟
start :in std_logic;--计价使能信号
stop :in std_logic;--等待信号
fin :in std_logic;--公里脉冲信号
cha3,cha2,cha1,cha0ut std_logic_vector(3 downto 0);--费用数据
km1,km0ut std_logic_vector(3 downto 0);--公里数据
min1,min0ut std_logic_vector(3 downto 0);--等待时间
end taxi;----第13行
architecture behav of taxi is
signal f_10,f_16,f_1:std_logic;--频率为10Hz,16Hz,1Hz的信号
signal q_10:integer range 0 to 23;--24分频器
signal q_16:integer range 0 to 14;--15分频器
signal q_1:integer range 0 to 239;--240分频器
signal w:integer range 0 to 59;--秒计数器
signal c3,c2,c1,c0:std_logic_vector(3 downto 0);--10进费用计数器
signal k1,k0:std_logic_vector(3 downto 0);--公里计数器
signal m1:std_logic_vector(2 downto 0);--分的十位计数器
signal m0:std_logic_vector(3 downto 0);--分的个位计数器
signal en1,en0,f:std_logic;--使能信号
begin---第25行
fenpin:process(clk_240,start)
begin
if clk_240'event and clk_240='1' then
if start='0' then
q_10<=0;q_16<=0;q_1<=0;f_10<='0';f_16<='0';f_1<='0';f<='0';
else
if q_10=23 then
q_10<=0;f_10<='1';--此if语句得到频率为10Hz的信号
else q_10=q_10+1;f_10<='0';
end if;
if q_16=14 then
q_16<=0;f_16<='1';--此if语句得到频率为16Hz的信号
else q_16<=q_16+1;f_16<='0';
end if;
if q_1=239 then
q_1<=0;f_1<='1';--此if语句得到频率为1Hz的信号
else q_1<=q_1+1;f_1<='0';
end if;
if en1='1' then
f<=f_10;--此if语句得到计费脉冲f
elsif en0='1' then
f<=f_16;
else f<='0';
end if;
end if;
end if;
end process fenpin;
mAIn:process(f_1)
begin
if f_1'event and f_1='1' then
if start='0' then
w<=0;en1<='0';en0<='0';m1<="000";m0<="0000";k1<="0000";k0<="0000";
elsif stop='1' then
if w=59 then w<=0;--此if语句完成等待计时
if m0="1001" then m0<="0000";--此if语句完成分计数
if m1="101" then m1<="000";
else m1=m1+1;
end if;
else m0<=m0+1;
end if;
if m1&m0>"0000010" then en1<='1';--此if语句得到en1使能信号
else en1<='0';
end if;
else w<=w+1;en1<='0';
end if;
elsif fin='1' then
if k0="1001" then k0<="0000";--此if语句完成公里脉冲计数
if k1="1001" then k1<="0000";
else k1<=k1+1;
end if;
else k0<=k0+1;
end if;
if k1&k0>"00000010" then en0<='1';--此if语句得到en0使能信号
else en0<='0';
end if;
else en1<='0';en0<='0';
end if;
cha3<=c3;cha2<=c2;cha1<=c1;cha0<=c0;--费用数据输出
km1<=k1;km0<=k0;min1<='0'&m1;min0<=m0;--公里数据、分钟数据输出
end if;
end process main;
jifei:process(f,start)
begin
if start='0' then
c3<="0000";c2<="0000";c1<="1000";c0<="0000";
elsif f'event and f='1' then
if c0="1001" then c0<"0000";--此if语句完成对费用的计数
if c1="1001" then c1<"0000";
if c2="1001" then c2<"0000";
if c3="1001" then c3<"0000";
else c3<=c3+1;
end if;
else c2<=c2+1;
end if;
else c1<=c1+1;
end if;
else c0<=c0+1;
end if;
end if;
end process jifei;
end behav;
Error (10500): Vhdl syntax error at taxi.vhd(13) near text "END";expecting an identifier ("end" is a reserved keyword), or "constant", or "file", or "signal", or "variable"
Error (10500): VHDL syntax error at taxi.vhd(25) near text "BEGIN";expecting an identifier ("begin" is a reserved keyword), or "constant", or "file", or "signal", or "variable"
LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
USE IEEE.std_logic_unsigned.all;
USE IEEE.std_logic_arith.all;
ENTITY taxi is
port(clk_240 :in std_logic;--240Hz的时钟
start :in std_logic;--计价使能信号
stop :in std_logic;--等待信号
fin :in std_logic;--公里脉冲信号
cha3,cha2,cha1,cha0ut std_logic_vector(3 downto 0);--费用数据
km1,km0ut std_logic_vector(3 downto 0);--公里数据
min1,min0ut std_logic_vector(3 downto 0);--等待时间
end taxi;----第13行
architecture behav of taxi is
signal f_10,f_16,f_1:std_logic;--频率为10Hz,16Hz,1Hz的信号
signal q_10:integer range 0 to 23;--24分频器
signal q_16:integer range 0 to 14;--15分频器
signal q_1:integer range 0 to 239;--240分频器
signal w:integer range 0 to 59;--秒计数器
signal c3,c2,c1,c0:std_logic_vector(3 downto 0);--10进费用计数器
signal k1,k0:std_logic_vector(3 downto 0);--公里计数器
signal m1:std_logic_vector(2 downto 0);--分的十位计数器
signal m0:std_logic_vector(3 downto 0);--分的个位计数器
signal en1,en0,f:std_logic;--使能信号
begin---第25行
fenpin:process(clk_240,start)
begin
if clk_240'event and clk_240='1' then
if start='0' then
q_10<=0;q_16<=0;q_1<=0;f_10<='0';f_16<='0';f_1<='0';f<='0';
else
if q_10=23 then
q_10<=0;f_10<='1';--此if语句得到频率为10Hz的信号
else q_10=q_10+1;f_10<='0';
end if;
if q_16=14 then
q_16<=0;f_16<='1';--此if语句得到频率为16Hz的信号
else q_16<=q_16+1;f_16<='0';
end if;
if q_1=239 then
q_1<=0;f_1<='1';--此if语句得到频率为1Hz的信号
else q_1<=q_1+1;f_1<='0';
end if;
if en1='1' then
f<=f_10;--此if语句得到计费脉冲f
elsif en0='1' then
f<=f_16;
else f<='0';
end if;
end if;
end if;
end process fenpin;
mAIn:process(f_1)
begin
if f_1'event and f_1='1' then
if start='0' then
w<=0;en1<='0';en0<='0';m1<="000";m0<="0000";k1<="0000";k0<="0000";
elsif stop='1' then
if w=59 then w<=0;--此if语句完成等待计时
if m0="1001" then m0<="0000";--此if语句完成分计数
if m1="101" then m1<="000";
else m1=m1+1;
end if;
else m0<=m0+1;
end if;
if m1&m0>"0000010" then en1<='1';--此if语句得到en1使能信号
else en1<='0';
end if;
else w<=w+1;en1<='0';
end if;
elsif fin='1' then
if k0="1001" then k0<="0000";--此if语句完成公里脉冲计数
if k1="1001" then k1<="0000";
else k1<=k1+1;
end if;
else k0<=k0+1;
end if;
if k1&k0>"00000010" then en0<='1';--此if语句得到en0使能信号
else en0<='0';
end if;
else en1<='0';en0<='0';
end if;
cha3<=c3;cha2<=c2;cha1<=c1;cha0<=c0;--费用数据输出
km1<=k1;km0<=k0;min1<='0'&m1;min0<=m0;--公里数据、分钟数据输出
end if;
end process main;
jifei:process(f,start)
begin
if start='0' then
c3<="0000";c2<="0000";c1<="1000";c0<="0000";
elsif f'event and f='1' then
if c0="1001" then c0<"0000";--此if语句完成对费用的计数
if c1="1001" then c1<"0000";
if c2="1001" then c2<"0000";
if c3="1001" then c3<"0000";
else c3<=c3+1;
end if;
else c2<=c2+1;
end if;
else c1<=c1+1;
end if;
else c0<=c0+1;
end if;
end if;
end process jifei;
end behav;
呵呵
找到原因了,少了个括号,还有后面的赋值符号弄错了。粗心了。
栏目分类