nionio 发表于 2009-11-27 17:29:02

请教关于vhdl顺序语句赋值的问题(只有4行代码)

这是我们课上的一个作业,代码如下:
begin

    PROCESS(CLK)
    BEGIN
             IF CLK'EVENT ANDCLK='1' THEN
                     A<=D;                  
             END IF;
    Q<=A;
END PROCESS;

其中A是自己定义的signal,D和Q是输入输出。综合以后显示的是一个d触发器。

但是我的理解是在时钟上升沿,两个赋值应该同时进行,A<=D要在进程结束后才完成赋值,故在Q<=A时,A的值还没有变化。在时钟下降沿,才完成了Q的值是之前D的值。所以这样的话,综合的电路应该是两个触发器串联,第一个上升沿触发,第二个为下降沿触发。

请问我的理解错在哪里?为什么结果是一个上升沿的d触发器?

zhangchanggong 发表于 2009-11-28 23:15:32

D触发器本来就有延时功能
begin
PROCESS(CLK)
    BEGIN
             IF CLK'EVENT ANDCLK='1' THEN
                     A<=D;                     
             END IF;
END PROCESS;
Q<=A; 放在进程后吧

hbchf 发表于 2010-1-11 17:29:46

回复【楼主位】nionio
-----------------------------------------------------------------------

好像有竞争冒险吧!
页: [1]
查看完整版本: 请教关于vhdl顺序语句赋值的问题(只有4行代码)