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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3594|回复: 8

程序有点小问题·哪个有空顺便帮下忙

[复制链接]
发表于 2007-12-18 17:12:43 | 显示全部楼层 |阅读模式

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

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

x
初学Vhdl,下面是一个D触发器的VHDL代码,感觉没错,但是Quartus2在编译的时候总是不能成功,提示:
Error (10533): VHDL Wait Statement error at text.vhd(13): Wait Statement must contain condition clause with UNTIL keyword
为什么啊?难道只能用WAIT UNTIL语句?我只是仿真都不行啊!
===========================================================

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY text IS
  PORT(clk,reset,d:IN STD_LOGIC;
       q:OUT STD_LOGIC);
END text;
ARCHITECTURE x OF text IS
BEGIN
   PROCESS  
      BEGIN
      WAIT ON clk;
      IF(clk'EVENT AND clk='1')THEN
         IF(reset='1')THEN
            q<='0';
         ELSE
            q<=d;
         END IF;
      END IF;
   END PROCESS;
END x;
 楼主| 发表于 2007-12-19 13:00:17 | 显示全部楼层
帮帮忙·谢了
发表于 2007-12-19 15:47:09 | 显示全部楼层

把 WATI ON去掉就好了

你再程序中。。已经有了触发敏感信号了。。就是这个:if clk'event and clk=1 这个就是时钟触发嘛

你把WAIT ON删掉。。然后 把进程PROCESS改为PROCESS(CLK)实验下吧
 楼主| 发表于 2007-12-19 19:45:26 | 显示全部楼层


原帖由 国产可乐 于 2007-12-19 15:47 发表
你再程序中。。已经有了触发敏感信号了。。就是这个:if clk'event and clk=1 这个就是时钟触发嘛

你把WAIT ON删掉。。然后 把进程PROCESS改为PROCESS(CLK)实验下吧


感谢你的回复!
我知道按你的方法用敏感参数表是可行的。但是书上也是说了的,如果不用敏感参数表,用其他的敏感信号激励也是可以的比如:wait until ,wait on, wait for只是在用wait语句的时候不能再带有PROCESS的敏感参数表。
可是为什么用wait on会出错呢?对不起,我是初学,所以想把每个问题搞清楚。
发表于 2007-12-20 14:50:10 | 显示全部楼层

同一信号不能存在2种触发状态吧

wait on clk 和if rising_edge(clk) 都是同一种触发状态的描述方式,不能同时存在吧。。。只能用一个好像
 楼主| 发表于 2007-12-20 18:26:57 | 显示全部楼层


原帖由 国产可乐 于 2007-12-20 14:50 发表
wait on clk 和if rising_edge(clk) 都是同一种触发状态的描述方式,不能同时存在吧。。。只能用一个好像


wait on clk 是等待clk变化,和process(clk)中的敏感参数表是一样的功能,但是这种变化可能是从0变到1,也可能是从1变到0。所以用if rising_edge(clk)是判断clk的变化是否是上升沿(从0变到1)。
还有一个问题就是我的这个程序如果选择分析当前文档(Analyze Current File)的话,还是可以编译成功的。只是在全编译(Full Compilation)的时候不能通过。

[ 本帖最后由 ERWA 于 2007-12-20 19:08 编辑 ]
发表于 2007-12-20 21:55:18 | 显示全部楼层
你写的没错,不过Quartus综合器并不支持所有的语法. 最好是删掉wait语句,clk写在process的敏感变量列表里
 楼主| 发表于 2007-12-21 10:29:56 | 显示全部楼层


原帖由 harold 于 2007-12-20 21:55 发表
你写的没错,不过Quartus综合器并不支持所有的语法. 最好是删掉wait语句,clk写在process的敏感变量列表里


但是不能综合的好像是wait for语句啊。而且就算不能综合,仿真总是可以的吧?那么编译怎么通不过呢?
 楼主| 发表于 2007-12-21 10:32:19 | 显示全部楼层


原帖由 harold 于 2007-12-20 21:55 发表
你写的没错,不过Quartus综合器并不支持所有的语法. 最好是删掉wait语句,clk写在process的敏感变量列表里


而且我如果写成:wait on clk until (clk'event and clk='1');再编译的话也是能够通过的,说明wait on语句是可以用的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-5-19 01:54 , Processed in 0.034573 second(s), 9 queries , Gzip On, Redis On.

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