CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

ADSP2k

PROMスプリッタ

ここまでコードができて、そのフォーマットも開示されていればあとは煮るなり焼くなり(ROMに)好きにすれば良いのですが、この開発ツール一式には親切にそのためのプログラムがちゃんと含まれています。 PROMスプリッタはメモリイメージファイル(.EXE)を…

リンカ実行

アセンブラが吐いたオブジェクトをリンカで結合します。この時、最初に作ったアーキテクチャファイル(.ACH)も一緒に読み込まれてメモリの実アドレスが決定します。 リンカも最初usageを出してみましたが、正常実行されると外部定義を参照した旨のシンプルな…

アセンブル実行

ハンドアセンブルでやってみたLEDチカチカのソースコードをそのままアセンブルしてみます。 最低限必要なアセンブラへのディレクティブ:.MODULE~.ENDMODで囲み、どこのメモリ空間に配置するか・・セクション指示としてBOOTメモリのpage0とします。 あとSYS…

開発ツール

ADSP2101のアセンブラはどうしようか、といろいろ検索していたところ、やっぱり御本家AnalogDevicesのものに辿り着きました。現行のGUIをつかった統合環境ではなくDOSのコマンドプロンプト上で動作するツールです。アセンブラの他にCコンパイラ、ランタイム…

リセット異常

自走するLEDチカチカはできたのですが、電源OFF/ONを何度も繰り返していると時々プログラムが開始されない(LEDが消えたままになる)ことがあります。マニュアルのリセットボタンを押すと正常に始まるのでパワーオンリセットがうまくいってないようです。 電…

チカチカ実行

できあがったコードに4バイトごとに空のバイトを挿入してDWORD境界にアライメント、有効なコードは7ワードしかないので最初の空きバイトの値は00のままとしてブートROMのイメージを作成しました これをソケットにセットして電源ON。パラレルLED全ビットが点…

Lチカプログラム

プログラム空間0x3f40にあるパラレルLEDのポートにインクリメントデータを出力するプログラムを書いてみました。16ビット長の汎用データレジスタAY0をカウンタとして使い、その下位8ビットをPXレジスタにコピー。ダミーのデータレジスタAX0を連結した24ビッ…

I/Oアクセス

プログラムが動いているのを外から見えるようにするにはパラレル接続したLEDをチカチカさせれば簡単です。 I/Oは根本的な設計ミスからプログラムメモリ空間の下位8ビットに接続されていて、データ空間からは厳密なハーバードアーキテクチャではアクセスでき…

ブートローダ

最初に動かしてみるコードは出来上がりました。普通ならこれをROMにそのまま焼いて電源ONとなるのですが、今回のADSP-2101はブートシーケンスの仕組みがあるのでちょっと下準備が必要です。 まず電源ONで最初に実行されるプログラムはブートメモリ空間にある…

開発ツール

DSPはバスを駆動しているので動きそうな雰囲気なのですがプログラムはどうするか・・です。 本家AnalogDevicesは統合環境VisualDSP++というIDEツールを公開しています(最新のVer5.12はBlackfin、SHARCに特化しているようですがVer3.5はADSP21xxに対応) こ…

ボード初通電

DSPの動作周波数ですが、今手持ちのADSP-2101KG-40というのはデータシートからはすでに型落ちしています。ですが別の速度バージョン-66,-80,-100から類推すれば10MHz動作ということになるでしょう。シリアル通信も考慮してここでは9.8304MHzの水晶を取り付け…

ロジック変更

この大失敗をリカバリするには、I/Oをプログラム空間にマッピングすればいけるんでは、というのはすぐ思いつきます。 プログラム空間であればD7-D0に有効なデータを乗せることができます。プログラムメモリの最後の256バイトを潰してI/Oを割り付けました。 …

アドレスデコーダ

DSPソケットに電源、リセット、クロックが来ていることが確認できればもうADSP2101を挿入してしまってバスの挙動が見れるはずです。ただ表面実装のペリフェラルをすでに半田付けしてしまったのでこれが変に影響しないよう、コントロール信号を生成するGALの…

インデックスピン

デジタル系は手持ち部品をどんどん付けていってますが、ICソケットが付いたのでそろそろCPU周りの通電テストができます。 左上の68ピンPGAソケットにはADSP2101が刺さりますが、あれなんかピンが1本足りないんじゃ? パタン図を見るとオレンジ矢印が差すと…

