カテゴリー
学術

パターン認識と図形処理

岩波講座 情報科学21 1983年発行

パターン認識と図形処理
パターン認識と図形処理

 平面や空間に存在する図形や物体をどのようにして数式で表すかがようやくわかりました。良かったです。

 ベクトルやラスターの処理の根拠となる理論を数式で表しているので基礎的なことを理解するのに役立ちます。

 前書きには到底人の能力には及ばないことが書いてありますがこの時代の限界を知ったうえで果敢に挑戦している人々素晴らしさに気付きます。

 例え今の人智が及ばなくともその時の叡智を結集し成果を出し次の世代に繋げば人類の未来は明るい。

ですね。

カテゴリー
学術

形状を数式で表す

 正弦波を組み合わせればノコギリ波や矩形波になる。あらゆる波形は正弦波に分解できる。

 X軸とY軸にそれぞれの波形を入れれば交点で二次元の図形を描ける。

 Z軸を追加すれば三次元も表現できる。

 オシロのリサジュー図形の原理です。

 立体は3次元Euclid空間E3内の、有界で閉じた正則集合であるとする。立体は次式で定義される半空間Xiを有限個の集合の和、積、否定演算により組み合わせたものである。

$$
X_i=\{ p \in E^3:F_i(p) \geqq 0 \}
$$

$$
F_i は任意の解析関数
$$

カテゴリー
学術

改訂マイコン・システム設計ノウハウ

改訂マイコン・システム設計ノウハウ
改訂マイコン・システム設計ノウハウ

 タイトル通り初期のマイコンとその周辺ICの使い方が詳しく説明されています。現在のマイコンは多くの機能をワンチップに載せているのでチップ自体を独立したコンピュータのごとく使えますがこの頃のマイコンはまだ多くの周辺ICを必要としていました。データシートでは分かり難かった周辺ICのことがようやく理解できてきました。

カテゴリー
学術

コンピュータの仕組み1E

 コンピュータの仕組みを演算の基本部品であるCPUにたどり着くまで説明してきましたが、ここで周辺の装置を見ていきます。

 パソコンやスマホを完成形とした場合のCPU以外の重要な構成部品を大別すると

記憶装置
 レジスタはCPUの内部に有る記憶回路でしたが容量が少ないので外部の記憶装置を使います。RAMは通電していないと記憶が失われ、ROMは電源が切れても記憶し続けます。

 マイクロコントローラ呼ばれる場合は一つのLSIの中にCPUに必要な回路とROMやRAMが入っています。一つの部品で一通りの仕事ができるように作られました。誕生はマイクロプロセッサとほぼ同時期です。

 RAMやROMもそれぞれたくさんの種類があります。これらはみな半導体なのでICやLSIの形状をしています。他に円盤やテープ状のものに情報を記憶させる方法があります。機械的な動作があるのでコンピュータと筐体を分けてケーブルなどで接続します。

 純然たる記憶装置ではありませんが利用している側から見るとクラウドも記憶装置として分類してもいいと思います。物理的にはクラウド自身先にあげた半導体やディスクで構成され、クラウドシステムに組み込まれています。ネットワークがここまで自然にあるようなインフラとなって皆が無意識のうちに利用している時代になったならばクラウドも記憶装置の一つと思えます。自分で用意する物理的な記憶装置よりも安全かもしれません。

入力装置
 コンピュータ以外から情報を取り込むときは入力装置を経由してCPUで扱える情報に変換します。人間が入力する場合はキーボードのようなボタン類、マウスやタッチスクリーンのように値が連続的に変化する情報などがあります。マイクやカメラも入力装置です。

 何かの量や状態を2進数に定義できればコンピュータに入力できます。逆に言えば2進数に定義できないものや事象はコンピュータに入力できないことになります。人知がまだ到達していないことは入力が出来ないのです。

