2019.10.21
前へ
次へ
ホームページトップへ戻る

[新連載]CPLD入門!
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
いつか使うことになるだろうと思ってはいたのですが。
何を今頃になって、というようなものですが。
ようやく本気で、CPLDと四つに取り組みます。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜



[第113回]


●CPLDロジアナ(3)

前回からの続きです。
PIC18F14K50とCPLD(EPM7128SLC84)を使って、とりあえずロジアナの基本的な動作をさせることができました。
USB経由で受信した測定データをWindows側のプログラムで16進数表示するところまではできたのですが、そのままでは面倒でとても使い物にはなりません。
やっぱり測定データをパルス波形として表示する必要があります。
実はCPLDロジアナの構想を考えた時点で、当然のことながら測定したデータをパルス波形として表示しなければならないことは認識していました。
そこで前回お見せしたハード回路の設計や、PIC18F14K50のプログラムやEPM7128SLC84のVHDLプログラムの作成と並行して、パルス波形の表示プログラムについても試行錯誤を重ねてきました。

私が今まで作ってきたC++プログラムは今では時代遅れともいうべきコンソールプログラムです。
あのコマンドプロンプトの黒い画面の中で実行されるプログラムです。
画面に文字表示を行なったり、キーボードから文字入力を行なうことからキャラクタユーザーインターフェース(CUI)などと呼ばれるアプリケーションプログラムです。
昔のDOSの時代でしたらグラフィックディスプレイ画面にドット表示で波形を描くこともできたでしょうが、今日のWindowsの時代ではそういうわけにもいきません。
なんとかコマンドプロンプト画面にグラフィック表示ができないものかと探ったりしてみたのですが、なんたってコマンドプロセッサの管理下にあるものですから、どうやらそういうこともできないようです(何かウラワザがあるのかもしれませんが)。
(この記事を書きながら、念のために、ということで改めて探ってみましたら、コマンドプロンプト画面にドットイメージで描画する方法をみつけました。今はとりあえずはGUI路線でいくつもりですが、私とすればやはりできれば使い慣れたCUI路線でいきたいですねえ)

そういうことになりますと、ここはどうしてもグラフィックユーザーインターフェース(GUI)に手を染めるしかなさそうです(数ヶ月前の認識として書いています)。
恥ずかしながら、この歳になるまでそんなものはさわったこともありません。
かくして多忙を極める中で、GUIプログラムのイロハから学びつつ、目的はただひとつ、なんとかロジアナのパルス波形を描くこと、ということで、一方ではCPLDのVHDLで苦闘しつつ、その一方ではGUIプログラムでも苦闘していたのが今年の5月ごろの状況でありました。
そういうことだったのですが、苦闘の甲斐あって、なんとかとりあえずパルス波形が表示できるところまでのプロトタイププログラムができあがりました。

そういうことでしたら、そのプログラムを使えばよいようなものですが、そのプログラムはPIC+CPLDロジアナを意識してつくったものなので、測定データはUSBで受信したものをパルス波形に変換して表示するように作りました。
しかしそれは仮にプロトタイプとして作成したものなので、USB経由で受信するデータはテスト的なデータです。
PICに指令してCPLDを動かしてロジアナデータとして受信する、なんてところまでは作成していません。

これはなかなかに悩ましいところなのですが。
前回お見せしたロジアナデータを受信するプログラムはCUIプログラムです。
一方パルス波形を表示するためにとりあえず作り上げたプログラムはGUIプログラムです。
いずれは前回のプログラムをGUIプログラムに統合して、最終的にはGUIプログラムとしてPICIO、CPLDの制御から測定データをUSB受信して波形表示するところまでを一本化するつもりなのですが、今そこに手をつけている余裕はありません。
とりあえずはCUIプログラムでUSB受信したロジアナデータをなんとか簡単に波形表示して確認することができれば、今はそれで満足です。

波形表示ということならば。
EXCELが使えるかも知れない…。
EXCELということならば、CSVファイルということになりましょう。
CSVとはデータを ,(カンマ)で区切ったテキストイメージファイルです。
それならデータ区切りとして ,(カンマ)を追加しながらファイルを作成すればよいので、それほど手間なことではありません。
そこでCUIプログラムを変更して、データを画面表示するとともにCSVファイルも出力できるようにしました。

