もうすでにブログ等で書いておられる方も多いのですが、いじって失敗しないと覚えないタイプなので、基礎的なところから再履修しております。
CNT / DLYの動作です。条件は固定しました。
- 入力(緑色)はHigh 1sec + Low 4secの繰り返し
- CNT / DLYの設定
- クロック入力 : CLK0 / 64 = 32Hz
- Edge Mode Select : Rising
- あとはデフォルト
- 出力は青色です
では、見ていきます。
One Shot
これは非常に素直ですね、Edgeで設定した幅のパルスが出ます。Delay
立ち上がりのパルスから計時開始、設定した時間が経過したところでパルスが立ち上がります。750mSecにすると立ち上がりから250mSec後に出力が立ち上がり、入力パルスがLowに下がると出力もLowに。
ただ、設定したDelay幅よりも入力幅が短いと何も出ません。以下は1500mSec設定です。
Frequency Detect(Rising)
基本的に入力するパルスの周期 <= 設定した周期 ならば出力Highになります。ただ、<のときと=の時では、最初にHighになるタイミングが一つズレます。
上の通り5秒未満に設定すると何も出ません。
5秒以上に設定すると5秒からHIGHになります。たぶん「設定した秒数よりも短い間隔でパルスが来ればHighになる」というのが本来の機能なのだと思いますが、起動後はPORなどでうまくカウントがスタートしないんでしょうね。
Frequency Detect(Both)
上記はEdgeをRisingにしていましたが、Bothにすると↑↓の1秒と↓↑の4秒にそれぞれ反応します。
![]() |
| 1秒 |
![]() |
| 4秒未満 |
![]() |
| 4秒 |
![]() |
| 4秒より大きい |
Reset Conter
Edge(この場合はRising)が来ると設定した間隔でパルスを出し始め、次のEdgeが来るとまたパルスを出し始めます。Edge Detect
名前の通り、Edge(例によってriging)が来ると短いパルスを出します。他のCNT系はクロック幅のパルスを出すのですが、ここは短いのが出ます。Counter値を変えても特に何も起こりません。
Delayed Edge Detect
前記Delayとは違ってパルスを出します。ただ、Delay同様に入力信号のパルス幅よりも長いdelayを設定すると出力なんもでません。
まず500mSec。Edge(Rising)の500mSecあとに細いパルス出ていますね。
1Sec以上に設定するとパルス出ません。まとめ
Delay / Delayed Edge Detectは、ちょっと試したときに意図した動作をしなかったので、放置していたのですが、Delayed Edge Detectのような機能を実装するのにCNTを2つとLUT一つ使っていたので、とても助かりますw
やっぱ基礎大事っす……細かく動作確認しないと駄目ですわね。
FSMも「アップダウンカウンターっすか?」とか言ってないで、ちゃんと調べないといけないな……














0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。