出力装置
 何に対して出力するかで大きく分かれます。人間に対して出力するにはデジタル信号を人間が認識できるようにします。

 目で認識させる方法としてデジタル信号に応じて光の明滅させます。ディスプレイと呼ばれる装置はこの原理を利用しています。光の明滅を様々組み合わせて文字を出したり、色をつけたりします。

 耳で認識させる方法はデジタル信号に応じて音の強弱や周波数を変えます。音楽をダウンロードして聴いたり地デジテレビから聞こえてくる音声は全てデジタル情報です。

 触覚、味覚、嗅覚を利用した出力装置は一般的に普及していませんが未来にはそれを応用した出力装置が出てくるかもしれません。

 人間以外でデジタル信号を受け取れる相手への出力であればそのまま渡すことができます。この時情報の劣化がおきません。

 人間以外でデジタル信号を受け取れない相手への出力は受け取れるような形に変換します。大概何かしらの物理量に変換するのですがこの時信号の劣化がおきます。

カテゴリー
学術

コンピュータの仕組み1D

 Computerがナゼ動くかの説明を電気が作られるところから始めてCPUの説明まで続けてきました。ここで少しまとめておきます。

 スイッチング素子で基本論理ゲートを作ることができます。

 基本論理ゲートを組み合わせて色々な機能を持つ論理回路を作ることができます。

 論理回路を並べて使用すれば複数ビットに対して操作することができるようになり、一つのICに組み込めば容易に多ビットの演算回路を作ることができます。

 それぞれ単機能だったICに役割を与えて組み合わせ一つのLSIにすればCPUが完成します。

 CPUに周辺機器を付け加えるとコンピュータになります。

カテゴリー
学術

コンピュータの仕組み1C

Programmer’s Reference Manual TMS 1000 Series MOS/LSI One-Chip Microcomputers Texas Instruments 1975
Programmer’s Reference Manual TMS 1000 Series MOS/LSI One-Chip Microcomputers Texas Instruments 1975

 引き続きTMS-1000を題材にCPUを学習していきます。TMS-1000を構成するブロック毎の動作を仮説を立てて追ってみます。実物がないので実験できませんが後でマニュアルで確認します。

 まずはOSCILLATORでクロック信号を発振します。内蔵しているOSCILLATORはRCなのかセラミックなのかクリスタルを使用しているのかわかりませんが矩形波を一定周期で出力しています。この信号が全てのブロックに伝わりますので各ブロックはその信号の都度に逐次状態を進めていきます。

 電源投入後、各FFでできたレジスタの状態は不安定なのでリセットが必要です。リセットを行い全体を初期状態にします。

 初期状態は命令の実行を待っている状態ですので次にプログラムカウンタが指す番地の命令を実行せよと何かしらの信号を与えます。

 最初はプログラムカウンタが0なのでROMの0番地のビット列が命令デコーダに入ります。命令デコーダはその最初の命令(ビット列)に基づきFFでできているレジスタやバッファと論理回路の塊であるALUにビット列を送り命令を実行します。

 次のクロック信号が来た時はプログラムカウンタ繰り上がります。前の命令を実行したので各レジスタの値が設定されている状態から最初と同じようにROMの次の番地のビット列を命令デコーダに送ります。

 以下次々とクロック信号が変化する度にROMの命令が命令デコーダに送られます。例えばSUBROUTINE RETURNレジスタに次に実行する値を設定してからプログラムカウンタに飛んだ番地を書き込み、そこから新しい命令を実行し、SUBROUTINE RETURNの番地に戻すようなことでサブルーチンが実行できるように思えます。

 こうしてみると命令デコーダが他のブロックに比べてだいぶ複雑な機構を持っているように見えます。
1 ROMからレジスタにビット列を複製する、RAMであればレジスタからRAMへ逆にRAMからレジスタへビット列の複製ができる。
2 使うレジスタを選択できる。
3 出力するバッファを選択できる。
4 ALUの演算を選択できる。
5 PROGRAM COUNTERやPAGE ADDRESS、SUBROUTINE RETURNを書き換え命令の実行順を変えることができる。
 このようなことを実行するために命令のビット列ごとにどこをどうするか決定する回路になっていると思われます。

 命令ごとに回路を作っていくとすると個人の手作りではTTLを使ったとしても4bitで十数個位が限度だと思います。ましてディスクリートトランジスタやリレーで作るとなったら数個の命令で根を上げそうです。

 やはり1個数十円から買えるCPUは偉大な存在です。

カテゴリー
学術

コンピュータの仕組み1B

