TMS7000
カテゴリー:
未動作のプロセッサが積み上がってる自覚はあるんですが、珍しいプロセッサ見かけるとつい買ってしまいます。一期一会な面がありますからね。
というわけでこれ。
Texas InstrumentsのTMS7000です。
TMS7000ファミリは8ビットのシングルチップマイコンですが、この7000はROM無しのものです。他に2kB/4kBのマスクROM内蔵のものやピギーバックなどもあります。
このファミリには動作モードが以下の5つあります。
未動作のプロセッサが積み上がってる自覚はあるんですが、珍しいプロセッサ見かけるとつい買ってしまいます。一期一会な面がありますからね。
というわけでこれ。
Texas InstrumentsのTMS7000です。
TMS7000ファミリは8ビットのシングルチップマイコンですが、この7000はROM無しのものです。他に2kB/4kBのマスクROM内蔵のものやピギーバックなどもあります。
このファミリには動作モードが以下の5つあります。
前回周波数カウンタ機能が動き始めたので今回はいよいよVCOのF-V特性の自動測定です。
D/A値を0~4095まで5刻みで増加させながら以下を実行していきます。
ターミナルソフトでこれを記録しておきグラフなどの処理を行ないます。
2.で待つのは2つの理由があります。
一つはVCOの応答を待つため、とは言ってもループフィルタなどは通っていないので遅延は大きくないはずです。
もう一つは...... こちらの方が重要です。前回書いたようにゲート時間は256msあり、しかもタイマ割り込みで非同期に動いています。仮にゲート時間が始まった直後にD/Aを変更したとするとその結果が出るのは256ms後になります。しかもゲート時間が始まってからVCOの周波数が変わるまでは不正な値をカウントしてしまいます。本来ゲートの切り替わりを2回待つべきですが、0.5秒以上待つことで済ませてしまいました。
今回は...... PLLシンセサイザ関係ではあるのですが、ちょっと脱線してみます。
実験用に作った基板にはPLL ICの初期化用にAVRマイコンを搭載しており、VCOの実験用にD/Aコンバータも搭載しています。マイコンにはカウンタ・タイマも載っているのでちょっとソフトウェアを追加すれば周波数カウンタ機能も実現できそうです。
外部に周波数カウンタを接続すればいいではないかと思われるかもしれませんが、D/Aコンバータの出力を変化させながら周波数を測定できればVCOのF-V特性を自動的に測定できる可能性があります。
ということでまずは可能性を探っていきます。
周波数は簡単には1秒間のパルス数を数えれば良いわけですが、カウンタの桁数が多く必要になる上に測定時間も長くなるので、16ms間のパルスを数えて16で割ることでkHz単位の値を得ることにします。
まだまだ暑い日が続いておりますがピークは過ぎたようで、暑さで控えていた外食の回数が増えてきました。
なんでも東京はこの8月が全て真夏日だったらしく...... 観測史上初だそうです。
というわけで今月のお買い物です。
もう「その10」と2桁に達してしまいましたが、当面は何か進捗があるたびに書いていこうと思います。
今回は何が進捗したかというと、出力周波数を下げていくとロックしたりしなかったり不安定になる問題です。
1MHzというのはVCOを単独で動かして求めた可変範囲をもとに出せるはずと思っていたわけですが、ループフィルタの出力の範囲が狭い、あるいはその付近でVCOのF-V特性が急峻になっていて周波数が安定しない、という可能性もあります。
前回リングオシレータの電源云々と書いたのは後者の対策だったのですが、ちょっと実験するだけならもっと簡単な方法がありました。
それはリングオシレータを1段から5段に変更してみることです。これで同じ入力電圧に対する周波数は約1/5(容量などの影響でもうちょっと下がるはず)になります。
試してみると設定下限の300kHzまで安定に動作します。代わりに上限も下がって14MHz程度までしか出せなくなりました。
PLLシンセサイザの続きです。
間があいてしまったので今困っていることをまとめてみます。
1.と2.はループフィルタ問題だと思われるので本を読み漁っているのですが......
学生時代は制御研究室にいたこともあってフィードバック制御は馴染みではあるのですが、PLL回路には位相比較器とかVCOなどの見慣れないものが含まれています。本を頼りに求めてみたのですがどうも桁が違っているようで、何かを勘違いしているのかもしれません。
じっくり本は読み直すことにして、勝手のわかるフィルタ部分だけ先に求めてみます。
実験に使っているのは以下のラグ・リード・フィルタです。
その2で市販トレーニングキットと同じように使えるようになりました。
しかしまだハンドアセンブルしたバイナリを入力して実行することしかできません。何らかの高級言語を使いたいところです。そうなると16進キーパッドや7セグメントLED表示器では不足です。
というわけで......
キーボード
16進キーパッドと異なりスイッチを並べて自作するのは難しいですが、当時でもキーボードは入手できたようです。
もちろんUSBのような共通のインターフェイスがあったわけではありません。単にキースイッチが並んでいるだけで自分でマトリクスを配線しなくてはならないもの、マトリクスの配線までされているもの、エンコーダまでついているものなどがあったようです。マトリクスタイプならキーパッドの数が増えただけのようなものなのでソフトウェアの変更は容易でしょう。
ディスプレイ
表示装置そのものの製作は困難なので既製品を利用します。最も安価なのはテレビで代用する方法で、ビデオ入力が無い場合はRFモジュレータを用意してアンテナ端子から入力します。
その1でプログラムを実行できるようになりましたが、スイッチを操作して書き込むのは非常に手間がかかります。また電源を切れば消えてしまい、再度入力しなくてはなりません。
バッテリバックアップ
SRAMを電池でバックアップ(あるいは電源を入れっぱなしに)すれば毎回入力しなくて済むようになります。
プログラムを暴走させて壊してしまうリスクはありますが、RAMを2つ搭載して片方の書き込み信号をスイッチで切れるようにして保護する方法もあります。
キーパッド
16進キーパッドと7セグメントLED表示器を搭載すれば入力が楽になります。
これを制御するためのプログラムはスイッチ操作で入力する必要があります。必要最小限のプログラムをスイッチ操作で入力し、キーパッドが使えるようになったらそれを利用して機能を拡張していくことで効率よく入力できます。
カセットインターフェイス
カセットインターフェイスを製作すれば入力したプログラムを保存しておくことができます。