8ビットマイクロコントローラーと16ビットマイクロコントローラーを聞いたことがあります。7ビットマイクロコントローラーと1ビットマイクロコントローラーについても聞いたことがあります。
これらのグループの一般的な属性は何ですか?プロジェクトに使用するタイプを選択するにはどうすればよいですか?
8ビットマイクロコントローラーと16ビットマイクロコントローラーを聞いたことがあります。7ビットマイクロコントローラーと1ビットマイクロコントローラーについても聞いたことがあります。
これらのグループの一般的な属性は何ですか?プロジェクトに使用するタイプを選択するにはどうすればよいですか?
回答:
4ビットおよび32ビットのマイクロコントローラもあります。PCでは64ビットのマイクロプロセッサが使用されています。
数値はレジスタの幅を示します。レジスタはマイクロコントローラの中心にあります。多くの演算は、データを移動するため、または算術演算または論理演算を行うためにレジスタを使用します。これらの演算は、演算および論理ユニットであるALUで行われます。
レジスタのクリアやインクリメントなど、一部の操作は引数を1つしか取りません。ただし、多くの場合、2つの引数を取るため、ALUの典型的な逆さまのズボンの表現になります。とは引数であり、ALUは現在の演算に基づいて結果を生成します。2つの引数の操作は、「レジスタR5に15を加算し、結果をメモリアドレス0x12AAに格納する」です。これには、定数 "15"(プログラムメモリから取得)、レジスタファイル、およびデータメモリの間にルーティングが必要です。そのルーティングはデータバスを介して行われます。レジスタ、内部RAM、ALUを接続する内部データバスがあり、マイクロプロセッサと一部のマイクロコントローラでは、外部RAMに接続する外部データバスがあります。いくつかの例外はありますが、データバスはレジスタやALUと同じ幅であり、それらが一緒になって、マイクロコントローラのタイプを決定します。(例外は8088で、内部には16ビットのバスがありますが、外部には8ビットしかありません。)
4ビットのコントローラーには4ビットのレジスターがあり、0から16進数の0xFまでの16の異なる値のみを表すことができます。それは多くはありませんが、デジタル時計の数字を扱うには十分であり、それはそれらが使用されるドメインです。
8ビットコントローラは、ここ20年ほどの間、業界の主力となっています。8ビットでは、0〜255の数値を格納できます。これらの数値は、文字やその他の文字を表すこともできます。したがって、テキストを操作できます。2つのレジスタを16ビットレジスタに組み合わせて、最大65535までの数値を設定できる場合があります。ただし、多くのコントローラでは、大きな数値をソフトウェアで処理する必要があります。その場合、32ビットの数値でさえ可能です。
ほとんどの8ビットコントローラーには、16ビットのプログラムカウンターがあります。つまり、最大64kByteのメモリをアドレス指定できます。多くの組み込みアプリケーションで十分な場合、数キロバイトしか必要としないアプリケーションもあります。
たとえば、駐車場のモニターでは、車の数を数え、それをLCDに表示する必要があります。これは、8ビットコントローラーで通常行うことです。:-)
16ビットは次のステップです。何らかの理由で、8ビットまたは32ビットが成功したことはありませんでした。Motorola HC12シリーズは非常に高価で、32ビットコントローラーと競合できなかったことを覚えています。
32ビットはその日の言葉です。32ビットのプログラムカウンターを使用すると、4Gバイトをアドレス指定できます。ARMは人気のある32ビットコントローラーです。すべてのサイズのARMを提供しているメーカーは数十社あります。それらは、USBや完全なLCDディスプレイドライバーなど、多くの特別な機能を搭載している強力なコントローラーです。
多くのフラッシュを備えた大きなダイに対応するため、またはさまざまな機能に多くのI / Oピンが必要なため、ARMはしばしば大きなパッケージを必要とします。しかし、このパッケージは、ARMが提供する可能性を示しています。
これは、パッケージが2.17mm x 2.32mmの16ピンARMです。
簡単な答え:Nビットマイクロコントローラーには、Nビットチャンクでデータを処理できるデータパスとALUがあります。
長い答え:95%の確率で短い答えが正しいです。長い答えは混乱します。一部のCPU / MPUには、ほとんどがNビットである部分がありますが、一部はMビットです。たとえば、16ビットデータで機能する整数乗算器を備えた8ビットCPUである場合があります。IntelシリーズのCPU(8088から現在のi7まで)では、さまざまな8ビットと16ビットのレジスターを組み合わせて16ビットまたは32ビットにすることができます。次に、マーケティング担当者がこれらの数値を取得して、マーケティング担当者に使用することを決定すると、16ビットと呼ばれる8ビットMPUなどになります。
それはそれよりもさらに奇妙になります。一部のマーケティング担当者は、MPUの命令サイズを宣伝しています。Microchip PICは、この良い例です。注意しないと、これをデータパスのビット数と混同する可能性があります。
この最初の段落が少し低すぎる場合は申し訳ありませんが、それが将来の読者に役立つことを期待して提供されています。底がMのN桁で表される数値は、と同じ大きさでなければなりません。たとえば、10進数(基数10)の桁数が9の場合、10 ^ 9までの数字、または0から999,999,999までの数字しか書き込めません。8桁の2進数(base 2)桁(「Binary digIT」は「ビット」)で、2 ^ 8 = 256の数値を格納できます。
コントローラーとプロセッサーには基本的なデータ幅があるため、マイクロコントローラーまたはプロセッサーは「Nビット」と呼ばれます。各レジスタはNビット、各命令はNビット、データバスはNビット、メモリはNビットでアドレス指定される場合があります。特に下位レベルでは、このルールには例外があります。たとえば、8ビットコントローラーには12ビットのメモリバスがあるかもしれませんが、レジスターが8ビットしか含まれていない場合、これを処理するのは難しいと思うかもしれません。ただし、すべてのプロセッサには基本的なネイティブデータ型の幅があります。次のコードを検討してください。
uint32_t x,y,z; // Declare 3 32-bit variables
z=x + y; // Add two of them to store in the third
8ビットの数値しか追加できない場合、この操作をどのように実行しますか?各変数を4つの8ビット数値に分割し、加算とキャリーを個別に実行し、それらをマージして結果を取得する必要があります。これには少なくとも16の命令が必要です。ただし、32ビットプロセッサでは、1つの命令でと同じくらい簡単mul r0, r1, r2
です。この単純な例からわかるように、プロセッサのビット幅が大きいほど、より多くのデータをより速く処理できます。
歴史全体の傾向は、小さいビット幅から大きいビット幅に向かっています。1970年代初頭、インテルは最初のシングルチップコントローラである4004をリリースしました。4ビットプロセッサでした。トランジスタは大きく、電力を大量に消費し、設計は革新的で複雑だったため、チップに押し込めるのはこれだけでした。その後まもなく、8ビットプロセッサである8008がリリースされました。まだ使用されている4ビットプロセッサはほとんどありませんが、多くの8ビットコントローラがあり、PICとAVRは現在も一般的に使用されている現代的な例です。他のどのタイプよりも多くの8ビットプロセッサが作られています!これらは依然として、小型でシンプルな、コスト重視のタスクで最も人気のあるコントローラーです。次の明らかな移行は16ビットコントローラーへの移行でしたが、これらは8ビットまたは32ビットの同業者には届きませんでした。代わりに、ARMによって設計され、数年前にPC CPUに組み込まれたような32ビットプロセッサへのジャンプがありました。PCで目立つようになりましたが、私が認識している重要な64ビットマイクロコントローラーはありません。
断然、最も一般的なタイプは8ビットと32ビットのプロセッサーです。32ビットプロセッサの人気はますます高まっています。毎年のように、一部の業界誌は「8ビットは死んだか」というタイトルの記事を発行しています。32ビットプロセッサの人気が高まり、より強力に、より安価になり、8ビットプロセッサを選択する理由は3つだけ残っています。
32ビットプロセッサはユビキタスになってきていますが、これら3つの理由により、8ビットプロセッサが旧式の4ビットプロセッサのように姿を消す兆しはほとんどありません。
Arduinoのようなアプリケーションを考えてみましょう。
Arduinoは、8ビットATmega32であるAtmelコントローラーを使用します。ATmegaは20 MHzで動作し、4kのRAM、SPI、I2C、UART通信、いくつかのハードウェア割り込み、8個の10ビットADCを備えています。このチップの価格は100個で$ 3.90です。
同様の32ビットチップは、共有ARM Cortex-M3コアを使用する32ビットAT-SAM3である別のAtmelパーツである可能性があります。このチップは64 MHzで動作します(3倍の速さですが、ATmegaは32ビットの加算を1回実行するために16命令を必要とすることに注意してください)。ATmegaの4倍の16kのRAMを備えています。I²C、MMC、SPI、SSC、UART、さらにはUSB周辺機器も備えています。これには、DMA(ダイレクトメモリアクセス、より高速かつ効率的になります)、柔軟で強力な一連の割り込み、10個の12ビットADC、2個のDACがあります。それは単にすべてのカテゴリーでATmegaよりも優れています。私は同等の機能セットを備えた32ビットコントローラーを見つけようとしましたが、これは私ができる最善の方法でした。このチップの費用はいくらですか?100個で$ 2.34です。少ないコストでより多くのパフォーマンスを得ることができます。簡単な決定でなければなりません。
駐車場に出入りする車の数を数えて、LCD画面に表示する必要があります。最大10台の車を駐車場に入れることができます。
数値が小さく、LCDに表示される単純な計算があります(実際には、7セグメントLED点灯の数字で作られた大きな看板の方が見やすく、安価です)。このタスクには、おそらく8ビットのコントローラーで十分です。ただし、本当にLCD が必要な場合はどうでしょうか。8ビットコントローラーは、低解像度のVGAディスプレイを駆動するのにも苦労しますが、HDMI出力を備えた32ビットコントローラー用の開発ボードを簡単に入手できます。とりあえず画面に表示したいが、後で会社のLANのイーサネットケーブルに接続して、結果をパークオフィスのスーパーバイザーのコンピューターに表示したい場合はどうでしょうか。オンボードのイーサネット通信バスを備えた32ビットコントローラーは簡単に入手できますが、8ビットコントローラーでは実現できません。Xportですが、内部には32ビットプロセッサが含まれています。
1回限りのプロジェクトでは、毎回32ビットのコントローラーをお勧めします。あなたの時間は、8ビットと32ビットのコントローラーの価格差よりも価値があります。
あなたが言及した7ビットプロセッサに関しては、そのようなマシンはおそらく存在したことはありません。アーキテクチャの観点からは、2のべき乗であるビット幅を使用する方が賢明です。
CPUのビットサイズは、一般的に一緒になるいくつかの特性に関連しています。
一部のプロセッサでは、これらの数量はすべて同じ値です。その他の場合は、値が異なる場合があります。Z80は、一部の16ビットレジスタを含みますが、ほとんどの命令セットに8ビットレジスタを使用し、16ビット量で動作するほとんどすべての命令に追加のサイクルを必要とします(唯一の例外はEX DE、HL)。8ビットCPUです。ただし、68008のようなものは1つでは十分に説明できませんN
。32ビットの量で動作する命令セットがあり、IIRCは一度に32ビットのレジスタ間でデータを移動できますが、その主要なALUは16ビットのみで、そのメモリバスは8ビットのみです。何を測定しているかによって、32ビット、16ビット、または8ビットのCPUと見なすことができます。