TMS1000
Programmer’s Reference Manual TMS 1000 Series MOS/LSI One-Chip Microcomputers / Texas Instruments 1975

 マイクロプロセッサーを云々する時には必ずと言っていいほどi4004から始められますが、詳しく書かれているサイトが多いのでここではTMS1000を少し学んでみたいと思います。

PROGRAM COUNTER は6bitあり0〜63までをカウントできるレジスタです。

SUBROUTINE RETURN REGISTER も同じく6bitあり0〜63まで戻る位置を覚えておけるレジスタです。PROGRAM COUNTER と同じです。

PAGE ADDRESS REGISTER は4bitで0〜15までページを切り替えることができます。PROGRAM COUNTER が6bitでPAGE ADDRESS が4ビットなので合わせて10bitとなり0〜1023まで番地を持てます。

 TTLには2回路入りや4回路入り、6回路入りがありますが、2回路や4回路はわかりますが6回路入りは中途半端な気がしていました。自身が8ビット時代以降なので不思議に思うだけでディスクリートトランジスタやTTLでコンピュータが出来ていた頃、6回路入りは半端な存在ではなかったのでしょう。なんでも8の倍数の前の時代からコンピュータはありました。

PAGE BUFFER REGISTER はページを切り替えた時の戻りページを覚えておくためのレジスタです。

 PROGRAM COUNTERとSUBROUTINE RETURNのセットとPAGE ADDRESSとPAGE BUFFERのセットを組み合わせて実行すべき命令や読み書きするデータの位置を制御しているのがわかります。

INSTRUCTION DECODER は8bit幅の命令を実行します。4ビットCPUなのに何故8bitの命令なのでしょうか。上の図では真ん中に書いてあります。やはり命令デコーダがCPUの中心部なのですね。

 この頃の4ビットCPUを見てみると皆50個位の命令を持っていました。4ビットだからといって命令長が4ビットなわけはなく(命令が16個では実用にならない)8や16ビット長にして一通りの処理ができる命令デコーダにしてあります。

CPU基本命令数
TMS-100043
TMS-120043
i400446
HMCS-446
uCOM-455
4bitCPUの基本命令数

X,Y,ACCUMULATOR REGISTER は演算を行う値を記憶するところです。数式で言えば変数にあたります。特にACCUMULATORは一時的な値の保持に使われます。

 この他に出力が二つあります。その一つにPLAと書かれていますがプログラミングが可能なのでしょうか。もう少し調べないとわかりません。

 このようにプロセッサの中を見てきましたが、一つ一つは論理回路の集合でできていることがわかります。クロック、レジスタ、バッファ、カウンタはフリップフロップでできます。デコーダやALUも論理回路の組み合わせでできます。

 CPUはリレーでも真空管でもディスクリートトランジスタやTTLでも作れることがよくわかります。ただ一般の個人でも手に入れることができるようになったのがワンチップでできたCPUからでした。ここから広義でのコンピュータが爆発的に普及し始めたのです。

カテゴリー
学術

コンピュータの仕組み1A

 ロジックICで作った演算器、命令デコーダ、レジスタ、カウンタなどを組み合わせればCPUが出来上がります。1970前後のミニコンはこのような部品で作られたコンピュータでした。

 ならば複数のICを一つにまとめようとするのは自然の流れです。ディスクリート部品で作られたコンピュータを使ってICを作り、ICで作られたコンピュータを使ってLSIを作る。

 このようにして画期的な集積回路マイクロプロセッサが誕生しました。

カテゴリー
学術

コンピュータの仕組み19

SN74LS181N
SN74LS181N

 ロジックICにしては少し大きめで足の多いICですがこれも74シリーズのICです。用途はCPUの中に入っているALU、演算装置にあたります。これ一つで4ビットの論理演算や算術演算が行えます。主にマイコンが発明される前のミニコン時代にCPUを作る一つの部品として開発されました。4ビットですが74182と組み合わせて複数の74181を繋ぎビット数を増やして演算することができます。

 石川町駅の近くのシンコー電機に2個だけ在庫があったので二つとも購入しました。何十年残っていたのでしょうか。今度実験に使用してみます。

74LS181 Table
74LS181 Table
カテゴリー
学術

コンピュータの仕組み18

 論理回路で使われるICをいくつか見てみましょう。

