FPGA で CPU を作ろう 第2章 簡単な論理回路の実験

  • 論理回路(ディジタル回路)
    • 電圧の高低で論理値(ON/OFF)を表す回路
    • 「交流信号の位相で表現する回路など他にもいろいろある」へー
  • High の電圧はひと昔ぐらい前までは 5V が普通でしたが DE0-Nano は 3.3V、MFPGA-SPAR3E では 3.3V 一部ボード内 2.5V
    • はい、ひと昔前に弄ってた組です
  • 1入力1出力の論理回路のバリエーションには「入力をそのまま出力」「いつもHigh」「いつもLow」「入力の逆」しかなく、この中で意味があるのは「入力の逆」だけ→ NOT(Invert が論理回路の基礎)
    • なるほど。この説明のしかたは初めて見ました。ただ厳密に言うと「組み合わせ回路の場合」というか素子の場合ですよね?
  • 2入力1出力の素子(AND,OR,NAND,NOR,XOR)
    • 正論理、負論理のはなし。まぎらわしいけど負論理のケースは多い
      • 回路の作りやすさ、トランジスタの作りやすさ、Low(GND)のほうが電位が安定している、など
  • 論理素子をループを作らずに繋げたものが「組み合わせ回路」
    • 入力が決まると出力が決まる
    • 参照透明性のある関数のようなもの(内部に状態を持たない)
  • 順序回路のサンプル
    • クロックに応じて High/Low を繰り返す回路(「パタパタする回路」)を使って LED を暗くする回路のサンプル
    • 「パタパタする回路」=「フリップフロップ
      • NSL での記述
declare patapata {
  output o ;
}
module patapata {
  reg ff = 0b0 ;

  ff := ~ff ;
  o = ff ;
}

VHDL とかやってたらだいたいわかりますね!

        • ff := ~ff は D-フリップフロップを構築する
        • NSL はクロック同期設計のみに絞った機能を持つ
          • このへんはややこしいけどまあ普通の論理回路を作ってるぶんにはあまり気にしなくていいでしょう多分(そしてデバッグで死ぬ)
    • このあと開発環境の使いかたのはなしが続きますが割愛