InA,B
OutA,B
RegisterA,B,C,D,E,F
ROM Page,Address Register,ROM
RAM Page,Address Register,RAM
Status Register
Command Register
カテゴリー: ニュース
ニュース
8n-Bit Computer 03
8n-Bit Computer 02
CPUを作るといっても個人のできる範囲でとなりますので再小規模で手作りします。現実的な方法としてロジックICで作ります。ネットで検索するとリレーやトランジスタで作っている人もいますが費用と手間を考えるととても真似できません。また、74LS181などのALUも使いません。命令の体系が一つのICに依存させると将来の制限に繋がるような気がするからです。
CPUの中枢がALUという人もいますが個性が発揮されるのはやはり命令デコーダになります。命令デコーダの設計によってそのシステムの個性が決まります。
部品数をなるべく減らしたいので出来る限り単純な命令デコーダを設計しようと思います。74LS154は4to16なのでこの範囲に収まるようにしていきます。
8n-Bit Computer 01
最近、益々人工知能と名打ったものやことが増えてきました。当然ながらそれを支えるテクノロジー分野でも人工知能を生みながら自らへの応用も盛んに行われているでしょう。
ならばソフトウェア開発も人工知能にお任せの時代がもうきているかもしれません。人類がソフトウェア開発から解放される日はいつなのでしょうか。
人工知能でソフトウェア開発できるようになったらCPUごとに異なるソフトウェアを開発しなくても良くなると思います。アーキテクチャが異なればそれに合わせてソフトウェアを作らなくても良く、きっと多様なCPUが普及していくでしょう。
そこで気が早いですが今から新しいCPUを作ってみます。人工知能でソフトウェア開発ができるようになる時代を見据えて新しい概念でできたら嬉しいです。
タイトルに付けた8n-Bit Computerとは最小構成が8bitなのですが利用環境に合わせて16bitでも32bitでも64bitでも128bitでもそれ以上でも使えるコンピュータです。途中で頓挫するかもしれませんがチャレンジしてみます。
コンピュータの仕組み26
前回の 0と1の列を8桁に揃えて16進数に置き換えてみました。そうするとマシン語と呼ばれているものになります。
出力:1000,0000 = 80
演算:0011,1000 = 38
入力:0111,1000 = 78
出力:1011,0000 = B0
演算:0000,1000 = 08
入力:0111,1000 = 78
桁は減りましたがまだただの数字なので覚え難いです。一目見てわかるような文字列に置き換えてみます。
80:OUTR
38:PASS
78:IN
B0:OUTA
08:AND
78:IN
命令のようになったので処理の流れが読めるようになってきました。
OUTR | 出力をレジスタにする |
PASS | 入力をそのまま出力する |
IN | 入力を外部入力とする |
OUTA | 出力をAとする |
AND | AND演算する |
IN | 入力を外部入力とする |
実際にROMに書き込むときはOUTRを逆に1000,0000に戻せば良いです。人間でもわかる単語で命令を順に記述し、それを2進数に置き換え、0は電圧をLowに、1は電圧をHighにしてROMに書き込みます。これこそがソフトウェアですね。
ChatGPTに聞いてみた。
User
TC428CPAは何ですか。
ChatGPT
TC428CPAは、パワーモスフェットやIGBT(絶縁ゲートバイポーラトランジスタ)のドライバICです。このICは、高速でパワーデバイスを制御するための信号増幅や電流駆動機能を提供します。
TC428CPAは、シングルチャンネルのドライバであり、入力信号を増幅し、高電流でパワーデバイスを駆動する能力を持っています。また、ドライバの出力は高速でスイッチングされるため、パワーデバイスの効率的な制御を可能にします。
TC428CPAは、DCモーター制御、リレー駆動、電源スイッチング、LED駆動など、様々なアプリケーションで使用されます。特に、高速スイッチングや高電流制御が必要な場合に適しています。
SN74LS283N
ChatGPTに聞いてみた。
User
SN74LS283Nは何ですか。
ChatGPT
SN74LS283Nは、4ビットの並列二進加算器(全加算器)ICです。このICは、2つの4ビット入力(A0〜A3、B0〜B3)および1つのキャリー入力(C0)を持ちます。それぞれのビット位置において、入力された2つのビットと前のビット位置からのキャリーを加算し、結果とキャリーを出力します。4つの出力(S0〜S3)は、ビットごとの加算結果を表します。また、1つのキャリー出力(C4)も提供されます。
SN74LS283Nは、複数ビットの二進数の加算に使用されます。特に、算術演算やデータ処理などのデジタル回路において、数値の加算を行う際に使用されます。TTL(トランジスタ・トランジスタ・ロジック)ファミリーのICであり、高速で信頼性のある加算機能を提供します。
SN74LS325N
ChatGPTに聞いてみた。
User
SN74LS325Nは何ですか。
ChatGPT
SN74LS325Nは、4ビットシフトレジスタ/パラレルロードレジスタICです。このICは、4つのデータ入力(D0〜D3)、クロック入力(CLK)、ロード入力(LD)、シフト/ロード制御入力(SL/RL)を持ちます。データ入力をクロックの立ち上がりエッジでシフトするか、ロード入力をアクティブにすることでパラレルにデータをロードすることができます。
SN74LS325Nは、4つのビットデータを直列にシフトしたり、パラレルにロードしたりするために使用されます。特に、データのシリアル送信やパラレル入力データの一時的な保存などのアプリケーションで活用されます。このICはTTL(トランジスタ・トランジスタ・ロジック)ファミリーの一部であり、デジタルデータ処理やシーケンシャル制御回路などのデジタル回路設計に使用されます。
SN74LS327N
ChatGPTに聞いてみた。
User
SN74LS327Nは何ですか。
ChatGPT
SN74LS327Nは、3ラインから8ラインのデコーダ/デマルチプレクサICです。このICは、3つの入力ライン(A, B, C)と8つの出力ライン(Y0〜Y7)を持ちます。デコーダとして動作する場合、3つの入力の組み合わせに応じて、対応する出力がアクティブになります。デマルチプレクサとして動作する場合、特定の出力を選択し、それに対応する入力にデータを転送することができます。SN74LS327Nは、TTL(トランジスタ・トランジスタ・ロジック)ファミリーのICであり、データのデコーディングやデマルチプレクションなど、多くのデジタル回路で使用されます。
コンピュータの仕組み25
上図は最低限の機能を備えたコンピュータと思ってください。これでソフトウェアとは何かを考えてみます。
左側にあるInの状態をRegisterに写してみます。Inは8本のラインでそれぞれがHighかLowになります。
出力をRegisterにするためにはDemultiplexerCの出力がQ0になるようS0-2を000にします。
演算は必要ないのでDeMultiplexerA,BとMultiplexerCの出力をQ7にするためS0-2を111にします。
入力をInにするためにはMultiplexerAのI7がQに出てくるようにS 0-2を111にします。
これで出力先、演算方法、入力元を選択できました。
出力:000
演算:111
入力:111
となります。
出力、演算、入力に対する指示を切り替えているのはDemultiplexerEです。S0-1が
00:演算に対する命令
01:入力に対する命令
10:出力に対する命令
となります。
従って命令の切り替えると命令を合わせると、
出力:10,000
演算:00,111
入力:01,111
となります。
この要領でInとRegisterのAndをOutAに出力してみます。
出力:10,110
演算:00,001
入力:01,111,000
入力はAとBがあるので命令が長くなります。
このように 0と1の列をROMに書き込んでおいて順番に実行していけば様々な演算ができます。どのような列がどのように動作するかは上図の有り様によって決定されます。CPUが変わればそれにあった 0と1の列ではないと動作しないことがよくわかりました。
コンピュータの仕組み24
前回から更に拡張して、8ビットCPUを目指してみます。
入力
Register, RAM Address Register, RAM Page Register, RAM, ROM Address Register, ROM Page Register, ROM, In
出力
Register, RAM Address Register, RAM Page Register, RAM, ROM Address Register, ROM Page Register, Out A, Out B
演算
Adder, And, Or, Nand, Nor, Xor, Not, Pass
入力Aが8ライン、入力Bが8ライン、出力も8ライン、演算も8ラインの選択肢があります。
ROMから読み出された8ビットの命令がDeMultiplexerを通してCommand Registerに保存されます。この保存された命令のビット列に従い各MultiplexerやDeMultiplexerのライン切り替えが行われてプログラムされた演算を繰り返します。
だんだんCPUらしくなってきているようですが命令デコーダ部分が怪しげなのでもっと改良します。
TC74HC4049P
HD74LS154P
ChatGPTに聞いてみた。
User
三菱製のM5L8216Pは何ですか。
ChatGPT
M5L8216Pは、8ビットマイクロプロセッサの1つで、1980年代に三菱電機が製造していた製品です。M5Lシリーズは三菱電機が開発したマイクロプロセッサの一連の製品で、M5L8216Pはその中でも特に高性能なものの1つでした。M5L8216Pは、最大2.5MHzのクロック周波数で動作し、56種類の命令を持っていました。また、4つの8ビット汎用レジスタや、2つの16ビットカウンタ/タイマー、割り込み制御回路、および入出力ポートが備わっています。M5L8216Pは、産業制御、計測機器、家電製品、および通信機器などの様々なアプリケーションに使用されていました。
User
プロセッサではなくその周辺ICだと思います。
ChatGPT
その通りです。M5L8216Pは、1980年代に三菱電機が製造した8ビットCMOSシリコンゲートマイクロコントローラ(マイコン)の周辺ICの1つです。M5L8216Pは、4つの8ビット入力ポート、4つの8ビット出力ポート、3つのタイマー/カウンタ、16ビットパルス幅モジュレーション(PWM)モジュレータ、およびシリアル通信インタフェースを備えています。M5L8216Pは、当時の制御システムやオフィス機器、家庭用機器など、幅広い分野で使用されました。
User
双方向バスドライバーだと思いますがいかがですか。
ChatGPT
申し訳ありません、誤解が生じました。M5L8216Pは、実際には双方向データバスドライバーとして機能するICです。データバスドライバーは、マイクロプロセッサと外部デバイスとの間でデータの双方向転送を可能にするための回路です。M5L8216Pは、8ビットデータバスの制御に使用され、バス上のデータの送信および受信を制御します。これにより、マイクロプロセッサと他のデバイス間でのデータのやり取りが行われます。双方向バスドライバーとしてのM5L8216Pは、デジタルシステムにおいてデータの双方向通信を可能にする重要な役割を果たします。おっしゃる通り、M5L8216Pは双方向バスドライバーとして使用されることが多いです。お詫び申し上げます。