SN74S00N
SN74S00N 4 NAND

 74シリーズの00番は4bitのNANDです。最初にICにしたいのはNAND回路だったのですね。

SN74HC04N
SN74HC04N 6 Inverter

 次に末尾一桁の番号のICは6個入りNOT回路です。インバータと呼ばれます。

74LS74N
74LS74N Dual Positive Edge Triggered D Flip Flops

 フリップフロップが二つ入ったICです。だんだん複雑な論理回路がICになってきました。

SN74LS193N
SN74LS193N 4bit Counter

 4bitのカウンターということは最低でもFFが4つ入っています。もうディスクリート部品で組むのが大変な回路になってきました。

TC4069UBP
TC4069UBP 7segment decode

 これは7セグメントLEDを制御するためのICです。このように特定の用途の論理回路も汎用化されICになっています。

カテゴリー
学術

コンピュータの仕組み17

SN74S00N
SN74S00N

 他コンピュータの重要な演算機能としてシフト演算があります。ビットの列を右や左にずらしていく回路でFFで構成されます。

 このように基本的な論理回路である、NOT、NAND、NORを組み合わせて様々なビット演算を回路で作り、それをまとめて集積するとCPUやメモリー等のコンピュータ部品になります。

 今まで実験でリレーや真空管、ディスクリートトランジスタを使って仕組みの理解を進めてきました。これからはもっと実用的な装置にしようと思いますのでICを使っていきます。

 初期のコンピュータはリレーや真空管が実際に使われていました。その頃は軍や国家レベルの大きな事業でしたので個人で最低限であっても実用的なコンピュータを作ることは現代であっても不可能です。

 その後トランジスタが発明され電子装置が徐々にトランジスタに置き換わっていきます。トランジスタであれば個々の電力消費が少なく現代では部品単価も廉価なので個人でも手が出せます。実際にディスクリートトランジスタを使ってCPUを作っている方がネットを探すと出てきます。ただ、数千、数万単位の部品で装置を組み上げていくには強靭な気力を要しますので命懸けの仕事と思へ諦めざるを得ません。

 そこで登場するのがICです。1960年前後にアメリカで発明されたこの部品はコンピュータを個人にもたらした偉大な発明だと思います。

 

カテゴリー
学術

HP 50g Graphing Calculator

HP 50g Graphing Calculator
HP 50g Graphing Calculator

 TTLやマイコンを使って色々実験しようとしている中でポケコンがあったらもっと実験の幅が広がると思いネットで購入しようとしたのですがとっくに製造中止になっていました。

 ネットで調べているうちにデジタル回路を関数電卓で制御できるようなことが解りました。

 いつ頃何の目的で買ったか忘れましたが関数電卓を持っていたのを思い出しました。

 HP 50gは値段の割に随分高性能でTTL信号を出力できるようです。この電卓も既に製造中止ですがネット上に情報が豊富にあります。

 回路制御に使うには乗り越えなければならないハードルがいくつもありますが死蔵させるにはもったいないので少しずつでも動かしていきたいです。


2023.05.15

ChatGPTに聞いてみた。

User
HP 50g Graphing Calculatorは何ですか。

ChatGPT
HP 50g Graphing Calculatorは、ヒューレット・パッカード(HP)が製造しているグラフ電卓です。この電卓は、高度な計算、グラフィックス、およびプログラミング機能を備えており、数学、科学、工学、およびその他の分野で広く使用されています。HP 50gは、逆ポーランド記法(RPN)および代数的な入力モードをサポートしており、カスタム関数やプログラムの作成が可能です。また、USBポートやSDカードスロットを搭載しており、ファイルの転送やバックアップも容易に行えます。

カテゴリー
学術

2SC3732

2SC3732
2SC3732
カテゴリー
学術

SN74LS181N

SN74LS181N
SN74LS181N

ChatGPTに聞いてみた。

User
SN74LS181Nは何ですか。

