2026年7月3日金曜日

GreenPAK : CNT/DLYについて

 もうすでにブログ等で書いておられる方も多いのですが、いじって失敗しないと覚えないタイプなので、基礎的なところから再履修しております。

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秒だと10秒のところでHIGHになります。

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 件のコメント:

コメントを投稿

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