エレキ備忘録 – 雑多にまとめたもの

  • バイポーラトランジスタの記号の覚え方→ピンポーンと押すように矢印が内側を向いてるのはpnp型。
  • オープンドレインは吸い込み型なのでプルアップ抵抗を小さくできない。そのため、Hの駆動能力が弱くなり遅くなる。

fpga

  • I/Oピンに接続されるのはトップレベルモジュールだけ。回路を複数のモジュールで作成する場合は、必ず1つのトップレベルモジュールの中に複数のモジュールを組み込むような構成をとる。
  • 信号線のinout属性は、トップレベルモジュールでしか使用できない。
  • ポートリストに記載する変数は物理的なI/Oピンに直結する信号のみ。逆に言うとそういったものは全部ポートリストに記載しなければならない。
  • I/Oに出てこない内部回路の記述はwire変数を使って書く。
  • I/Oバスには{}を使ってC言語の配列のように一括代入できる。
  • 条件式演算子→ 条件式 ? 式1:式2 条件式が真なら式1を返し、偽なら式2を返す。
    ex.) assign led = (button == 1’b1) ? sw[3:0] : sw[7:4]; →buttonが1ならledにsw[3:0]を代入。
  • レジスタ変数はフリップフロップだと思えば良いというかそれが実態。
  • 定数表現「ビット幅 ‘ 基数 数値」のビット幅を省略すると32ビットとして扱われ、基数を省略すると10進数として扱われる。
    つまり‘1’等の数値だけを記載した場合は32ビット10進となる。
  • 16bitカウンタにクロックを入れて1/65536分周器を作ることができる。bit数を増減すれば簡単に変倍可能。
    PLLのように入出力で同期が取られていないので簡易的なもの
  • プロジェクト名(エンティティ名)とトップレベルモジュール名は一致させなければならない。
  • トップレベルモジュール名に数字は使用しない(アルテラQuartus環境のみ?)
  • 関数
    function 戻り値→(出力ビット幅)(function名);
    引数→input (入力ビット幅)引数名
    begin

    end
    endfunction
  • D-FFの創り方
    always @(posedge clk) begin
    reg = switch;
    end
    assign out = reg;