ChatGPT
SN74LS181Nは、TI(Texas Instruments)が製造する4ビットアリステアック(アリステアック・アリスティック)演算回路ICです。アリステアック演算回路は、数値の加算、減算、論理演算、シフト演算、比較演算など、様々な演算を行うための論理回路です。SN74LS181Nは、4つの2入力論理演算器、2つの4入力データセレクタ、および1つの4ビットのフルアダーを含みます。SN74LS181Nは、高速動作、低消費電力、広い動作電圧範囲などの特徴を持ち、コンピュータや制御システム、セキュリティシステムなど、幅広いアプリケーションに使用されます。

カテゴリー
学術

コンピュータの仕組み16

半加算器
半加算器

 半加算器は2進数の加算をする回路です。AとBを足してSに出力します。桁上がりが有ればCに出力されます。

全加算器
全加算器

 全加算器はAとBを足す時に下からの桁上がりXも加えることができます。加算結果をS、桁上がりをCに出力します。この出力SとCを別の全加算器に与えれば一度に演算できるビット数が増えます。全加算器を8個繋げば8ビットの加算器が出来上がります。

 減算は補数を求めて加算し桁上がりを無視する方法で算出します。補数は2進数であればNOTで反転し1を加えれば求められますので論理回路で容易に実現できます。

カテゴリー
学術

2SD1119-Q

2SD1119-Q
2SD1119-Q
2SD1119-Q表
2SD1119-Q表
2SD1119-Q裏
2SD1119-Q裏

 石川町駅近くのシンコー電機でリールで売っているトランジスタを購入しました。1,000個で1,000円、表面実装用なので小さいですが実験用なので十分です。

ChatGPTに聞いてみた。

2SD1119-Qは、オーディオアンプ、スイッチング回路、および電源回路など、幅広い用途に使用できるNPNのシリコントランジスタです。最大電力は1.2Wまで、最大コレクタ-エミッタ電圧は60V、最大コレクタ電流は1Aまで扱えるため、低~中電力のアプリケーションに適しています。また、SOT-89パッケージに収められているため、小型化が可能であり、スペースの制約のあるアプリケーションでも使用できます。

カテゴリー
学術

コンピュータの仕組み15

SRフリップフロップ
SRフリップフロップ

 フリップフロップのことをFFと略します。。上図のように四角い記号で描かれます。今後は呼び名はFF、記号は四角いのをを使用します。

 FFは以前記憶する回路として登場していますが、その状態を記憶する性質を使って数を数えることができます。コンピュータの中ではこれをカウンターと呼びます。

JK型ラッチ
JK型フリップフロップ

 カウンターは最初の図のRS型のFFではできません。JK型のFFを使います。JK型のFFにはクロック信号を入力する端子があり、クロック信号毎にカウンターをアップします。

 ですが、少し回路が複雑で大変そうなのでもう少し調べました。

D型フリップフロップ
D型フリップフロップ

 JK型より簡単なD型フリップフロップという回路がありました。これでもカウンターを作れます。

D型フリップフロップで構成したカウンター
D型フリップフロップで構成したカウンター

 D型フリップフロップは4個のトランジスタで作れるので4ビットのカウンターを作るためには16個のトランジスタが必要です。チップタイプの2SD1119が1000個もあるので今度実験してみます。

失敗したバイナリカウンター
失敗したバイナリカウンター

 と言う訳で早速実験してみました。取り敢えず手持ちのNPNトランジスタを並べて4個のFFを作ります。同じトランジスタがないのでバラバラで格好は良くありませんがなんとかFFが4個できました。型が同じトランジスタでも結構hfeにばらつきがあり調整が面倒でしたが手持ち抵抗と勘案して抵抗値を低めに寄せてあります。
 しかしカウンターとしては全くダメな結果でした。FFとしては4個それぞれ動いたのですがFFどうしをつなぐと全然ダメでした。部品数を減らすためになるべく簡単な回路で挑んだのですが失敗に終わったのです。

トランジスタによる標準的NAND回路
トランジスタによる標準的NAND回路

 それでもう一度NAND回路から見直し少し本格的にしました。NAND一つでこれだけの部品になります。

