Quantcast
Channel: CPU実験室
Viewing all 226 articles
Browse latest View live

3D表示

$
0
0
回路図の入力、ボード上への部品配置がほぼ終わったところです
ボードエディタ上で3D表示を選択するとたちどころに3Dの実装イメージを見ることができます


イメージ 1

部品どうしの干渉が無いか確認できるだけでななく、最初から完成時のイメージがあるとモチベーションの持続が違います。
しかもリアルタイムでグリグリ回転させることもできます


イメージ 2

かんたんなレンダリングなので金属光沢とかガラスの透明さは表現できませんが、部品配置を見るならばこれで十分です。
Eagleにはレイトレーシングで3Dイメージを得るツールがあり、画像はリアルですがさすがにリアルタイムで動かすのは無理です。



やっちまいました

$
0
0
ボード図面上への部品配置もほとんど出来上がっているのですが
念のため回路図図面の見直しを行っています

気になっているのがCPUとVDPが1つの水晶を共有していること。
データシートにそのような配線例が記載されているのですが実装状態ではIC間がかなり離れているので
未使用になるかもしれませんが専用の水晶を追加しました。

またペリフェラル通信用のCRUCLKは反転する必要がありそうなので7404を1個追加。
そのほかパスコンもちょっと付け足ししてネットファイルを作成し、これを現状配置済のボードに読み込めば
追加した部品だけ手作業で動かせばOK・・ だったのですが

どうも後から追加した部品のリファレンス番号が飛んでいるのが何か気になって、
うっかり全アノテーションクリア、再アノテーションをかけてしまいました。
リファレンス番号はきれいに並びましたが、これを配置済のボード図面に追加読み取りをすると

エラーの嵐、

イメージ 2

まーこれは当たり前といえば当たり前なのですが、すでに配置済のフットプリントのリファレンス番号と
ソートしてしまった新しいリファレンス番号では対応する部品が違いますからピン数が合いません。
ネットファイルを読み込むとき「フットプリントの交換→変更」にチェックすれば一気に解消されますが
今度はせっかく配置した部品位置がぐちゃぐちゃになります

イメージ 3

2端子の抵抗やコンデンサはエラーこそ出ないものの、本来「ここに置きたい」場所と違う場所に配置されて
いるわけでこれはもうやり直すしかありません
Eagleで云う「スケマチックとボードのアノテーションが切れた状態」になっちゃったわけです

ボード図面からコンポーネントと配線を引きはがし、改めてネットファイルを読み込み。
とりあえず自動配置をかけたところです。


イメージ 1

みっちり感とあまりにテキトーな配置で気が遠くなりそう

オートルータ

$
0
0
久々更新です
部品をボード上にやっと再配置してオートルータをかけました。

KICADから独立したこのFreeRouteは非常によくできています。
Eagleのルータは数時間格闘した挙句未配線ネットが残ってしまうことがありますが
FreeRouteではざっくりとした接続はものの5分くらいで終わってしまいます。
その後にオプティマイズが走り出しビアの数やルートの長さを少しでも少なくしようと一生懸命やっているのが
いじらしく見えてきます。
このオプティマイズはいつ中断してもネットの整合性はとれているので、頃合いを見て中断・完成としてよさそうです。
途中で部品の配置がおかしくて変なルートを通るようであれば中断、完了した配線を全てリップアップして部品を動かしてから再ルーティングを繰り返しても苦ではありません


イメージ 1

ただこの最適化が一体いつ終わるのかが皆目見当がつきません。
接続完了直後に250個くらいあったビアが4時間くらい放置したら85個まで激減していたのでこれで良し。と中断してKICAD側へ書き戻しました。

配線はとてもきれいに仕上がっています。バスラインなど同じ方向へ行くラインは大体束ねられて信号の流れがなんとなくわかるような感じです

ただちょっと気になるのがICピンのパッドからのラインの引き出しが、何故かわざわざピン間の狭い方向に引き出そうとしている点です。
パッドにそういう属性を持たせているのかもしれませんがDRCのクリアランスチェックも通るのでそのままとしておきます

