TMS7000

テーマ:

カテゴリー:

未動作のプロセッサが積み上がってる自覚はあるんですが、珍しいプロセッサ見かけるとつい買ってしまいます。一期一会な面がありますからね。

というわけでこれ。


Texas InstrumentsのTMS7000です。

TMS7000ファミリは8ビットのシングルチップマイコンですが、この7000はROM無しのものです。他に2kB/4kBのマスクROM内蔵のものやピギーバックなどもあります。

このファミリには動作モードが以下の5つあります。

PLLシンセサイザ(その12)

テーマ:

カテゴリー:

前回周波数カウンタ機能が動き始めたので今回はいよいよVCOのF-V特性の自動測定です。

D/A値を0~4095まで5刻みで増加させながら以下を実行していきます。

  1. D/A値をセット
  2. 1秒待つ
  3. D/A値と周波数をシリアルに出力

ターミナルソフトでこれを記録しておきグラフなどの処理を行ないます。

2.で待つのは2つの理由があります。

一つはVCOの応答を待つため、とは言ってもループフィルタなどは通っていないので遅延は大きくないはずです。

もう一つは...... こちらの方が重要です。前回書いたようにゲート時間は256msあり、しかもタイマ割り込みで非同期に動いています。仮にゲート時間が始まった直後にD/Aを変更したとするとその結果が出るのは256ms後になります。しかもゲート時間が始まってからVCOの周波数が変わるまでは不正な値をカウントしてしまいます。本来ゲートの切り替わりを2回待つべきですが、0.5秒以上待つことで済ませてしまいました。

PLLシンセサイザ(その11)

テーマ:

カテゴリー:

今回は...... PLLシンセサイザ関係ではあるのですが、ちょっと脱線してみます。

実験用に作った基板にはPLL ICの初期化用にAVRマイコンを搭載しており、VCOの実験用にD/Aコンバータも搭載しています。マイコンにはカウンタ・タイマも載っているのでちょっとソフトウェアを追加すれば周波数カウンタ機能も実現できそうです。

外部に周波数カウンタを接続すればいいではないかと思われるかもしれませんが、D/Aコンバータの出力を変化させながら周波数を測定できればVCOのF-V特性を自動的に測定できる可能性があります。

ということでまずは可能性を探っていきます。

周波数は簡単には1秒間のパルス数を数えれば良いわけですが、カウンタの桁数が多く必要になる上に測定時間も長くなるので、16ms間のパルスを数えて16で割ることでkHz単位の値を得ることにします。

高速Z80

テーマ:

カテゴリー:

Z80 CPUは以前にも取り上げました(1回目2回目)が、またまた買ってしまいました。


最高クロック20MHz版です。

今さら大昔のCPUを動かすのに速度を追求してもしょうがないと思ってクロック上限には拘っていませんでしたが、PLLが動き始めているのでオーバークロックで遊んでみても面白いかもと考えが変わってきました。

さらにDIP版の入手が難しくなってきたような話も聞いていたので、買えるうちに確保しておこうと思ったのでした。

はじめ安さに惹かれてeBayで買ったのはちょっと怪しかったのですが、追加で買ったこれはDigiKeyからなので真正品と考えられます。

PLLシンセサイザ(その10)

テーマ:

カテゴリー:

もう「その10」と2桁に達してしまいましたが、当面は何か進捗があるたびに書いていこうと思います。

今回は何が進捗したかというと、出力周波数を下げていくとロックしたりしなかったり不安定になる問題です。

1MHzというのはVCOを単独で動かして求めた可変範囲をもとに出せるはずと思っていたわけですが、ループフィルタの出力の範囲が狭い、あるいはその付近でVCOのF-V特性が急峻になっていて周波数が安定しない、という可能性もあります。

前回リングオシレータの電源云々と書いたのは後者の対策だったのですが、ちょっと実験するだけならもっと簡単な方法がありました。

それはリングオシレータを1段から5段に変更してみることです。これで同じ入力電圧に対する周波数は約1/5(容量などの影響でもうちょっと下がるはず)になります。

試してみると設定下限の300kHzまで安定に動作します。代わりに上限も下がって14MHz程度までしか出せなくなりました。

古のマイコン開発法(補足)

カテゴリー:

その1その3までの「古のマイコン開発法」に少し補足しておきます。

これ「無いものは(道具も含めて)作る」のですけど、道具の無い状態では作るのは大変なので「とりあえず必要最小限」を作ってそれを道具にして自分自身を改善していきます。最終的には不要なものでも途中で必要なものは作るしかありません。

持っているものがあれば楽になります。

PLLシンセサイザ(その9)

テーマ:

カテゴリー:

PLLシンセサイザの続きです。

間があいてしまったので今困っていることをまとめてみます。

  1. 基準周波数を下げると不安定になる
    100kHzではいいが一般的な10kHzにすると安定しない
  2. 出力周波数を下げると不安定になる
    1MHz付近まで下げると安定しない
  3. ロック検出をどうするか

1.と2.はループフィルタ問題だと思われるので本を読み漁っているのですが......

学生時代は制御研究室にいたこともあってフィードバック制御は馴染みではあるのですが、PLL回路には位相比較器とかVCOなどの見慣れないものが含まれています。本を頼りに求めてみたのですがどうも桁が違っているようで、何かを勘違いしているのかもしれません。

じっくり本は読み直すことにして、勝手のわかるフィルタ部分だけ先に求めてみます。

実験に使っているのは以下のラグ・リード・フィルタです。

古のマイコン開発法(その3)

カテゴリー:

その2で市販トレーニングキットと同じように使えるようになりました。

しかしまだハンドアセンブルしたバイナリを入力して実行することしかできません。何らかの高級言語を使いたいところです。そうなると16進キーパッドや7セグメントLED表示器では不足です。

というわけで......

キーボード
16進キーパッドと異なりスイッチを並べて自作するのは難しいですが、当時でもキーボードは入手できたようです。

もちろんUSBのような共通のインターフェイスがあったわけではありません。単にキースイッチが並んでいるだけで自分でマトリクスを配線しなくてはならないもの、マトリクスの配線までされているもの、エンコーダまでついているものなどがあったようです。マトリクスタイプならキーパッドの数が増えただけのようなものなのでソフトウェアの変更は容易でしょう。

ディスプレイ
表示装置そのものの製作は困難なので既製品を利用します。最も安価なのはテレビで代用する方法で、ビデオ入力が無い場合はRFモジュレータを用意してアンテナ端子から入力します。

古のマイコン開発法(その2)

カテゴリー:

その1でプログラムを実行できるようになりましたが、スイッチを操作して書き込むのは非常に手間がかかります。また電源を切れば消えてしまい、再度入力しなくてはなりません。

バッテリバックアップ
SRAMを電池でバックアップ(あるいは電源を入れっぱなしに)すれば毎回入力しなくて済むようになります。

プログラムを暴走させて壊してしまうリスクはありますが、RAMを2つ搭載して片方の書き込み信号をスイッチで切れるようにして保護する方法もあります。

キーパッド
16進キーパッドと7セグメントLED表示器を搭載すれば入力が楽になります。

これを制御するためのプログラムはスイッチ操作で入力する必要があります。必要最小限のプログラムをスイッチ操作で入力し、キーパッドが使えるようになったらそれを利用して機能を拡張していくことで効率よく入力できます。

カセットインターフェイス
カセットインターフェイスを製作すれば入力したプログラムを保存しておくことができます。

ページ