在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3334|回复: 1

求助:出租车程序出错了!帮忙看下

[复制链接]
发表于 2009-3-30 19:44:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
最近输入了个程序,提示出错,但找不到原因,请各位大大帮帮忙,谢谢了!


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;
 楼主| 发表于 2009-3-30 21:20:28 | 显示全部楼层
呵呵
找到原因了,少了个括号,还有后面的赋值符号弄错了。粗心了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-26 11:43 , Processed in 0.020387 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表