イメージ 3

本来は電源など主要配線は手書き、残りを自動配線して、さらに細かいところを手修正するのでしょうが
今回はもうオートルータに完全お任せです。

GNDのベタも追加してなかなか良い仕上がりになりました


イメージ 2


基板発注

$
0
0
ガーバーで出力してみたところです
スルーホールも大量にあるしさすがにこれは手作り。というわけにはいかないので外注します

イメージ 1

いままではフリーのEagleの制約で80×100mmくらいの基板しか発注していませんでしたが
今回はじめて倍の大きさ100×150mmでの作成となります

値段が一気に高くなるのは仕方ありません

イメージ 2


シンボル作成

$
0
0
KICADでの基板設計がうまくいったので放置していた8086プロジェクトでもやってみようかと
再始動です
標準のライブラリに80系のチップはほとんどなく
かろうじて含まれていたのが8088、8259、8284ぐらい。これらをコピー編集して80系周辺のライブラリを
作成しています

イメージ 1

部品配置

$
0
0
基板に乗るかどうか、取り急ぎ主要IC類のみ回路図に貼り付けて未配線のままボード上で
部品配置をしてみました。
アドレスラッチ、バスバッファも入れると100*150mmの基板でもうギリギリです
SRAMはV50ボードと同様のワード幅のものを使っています。

イメージ 1

デザインルール、シルク等はTMS9995ボードが到着し、仕上がりを見てから検討することとします



イメージ 2

輸送追跡

$
0
0
fusionPCBへの発注が10/7夜、
翌日10/8にはprocessingとなり、11日に「送ったよ」のメールが来ました。
ステータスもtraceableになって、これは早い!と思っていたんですがそこからが全く音沙汰無し。
番号追跡も引っかかりません。
ステータスもいつの間にかAwaiting Packageに戻ってしまっていて、どうなっちゃったの~?て感じです

人の心配をよそに季節柄とはいえこんなお遊びしてるし。

イメージ 1


ようやく今日になって郵便追跡に引っかかるようになりました。
まぁやっぱり2週間。別に遅いわけではありません

でも毎回謎なのは音信が途絶える中国からシンガポール間の流れ。
まさか飛脚や馬が運んでるわけではなく自前の輸送手段なんでしょうが
月の裏側にいっちゃってると思うしかありません

イメージ 2


CPUまわり

$
0
0
CPU周りから配線を入力していますが、ちょっと困ったのが8086と8087、さらには8089間での相互接続の
方法です。

イメージ 1

もちろんそれぞれのデータシートには簡略化された信号系統図はあるのですが省略されている部分もあり
いまいち具体性に欠けます
特に複数のプロセッサを調停するRQ/GT信号の処理とか実装例を見てみたいのですが
「8086,8087」とかで検索してもなかなか良い情報にヒットしません。
公開されているIBM-PC/XTの回路図からパクる、という手もありますが。

ネットが世界の全てとまでは云いませんがこれはもう不要なロストテクノロジ。紙ベースの資料がどこかの書庫の奥で眠っているだけなんじゃないかと諦めかけていたんですが。ちょっと思いついて8086とその周辺のチップセットの総称である「iAPX86」で検索したらあっさりとヒットしました。iAPX86ユーザーズマニュアル!

イメージ 2

・・やっぱりネットは世界の全てを網羅しているのか・・・・?

ともあれこれで8086-8087間、さらには8089との結線までも明確になり
デバイスの使い方も詳細に説明されているのでバッチリです


イメージ 3




基板到着

$
0
0
fusionPCBの基板到着しました
今回は約20日です 
部品をそろえるのもこれからだしまあボチボチやっていきます


イメージ 1

シンガポール郵便局までの動きは結局わかりませんが、郵便局内での動きを見てみると
いったんカントリーコード「ID」にディスパッチされ慌ててキャンセル「JP」に訂正されています

まぁ「ID」と「JP」って確かに字面は似てるけど目視で入力するわけでもないだろうし、
こんな間違いするんでしょうか
あやうくインドネシアに送られて迷子になるところでした