改良したフリップフロップ OFF状態
改良したフリップフロップ OFF状態
改良したフリップフロップ ON状態
改良したフリップフロップ ON状態

 一つのFFでこの規模になってしまいました。これではとても4ビットカウンターには辿り着けそうもありません。

 実用的な回路図をネットで探して見つけたのが「TTLアプリケーションマニュアル」テキサスインスツルメンツアジアリミテッド、昭和47年9月15日発行です。そこにFFやカウンターの回路図が載っています。上にあるような単純な代物ではありません。雑音や温度、不良な電源をも考慮された回路なのでしょう。

 でも二つ大きなことが解りました。

 一つはトランジスタのhfeにはかなりばらつきがありスイッチングだからといってギリギリで設計してはいけない。

 もう一つはネットや書籍に載っている論理回路は動作を説明するために抽象化されているので実用性は無いと言うことです。

 アナログ回路に比べるとデジタル回路が簡単に見えるのはONとOFFのスイッチングだけだからではなく調整が必要なことをICが中で殆どこなしているいるからだと気付かされました。

 ディスクリート部品で組み立てようと思ったらアナログ回路に負けない程に難しい実装が待ち受けています。

 だからコンピュータを作るためには集積回路がどうしても必要になります。

カテゴリー
学術

コンピュータの仕組み14

XOR
XOR

  NANDのみで構成した排他的論理和です。排他的論理和は二つの入力の状態が同じであればLow、異なればHighを出力します。早速、追ってみましう。

入力A、Bが共に0の時、
NandA=1
NandBa=0
NandBb=1
NandB=1
NandCa=1
NandCb=0
NandC=1
NandDの入力が共に1になるので
Q=0

入力A、Bが共に1の時、
NandA=0
NandBa=1
NandBb=0
NandB=1
NandCa=0
NandCb=1
NandC=1
NandDの入力が共に1になるので
Q=0

入力A=0、B=1の時、
NandA=1
NandBa=0
NandBb=1
NandB=1
NandCa=1
NandCb=1
NandC=0
NandDの入力が1と0なので
Q=1

入力A=1、B=0の時、
NandA=1
NandBa=1
NandBb=1
NandB=0
NandCa=1
NandCb=0
NandC=1
NandDの入力が0と1なので
Q=1

 排他的論理和は論理演算の勉強をしていると必ず出てきますが具体的に何に使うかわかっていません。この機会に明らかにしようと思います。

カテゴリー
学術

コンピュータの仕組み13

 マルチプレクサで複数から一つを選択できましたが今度は一つを複数のいずれかに切り替える論理回路です。このような論理回路をデマルチプレクサいいます。

デマルチプレクサ
デマルチプレクサ

 Sが0の時、AのANDの片方が1、BのANDの片方が0になるのでYの状態は出力Aに現れます。

 Sが1の時、AのANDの片方が0、BのANDの片方が1になるのでYの状態は出力Bに現れます。

カテゴリー
学術

コンピュータの仕組み12

 実際の半導体電子部品で論理回路を作ってみました。一番部品数の少ないNot回路を二つ作り連結します。一つのNot回路で電子部品での論理回路の作り方を学びそれを連結することにより論理回路から論理回路へ状態を伝える方法も同時に学びます。

2SC1815Y
2SC1815Y

 IC内ではFETが主なのでFETで作ろうと思い実験を重ねたのですが手持ちのFETがPチャンネルだけったのでマイナスの電圧を扱うのが難しいのとOFFの時の電圧がどうしてもあまり低くならないので諦めトランジスタに切り替えました。素人の私にはNPNトランジスタが使いやすくて良いです。

2SC1815で作った二重に連結されたNot回路
2SC1815で作った二重に連結されたNot回路

 S1をHighとLowに切り替えると各電圧測定ポイントに接続されたテスターで読み取れる回路です。

2SC1815でNot回路を作り二重に連結
2SC1815でNot回路を作り二重に連結

 電流を極力流さないで実験したかったので動作ギリギリの4.7kと47kを使い電源電圧は5Vとします。

二重Not回路の入力がOFFの時
二重Not回路の入力がOFFの時

 S1がGNDに落ちている時の計測結果です。右から入力Low、Not1出力High、Not2入力High、Not2出力Lowとなっています。

二重Not回路の入力がONの時
二重Not回路の入力がONの時

 S1が5Vの時の計測結果です。右から入力High、Not1出力Low、Not2入力Low、Not2出力Highとなりました。

 トランジスタを使えばすごく簡単に論理回路ができ一つの論理回路から次の論理回路へ状態を伝達することができました。