...

CPLD による簡易型パルスジェネレーター ver.7 取説 2015/8 細田 CPLD

by user

on
Category: Documents
7

views

Report

Comments

Transcript

CPLD による簡易型パルスジェネレーター ver.7 取説 2015/8 細田 CPLD
CPLD による簡易型パルスジェネレーター ver.7 取説 2015/8 細田
CPLD (MAX-II EPM240)を使った簡易型パルスジェネレーターの最新版の取説を示す。本
バージョンは ver.7 であり、初期型 ver.1 と次の公開改良 ver.3 の改良版。いわば、勢いで作っ
た ver.3 以前をいろいろ使用してみてよくなかった点やバグの改良版が ver,7。回路図、CPLD
の設計図、および BASCOM プログラムも、かなり変わっている。詳細は本節に添付した各ファ
イルを参照されたい。加えて、同じ節に外部オプションの 50-ohm ドライバーも掲せておいた。
これにより、数十 ns のパルス応用にも対応できるようになった。
以下、仕様を示す。
(1)仕様と履歴
(ver.7 = ver.3 からの継続改良)
10ns 分解能のパルス設定可能。最高繰り返し周波数= 50MHz。最大時間幅= 5 秒。
出力レベル:3.3V LVTTL、5V 系 TTL にも利用可能。
(出力= CMOS gate = 74AS04)
同じ節に述べた 50-ohm 変換器を経由すれば、50-ohm 負荷も可能。
(ただし、最小パルス幅= 20ns、保証繰り返し周波数 max. = 25MHz。
)
外部トリガー入力:3.3V LVTTL or 5V TTL(入力バッファー IC = 74LCX125)
電源= 1.5V 単2電池1本。(DC-DC コンバータで 3.3V へ昇圧)
。電池寿命= 15 時間以上(連
続使用時)。
(AC 入力電源で設計すれば、この制限は無し。
)
外部パルス・トリガー動作を改良。
外部トリガーから、パル出力までのジッター= 0 〜 10ns 。
(デジタル型で 100MHz でサンプ
リングしているため。)
写真1 簡易型パルスジェネレーター(写真は ver.3 だが、小さな Slide-SW2 が追加されている。
)
詳細は回路図参照。シャーシ裏側には BNC コネクターがある。
-1-
外部トリガーからパルス出力が出るまでの遅延時間= 10ns +上記ジッター。
(2)特徴
小型、軽量、電池駆動でポータブル。高精度に長時間(5 秒)から短時間までのパルスを発生
できる。2パルス出力。外部トリガーからの遅延時間も高精度設定可能。
(分解能= 10ns なの
で、例えば外部トリガーパルスから 4.00000002 秒遅れた 30ns パルス幅のパルス発生も可能。
ただし、回路上の問題で遅延には max. 10ns のジッターがある。
)
(3)取説
写真1のように4つのプッシュスイッチとロータリエンコーダ、およびパネル前面のスナッ
プスイッチによってパラメータ設定を行う。
写真に示したパネル前面のトグルスイッチは以下の機能。アルミシャーシ前面の左側スイッ
チ=電源の ON/OFF。最右側スイッチ=外部/内部トリガー切り替え、右から2番目のスイッ
チ=外部トリガー極性選択(トリガー=立ち上がり / 立ち下がりエッジ)
。右側2つのスイッ
チは CPLD のピンに直接つながっている。それに対応する CPLD のピンは 10k ohm の抵抗で
+3.3V にプルアップされており、スイッチ ON によって GND に接続される事により、H/L レベ
ルが切り替わる。これによって CPLD の動作モードが切り替わる。外部トリガー・パルス入力
レベルは 3.3V-LVTTL か 5V-TTL レベル。
パルス周期やパルス幅等は AVR ボード上の SW1 〜 SW4 のプッシュスイッチ、およびロー
タリエンコーダによって設定する。
注:回路図にある SW2 というスライドスイッチ(プッシュスイッチ SW2 とは異なる、もう
一つのスイッチ。回路図参照。)は AVR のプログラミングが終わった後、AVR の PB4 (MISO)
ピンで Internal/External trigger のどちらのモードにあるかのトリガー選択スイッチの状態を読
むのに使用するので、AVR プログラムコネクターの 1 番ピンから、トリガー選択スイッチの方
を読めるように切り替えておくこと。また、プログラミング時には、その逆側にスイッチして
プログラミング信号が AVR に入るようにしてやること。このスイッチを正しく切り替えておか
ないと、AVR にプログラムが書き込めなかったり、AVR がプログラム実行時に突然、リセット
がかかってしまうなどのトラブルに見舞われる。
以下、各スイッチの働きを示す。
3-1 プッシュスイッチ2(SW2):メインパルス(すぐ出る)とサブパルス(遅延パルス)の
設定画面の切り替えを行う。押すごとにトグル切替動作となる。
3-2 プッシュスイッチ3(SW3)
:パラメータ選択。SW3 を押すごとに選択項目は切り替わっ
て行く。選択された項目の最初の文字の下にはカーソルマークが表示される。選択した項目の
値はロータリーエンコーダーで変えられる。
-2-
3-3 プッシュスイッチ4(SW4)
:パラメータの増減値を選択。SW4 を押し続けながら、ロー
タリーエンコーダーを回すと、SW3 で選択した項目の増減値を設定できる。この点は旧バージョ
ンの動作と異なる。
3-4 SW2 で切り替えて、メインパルス画面が表示されている場合は、SW3 で選択項目が次の
順で切り替わる。
メインパルス周期設定。ロータリエンコーダで増減。
メインパルス幅設定。ロータリエンコーダで増減。
メインパルスの発生モード設定。ロータリエンコーダで Continuous 発生/ Single 発生を選択。
(右回しで Continuous(連続発生)、左回しで Single(単発発生)
。
)
メインパルス極性の選択。ロータリエンコーダで変更。Pol+ で正論理、
Pol - で負論理パルス。
(右
回しで Pol+、左回しで Pol-。)
SW2 で切り替えて、サブパルス画面が表示されている場合は、SW3 で選択項目が次の順で切
り替わる。
サブパルス遅延時間。トリガーがかかった後、どれぐらいの時間遅延でサブパルスを発生する
かを決定。ロータリエンコーダで増減。
サブパルス幅。ロータリエンコーダで増減。
サブパルス極性。ロータリエンコーダで切り替え。
選択したパラメーター数値(OLED 画面でパラメーター文字の最初の文字に下線が追加される。
)
をロータリエンコーダで変更できる場合、SW4 を押すしながらロータリーエンコーダーを回す
と、増減値を切り替えることができる。右回転で増加、左回転で減少。
3-5 パルス発生(SW1、およびパネル前面スナップスイッチ)
SW1 を押すとパルス発生を ON/OFF できる。
パネル前面の Ext/Int トリガー選択スイッチが Internal であった場合、以下の動作となる。
SW1 によって、発巣発生の ON/OFF がトグルされる。押すと LED が点灯すれば、ON。消
灯 し て い れ ば、 パ ル ス 出 力 は OFF。SW1 を 押 す ご と に 切 り 替 わ る。 パ ル ス 発 生 モ ー ド が
Continuous(Conti)か Single の場合によって、かつ、トリガーが内部/外部の選択により、
以下に述べる動作の違いが生じる。Conti ならば、連続にパルスが発生する。Single なら一発
のみ発生する。パルス発生時でもパルスパラメーターは変更できる。SW2 や SW3 によって項
目を切り替え、パラメーター設定をロータリーエンコーダー等によって変えると、即、その変
更は反映される。
パ ル ス の 発 生 は 図 1 の よ う に な る。 メ イ ン パ ル ス(P1) は CPLD の counter-cnt = 0 を
サ ン プ リ ン グ し て、 そ こ か ら P1 を ON す る。 し た が っ て、 ス タ ー ト か ら 1CK (10ns) 遅
-3-
図 1 パルス発生とパラメーター
れ て 出 力 さ れ る。(Quartus フ ァ イ ル 参 照。
)P1 パ ル ス の 幅 は T1 パ ラ メ ー タ ー(10ns の
数 ) に よ っ て 決 定 さ れ、CPLD 内 部 の カ ウ ン タ ー(cnt) が T1 に 達 し た 後、10ns サ ン プ
リングにより、OFF される。したがって、P1 パルス幅は T1 パラメーターで決定される。
第 2 パ ル ス( 遅 延 パ ル ス = P2) の ス タ ー ト は T3 値( サ ブ パ ル ス 遅 延 時 間 ) に
よ り 決 定 さ れ る。 そ の OFF タ イ ミ ン グ は T4 パ ラ メ ー タ ー で 決 定 さ れ る。
(T4
- T3 が サ ブ パ ル ス の 幅 に な る。
) 両 者 は CPLD 内 部 の cnt 値 で ON/OFF さ れ る。
全体の周期は T2 パラメーターで決定される。CPLD 内部のカウンターである cnt(10ns
お き に 更 新 ) が T2 に 達 す る と、cnt を ゼ ロ ク リ ア ー し て、 次 の 連 続 パ ル ス 周 期 に 入 る。
以上は連続パルス発生の Conti モードであったが、Single(単パルス)モードでは、SW1 を
プッシュするごとに 1 パルスのみを出力する。遅延パルスである P2 も、遅延して出力される。
ここで、パルス出力を中断したい場合は、いつでも SW1 を再度押せば、パルス出力を取り
消せる。パルス出力がイネーブルされている際は LED1 が点灯しているが、いつでも SW1 を
押せば、出力をディスエーブルできる。
(これは、SW1 を AVR のインタラプト;INT0 に割り
写真2 シャーシ裏側。Eagle の回路図にある 74LCX125 はシャーシ裏面にある。その他、単 2 乾電池と
それを 3.3V にする Strawberry-Linux の MCP1640 モジュールが見える。黒く見えるのはリレーで電源が
立ち上がらない時にはパルスを出さないようにリレーがパルス出力を OFF するようしてある。
-4-
当てているため。)パルス出力の中断は、例えば 5 秒間のように長い周期を設定した場合に有
効である。
パネル前面の Ext/Int トリガー選択スイッチが External であった場合は、以下の動作となる。
Continuous 発生の場合は、SW1 によってパルス発生が ON になると、LED が点灯する。パネ
ル前面の外部トリガー極性スイッチが H 側の場合、外部トリガー入力が立ち上がりエッジにな
るとパルス(P1, P2)が出力される。極性スイッチが L 側の場合は、トリガー信号が立下がる
と、パルスが出力される。以後、外部トリガーパルスが来るごとに、上記動作を繰り返す。ト
リガーパルスの周期は T2 で設定された発生周期よりも長いことが望まれる。それよりも短いと、
再トリガーの開始がランダムに起こり、パルス発生にジッターが発生するので T2 や T4 を適切
に設定すること。
External 選択で Single 出力の場合、SW1 によってパルス発生状態を表す LED が点灯してい
る場合、極性スイッチが H 側である場合は外部トリガーの立ち上がりエッジで1発のパルスが
出力される。極性スイッチが L 側の場合は立ち下がりエッジでパルスが出力される。Single の
場合は、一発、P1 と P2 のパルスが発生し終わった時に LED は消灯し、次の外部トリガーでは
パルスは発生しない。この場合、再度、パルス発生したい場合は、SW1 を押して LED を点灯し、
外部トリガーパルス待ちとすること。
Single モードで外部トリガーの場合、外部トリガーが来て、パルス発生が終了した場合は、
CPLD から、その終了信号(CPLD 側では EndN2、AVR では EndN)によって、AVR に INT1 イ
ンタラプトがかかり、それによって LED を消灯し、パルス発生が終了したことを知らせる。 外部トリガー選択で Single モードの場合、もし、あまりに長時間、トリガーパルスが来ないこ
とが LED の点灯しっぱなしによって分かる場合には、再度 SW1 を押せば、外部トリガーによ
るパルス発生を取り消せる(LED は消灯する)
。
(4)パルス設定パラメーターと発生パルスとの関係(図 1 参照)
全体の周期= T2:T2 を CPLD 内部のカウンター(cnt:10ns おきに増加)を越えると次の周期。
メインパルス消滅までの時間= T1:cnt = 0 から T1 まで、Pulse1 を ON。実際には 10ns サン
プルのクロックサンプル遅れがあるので、10ns 遅れる。
サブパルス発生までの時間 =T3:遅延パルスである pulse-2 の開始時間を cnt 値で示す。この
値を超えると第 2 パルスが ON になる。
サブパルスの幅を決める時間 = T4:第 2 パルスを OFF する時間を cnt 値で示す。T4>T2 の場合は、
T2 になった段階で OFF される。
CPLD の内部には 30-bit のカウンター(Quartus project ファイルの block-diagram 回路の
cnt)があり、100MHz (=10ns) のクロックでカウントアップしている。パルス発生が AVR 側
から指令される(StartN=L)前はゼロクリアされている。パルス発生 enable 線(StartN)が
AVR によって enable されるとカウンター値は 10ns おきに増加していく。CPLD 内部には別に
4個の比較器(T1 ~ T4 に対応:Quartus project: PGen1_5.v 参照)がある。
図の P1 パルス(メインパルス)は cnt >= 1 になると H になる。その後、cnt = T1 に達する
-5-
と P1 値はゼロクリアされる。パルス発生周期は T2 で決まり、cnt がそこに達すると cnt=0 と
なり、また最初からカウントアップを始める。以上より、T1 と T2 のカウント値を設定する事
により、メインパルスの周期と時間が決まる。
サブパルス(P2)の場合は、周期はメインパルスの T2 で決まっているので、T3 と T4 を設
定してサブパルスをメインとは別に出力させる事ができる。発生法はメインと同様、cnt 値の
比較であり、cnt >= T3 で H になり、cnt >= T4 で L となる。P2 の幅がゼロ(P2 を発生させな
い選択)の場合は、T3 = T4 = T2 + 2 と設定する。サブパルスのパルス幅がゼロに設定された
場合はサブパルスを出さない設定なので、その場合は BASCOM プログラム側で、T3 = T4 = T2
+2 などとして、サブパルス出力を Disable する。
(BASCOM のプログラム参照。
)
T1 ~ T4 をどのように設定しているかは BASCOM-AVR のソースファイル PulGenSimple_
CPLD7.bas 、および Quratus Project フォルダー PulGen1_5 を参照。
(5)その他、使用上のヒントなど
その他の解説は同じ章にある ver.3 以前の解説やそれらの PDF ファイル等も参照。
パルスの設定に矛盾があると SW1 でパルス発生起動時にエラーメッセージが出て、パルス
発生はされない。パラメーターを正しく設定し直し、SW1 を押すとエラーメッセージは消えて、
正しくパルス発生が起こる。
サブパルスを出力したくない場合は、サブパルス幅をゼロに設定すること。
サブパルスをメインパルスと同時に出すことも出来、その際は遅延時間=0を設定すればよ
い。
周期 T2 よりも T4 時間が長い場合は、サブパルスは中途(T2)で打ち切られる。
メインパルスを pre-pulse として使用し、サブパルスを本体のパルスとする使用法もある。
本 器 は 10 ns 幅 の パ ル ス ま で 出 力 で き る が、3.3V CMOS レ ベ ル の 出 力 で あ り、200
オ ー ム 程 度 の 負 荷 ま で し か ド ラ イ ブ で き な い。200 オ ー ム 負 荷 で は 若 干 の 反 射 が あ
る が、 ど う し て も 10ns パ ル ス が 欲 し い 場 合 に は、 そ の よ う に し て 使 う 手 も あ る。
50 オームの負荷をドライブする場合は、
同じ章で紹介した別ユニットの 50 オームドライバー
を介してドライブする。その場合、ドライバーの応答速度の問題で、最低パルス幅は 20 ns ま
でとなる。
-6-
Fly UP