イメージ 2





基板仕上がり

$
0
0
前回はひしゃげた箱でしたが今回は緩衝材付きの封筒に入ってきました

イメージ 4


枚数は5枚発注できっちり5枚。真空パックされています


イメージ 1

基板の仕上がり状態です。
こういう平たいものはスキャナで撮るのが最適です。というかプリンタについていたスキャナ機能を
買ってから初めて使ってます

イメージ 2
イメージ 3

Eチェックはされているはずなんでいいとして、シルクもきちんと出ているし
ちょっと心配だった長穴加工もやってくれています


メモリ周り

$
0
0
引き続き、回路図の入力中。

メモリ部は1Mビット(8ビット×128kバイト)ROM2個と1Mビット(16ビット×64kワード)SRAM1個で構成されています

イメージ 1


ボード上でラッツネストを表示するとバスバッファ、ROMのPLCCソケットとSRAMのSOJあたりが
配線が込み合ってえらいことになっています。
果たしてルーティングができるでしょうか


イメージ 2

しくじり先生 1

$
0
0
せっかく出来上がったTMS9995ボード。
そろそろ部品実装を始めようかと基板の細部を点検していました。

ガーバーデータ裏面表示

イメージ 1

実物裏面

イメージ 2

よしよし、設計通り良く出来てるじゃん

画面左上隅のチップトランジスタQ1ですがこれはリセットスイッチをパラでオープンコレクタで引っ張るもので
RS232制御信号でボードにハードリセットをかけるために用意したのですが
念のためピンアサインを確認したら

イメージ 3

あら~ ベースとエミッタ入れ違ってましたー
また表面からの透視してみた状態での確認だったので見落としてた、てのもありますが
これはチップを裏返し(仰向け)に取り付けるしかないですね

Eagleはシンボルと外形、フットプリントが膠着的でスケマチック入力する段階で形状も確定していますが
KICADではコンポーネントとフットプリントの関連付けをCvPCBで後から行う自由度があるのでやらかしました




オートルータ実行

$
0
0
回路図入力は8割がたできたので今の状態ではたしてルーティングができるか実行させてみました
2時間くらいでルーティングがPASS20くらいまで進みましたがまだ未配線が60本以上残ってしまいました・


イメージ 1

ここから先はPASSが1つ進んでも配線が確定するのが1本くらい。
今後どんどん遅くなっていくでしょうからおそらく無限時間実行させても配線が終わらないでしょう
FreeRoutorのマニュアルにも「PASSが30まで進んでも配線完了しなければ諦めろ」と書いてあるので
これはもうダメっぽいです。部品の配置を考え直すしかありません。

上の図は見にくいですが未配線が残っているのはやはりROMとSRAMの周辺です。

部品交換

$
0
0
どうもPLCCソケット間のパラつなぎで引き回しが破綻してそうなのでROMはワード幅の40ピンDIPのもの
に交換してみました。
これで少なくともアドレスバスの数珠つなぎは軽減されます。ただ場所は取るのでSRAMの置き場所に
困りました。
バイト幅のROMとRAMはほぼピンアサインが同じなのでROMと亀の子に配置する・・ROMのICソケットの下に
仕込むことでバス接続が大幅に楽になるというテクニックがありますが
ワード幅のメモリではワザとだろ、と思うくらいバラバラ。

イメージ 2

ただどうしても置き場所がないので配線上のメリットはありませんがROMの真下にSRAMを配置。
オートルータをかけるとなんとか結線は完了しました


イメージ 1

基板上の部品配置イメージです
40ピンのCERDIPだらけの黒っぽい地味な基板になってきました

イメージ 3


部品実装(1)

$
0
0
ポチポチと部品実装を始めています。
どうせ工具を広げんるんでついでにTMS320C25ボードの2枚目も同時に作業しています

パスコンとかプルアップ抵抗、LEDなんかは同じ値なので並べて一気に付けてしまったほうが
在庫部品を探し出すのも手間が省けるわけです

イメージ 1

パスコンなどは基板裏面なのであまり進んでないようにも見えますが。

