ポート入出力は、それが書かれた場所のタイミングで直接、入出力される。latch アトリビュートを付けると、入力の場合は、1クロック前の値がラッチされて入力され、出力の場合は、ラッチされて1クロック後に出力される。入出力する値がバタついたら困る場合などは、ラッチするといい。
process process1(clkin uint#1 clk, rstin uint#1 rst, out uint#8 latch x)
{
....
x = 100;
while (1) ;
}
process process1(clkin uint#1 clk, rstin uint#1 rst, out uint#8 tristate x)
{
....
x = 100;
while (1) ;
}
出力をトライステートにしたい場合は、tristate アトリビュートを付けよう。その出力が発生したタイミングで値が出力され、その他のタイミングでは、ハイ・インピーダンスになる。トライステート出力でもラッチ出力でもない場合、その他のタイミングでの出力値は未定(でたらめな値)となる。
process process1(clkin uint#1 clk, rstin uint#1 rst, in uint#8 pulldown x)
{
... = x;
while (1) ;
}
入力をプルアップ、プルダウンした場合、pullup、 pulldown アトリビュートを付けよう。
それでは皆さん、ごきげんよう!