Vhdl 这个设计有什么问题

Vhdl 这个设计有什么问题,vhdl,Vhdl,我有一些VHDL代码在合成时表现得很奇怪,但我怀疑我对VHDL合成的基本理解是错误的 同步是一个短脉冲,大约有半个时钟周期,在时钟上升沿上为高,但不久后变低。在合成过程中,当同步高时,只有一些信号分配分配在clk上升沿上 同步是否需要在最短时间内保持高同步 process(clk) begin if rising_edge(clk) then if sync = '1' then a <= '1'; y3 <= y2; y2 <= y1

我有一些VHDL代码在合成时表现得很奇怪,但我怀疑我对VHDL合成的基本理解是错误的

同步是一个短脉冲,大约有半个时钟周期,在时钟上升沿上为高,但不久后变低。在合成过程中,当同步高时,只有一些信号分配分配在clk上升沿上

同步是否需要在最短时间内保持高同步

process(clk)
begin
if rising_edge(clk) then
   if sync = '1' then
      a <= '1';
      y3 <= y2;
      y2 <= y1;
      y1 <= y0; 
   end if;
end if;
...

只有a在合成时更新其值…

我只能猜测,因为您没有显示整个过程

在进程运行之前,信号不会得到更新。因此,如果您使用信号作为中间变量,其他信号将不会像您预期的那样更新

if a is a signal which has value 1 before the process.
process(clk)
     ...
     a <= '0'
     a still has value 1 here
     ....
end process
a's value is now updated to 0

我只能猜测,因为你没有展示整个过程

在进程运行之前,信号不会得到更新。因此,如果您使用信号作为中间变量,其他信号将不会像您预期的那样更新

if a is a signal which has value 1 before the process.
process(clk)
     ...
     a <= '0'
     a still has value 1 here
     ....
end process
a's value is now updated to 0

你在这里展示的看起来不错。它和你们在模拟中期望的一样吗?我希望Y3,Y2,Y1会被更新,但什么也没发生。所以我想知道同步脉冲对于实现来说是否太短,或者类似的东西。不,如果正在更新,那么同步脉冲没有问题。您在这里显示的看起来没问题。它和你们在模拟中期望的一样吗?我希望Y3,Y2,Y1会被更新,但什么也没发生。所以我想知道同步脉冲对于实现来说是否太短,或者类似的东西。不,如果正在更新,那么同步脉冲没有问题。