2010/05/13(木)HDLってむずかしい

ハードウェア記述言語って難しいですね・・・。

自分なりの表現で備忘録にメモを。

高速処理になると、とあるレジスタがなぜかHigh固定で固まっておかしくなるなぁ~と思って3日間悩んでました。どうやら外部入力(input DATA_IN)に対していろんなmoduleへそのまま利用(配線上分岐になる?)した状態で、それに関係した回路部分がちょっと頑張りだすとダメになるようで。
DATA_INを一旦レジスタで受けるように、
reg DATA_IN_BUF;

always @(posedge CLK)
begin
    DATA_IN_BUF <= DATA_IN;
end
としたらHigh固定なフリーズ状態の問題は解消されました。データが1CLK分遅れますが今回はそれは影響ありません。対処方法として間違っているかもしれませし、そもそも基礎知識が足りてないからこうなったのかもしれませんが、とりあえずこれで前に進めるのでなんとかなったことにします。

まだまだ勉強不足だなぁ・・・。