by shigemk2

当面は技術的なことしか書かない

リスト内包表記について

リスト内包表記はリストのフィルタリング、変換、組み合わせを行う方法である。

左側でやりたいことを書いて、右側でリストを束縛(定義)する。

右側で定義した変数について、左側でやりたいことを定義する感じ。

例。

ghci>[ x*2 | x <- [1..10]]
[2,4,6,8,10,12,14,16,18,20]
ghci>[ snd x | x <- [(0, "hoge"), (1, "fuga"), (2, "bar")]]
["hoge","fuga","bar"]

こういう書き方はPHPとかJSとかやってきた人間からしたら初耳みたいなものなので、慣れていくしかない。

回路勉強会のメモ

アナログとディジタル

  • 扱う信号は連続値
  • 音声、アナログビデオ信号など
  • 普通は電圧(光も可能)
  • 入力と出力は正比例

能動部品 受動部品

アナログ回路の例

トランジスタによる信号の増幅 npnトランジスタ

入力電流 i in 出力電流 i out

電流を電圧に変換

トランジスタによる信号の増幅

抵抗R(Ωの法則)

Vcc(一定の電源電圧)

定数と符号を除いて

vout=vcc - R iout

電流電圧は具体例で示すとわかりやすいかもしれない が、あまり深くアレすると話が止まらなくなって進まなくなる

エネルギーをトランジスタが生み出しているわけではなく、電気的なスイッチ。水道の蛇口。

グラウンド=アース的な役割

バイポーラトランジスタ

(ゲルマニウムやシリコンに不純物を導入する半導体)

MOS FET

半導体の表面に酸化被膜を構成(他のトランジスタと同じく3本足だが1本は2本と繋がらない)

C-MOS 2個組み合わせて片方だけ電流を流すようにしている。

低消費電力

世界最初のトランジスタはBell研究所の1947年

ディジタル回路

アナログ 実数値をあつかう ディジタル 表現するのは0か1

一度におくれる情報は少ない 信号線の複数使用(8bit or 16bit) or 時間的に多くの情報

トランジスタやMOS-FETの組み合わせで実現

基本部品はIC化

ノイズに強い(0か1だけ判断すればいいので)

コンピュータに易しいので自由度が高い

  • MOS-FET

インバータ(NOT回路)

L→H H→L 入力と出力を反転

入力をx 出力をyとする

Lowレベルで0 Highレベル1→正論理 設計の都合で逆に設計する→負論理

NOT回路の実物

74LSシリーズと呼ばれる種類のディジタルIC 入力x7 出力x7 入力と出力にそれぞれ1本ずつ電源を使う

ローパワーショットキートランジスタで構成

(PCを使う側としては知る必要がない情報だがCPUレベルでいうと)

  • IC
  • 等価回路

本質的にはトランジスタ回路

ロジックICの種類

74ファミリー

  • 74N
  • 74LSS
  • 74ALS
  • 74C
  • HC

事実上LSとHCのみが現役、LSも新規設計には使われない

TTL(トランジスタトランジスタロジック)

TTLという名称

ラフには74シリーズのことを指す

DTL(Diode Transistor Logic)

MOS-FET(金属酸化被膜)

74LSシリーズ

74Nシリーズの消費電力、動作速度の改良版 1970年代からあるロングセラー 100種類以上 TTL IC規格表

5V電源で動作

通常のトランジスタではなくMOS-FET

入力に大きなノイズが加わると破壊される可能性(ラッチアップ) 使用する入力をL or H MOS-FETの静電気による破壊の可能性(74HCシリーズでは対策されているが可能性はゼロではない) →TTLは構造上そういう問題がない

だから(比較的)雑に扱っても壊れづらい

http://www.geocities.co.jp/HeartLand-Tachibana/9059/otasuke/lup.htm

違うシリーズの混用

  • 電流電圧の規格が違うので直接にはできない
  • 電源電圧も異なる場合がある
  • 接続が必要な場合は付加回路を使う
  • 例外的に直接接続できるケースもある
  • SoC マイコンなどではピンごとに規格が違う可能性があある

74LSとHCシリーズの接続例

両方5V電源で動作させた場合

  • LS→HC(プルアップ抵抗が必要)
  • HC→LS(そのまま接続可能)

論理レベルでは信号は電圧であらわす

基本ゲート回路

  • NOT回路
  • AND回路(入力x 入力y 出力z 両方Hじゃないと出力もHにならない)
  • OR回路(入力x 入力y 出力z 片方Hならば出力もH)
  • NAND回路
  • NOR回路
  • バッファ
  • EX-OR回路

出力同士をつなぐと出力が衝突して異常電流が流れる

例外 * オープンコレクタ出力によるワイアードOR * トライステート出力(通常は高抵抗で切断状態)

  • 出力→入力が原則

常にHまたはLの信号が必要なとき

  • 常にLが必要なとき、グランドに接続→プルダウン
  • 常にHが必要なとき、数KΩの抵抗を介してVccに接続→プルアップ

ファンアウト ファンイン

ファンアウト 1出力でいくつの入力を駆動できるか LS-TTLでは20程度 C-MOSではほぼ無制限

