web-dev-qa-db-ja.com

どうすれば自分のマイクロコントローラーを作ることができますか?

どうすれば自分のマイクロコントローラーを作ることができますか? GALチップを使用していくつかの作業を行い、追加、ロード、移動、xor、出力などの単純なコマンドを実行するようにチップをプログラムしましたが、もっともっと何かをしたいと思います実際のマイクロコントローラー。

これを行うにはどうすればよいですか? FPGAとCPLDについて少し読んだが、それほどではなかったので、何を取得し、どのように開発を開始するかについてのアドバイスを探していた。

45
samoz

良いWikiの本については here を見てください。 Electronic Engを教えていたときに書いたコースワークがありましたが、それを見つけることができませんでした。私が教えていたとき、ほとんどの学生はザイリンクス財団パッケージの回路図キャプチャツールを使用して満足していました。現在、ISEとWebPACKに移行しています。 WebPackは無料でダウンロードでき、便利で、回路図のキャプチャとシミュレーションが含まれています。

本当に輝きたい場合は、VHDLまたはVerilogを学び(VHDLは私が働いた場所ではより一般的であるように見えますが、それは場所のごく一部です)、GUIから入力するのではなく、デザインをコーディングします。

デジタルロジックデザイン(および一部のHDL)について何でも知っているとしたら、VHDLで2日間シミュレーションすると、多少機能的な8ビットマイクロプロセッサを使用できると思います。その時点では、非常に速く、非常に強力なものを構築することはありませんが、それから成長するための良い出発点です。デジタル設計について学ぶ必要がある場合は、uP設計に移る前に、ツールがどのように機能し、いくつかの基本的な論理回路をシミュレートするかを学ぶために数日で考慮してください。

デジタルシステムの基本と、バイナリ加算器の構築方法について学びます。加算、減算、or、xorなどを処理するALUの構築に進み、次にシーケンサーがRAMからオペコードを読み取り、実行ユニットに提供します。

命令セットのデザインを凝らすこともできますが、何が起こっているのか頭に浮かぶまでは本当に簡単に始めて、それを捨てて、もっと複雑なものからやり直すことをお勧めします。

デザインをうまくシミュレートしたら、その複雑さを測定し、適合するデバイスを購入できます。選択したデバイスファミリの開発システムを確認する必要があります。実行時にデバッグするために追加のインスツルメンテーションを追加できるのはいいことであり、デバイス上でデバイスを入手する初期の段階ではデザインを最適化していないため、開発に必要なものよりも大きいデバイスを選択します。

編集: Colin Mackenzie は、uCデザインといくつかのFPGAボード、およびその他のビットについての優れたチュートリアルを持っています。

28
Adam Hawes

オープンソースIPコア開発の「フォージ」サイトである OpenCores.org を見回したい場合があります。また、 これらの1つ のような開発ボードを自分で試してみてください。

ツールエコシステムの多くは、 [〜#〜] vhdl [〜#〜] を中心に展開しますが、 Avalda は、FPGAのF#をコンパイルするツールに取り組んでいます。

13
Jeffrey Hantin

TTL=チップからマシンを構築する段階を踏んだテキストブックを見た。これはPDP-8と同じ命令セットを持っていた。つまり、very-シンプルなので、実際のマシンアーキテクチャはこの方法で簡単に実装できます。

PDP-8 FAQ は本について言及しています: " The Art of Digital Design、 "第2版、Franklin ProsserとDavid Winkel(Prentice-Hall、1987、ISBN 0- 13-046780-4)。また、FPGAに実装する人々についても触れています。

このCPUアーキテクチャが非常に単純であること、およびPDP-8コードまたはリファレンス実装が利用可能であることを考えると、ウォームアップの出発点として適している可能性があります。

または、私の知人が、スティーブファーバー(著名なドングリ卒業生)が運営する大学のプロジェクトとして、FPGAに親指(ARMを削減)を実装しました。これを大学のプロジェクトに十分小さいフォーマットに圧縮できるとすれば、それも良いスタートになるかもしれません。

ソフトコアマイクロプロセッサで遊ぶには、スタティックRAMが1Mあるだけなので、Digilentの Spartan 3 Starter Board が好きです。 SDRAMとDDR RAMを使用するのは困難です。

LED、スイッチ、シンプルなシリアルインターフェースは、デバッグと通信にプラスです。

誰かがすでに指摘したように、 OpenCores.org は実用的な例を見つけるのに適した場所です。 Plasma uC を使用して、大学在学中に論文を書きました。

3
Marcelo MD

皆さんの非常に役立つリンクをいくつか検索した後、私は this ウィキバーシティコースに出会いました。

最初の文の1つは、「独自のマイクロプロセッサを構築することを考えたことはありますか?」です。

1
samoz

マイクロコントローラーは、ROM(命令* 2 ^ x +(クロックフェーズ)がアドレスで、出力が制御信号であり、それで問題ありません)のように単純にすることができます。 3つのアームと分岐予測サポートハードウェアを備えた複雑なハリービーストになることができます。

あなたの抱負について詳しく教えてください。

1
MarkusQ

ザイリンクス には、FPGA用の MicroBlaze および PicoBlaze ソフトコントローラーがあります。後者は無料ですが、IIRC、Microblazeは有料です。
その名前が示唆するように、PicoBlazeは小さなプロセッサであり、その制限がありますが、OTOHは CPLDで実行 に十分にコンパクトです。とにかく、あなたを始めるための素晴らしいプロセッサー。
Pablo BleyerはPicoBlaze互換 PacoBlaze を持っています。 PacoBlazeはVerilogで書かれました(Adamが言ったように、VHDLより一般的ではありません)。

1
stevenvh

小さなmcuには大きなfpgaが必要です。

ADのようなものが必要な場合は、適切なハードウェアブロックを備えたfpgaが必要です。

Fpgaに入れるにはソフトコアが必要です。

しかし、このプロジェクトの前に通常のMCUで遊んでみて、どこに行くのか知っているとしたらどうでしょう。 Atmelの一部のAVR:はどうですか。

0
Johan