私は電子工学を始めたばかりで、すでに魅了されています。そのような+ 5Vが表すように-私は、バイナリが異なる電圧の表現であることを承知しているこれらの過去数日のArduinoで演奏た1
とGNDを表します0
。
私は、物理レベルで、マイクロコントローラーがバイナリをこれらの電圧に変換する方法を発見しようとしていました。私はどこでも説明を見つけることができないようです。誰もが知識を共有したり、これがどのように機能するかを説明する場所/良い本を教えてくれますか?
私は電子工学を始めたばかりで、すでに魅了されています。そのような+ 5Vが表すように-私は、バイナリが異なる電圧の表現であることを承知しているこれらの過去数日のArduinoで演奏た1
とGNDを表します0
。
私は、物理レベルで、マイクロコントローラーがバイナリをこれらの電圧に変換する方法を発見しようとしていました。私はどこでも説明を見つけることができないようです。誰もが知識を共有したり、これがどのように機能するかを説明する場所/良い本を教えてくれますか?
回答:
私はケレンJBの答えの一部を少し異なる方法で言い換えたいと思います:
バイナリの1と0から5 Vや0 Vなどの電圧への変換はありません。マイクロコントローラーまたは物理回路は、電圧で動作します。
これらの電圧は、我々は回路が動作しているかについての私たちの心の中に簡略化されたモデルを形成する際に私たちの頭に1と0のバイナリに「変換」されています。
実際に行われる「変換」はありません。バイナリの1と0は、基礎となる電圧の単なる仮想表現です。実際、多くのシステムでは、高電圧は0を意味し、低電圧は1を意味する場合があります。これにはいくつかの理由がありますが、おそらくこれより早い段階で詳しく説明します。
ロジックで何が起こっているかを理解するには、おそらくトランジスタを調べるのが最善です。トランジスタはさまざまな用途に使用できますが、単純なレベルではスイッチとして扱うことができます。概念的には、壁のライトスイッチのように考えることができますが、スイッチを物理的に動かすことで制御する代わりに、電流の変化で制御します。点灯しているライトを1、消灯しているライトを0として扱うことができます。これらのスイッチをさまざまなセットで組み合わせて、さまざまな論理要素(AND、OR、NORなど)を作成します。
私の答えは恐ろしく詳細ではありませんが、あなたの質問に答えてくれることを願っています。さらに説明が必要な場合は、詳細を追加しますが、圧倒したくありません。
短い答えは、「変換」せず、電圧はバイナリ(またはその表現)であるということです。いくつかの紙に数字を書くのと同じように、マークは数字を表し、そろばんを数えると、石の位置は数字を表します。
2進数は、10進数(または8進数、16進数など)と同様の数値システムです。
10進数(10進数)には10個のシンボル(0123456789)があり、2進数(base-2)には2個(01)しかありません
任意の基数のシーケンス10は、1乗の基数を意味するため、10進数では10 ^ 1 = 10を意味し、2進数では2 ^ 1 = 2を意味します。その後、10進数で100は10 ^ 2 = 100を意味し、バイナリでは2 ^ 2 = 4を意味します。
それらは単純0と1(またはオン/オフ)で表すことができるバイナリを選択したので、電子機器を使用して小数を表すためには、可能であるが、複雑になる
三元(3つのステート)システムと当然のように、この上のバリエーションがあったアナログ計算は。トランジスタの前に、機械的なパンチカードマシン(もし時間があれば、Googleがたくさん、いくつかの非常に興味深い読書を知っている)があった
最古のバイナリデジタルコンピュータは、実際のスイッチ(電子リレー)で行われました。ツーゼZ3(1941)の例です。
この後、リレーの代わりに真空管が使用され(機械部品が動かないため、より高速に切り替え可能)、リレーの代わりに切り替えが実行されました。ENIACは、真空管で作られた初期のコンピュータの一例です。
その後、60年代にトランジスタが到着し、すぐにICが登場しました。トランジスタは、リレー/バルブが以前のマシンに持っていたのと同じ機能を実行しますが、はるかに小さく、より速く、より少ない電力を消費しました。
数学で数値を操作する方法を変更していないように、バイナリコンピューター回路の基本的な方法の背後にある実際の理論はまったく変更されていません。アルゴリズムは改善されますが、基本的なルールは同じです。
したがって、バイナリの動作方法がわかっていて、1または0を2つの異なる電圧レベル(5Vと0vなど)として保存できる単純な回路と、ANDやORなどの単純な論理機能を実行できる他の単純な回路がある場合、それらをすべて組み合わせて、より複雑な作業を行うことができます。
以来、すべてのこれらのバイナリの回路は、単に最も基本的にスイッチされている、あなたは機械的/リレー/バルブ/トランジスタ/のような2つの状態の間で交互にすることができます何でも同じことを達成することができます?。
数値をバイナリで保存する例を挙げると、8つのスイッチがあるとしましょう(それらのタイプは重要ではありません)
。1は5Vで表され、0は0Vで表されます。
番号123を保存します。
10進数では123 =(1 X 10 ^ 2)+(2 * 10 ^ 1)+(3 x 10 ^ 0)
2進数では01111011 =(0 x 2 ^ 7)+(1 x 2 ^ 6) +(1×2 ^ 5)+(^ 4 1×2)+(^ 3 1×2)+(2 ^ 0×2)+(^ 1×2)+(^ 0 1 X 2)
したがって、すべてスイッチ0、1、3、4、5、6を5Vに、スイッチ7と2を0Vに設定します。これは、数値123をバイナリで「格納」します。このセットアップは「レジスタ」と呼ばれます。
スイッチがどのように組み合わされてより複雑な回路を形成するかについて詳しく知りたい場合は、デジタルロジックに関する優れた本を入手するか、Googleに問い合わせてください。
このサイトは最初からそれほど悪くないようです。
電圧は、単にバイナリを表す方法です。これは非常に効率的で実用的な変換であり、さまざまなトランジスタ構成を使用してバイナリロジックを実装できます。
通常、バイナリロジックを電子的に実装する方法は、CMOS(http://en.wikipedia.org/wiki/CMOS)テクノロジを使用することです。このテクノロジでは、2つのMOSトランジスタが相補ペアでセットアップされ、CMOSゲートを形成します。ただし、TTL(http://en.wikipedia.org/wiki/Transistor –transistor_logic)やリレーなどを使用したバイナリロジックの他の電子実装もあります。しかし、あなたは本当に何でも、紙、ペーパーロボットヤギを使用できます:http : //www.robives.com/category/product_tags/logic_goats。電子CMOSの実装は、たまたま効率的で実用的なものです。
これらの単純なCMOSゲートから、より複雑な論理ゲートを構築できます。NANDとNORは標準ゲートではなく、基本的なゲートです。これらのうち、バイナリロジック、加算器、レジスタファイル、メモリであるすべてのものを構築できます。これらから、完全なマイクロプロセッサまでALUを構築できます。
詳細情報が必要な場合は、デジタルロジックに関する本を読むことができます。
CPUの構築方法を理解するための実用的な方法は、VHDLとFPGAを使用して自分でCPUを構築することです。安価なFPGA開発ボードを入手でき、ソフトウェアは通常無料です(ライセンスが制限されています)。私は非常に手頃な価格の賢明な人をいくつか持っています:
簡単に言えば、特定の範囲(通常5〜12ボルト)で、最上位ビットはその範囲の前半が0で、もう一方が1です。次の最上位ビットは、すべてのビットが計算されるまで、その半分をさらに2等に分割することにより計算されます。
したがって、バイナリとは、ほぼ定期的に測定される電圧の増減です。
簡単な例を示します。1Vから256Vの範囲で、擬似コードを使用して137をバイナリ(数値)に変換します(アナログ)。
// used this way: analogToNumeric(137, 256);
function convert(var number, var length) {
if (number > length) { return(ERROR); }
function convert(var half, var binary) {
if (half < 2) { return(binary); }
elseif (number < half) {
return(convert((half / 2), append(binary, 0)));
} else {
return(convert((half / 2), append(binary, 1)));
}
} return(convert((length / 2), list()));
}