FPGAの部屋

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。ご利用ください。 http://marsee101.web.fc2.com/index.html

2007年04月

やっと日経エレクトロニクスの組み込み速習キットのセットアップを行った。
大変な仕事で、かなり時間がかかってしまった。ISEインストール、アップデートより面倒くさい。ツールも全部インストールできたので、付いてきたチュートリアルをやってみた。
LED1とLED2をそれぞれ1秒、2秒間隔で点滅させるプログラムだ。
これで組み込みアカデミーOnlineが出来るが、最初の頃は目新しいことはないようだ。パラレルポートの入出力をレジスタで決めて、出力値を違うレジスタにセットする。こういう手順は8080~8086プロセッサの頃のパラレルポート用IC 8255の頃から変わっていない。(違っている機能もあるが。。。)
3098dd3f.jpg


そういえば、電子系自営業者の開発日誌さんのOpenCore MPUメモで知ったのだがMIPSプロセッサをSpartan3 Starter Kitに載せるているらしい。リアルタイムOSが動いているようだ。
やってみようとしてVHDLソースをダウンロードしてISEでインプリメントしてみたが、出来なかった。もう少し修正しなくちゃだめなのかな? ALTERAでも動くようになってるので、その部分をコメントアウトしなくてはいけないようだ。調整中で、まだインプリメントできていない。
Spartan3 Starter KitのMIPSでLinuxが動作すればよいのだが。。。
(へこんでいると言っていたんだけど、こう言う事はするんです。気まぐれですね。。。)

2007/04/27: 書き換えないでインプリメントできました。問題はmlite_cpu.vhdのサブモジュールのreg_bank.vhdのreg_file_dp_ram_xc4000xlaコンポーネントだったのだが、上の階層のdpram.vhdがそうだった。これをプロジェクトに加えたところ Spartan-3 Plasma Kit HOWTO ページで書かれているようにVGAにランダムパターンが出た。(ランダムパターンと入ってもストライプだったけど。初期化していないSRAMのデータだそうだ)
できれば休み中にシリアルからGDBで動作させてみたい。詳しい情報は Spartan-3 Plasma Kit にあるようだ。
動作周波数は25MHzだったけど、UCFを書き直したら50MHzでもOKだった。動作周波数を変えるとシリアルのボーレートも書き換えなくてはいけないので、とりあえず25MHzのままテストすることにする。

@eleで組み込みアカデミーOnlineがあるのを知った。
VGAコントローラは作る途中でだいぶ出来ているのだが、大分へこんでいるため、一度リセットするためにもC++をやり直そうかと思っている。
日経エレクトロニクスは定期購読しているので、基板もあるし、USB ミニBケーブルもすでにあるので、いつでも始められる。
1つ疑問なのだが、基板は足が付いているのだろうか?付いていなければスペーサを買ってつけようと思う。
(いつも思いつきで行動しています。やり遂げるのはモチベーションがあがった時です。途中で止めてしまうほうが多いでしょう。。。)

最近のお仕事は、LVDSとSDRAMの間のバンド幅を倍にするために、LVDSとSDRAMのDMAの時だけSDRAMを倍のクロック133MHzにしようとしている。(つまりBUFMUXでクロックを切り替えるということ。LVDSは133MHz)
LVDSと内部デバイスは非同期FIFOで結ばれているので、どのような周波数でも良いのだが、最大スループットを確保するためだ。
しかし、この作業をしているとへこんでしまうのだ。
まず、自分の書いたVHDLコードの汚さにへこんでしまう。(レイテンシを最小にするためでもあったのだが。。。)
これを見ていると、どうしても最初から書き直したくなる。あまりやる気を持てなくなってしまうのだ。。。
初期コンセプトの悪さ、仕様変更による機能後付の影響で訳がわからなくなってきている。
どうしても、最初から書き直したい衝動に駆られる。。。小変更だったら大丈夫なのだが、大きな変更になるとタイミングを完璧に把握しなくてはいけないし。。。もう忘れてしまっているorz。
もうそんなことはするまいとUMLを勉強中。今度こそ、完璧でなくても、それなりに、全体構成やモジュール内部構造をグラフィカルなドキュメントに残しておくことにしたい。。。

@eleに投稿しようとして出来なかった回路図です。

23年くらい前に作ったシリアル切り替え器(プリンタ出力変換用パラレルポート付き)のCPUボードです。
これがCPUボードでして、そのほかにもう一枚I/Oボードがありました。
I/0ボードの方は8259カスケード、8255が1個、8251が4個ついていました。プリンタポートが2、シリアルポートが4ついていて、その間をボーレート変換、シリアルーパラレル変換しながら接続しました。
インタラプトハンドラを実装して、それぞれのポート間を接続していたと思います。(ソフトは私が作ったのではないのでうろ覚え)
今回は自分で設計したCPUボードだけの公開です。I/Oボードは違う人の設計ですので非公開とさせていただきます。
一応、CPUボードとI/Oボードを重ねて、ケースに入れて実際にシリアル切り替え器、シリアルーパラレル変換器として使っていました。(昔々)
これがその表面基板の図面です。改版が書いてありませんが、表の表示部(スイッチの横)には、LEDが付いていて、どこに何がつながっているかが表示されていました。パソコン(PC-9801)と68010プロセッサを搭載したUNIXのワークステーション(VME10)、電話のカプラ、ROMライタ、プリンタがつながっていました。
af820940.png


家ではAcrobat持っていないので、Acrobat Readerで右90度回転してご覧ください。
回路図はここにあります。

↑このページのトップヘ