ところが。
この歳になっても、まだ早飲み込みといいますか、早合点のところがありまして、EXCELのほうはろくに確認もしないで、そのようにプログラムのほうを先に変更してCSVファイルを出力してしまいました。
そのCSVファイルをEXCELにロードしてから、そこで初めて気が付きました。
EXCELに波形表示(シンプルな方形波表示)機能がない?
グラフ表示はありきたりの棒グラフとか折れ線グラフなどの統計グラフばかり…。
「がーん」
という感じです。
ううう。
なんてこった。
こんな簡単な図形が描けないなんて。

ま、あるいは色々調べれば、パルス波形を表示させるワザもあるのかも知れませんが。
そんなところに首をつっこんでいるよりも、結局のところ、以前にとりあえず作っておいた、GUIプログラムを手直ししたほうが早そうです。
いずれ将来はCUIプログラムとGUIプログラムを統合して、USB受信したデータを波形表示するつもりですが、今はとりあえずデータファイルを読み込んで、それをパルス波形として表示するように、一時的にプログラムを書き直しました。
とりあえずプロトタイプとして作り上げたGUIプログラムでUSB受信するデータはバイナリデータです。
その部分のみを変更してファイルからデータをロードするようにしました。
ファイルからロードするデータもバイナリということになります。

ということで、CUIプログラムのほうもせっかく変更してCSVファイルを出力するようにしたところを、また変更してバイナリファイルを出力するようにしました。
そのようにプログラムを直したところで、とりあえずテスト的にデータをファイル出力してみることにしました。
下はそのときのログです。

logfile piciolog\10171101.txt open
/in3 test1.bin
[c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0]
[c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0]
[c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0][c0]
end of in3
/adset 00
/adset 01
/adset 06
/adset 07
/in2 3e
[09][40][41][41][40][42][42][43][43][42][44][44][45][45][44][46][46][47][47][46][48][48][49]
[49][48][4a][4a][4b][4b][4a][4c][4c][4d][4d][4c][4e][4e][4f][4f][4e][50][50][51][51][50][52]
[52][53][53][52][54][54][55][55][54][56][56][57][57][56][58][58]end of in2
/in3 test1.bin
[59][59][58][5a][5a][5b][5b][5a][5c][5c][5d][5d][5c][5e][5e][5f][5f][5e][60][60][61][61][60]
[62][62][63][63][62][64][64][65][65][64][66][66][67][67][66][68][68][69][69][68][6a][6a][6b]
[6b][6a][6c][6c][6d][6d][6c][6e][6e][6f][6f][6e][70][70][71][71]
end of in3
/exit

リモート接続を終了しました
logfile closed at Thu Oct 17 11:02:37 2019

PICIOロジアナプログラム(CUIプログラム)はND80Z3.5などのZB3BASICプログラムをもとに作成したため、このようにログ機能付きです。
I/O制御を行なうにはこのようにログが取れると便利だと思います。
ただしロジアナに特化したGUIプログラムではログ機能は考えていません。
ロジアナにログは必要ありませんでしょう。
もちろんここで試したように、ロジアナデータをファイルとしてセーブする機能はつけるつもりです。

今回追加したコマンドは/in3です。
とりあえずのテストですから62バイトのデータをUSB受信して、それを画面に表示するとともにそのデータをバイナリファイルで保存します。

ところで、そのようにして作成したバイナリファイルが正しく作成されたかどうか、確認するにはどうしたらよいでしょうか?
そんなときにはこれで一発!決まりです。

昔のWindows98にはDEBUGという便利な16ビットアプリケーションがありました。
この画面はWindows98SEの画面です。
Microsoft様はあろうことかなかろうことかこの便利なコマンドを封印なさってしまわれたようで。
だから。
Windows98SEが余りに便利すぎて、いまだに手放すことができません。

おっと、そうでありました。
ND80Z3.5をお持ちでしたならば、これこの通り(ND8080などでもOKです)。

上の画面はWindows7にND80Z3.5を接続してZB3BASICを実行中の画面です。
ねえ。
便利でございましょ。

時間がなくなってしまいました。
次回に続きます。

CPLD入門![第113回]
2019.10.21upload

前へ
次へ
ホームページトップへ戻る