I2Cで回路書換可能なGreenPAKを使ったロジック回路入門 その6 P DLYとPipe Delay

概要

前回までで、主なマクロセルの紹介は終わりました。今回はちょっと特殊なDelayの紹介です。P DLYとPipe Delayは名前が似ていますが、違うものなので注意しましょう。

P DLY(Programmable Delay)

シンプルなマクロセルですね。プログラム可能な遅延回路ですね。Edge Detector(エッジ検出)としても利用可能みたいです。

とりあえずクロックを接続してみます。OSC1のデフォルト設定だとクロックが早すぎたので、/4に設定してあります。P DLYは初期設定のままです。

こんな感じの出力になりました。クロックの立ち上がりから少し遅れてパルスがでていますね。

P DLYのDelay valueを125nsから250nsに変更しました。パルス幅が倍になっていますね。

さらに500nsにしてみました。

どうやら、Delayとパルス幅はVDDの電圧でも変化するみたいです。

ModeをRisingからFallingに変更しました。立ち下がりエッジを検出して、パルスを出すようになりました。

Bothにして、両方のエッジ検出になりました。

Both edge delayにしました。このモードだと単に信号がDelayしているだけですね。

Pipe Delay

端子がいっぱいあるので複雑そうなマクロセルですね。このPipe Delayは16個のD-FFがつながっているDelayです。

nRESETはリセット用なので、通常はPORを設定して常にHIGHにします。LOWを入力すると出力がすべてLOWになってしまうみたいです。

デフォルト設定でINに適当な信号をいれて、CLK入力した状態で出力を確認してみます。

一番上がクロックで、その下が入力信号です。クロックの立ち上がりの値が、少し遅れて出力されていますね。デフォルト設定ではPipeが1段ですので単なるDFFになるそうです。DFFが足りない場合にはPipe Delayが流用可能とのことです。

Pipeの段数を変えてみます。OUT0を2段、OUT1を3段にしてみます。

どうやら「1 PIPE OUT」は1段目の出力固定。OUT0とOUT1は指定した段数の出力ですね。OUT0は2段なので、1クロック遅れて出力されています。OUT1は3段なので2クロック遅れていますね。最大16段までですので、15クロック遅れて出力することが可能みたいです。

応用回路(分周器)

OUT1の出力を反転して、INに入力します。

一番上がクロックで。OUT0が半分の周波数に変わっていますね。

OUT1を2段に変更しました。そうするとさらに半分になって元の4分の1になりました。

OUT1を3段に変更しました。そうする元の6分の1になりました。段数x2の分周器になるみたいですね。8段で16分周器、16段で32分周器となります。

OSC0を最大限遅くして、さらに16段のPIPEを通すことでHIGHが4秒、LOWが4秒の信号が作れました。

OSC0のクロックなどを調整することで、1秒間隔のLチカも作れますね。

まとめ

GreenPAKで任意の長さのLチカを作るときにPipe Delayを使うと良さそうです。Arduinoだとdelay()でミリ秒を入れればかんたんに遅延が作れますが、ロジックだといろいろ調整が面倒な感じです。まあ、そうゆう用途ではないのでしょうね。

次回に残っているマクロセルをざっくり紹介したいと思います。

続編

コメント

タイトルとURLをコピーしました