打印

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

[复制链接]
1729|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啊

使用特权

评论回复
5
catiya|  楼主 | 2012-12-28 22:38 | 只看该作者
GoldSunMonkey 发表于 2012-12-27 21:55
我都说了,你的A没有赋值。语句里面使用了A这个东西。
你直接拉高不代表他是A啊 ...

不明白。

使用特权

评论回复
6
GoldSunMonkey| | 2012-12-28 22:50 | 只看该作者
。。。。这有什么不明白的。你要么修改代码,要么就用第一个图。然后给A赋值

使用特权

评论回复
7
heningbo12| | 2012-12-29 11:27 | 只看该作者
我没见过有直接拉到VCC上的
可能是见识浅

使用特权

评论回复
8
GoldSunMonkey| | 2012-12-29 23:25 | 只看该作者
但是代码里面用到A就得给A赋值

使用特权

评论回复
9
GoldSunMonkey| | 2013-1-3 22:59 | 只看该作者
还没明白么?

使用特权

评论回复
10
catiya|  楼主 | 2013-1-4 16:46 | 只看该作者
我之前其他模块也用到类似A这种全局使能的,拉到VCC没问题的。

使用特权

评论回复
11
GoldSunMonkey| | 2013-1-4 22:56 | 只看该作者
:L这个和拉不拉没有关系,是因为你代码里面用到A了。如果代码里面没用用到A,那么这么做就可以

使用特权

评论回复
12
catiya|  楼主 | 2013-1-6 11:47 | 只看该作者
我是说程序里拉到VCC,没说硬件拉到VCC。你还是没明白。我这里也不好演示给你看。

使用特权

评论回复
13
GoldSunMonkey| | 2013-1-6 11:50 | 只看该作者
那你两次的代码是不是一样的呢?

使用特权

评论回复
14
catiya|  楼主 | 2013-1-6 11:52 | 只看该作者
代码肯定不一样。但A信号性质是一样的,全局使能。

使用特权

评论回复
15
GoldSunMonkey| | 2013-1-6 12:04 | 只看该作者
那你把两次代码都贴出来。

使用特权

评论回复
16
ococ| | 2013-1-6 12:59 | 只看该作者
你代码有问题。
一个process里面怎么有两个上升沿?
后面的那个要去调。
另外如果你不用A,就在端口那把A去掉,内部也不用A就行了。

使用特权

评论回复
17
GoldSunMonkey| | 2013-1-6 13:21 | 只看该作者
ococ 发表于 2013-1-6 12:59
你代码有问题。
一个process里面怎么有两个上升沿?
后面的那个要去调。

他不信我的。

使用特权

评论回复
18
GoldSunMonkey| | 2013-1-6 13:21 | 只看该作者
ococ 发表于 2013-1-6 12:59
你代码有问题。
一个process里面怎么有两个上升沿?
后面的那个要去调。

他不信我的。

使用特权

评论回复
19
GoldSunMonkey| | 2013-1-6 13:22 | 只看该作者
ococ 发表于 2013-1-6 12:59
你代码有问题。
一个process里面怎么有两个上升沿?
后面的那个要去调。

两个上升沿,虽然不好,但是也不算语法错误,也能解释的通

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

45

主题

228

帖子

2

粉丝