VHDL中的并发和顺序语句

  • 本文关键字:顺序 语句 并发 VHDL vhdl
  • 更新时间 :
  • 英文 :


我有一个关于VHDL的基本问题。

考虑以下过程:

process(Clk)
begin
if(rising_edge(Clk)) then
a <= data_in;
b <= a;
c <= b;
data_out <= c;
end if;
end process;

上述过程充当延迟寄存器,其中data_in在4个时钟周期之后被输出到data_out。

根据我的理解,这是因为信号是并行分配的。但是,为什么在一个称为顺序的过程中的语句呢?

例如:

process(Clk)
begin
if(rising_edge(Clk)) then
a <= b or c;
a <= b and c;
end if;
end process;

在上面的过程中,"a"从第二个语句中获取值,我理解它是如何以与第一个过程不同的顺序工作的。

请帮忙。

实际上非常简单:VHDL进程中的所有语句都是按顺序从上到下执行的,没有例外。然而,

  1. 信号分配算子(<=(的左手边不取其新值,直到进程(以及所有其他进程(暂停(要么触底,要么命中等待语句(和

  2. 如果你再次分配给一个信号(如第二个例子(,最后一个执行的赋值将覆盖以前的赋值。

现在你知道了,在你的脑海中模拟以上两个过程,你会发现它们的行为就像你说的那样。(第一个例子中的语句不是并行执行的。但由于上面的(1(,它们似乎是并行的。(

最新更新