8桁周波数カウンタ高性能8桁周波数カウンタ高速動作のCPLDをカウンタ部に使い、表示部をPICで分担した高性能8桁周波数カウンタです。【概要】この周波数カウンタを作ると最大50MHz以上の周波数カウンタが単体で可能となります。前項のPIC2個による8桁周波数カウンタも便利ですが、単体では20MHz程度の周波数範囲に制限されるので、少し物足りない範囲でした。Device)を使い、VHDLでカウンタ回路を構成しました。これで設計上は、85MHzまではカウント可能です。表示部分にはセグメント発光ダイオードを使いましたが、この制御にはPIC16F873を使いました。CPLDがBCDで直接カウントしてくれるのでPIC側は、セグメントデータに変換するだけという至って簡単なプログラム構成となっています。ISEで開発しました。この詳細はVHDLの下記ページを参照して下さい。制御基板内は、入力アンプ、カウンタ部、表示制御部の3つの部分から構成します。制御基板内のカウンタ部は、CPLDで構成し、入力アンプで増幅され整形された信号をCPLDに直接入力して8桁のBCDでカウントします。毎回カウント結果の8桁のBCDデータを表示制御部のPICのポートへ出力します。表示制御部はPIC16F873で構成し、カウント部にカウント開始指令信号を出力したらbusy信号がoffになるのをチェックします。busyが解除されたら8桁ののBCDデータを1桁ずつ直接入力し、それをセグメントデータに変換して表示部に出力します。クロックには12.8MHzの高精度水晶発信器を使用して1ppmという高精度を確保します。その出力を直接CPLDに入力するとやや不安定になるので、一旦74AC14でバッファしてから加えます。PICにも同じクロックを使っています。入力アンプはお決まりのパターンの回路ですが、トランジスタにはfTが1GHz以上の周波数特性の良いものを使います。波形の崩れたパルスでも誤カウントしないようにします。CPLDのピン配置は自由に決められますので、PICとの配置で配線しやすい出し方とすることが出来ます。XC9572の内蔵マクロモジュールを98%程度使ってしまっていますので入りきるように配置を設定する必要があります。PICは、ポートAを全て入力、ポートBとCは全て出力として単純にディジタル入出力だけで使っています。ポートCの下位は、発光ダイオードの桁ドライブと、CPLDからデータ入力をする時の桁選択指定と共用していますので、CPLDとデータをやり取りする間は、セグメントを全てOFFとして表示が乱れないようにする必要があります。ポートBは7セグメントを直接ドライブしますので、Highで電流供給して点灯することになります。従って電流制限用の抵抗を220Ωとして、セグメント当たり15mA程度にしています。桁ドライブはセグメントの合計で最大100mA程度が流れますので、トランジスタでドライブします。FETを内蔵したICを2個使っています。CPLDを実装したままプログラミングができるように、JTAGの端子を用意しています。ここにXilinxのプログラマのJTAG信号を接続すれば、電源を入れたまま機能を書き換えて即動作させて確認することが可能となります。表示制御にはPIC16F873を使いました。この中のプログラムはCPLDが基本的な機能を全部代わりにやってくれるので、至って簡単な構成で済みます。全体の流れは下図のフローチャートのようになっていて、まずポートの初期化を実行します。この中では、PIC16F87xシリーズの特徴である、デフォルトでIOポートがアナログ入力になっていますので、全部ディジタルモードで使うように設定しておきます。最初にCPLDに対してカウント開始指令(trigger)を瞬時パルスで出力してから、あとは、ダイナミック点灯制御のループの繰り返しだけで、8桁の表示データをBCDデータからセグメントデータに変換してポートBに出力します。全桁の表示が完了した時点で、CPLDのカウントが終了したかをbusy信号をチェックすることで行います。カウント中なら表示制御を繰り返します。カウント終了が判定できたら、CPLDからカウント結果のBCDデータを順次8桁分読込み変数データに格納します。これを格納すれば自動的に表示データとして次の表示サイクルで使われますので表示内容が更新されることになります。このPICのプログラムソースは書きとなっています。クリックすればそのまま見られます。アセンブラソースファイル【表示基板】セグメント発光ダイオードを使った表示基板を組み立てます。今回使用するセグメント発光ダイオードはカソードコモンタイプです。表示部分の回路図は下図のようになります。簡単な回路ですので問題は無いでしょう。小数点も表示できるようにジャンパで接続できるようにコネクタに端子を出しておきます。(下図は拡大できます。)【製作】ケースにはタカチの見かけが計測器タイプのプラスティックケースを使いました。穴あけは、発光ダイオードが長方形の大きな穴となるので、やや面倒ですが、あとは丸穴だけでですので楽に組み立てが出来ます。各基板の回路図とパターン図は、WinDraftとWinBoardで作成しましたが、そのファイルを下記からダウンロード出来ます。ケース内実装も前項のカウンタをそのまま利用した。セグメント発光ダイオードのパネル部分はL金具で固定し、前面パネルにはアクリル板を両面接着テープで固定しています。発光ダイオードの表示面はアクリル板にぴったり当たるように固定します。電源はトランスとブリッジダイオード、電解コンデンサで構成しています。電解コンデンサを両面接着テープで固定しトランスとの間にダイオードブリッジを空中配線で固定しています。そのまま動作させることが出来るので非常に便利である。