1

合成時に奇妙な動作をする VHDL コードがいくつかありますが、VHDL 合成に関する私の基本的な理解が間違っていると思われます。

「sync」は短いパルス (clk 周期の約半分) で、clk の立ち上がりエッジでハイになりますが、すぐにローになります。合成中、sync が High の場合、信号割り当ての一部のみが 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" だけです。

4

1 に答える 1

4

プロセス全体を示していないため、推測することしかできません。

プロセスが実行されるまで、シグナルは更新されません。したがって、信号を中間変数として使用している場合、他の信号は期待どおりに更新されません。

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
于 2013-05-22T20:44:40.973 に答える