【请教】quartus仿真时遇到的一个奇怪问题。

[复制链接]
2594|18
 楼主| catiya 发表于 2012-12-26 14:41 | 显示全部楼层 |阅读模式
一个很简单的模块,模块实现的功能是,在B输入的第一个脉冲下降沿将C拉低,此后C一直为低,如图:

仿真正常,如图:


现在想省一个口线,于是将A去掉,直接接入VCC,如图:

仿真,C无反应,如图:


请问是什么原因造成仿真时如果将A设为输入口就正常,直接置为1就不对?

说明:
A实际就是一个全局使能信号,作用是将C初始化为1,仅此功能。

附模块代码如下:

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity ABC is port
(
A:      in std_logic;
clk:    in std_logic;
   
B:      in std_logic;
Bdelay: in std_logic;
C:      out std_logic
);
end ABC;
architecture behavior of ABC is
signal Bpulse: std_logic;
signal Cpulse: std_logic;
begin
process(A,clk)

begin
  
  if rising_edge(clk) then
   
   if B = '0' and Bdelay = '1'  then
   
    Bpulse <= '1';
   
   else
   
    Bpulse <= '0';
   
   end if;
  
  end if;
  
  if A = '0' then

   Cpulse <= '1';
  
  elsif rising_edge(clk) then

   if Bpulse = '1' then

    Cpulse <= '0';
   
   end if;
   
  end if;
  
end process;

C <= Cpulse;

end behavior;

本帖子中包含更多资源

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

×
GoldSunMonkey 发表于 2012-12-27 21:49 | 显示全部楼层
因为K不到A的值。
语句里面A必须等于1才有此结果。那你给A赋值了么?
 楼主| catiya 发表于 2012-12-27 21:53 | 显示全部楼层
GoldSunMonkey 发表于 2012-12-27 21:49
因为K不到A的值。
语句里面A必须等于1才有此结果。那你给A赋值了么?

赋了啊,一种方式是通过input脚赋值,一种是直接置为VCC,两种方式得到截然不同的仿真结果。问题就在这里。
GoldSunMonkey 发表于 2012-12-27 21:55 | 显示全部楼层
:L

我都说了,你的A没有赋值。语句里面使用了A这个东西。
你直接拉高不代表他是A啊
 楼主| catiya 发表于 2012-12-28 22:38 | 显示全部楼层
GoldSunMonkey 发表于 2012-12-27 21:55
我都说了,你的A没有赋值。语句里面使用了A这个东西。
你直接拉高不代表他是A啊 ...

不明白。
GoldSunMonkey 发表于 2012-12-28 22:50 | 显示全部楼层
。。。。这有什么不明白的。你要么修改代码,要么就用第一个图。然后给A赋值
heningbo12 发表于 2012-12-29 11:27 | 显示全部楼层
我没见过有直接拉到VCC上的
可能是见识浅
GoldSunMonkey 发表于 2012-12-29 23:25 | 显示全部楼层
但是代码里面用到A就得给A赋值
GoldSunMonkey 发表于 2013-1-3 22:59 | 显示全部楼层
还没明白么?
 楼主| catiya 发表于 2013-1-4 16:46 | 显示全部楼层
我之前其他模块也用到类似A这种全局使能的,拉到VCC没问题的。
GoldSunMonkey 发表于 2013-1-4 22:56 | 显示全部楼层
:L这个和拉不拉没有关系,是因为你代码里面用到A了。如果代码里面没用用到A,那么这么做就可以
 楼主| catiya 发表于 2013-1-6 11:47 | 显示全部楼层
我是说程序里拉到VCC,没说硬件拉到VCC。你还是没明白。我这里也不好演示给你看。
GoldSunMonkey 发表于 2013-1-6 11:50 | 显示全部楼层
那你两次的代码是不是一样的呢?
 楼主| catiya 发表于 2013-1-6 11:52 | 显示全部楼层
代码肯定不一样。但A信号性质是一样的,全局使能。
GoldSunMonkey 发表于 2013-1-6 12:04 | 显示全部楼层
那你把两次代码都贴出来。
ococ 发表于 2013-1-6 12:59 | 显示全部楼层
你代码有问题。
一个process里面怎么有两个上升沿?
后面的那个要去调。
另外如果你不用A,就在端口那把A去掉,内部也不用A就行了。
GoldSunMonkey 发表于 2013-1-6 13:21 | 显示全部楼层
ococ 发表于 2013-1-6 12:59
你代码有问题。
一个process里面怎么有两个上升沿?
后面的那个要去调。

他不信我的。
GoldSunMonkey 发表于 2013-1-6 13:21 | 显示全部楼层
ococ 发表于 2013-1-6 12:59
你代码有问题。
一个process里面怎么有两个上升沿?
后面的那个要去调。

他不信我的。
GoldSunMonkey 发表于 2013-1-6 13:22 | 显示全部楼层
ococ 发表于 2013-1-6 12:59
你代码有问题。
一个process里面怎么有两个上升沿?
后面的那个要去调。

两个上升沿,虽然不好,但是也不算语法错误,也能解释的通
您需要登录后才可以回帖 登录 | 注册

本版积分规则

52

主题

235

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部