ファンイン 普通の入力いくつ分に相当する負荷か(よほど特殊でない限り1)

バッファは無意味なのか

  • 論理レベルでは何もしないが、ファンアウトで稼ぐ
  • 異種ファミリーで電圧電流レベルを合わせたいときなどの用途

電源

LS-TTLでは5V±5% (5%に根拠はあまりない)

単三アルカリx4+シリコンダイオード降下電圧で擬似的な5V

  • 降下電圧

電源 USBから給電 or ACアダプター or 安定化電源

LED

LightEmitingDiode ダイオードの一種で、一方向のみに(アノード→カノード)電流を流せる

点灯時10mA 順方向電圧2V程度

スイッチ

  • ただの接点で、両側の線がつながる。極性の区別もない。
  • 物理的構造や流せる電流、電圧により種類がある

90度向きには注意

タクトスイッチ(押した時だけオンになる) DIPスイッチ(スイッチが複数ある ちょっと操作しづらい)

抵抗

オームの法則 若干電流が流れにくい物質 カーボン抵抗 熱が発生 耐熱量 抵抗値はカラーコードで表示

抵抗値

4本の色帯

4本目は精度

2本目までが数字で、3本目が指数

コンデンサ

(電子回路のなかでも一番劣化しやすい)

  • キャパシタとも読む
  • 電荷を貯める素子で、逆電圧や耐圧以上の電圧をかけると破裂の可能性

  • ディジタル回路では主に用途は2つ

    • 瞬間的に大電力を消費するLSIの高速補助電源
    • 抵抗との組み合わせで一定時間で電圧が変化する回路

フィルター回路を使うのによく使われる

コンデンサ 2

  • セラミックコンデンサ
    • 小容量 安価 周波数特性良好
    • 極性なし
  • 電解コンデンサ
    • 極性があって間違えると爆発するから注意
  • pF単位 3桁の数字により表示

pF→nF→μF

ブレッドボード

(ブレッドはたぶんパンのブレッドじゃねえーの)

  • ICをはじめ2.54mmピッチの部品が多いことを利用
  • 2.54mm

ブレッドボードでつくれるもの

簡単で消費電力も小さいもの 低速動作のもの(-100kHz)

それ以上の規模のものをつくろうとすると、配線の長さでノイズがでたりする

ぶっちゃけある程度の規模以上のものを作ろうとすると、マイコンやRasPiなどでソフトウェア実装したほうがいい あとはFPGA CPLDを使ってHDLで設計したほうがよろしい

ブレッドボードの構造

  • 赤のライン、青のライン
  • グラウンドは黒端子 Vccは赤端子
  • 縦5つは同じ接続

実習

順序回路

過去の入力の履歴について、記憶する

  • メモリ、CPU、FPGAなどの複雑な回路はすべて順序回路
  • 設計は格段に難しい
  • バラバラに動作する非同期回路とクロック信号に同期して動く同期回路→非同期回路は設計が難しい

フリップフロップ

スタティックメモリやレジスタはこれが原型

2つのNOT回路

2つの安定状態

HighとLowの安定状態 どちらの状態にあるかは電源投入時のばらつきによる 強制的に外部から一時的にレベルを設定すれば状態をかえることが出来る

外部から強制的に変更したあとは、状態が記憶される

RSフリップフロップ

スイッチで状態を記録さしてみよう(前回は線を直接触れてた)

外部から状態をセット、リセットできるようにする

片方の入力をセット(負論理)、もう片方をリセット(負論理)と考える

両方の入力を同時にLレベルにすると出力が不定になってしまうからやってはいけない

高度なフリップフロップ

RS-FFだと不便な・ クロック信号の立ち上がり立ち下がりに動作するフリップフロップが同期回路では重要

JK-FFが実際の回路ではよく用いられる(完全体FF) JK-FFを多段接続→カウンタ回路 (今回は出来合いのICを使う)

チャタリング

スイッチは理論上は押すとON 話せばOFF 物理的構造→金属接点が接触 ON/OFFの瞬間に接点がバウンド→チャタリング(多数回のON/OFFが発生しうる)

チャタリング防止回路

コンデンサと抵抗による時定数回路

アナログ回路敵解決

抵抗経由でコンデンサに充電→ゆっくりと電圧が変化(グレーゾーン) 通常のTTL

シュミットトリガ回路のヒステリシス特性

なかなかHレベルにならないで、一旦HになったらなかなかLにならないやつ

コンデンサと抵抗による時定数回路を使ってチャタリングを防止する

感想

回路はやったことすらなかったので、ブレッドボードの図面をなぞるだけで精一杯でした。

回路図が全くわからなかったので、とりあえず、前提知識が必要な気がしてきました。

第一級関数について

第一級関数とは第一級オブジェクトとして扱うことのできる関数で、第一級オブジェクトは以下のような性質を持ちます。 * 変数やデータ構造に格納することができる * サブルーチン(関数やプロシージャ)のパラメータとして渡すことができる * サブルーチン(関数やプロシージャ)の戻り値となることができる * 実行時に構築することができる * 独自の存在を持つ(名前に依らない存在である)

開眼JavaScriptから。

なお、JavaScriptの関数も第一級関数である。

第一級関数 - Wikipedia