部品実装中(2)

アナログ系の手持ちがない値のものを除いてチップ部品は実装してしまうことにしました。部品表もグレイアウトが進んでます 表側 裏側 今回はフットプリントにはかなり注意していたので今のところ問題ありません。たとえば以下は16ピンのMAX202と14ピンの74HC…

部品実装中

チップCR、LEDなど手持ちのものから付けていってます。 ただ見た目は相変わらずほとんど変化なし。 部品表も順調にグレイアウトが進んでますが。 ですがデジタル系のCRを付けたところでちょっと行き詰りました。 デジタル系では使うCR類の値はだいたい決まっ…

ADSPプロジェクト再開

外注基板が出来上がったまま放置していたADSP2101ボードの部品実装にやっと着手しました。 いつものようにパスコンを付けていきますがこのボードはデジタルアナログが混在するため電源ライン、GNDを分離して設計したつもりです。 デジタル系の0.1uFチップコ…

絶縁シート

今回、細部までチェックしないで出図してしまったためちょこちょこまずいところが出ていますがもう一つ気になるところが。 金属ハーメチックシールの水晶ですがパッケージの下の基板表面に盛大にパタンが引かれてしまっています。禁止領域を確保してベタGND…

仕上がりチェック

今回の設計で不安だったところがもう一つあって、基板端ぎりぎりまでラインが引かれてしまっていることです。オートルータにライン幅とライン間ピッチを与えて自動配線された結果、もっともギリなのが基板上部を走っている以下の部分です。 ここのところを拡…

基板チェック

普通であれば別プロジェクトもあるし、あとのお楽しみで開封しないで取っておくところですが、ちょっと気になるところもあり開けてみました。 見た目良くできています。シルク白ベタのメモ欄もちゃんとできていました。 何が気になるかというと、やはりΦ3.5…

基板到着

ADSP2101用の基板が早くも到着しました。ChinaPost経由ではどこでどうなっちゃんてんだかわからないデッドタイムがありましたが輸送業者がOCSになってからスムーズです。 せっかく来たのですが、Am29kプロジェクトに手を付けてしまったのでしばらくお蔵入り…

基板発注

ADSP-2101用基板のガーバーを生成して発注しました。今回はクーポンを使いたいがために最後の推敲期間が短かった感があります。大ポカしてるかもです。 基板表側。 右下隅の白い四角は何か恥ずかしいシルクをマスクしたわけではなく、本当にこういう四角いシ…

ベタGND

オートルータが引き回した配線を一部手作業で修正した後、ベタGNDを追加しました。基板左下部分のアナログ入出力はデジタル系とGNDを分離するため領域をそれぞれ指定しコーデックICの真下で1点接続するようにしています。回路で意図的な1点接続を示すには…

部品レイアウト

ADSP2101のほうはしばらく放置していたように見えますが実は回路図入力は進めていて、一気に部品レイアウトまでしてしまいました。 これまたすごい混からがり具合でオートルーティング完了は無理かな?と思ったのですが。意外にもものの10分くらいで結線は完…

メモリマップ

256kbitSRAMを3個使いとすればプログラム空間セレクト/PMSとデータ空間セレクト/DMSをORしてSRAM全体のチップイネーブル/CSとし、/PMSでメモリの最上位アドレスA14を切り替えてやることになります。ここは別プロジェクトでやったi8031とは違い、明確にプログ…

メモリ配置

このように独立したメモリ空間が3種もあるのですがそれぞれのサイズは意外に小さく16kwordづつしかありません。アプリケーションマニュアルにあるプログラムメモリの構成例はこのようになっています。 一般的で入手しやすい8k×8bitのSRAM;TC5564とかHM6264…

規模縮小

ということで、無難なところで選んだのがこれです。アナログデバイセズの16ビット固定小数点DSP、ADSP2101です。セラミックPGAが見た目いいですし一気に規模が小さくなって68ピンなのでこれなら扱い易そう。 パッケージはすでに作ったテキサスのTMS320C25…

新規プロジェクト

ほんとに悪い時期に当たっちゃったみたいで3月半ばに発注した基板や部品類が全く届きません。 fusionの基板は3/14に発注、3/19に出荷となっていますが交換局から出発したのが5/15。6/4になってやっと日本に着いているとなっていますが未だに日本郵便で追跡…