表面から見えるのはインジケータ用のLEDまわりでデータバスを74574でラッチしてLEDを点灯させます
8ビット幅で5個しかLEDが見えませんが残り3ビットはMAX7219用の制御線に割り振っています

イメージ 2


部品実装(2)

$
0
0
まずCPU,RAM、ROM、GALのICソケットのみ実装しました
この最小ハードでCPUの動作確認からしていきます

イメージ 1

ライブラリ修正

$
0
0
8086システムもほぼ回路入力が完了したので検図、細かいところの修正を進めています
自作のライブラリは十分チェックが必要ですが、念のため既存ライブラリから選択した部品も
確認していたらミスが見つかりました

標準で付属しているintelライブラリに含まれる割込みコントローラ8259ですが/WRと/RDピンが
入れ違って作成されています。まぁ今時8259が載った基板を作成する人なんていないでしょうか。

標準のライブラリをコピーしてピンを入れ替え、修正したものをローカルのmylibへ登録しておきます

イメージ 1

CPU挿入

$
0
0
CPUを動かすのに最小の環境としてリセット回路とクロック用の水晶をはんだ付けし
CPUのみソケットに挿入。電源を入れてみました。

イメージ 1

無事水晶は発振し、3ピンのCLKOUTには原振12MHzを4分周した3MHzが出ています。

イメージ 2

バスは完全に浮いているのでむちゃくちゃなコードをフェッチして暴走しているようで
アドレスバスもデータバスもそれぞれパタパタ動いているので、おそらくCPUも大丈夫でしょう

デコーダ作成

$
0
0
ROMとRAMへのチップセレクト信号を出すためのアドレスデコーダを作成します
実際には他にI/Oがいろいろありますが取り急ぎメモリ周りのみ。

もっとも簡単にROMは0000H~7FFFHまで。SRAMは8000H~FFFFHまでとそれぞれ32kBづつ
割り振ればアドレスの最上位ビットのみで切り替えができます。
ispLEVERの回路図エディタでゲートを貼りつけて入力。

イメージ 3


引き込んでいるアドレス線がA0なので一瞬ぎょっとしましたがTMS99XX系ではA0がMSBなんですね。
何か慣れません。
デバイスにGAL22V10を選んでコンパイルかけると、瞬時にJEDECファイルが生成されます

イメージ 2


GALライタ「らい太くん」で焼き付けて、これまた手製のGALテスタで動作確認しています。
MEMENとA0に対応するDIPスイッチ操作でチップセレクト信号に接続したLEDのON/OFFで
容易に動作検証ができます

イメージ 1



最小プログラム

$
0
0
CPUとROMだけの環境ですがまずは最小のプログラムを動かしてバスの挙動を見てみます。
いつものことですが

       JMP $    からですね

コードにするにはハンドアセンブルでも容易だし、TLCS90で使ったアセンブラASでも対応しているようですが
Windows上で動作するアセンブラを見つけました。

日本ではTMS99XXはメジャーではありませんが米国では1980年代にテキサスインスツルメンツ社製の
TI-99/4というホームコンピュータが結構ヒットしたようで今も熱心なマニアのフォーラムがあるようです
エミュレータも作られていて、それに付属しているアセンブラを使ってみました。

イメージ 1

TMS9995は0000番地から割込みベクタが並んでして、その先頭がリセットベクタです。
CPUはコールドスタート時に0000番地の1ワードをWP(ワークスペースポインタ)へ
0002番地の1ワードをPC(プログラムカウンタ)へセットしてその番地へジャンプします

結果、コードはこのような具合になりました。

イメージ 2


これをROMに焼き付けて実行させてみました。
アドレスバスは80Hと81H、データバスは10HとFFHを繰り返し出力しているはずですが
ロジアナをプローブするのも面倒なのでデータバスのLSB(D7) ・・ch1と
ROMの/OE ・・ch2 の状態です

イメージ 3

たしかに2バイトのフェッチを繰り返しているのでたぶん正常でしょう。



Viewing all 226 articles
Browse latest View live